diff --git a/src/dotnet/APIView/APIViewUnitTests/APIRevisionsManagerTests.cs b/src/dotnet/APIView/APIViewUnitTests/APIRevisionsManagerTests.cs index 93852508340..df8bfd7fd66 100644 --- a/src/dotnet/APIView/APIViewUnitTests/APIRevisionsManagerTests.cs +++ b/src/dotnet/APIView/APIViewUnitTests/APIRevisionsManagerTests.cs @@ -5,6 +5,7 @@ using APIViewWeb.Managers.Interfaces; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.SignalR; +using Microsoft.Extensions.Configuration; using APIViewWeb.Hubs; using System.Collections.Generic; using APIViewWeb.Managers; @@ -32,13 +33,15 @@ public APIRevisionsManagerTests() IBlobOriginalsRepository blobOriginalRepository = new Mock().Object; INotificationManager notificationManager = new Mock().Object; TelemetryClient telemetryClient = new Mock().Object; + IConfiguration configuration = new ConfigurationBuilder().Build(); _apiRevisionsManager = new APIRevisionsManager( authorizationService: authorizationService, reviewsRepository: cosmosReviewRepository, apiRevisionsRepository: cosmosAPIRevisionsRepository, signalRHubContext: signalRHub, languageServices: languageServices, devopsArtifactRepository: devopsArtifactRepository, codeFileManager: codeFileManager, codeFileRepository: blobCodeFileRepository, - originalsRepository: blobOriginalRepository, notificationManager: notificationManager, telemetryClient: telemetryClient); + originalsRepository: blobOriginalRepository, notificationManager: notificationManager, telemetryClient: telemetryClient, + configuration: configuration); } // GetLatestAPIRevisionsAsync diff --git a/src/dotnet/APIView/APIViewWeb/Managers/APIRevisionsManager.cs b/src/dotnet/APIView/APIViewWeb/Managers/APIRevisionsManager.cs index e6df012b7ab..015ab40745d 100644 --- a/src/dotnet/APIView/APIViewWeb/Managers/APIRevisionsManager.cs +++ b/src/dotnet/APIView/APIViewWeb/Managers/APIRevisionsManager.cs @@ -12,6 +12,7 @@ using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.SignalR; +using Microsoft.Extensions.Configuration; using System; using System.Collections.Generic; using System.IO; @@ -36,6 +37,7 @@ public class APIRevisionsManager : IAPIRevisionsManager private readonly IBlobOriginalsRepository _originalsRepository; private readonly INotificationManager _notificationManager; private readonly TelemetryClient _telemetryClient; + private readonly HashSet _upgradeDisabledLangs = new HashSet(); public APIRevisionsManager( IAuthorizationService authorizationService, @@ -48,7 +50,8 @@ public APIRevisionsManager( IBlobCodeFileRepository codeFileRepository, IBlobOriginalsRepository originalsRepository, INotificationManager notificationManager, - TelemetryClient telemetryClient) + TelemetryClient telemetryClient, + IConfiguration configuration) { _reviewsRepository = reviewsRepository; _apiRevisionsRepository = apiRevisionsRepository; @@ -61,6 +64,11 @@ public APIRevisionsManager( _originalsRepository = originalsRepository; _notificationManager = notificationManager; _telemetryClient = telemetryClient; + var backgroundTaskDisabledLangs = configuration["ReviewUpdateDisabledLanguages"]; + if(!string.IsNullOrEmpty(backgroundTaskDisabledLangs)) + { + _upgradeDisabledLangs.UnionWith(backgroundTaskDisabledLangs.Split(',')); + } } /// @@ -1006,6 +1014,10 @@ private async Task UpgradeAPIRevisionIfRequired(APIRev return revisionModel; } var codeFileDetails = revisionModel.Files[0]; + if (_upgradeDisabledLangs.Contains(codeFileDetails.Language)) + { + return revisionModel; + } var languageService = LanguageServiceHelpers.GetLanguageService(codeFileDetails.Language, _languageServices); if (languageService != null && languageService.CanUpdate(codeFileDetails.VersionString)) {