Skip to content

Commit 92ae551

Browse files
authored
More logging for downloads service. (#9361)
1 parent debc8a9 commit 92ae551

7 files changed

Lines changed: 55 additions & 3 deletions

File tree

src/GitHubVulnerabilities2Db/Gallery/ThrowingTelemetryService.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -400,5 +400,13 @@ public IDisposable TrackAsyncSqlConnectionCreationDuration()
400400
{
401401
throw new NotImplementedException();
402402
}
403+
404+
public void TrackDownloadJsonTotalPackageIds(int totalPackageIds) {
405+
throw new NotImplementedException();
406+
}
407+
408+
public void TrackDownloadJsonTotalPackageVersions(int totalPackageVersions) {
409+
throw new NotImplementedException();
410+
}
403411
}
404412
}

src/NuGetGallery.Services/Telemetry/ITelemetryService.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ public interface ITelemetryService
1818

1919
void TrackDownloadJsonRefreshDuration(TimeSpan duration);
2020

21+
void TrackDownloadJsonTotalPackageIds(int totalPackageIds);
22+
23+
void TrackDownloadJsonTotalPackageVersions(int totalPackageVersions);
24+
2125
void TrackDownloadCountDecreasedDuringRefresh(string packageId, string packageVersion, long oldCount, long newCount);
2226

2327
void TrackPackageDownloadCountDecreasedFromGallery(string packageId, string packageVersion, long galleryCount, long jsonCount);

src/NuGetGallery.Services/Telemetry/TelemetryService.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ public static class Events
3939
public const string GalleryDownloadGreaterThanJsonForPackageRegistration = "GalleryDownloadGreaterThanJsonForPackageRegistration";
4040
public const string GetPackageDownloadCountFailed = "GetPackageDownloadCountFailed";
4141
public const string GetPackageRegistrationDownloadCountFailed = "GetPackageRegistrationDownloadCountFailed";
42+
public const string DownloadJsonTotalPackageIds = "DownloadJsonTotalPackageIds";
43+
public const string DownloadJsonTotalPackageVersions = "DownloadJsonTotalPackageVersions";
4244
public const string UserPackageDeleteCheckedAfterHours = "UserPackageDeleteCheckedAfterHours";
4345
public const string UserPackageDeleteExecuted = "UserPackageDeleteExecuted";
4446
public const string UserMultiFactorAuthenticationEnabled = "UserMultiFactorAuthenticationEnabled";
@@ -279,6 +281,16 @@ public void TrackDownloadJsonRefreshDuration(TimeSpan duration)
279281
TrackMetric(Events.DownloadJsonRefreshDuration, duration.TotalMilliseconds, properties => { });
280282
}
281283

284+
public void TrackDownloadJsonTotalPackageIds(int totalPackageIds)
285+
{
286+
TrackMetric(Events.DownloadJsonTotalPackageIds, totalPackageIds, properties => { });
287+
}
288+
289+
public void TrackDownloadJsonTotalPackageVersions(int totalPackageVersions)
290+
{
291+
TrackMetric(Events.DownloadJsonTotalPackageVersions, totalPackageVersions, properties => { });
292+
}
293+
282294
public void TrackDownloadCountDecreasedDuringRefresh(string packageId, string packageVersion, long oldCount, long newCount)
283295
{
284296
TrackMetric(Events.DownloadCountDecreasedDuringRefresh, 1, properties =>

src/NuGetGallery/App_Start/DefaultDependenciesModule.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -778,7 +778,8 @@ private static void RegisterStatisticsServices(ContainerBuilder builder, IGaller
778778
{
779779
var cloudBlobClientFactory = c.ResolveKeyed<Func<ICloudBlobClient>>(BindingKeys.FeatureFlaggedStatisticsKey);
780780
var telemetryService = c.Resolve<ITelemetryService>();
781-
var downloadCountService = new CloudDownloadCountService(telemetryService, cloudBlobClientFactory);
781+
var downloadCountServiceLogger = c.Resolve<ILogger<CloudDownloadCountService>>();
782+
var downloadCountService = new CloudDownloadCountService(telemetryService, cloudBlobClientFactory, downloadCountServiceLogger);
782783

783784
var dlCountInterceptor = new DownloadCountObjectMaterializedInterceptor(downloadCountService, telemetryService);
784785
ObjectMaterializedInterception.AddInterceptor(dlCountInterceptor);

src/NuGetGallery/Services/CloudDownloadCountService.cs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
using System.Net;
1010
using System.Threading;
1111
using System.Threading.Tasks;
12+
using Microsoft.Extensions.Logging;
1213
using Microsoft.WindowsAzure.Storage;
1314
using Microsoft.WindowsAzure.Storage.Blob;
1415
using Microsoft.WindowsAzure.Storage.RetryPolicies;
@@ -29,6 +30,7 @@ public class CloudDownloadCountService : IDownloadCountService
2930

3031
private readonly ITelemetryService _telemetryService;
3132
private readonly Func<ICloudBlobClient> _cloudBlobClientFactory;
33+
private readonly ILogger<CloudDownloadCountService> _logger;
3234

3335
private readonly object _refreshLock = new object();
3436
private bool _isRefreshing;
@@ -38,10 +40,12 @@ private readonly ConcurrentDictionary<string, ConcurrentDictionary<string, long>
3840

3941
public CloudDownloadCountService(
4042
ITelemetryService telemetryService,
41-
Func<ICloudBlobClient> cloudBlobClientFactory)
43+
Func<ICloudBlobClient> cloudBlobClientFactory,
44+
ILogger<CloudDownloadCountService> logger)
4245
{
4346
_telemetryService = telemetryService ?? throw new ArgumentNullException(nameof(telemetryService));
4447
_cloudBlobClientFactory = cloudBlobClientFactory ?? throw new ArgumentNullException(nameof(cloudBlobClientFactory));
48+
_logger = logger ?? throw new ArgumentNullException(nameof(logger));
4549
}
4650

4751
public bool TryGetDownloadCountForPackageRegistration(string id, out long downloadCount)
@@ -158,6 +162,9 @@ private async Task RefreshCoreAsync()
158162
{
159163
try
160164
{
165+
int totalIds = 0;
166+
int totalVersions = 0;
167+
161168
// The data in downloads.v1.json will be an array of Package records - which has Id, Array of Versions and download count.
162169
// Sample.json : [["AutofacContrib.NSubstitute",["2.4.3.700",406],["2.5.0",137]],["Assman.Core",["2.0.7",138]]....
163170
using (var blobStream = await GetBlobStreamAsync())
@@ -189,6 +196,8 @@ private async Task RefreshCoreAsync()
189196
continue;
190197
}
191198

199+
++totalIds;
200+
192201
var versions = _downloadCounts.GetOrAdd(
193202
id,
194203
_ => new ConcurrentDictionary<string, long>(StringComparer.OrdinalIgnoreCase));
@@ -199,6 +208,7 @@ private async Task RefreshCoreAsync()
199208
{
200209
var version = token[0].ToString();
201210
var downloadCount = token[1].ToObject<long>();
211+
++totalVersions;
202212

203213
if (versions.ContainsKey(version) && downloadCount < versions[version])
204214
{
@@ -232,6 +242,9 @@ private async Task RefreshCoreAsync()
232242
}
233243
}
234244
}
245+
246+
_telemetryService.TrackDownloadJsonTotalPackageIds(totalIds);
247+
_telemetryService.TrackDownloadJsonTotalPackageVersions(totalVersions);
235248
}
236249
catch (Exception ex)
237250
{
@@ -250,6 +263,8 @@ private ISimpleCloudBlob GetBlobReference()
250263
var container = blobClient.GetContainerReference(StatsContainerName);
251264
var blob = container.GetBlobReference(DownloadCountBlobName);
252265

266+
_logger.LogInformation("Cloud download statistics source: {BlobUri}", blob.Uri);
267+
253268
return blob;
254269
}
255270
}

src/VerifyMicrosoftPackage/Fakes/FakeTelemetryService.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -402,5 +402,13 @@ public IDisposable TrackAsyncSqlConnectionCreationDuration()
402402
{
403403
throw new NotImplementedException();
404404
}
405+
406+
public void TrackDownloadJsonTotalPackageIds(int totalPackageIds) {
407+
throw new NotImplementedException();
408+
}
409+
410+
public void TrackDownloadJsonTotalPackageVersions(int totalPackageVersions) {
411+
throw new NotImplementedException();
412+
}
405413
}
406414
}

tests/NuGetGallery.Facts/Services/CloudDownloadCountServiceFacts.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
using System.Text;
1111
using System.Threading;
1212
using System.Threading.Tasks;
13+
using Microsoft.Extensions.Logging;
1314
using Moq;
1415
using NuGetGallery.Services;
1516
using Xunit;
@@ -173,7 +174,10 @@ public class TestableCloudDownloadCountService : CloudDownloadCountService
173174
private readonly BaseFacts _baseFacts;
174175

175176
public TestableCloudDownloadCountService(BaseFacts baseFacts)
176-
: base(baseFacts._telemetryService.Object, () => baseFacts._cloudBlobClientMock.Object)
177+
: base(
178+
baseFacts._telemetryService.Object,
179+
() => baseFacts._cloudBlobClientMock.Object,
180+
Mock.Of<ILogger<CloudDownloadCountService>>())
177181
{
178182
_baseFacts = baseFacts;
179183
}

0 commit comments

Comments
 (0)