From a106afc4e1d9991c1770206379e6ded5a8b7a152 Mon Sep 17 00:00:00 2001 From: Pawel Pekrol Date: Fri, 7 Jul 2023 10:02:19 +0200 Subject: [PATCH] RavenDB-20610 refactoring --- .../AbstractDatabaseRequestHandler.cs | 10 ++++- .../Documents/DatabaseRequestHandler.cs | 36 +++++++++++------- .../Handlers/Admin/AdminIndexHandler.cs | 2 +- .../AdminIndexHandlerProcessorForDump.cs | 3 +- ...ocessorForEnforceRevisionsConfiguration.cs | 2 +- .../Handlers/Admin/RachisAdminHandler.cs | 2 +- .../Handlers/BulkInsert/BulkInsertHandler.cs | 2 +- .../ServerWideDebugInfoPackageHandler.cs | 4 +- .../Documents/Handlers/IndexHandler.cs | 2 +- .../AbstractHandlerProxyReadProcessor.cs | 4 +- .../AbstractHandlerWebSocketProxyProcessor.cs | 2 +- ...achmentHandlerProcessorForGetAttachment.cs | 2 +- ...achmentHandlerProcessorForPutAttachment.cs | 2 +- ...bstractBatchHandlerProcessorForBulkDocs.cs | 2 +- ...actChangesHandlerProcessorForGetChanges.cs | 4 +- ...ndlerProcessorForGetCollectionDocuments.cs | 2 +- .../AbstractIndexHandlerProcessorForTerms.cs | 2 +- .../IndexHandlerProcessorForReplace.cs | 2 +- ...ksHandlerProcessorForBackupDatabaseOnce.cs | 2 +- ...atabaseOperationQueriesHandlerProcessor.cs | 2 +- .../AbstractQueriesHandlerProcessorForGet.cs | 2 +- ...erProcessorForWaitForIndexNotifications.cs | 2 +- ...HandlerProcessorForGetResolvedRevisions.cs | 2 +- ...evisionsHandlerProcessorForGetRevisions.cs | 2 +- ...sionsHandlerProcessorForRevertRevisions.cs | 2 +- ...sionsHandlerProcessorForGetRevisionsBin.cs | 2 +- ...stractSmugglerHandlerProcessorForExport.cs | 2 +- ...stractSmugglerHandlerProcessorForImport.cs | 2 +- ...actSmugglerHandlerProcessorForImportDir.cs | 2 +- ...actSmugglerHandlerProcessorForImportGet.cs | 2 +- ...ractStreamingHandlerProcessorForGetDocs.cs | 2 +- ...eamingHandlerProcessorForGetStreamQuery.cs | 2 +- ...reamingHandlerProcessorForGetTimeSeries.cs | 2 +- ...tionHandlerProcessorForDeleteCollection.cs | 2 +- ...sHandlerProcessorForGetTimeSeriesRanges.cs | 2 +- .../Documents/Handlers/TimeSeriesHandler.cs | 2 +- .../Handlers/TransactionsRecordingHandler.cs | 2 +- ...sionsHandlerProcessorForDeleteRevisions.cs | 2 +- .../BulkInsert/ShardedBulkInsertHandler.cs | 2 +- ...mentHandlerProcessorForDeleteAttachment.cs | 2 +- ...essorForGetAttachmentMetadataWithCounts.cs | 2 +- ...chmentHandlerProcessorForHeadAttachment.cs | 2 +- ...nsHandlerProcessorForGetCollectionStats.cs | 2 +- ...dCountersHandlerProcessorForGetCounters.cs | 2 +- ...CountersHandlerProcessorForPostCounters.cs | 2 +- ...hardedDocumentHandlerProcessorForDelete.cs | 2 +- ...erProcessorForGenerateClassFromDocument.cs | 2 +- .../ShardedDocumentHandlerProcessorForGet.cs | 2 +- ...edDocumentHandlerProcessorForGetDocSize.cs | 2 +- .../ShardedDocumentHandlerProcessorForHead.cs | 2 +- ...ShardedDocumentHandlerProcessorForPatch.cs | 2 +- .../ShardedDocumentHandlerProcessorForPut.cs | 2 +- ...stractShardedEtlHandlerProcessorForTest.cs | 2 +- ...ardedHiLoHandlerProcessorForGetNextHiLo.cs | 2 +- ...hardedHiLoHandlerProcessorForReturnHiLo.cs | 2 +- ...sksHandlerProcessorForBackupDatabaseNow.cs | 2 +- ...ShardedOperationQueriesHandlerProcessor.cs | 2 +- ...rdedQueriesHandlerProcessorForPatchTest.cs | 2 +- ...onsHandlerProcessorForGetRevisionsCount.cs | 2 +- ...sHandlerProcessorForDatabaseHealthCheck.cs | 2 +- ...dStatsHandlerProcessorForEssentialStats.cs | 2 +- ...sHandlerProcessorForGetCollectionFields.cs | 2 +- ...tionHandlerProcessorForDeleteCollection.cs | 2 +- ...dlerProcessorForGetDebugSegmentsSummary.cs | 2 +- ...eSeriesHandlerProcessorForGetTimeSeries.cs | 2 +- ...SeriesHandlerProcessorForPostTimeSeries.cs | 2 +- .../Sharding/Handlers/ReshardingHandler.cs | 4 +- .../Handlers/ShardedDatabaseRequestHandler.cs | 37 ++++++++++++++----- .../Documents/Handlers/SmugglerHandler.cs | 4 +- src/Raven.Server/Web/RequestHandler.cs | 18 +++++---- ...actBucketsHandlerProcessorForGetBuckets.cs | 2 +- ...rdedBucketsHandlerProcessorForGetBucket.cs | 2 +- .../Web/Studio/SqlMigrationHandler.cs | 2 +- .../Web/System/AdminDatabasesHandler.cs | 8 ++-- src/Raven.Server/Web/System/SetupHandler.cs | 10 ++--- 75 files changed, 150 insertions(+), 118 deletions(-) diff --git a/src/Raven.Server/Documents/AbstractDatabaseRequestHandler.cs b/src/Raven.Server/Documents/AbstractDatabaseRequestHandler.cs index 4b0087d25d2..85f2c4062de 100644 --- a/src/Raven.Server/Documents/AbstractDatabaseRequestHandler.cs +++ b/src/Raven.Server/Documents/AbstractDatabaseRequestHandler.cs @@ -16,9 +16,15 @@ public abstract class AbstractDatabaseRequestHandler : Reques public abstract char IdentityPartsSeparator { get; } - public abstract OperationCancelToken CreateTimeLimitedOperationToken(bool useRequestAbortedToken = true); + public abstract OperationCancelToken CreateHttpRequestBoundTimeLimitedOperationToken(); - public abstract OperationCancelToken CreateTimeLimitedQueryToken(); + public abstract OperationCancelToken CreateHttpRequestBoundTimeLimitedOperationTokenForQuery(); + + public abstract OperationCancelToken CreateTimeLimitedBackgroundOperationTokenForQueryOperation(); + + public abstract OperationCancelToken CreateTimeLimitedBackgroundOperationTokenForCollectionOperation(); + + public abstract OperationCancelToken CreateTimeLimitedBackgroundOperationToken(); public JsonContextPoolBase ContextPool; diff --git a/src/Raven.Server/Documents/DatabaseRequestHandler.cs b/src/Raven.Server/Documents/DatabaseRequestHandler.cs index 199b87c257a..4ae48bdd441 100644 --- a/src/Raven.Server/Documents/DatabaseRequestHandler.cs +++ b/src/Raven.Server/Documents/DatabaseRequestHandler.cs @@ -77,36 +77,44 @@ public override async Task WaitForIndexToBeAppliedAsync(TransactionOperationCont } } - public override OperationCancelToken CreateTimeLimitedOperationToken(bool useRequestAbortedToken = true) + public override OperationCancelToken CreateHttpRequestBoundTimeLimitedOperationToken() { - if (useRequestAbortedToken) - return new OperationCancelToken(Database.Configuration.Databases.OperationTimeout.AsTimeSpan, Database.DatabaseShutdown, HttpContext.RequestAborted); - return new OperationCancelToken(Database.Configuration.Databases.OperationTimeout.AsTimeSpan, Database.DatabaseShutdown); + return CreateHttpRequestBoundTimeLimitedOperationToken(Database.Configuration.Databases.OperationTimeout.AsTimeSpan); } - public override OperationCancelToken CreateTimeLimitedQueryToken() + public override OperationCancelToken CreateHttpRequestBoundTimeLimitedOperationTokenForQuery() { - return new OperationCancelToken(Database.Configuration.Databases.QueryTimeout.AsTimeSpan, Database.DatabaseShutdown, HttpContext.RequestAborted); + return CreateHttpRequestBoundTimeLimitedOperationToken(Database.Configuration.Databases.QueryTimeout.AsTimeSpan); } - public OperationCancelToken CreateTimeLimitedCollectionOperationToken() + public override OperationCancelToken CreateHttpRequestBoundTimeLimitedOperationToken(TimeSpan cancelAfter) { - return new OperationCancelToken(Database.Configuration.Databases.CollectionOperationTimeout.AsTimeSpan, Database.DatabaseShutdown, HttpContext.RequestAborted); + return new OperationCancelToken(cancelAfter, Database.DatabaseShutdown, HttpContext.RequestAborted); } - public OperationCancelToken CreateTimeLimitedQueryOperationToken() + public override OperationCancelToken CreateHttpRequestBoundOperationToken() { - return new OperationCancelToken(Database.Configuration.Databases.QueryOperationTimeout.AsTimeSpan, Database.DatabaseShutdown, HttpContext.RequestAborted); + return new OperationCancelToken(Database.DatabaseShutdown, HttpContext.RequestAborted); } - public override OperationCancelToken CreateOperationToken() + public override OperationCancelToken CreateTimeLimitedBackgroundOperationTokenForQueryOperation() { - return new OperationCancelToken(Database.DatabaseShutdown, HttpContext.RequestAborted); + return new OperationCancelToken(Database.Configuration.Databases.QueryOperationTimeout.AsTimeSpan, Database.DatabaseShutdown); } - public override OperationCancelToken CreateOperationToken(TimeSpan cancelAfter) + public override OperationCancelToken CreateTimeLimitedBackgroundOperationTokenForCollectionOperation() { - return new OperationCancelToken(cancelAfter, Database.DatabaseShutdown, HttpContext.RequestAborted); + return new OperationCancelToken(Database.Configuration.Databases.CollectionOperationTimeout.AsTimeSpan, Database.DatabaseShutdown); + } + + public override OperationCancelToken CreateTimeLimitedBackgroundOperationToken() + { + return new OperationCancelToken(Database.Configuration.Databases.OperationTimeout.AsTimeSpan, Database.DatabaseShutdown); + } + + public override OperationCancelToken CreateBackgroundOperationToken() + { + return new OperationCancelToken(Database.DatabaseShutdown); } public override bool ShouldAddPagingPerformanceHint(long numberOfResults) diff --git a/src/Raven.Server/Documents/Handlers/Admin/AdminIndexHandler.cs b/src/Raven.Server/Documents/Handlers/Admin/AdminIndexHandler.cs index 38774d8f6d2..85b173f25df 100644 --- a/src/Raven.Server/Documents/Handlers/Admin/AdminIndexHandler.cs +++ b/src/Raven.Server/Documents/Handlers/Admin/AdminIndexHandler.cs @@ -135,7 +135,7 @@ public async Task OptimizeIndex() if (index == null) IndexDoesNotExistException.ThrowFor(name); - var token = new OperationCancelToken(Database.DatabaseShutdown); + var token = CreateBackgroundOperationToken(); var result = new IndexOptimizeResult(index.Name); var operationId = Database.Operations.GetNextOperationId(); var t = Database.Operations.AddLocalOperation( diff --git a/src/Raven.Server/Documents/Handlers/Admin/Processors/Indexes/AdminIndexHandlerProcessorForDump.cs b/src/Raven.Server/Documents/Handlers/Admin/Processors/Indexes/AdminIndexHandlerProcessorForDump.cs index 64f1b3a5e08..b0c7c86a863 100644 --- a/src/Raven.Server/Documents/Handlers/Admin/Processors/Indexes/AdminIndexHandlerProcessorForDump.cs +++ b/src/Raven.Server/Documents/Handlers/Admin/Processors/Indexes/AdminIndexHandlerProcessorForDump.cs @@ -32,8 +32,7 @@ protected override async ValueTask HandleCurrentNodeAsync() } var operationId = RequestHandler.Database.Operations.GetNextOperationId(); - var token = new OperationCancelToken(RequestHandler.Database.Configuration.Databases.QueryOperationTimeout.AsTimeSpan, - RequestHandler.Database.DatabaseShutdown); + var token = RequestHandler.CreateTimeLimitedBackgroundOperationTokenForQueryOperation(); _ = RequestHandler.Database.Operations.AddLocalOperation( operationId, diff --git a/src/Raven.Server/Documents/Handlers/Admin/Processors/Revisions/AbstractAdminRevisionsHandlerProcessorForEnforceRevisionsConfiguration.cs b/src/Raven.Server/Documents/Handlers/Admin/Processors/Revisions/AbstractAdminRevisionsHandlerProcessorForEnforceRevisionsConfiguration.cs index 6cf65ceae9a..983de358b4f 100644 --- a/src/Raven.Server/Documents/Handlers/Admin/Processors/Revisions/AbstractAdminRevisionsHandlerProcessorForEnforceRevisionsConfiguration.cs +++ b/src/Raven.Server/Documents/Handlers/Admin/Processors/Revisions/AbstractAdminRevisionsHandlerProcessorForEnforceRevisionsConfiguration.cs @@ -21,7 +21,7 @@ protected AbstractAdminRevisionsHandlerProcessorForEnforceRevisionsConfiguration public override async ValueTask ExecuteAsync() { - var token = RequestHandler.CreateTimeLimitedOperationToken(useRequestAbortedToken: false); + var token = RequestHandler.CreateTimeLimitedBackgroundOperationToken(); var operationId = RequestHandler.GetLongQueryString("operationId", false) ?? GetNextOperationId(); ScheduleEnforceConfigurationOperation(operationId, token); diff --git a/src/Raven.Server/Documents/Handlers/Admin/RachisAdminHandler.cs b/src/Raven.Server/Documents/Handlers/Admin/RachisAdminHandler.cs index 9db48ec02b0..8574872c2a0 100644 --- a/src/Raven.Server/Documents/Handlers/Admin/RachisAdminHandler.cs +++ b/src/Raven.Server/Documents/Handlers/Admin/RachisAdminHandler.cs @@ -549,7 +549,7 @@ public async Task DeleteNode() { if (nodeTag == ServerStore.Engine.Tag) { - using (var token = CreateOperationToken()) + using (var token = CreateHttpRequestBoundOperationToken()) { // cannot remove the leader, let's change the leader ServerStore.Engine.CurrentLeader?.StepDown(); diff --git a/src/Raven.Server/Documents/Handlers/BulkInsert/BulkInsertHandler.cs b/src/Raven.Server/Documents/Handlers/BulkInsert/BulkInsertHandler.cs index 4839888d6ac..7e0c7d241bf 100644 --- a/src/Raven.Server/Documents/Handlers/BulkInsert/BulkInsertHandler.cs +++ b/src/Raven.Server/Documents/Handlers/BulkInsert/BulkInsertHandler.cs @@ -10,7 +10,7 @@ public class BulkInsertHandler : DatabaseRequestHandler [RavenAction("/databases/*/bulk_insert", "POST", AuthorizationStatus.ValidUser, EndpointType.Write, DisableOnCpuCreditsExhaustion = true)] public async Task BulkInsert() { - var operationCancelToken = CreateOperationToken(); + var operationCancelToken = CreateHttpRequestBoundOperationToken(); var id = GetLongQueryString("id"); var skipOverwriteIfUnchanged = GetBoolValueQueryString("skipOverwriteIfUnchanged", required: false) ?? false; diff --git a/src/Raven.Server/Documents/Handlers/Debugging/ServerWideDebugInfoPackageHandler.cs b/src/Raven.Server/Documents/Handlers/Debugging/ServerWideDebugInfoPackageHandler.cs index 2ac42b35e32..eb28d4db3a5 100644 --- a/src/Raven.Server/Documents/Handlers/Debugging/ServerWideDebugInfoPackageHandler.cs +++ b/src/Raven.Server/Documents/Handlers/Debugging/ServerWideDebugInfoPackageHandler.cs @@ -111,7 +111,7 @@ public async Task GetClusterWideInfoPackage() topology = ServerStore.GetClusterTopology(ctx); var timeoutInSecPerNode = GetIntValueQueryString("timeoutInSecPerNode", false) ?? 60; - var clusterOperationToken = CreateOperationToken(); + var clusterOperationToken = CreateHttpRequestBoundOperationToken(); var type = GetDebugInfoPackageContentType(); var databases = GetStringValuesQueryString("database", required: false); var operationId = GetLongQueryString("operationId", false) ?? ServerStore.Operations.GetNextOperationId(); @@ -181,7 +181,7 @@ public async Task GetInfoPackage() var debugInfoType = GetDebugInfoPackageContentType(); var databases = GetStringValuesQueryString("database", required: false); var operationId = GetLongQueryString("operationId", false) ?? ServerStore.Operations.GetNextOperationId(); - var token = CreateOperationToken(); + var token = CreateHttpRequestBoundOperationToken(); await ServerStore.Operations.AddLocalOperation( operationId, diff --git a/src/Raven.Server/Documents/Handlers/IndexHandler.cs b/src/Raven.Server/Documents/Handlers/IndexHandler.cs index 1e711ce8502..c91b19a5ae9 100644 --- a/src/Raven.Server/Documents/Handlers/IndexHandler.cs +++ b/src/Raven.Server/Documents/Handlers/IndexHandler.cs @@ -52,7 +52,7 @@ public async Task FinishRolling() var result = await ServerStore.SendToLeaderAsync(command); - using (var token = CreateOperationToken()) + using (var token = CreateHttpRequestBoundOperationToken()) await Database.RachisLogIndexNotifications.WaitForIndexNotification(result.Index, token.Token); NoContentStatus(); diff --git a/src/Raven.Server/Documents/Handlers/Processors/AbstractHandlerProxyReadProcessor.cs b/src/Raven.Server/Documents/Handlers/Processors/AbstractHandlerProxyReadProcessor.cs index 1a1cd9aefc4..b0bbae36f4b 100644 --- a/src/Raven.Server/Documents/Handlers/Processors/AbstractHandlerProxyReadProcessor.cs +++ b/src/Raven.Server/Documents/Handlers/Processors/AbstractHandlerProxyReadProcessor.cs @@ -36,7 +36,7 @@ public override async ValueTask ExecuteAsync() var proxyCommand = new ProxyCommand(command, RequestHandler.HttpContext.Response); - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) await HandleRemoteNodeAsync(proxyCommand, token); } } @@ -68,7 +68,7 @@ public override async ValueTask ExecuteAsync() var command = await CreateCommandForNodeAsync(nodeTag, context); var proxyCommand = new ProxyCommand(command, RequestHandler.HttpContext.Response); - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) await HandleRemoteNodeAsync(proxyCommand, context, token); } } diff --git a/src/Raven.Server/Documents/Handlers/Processors/AbstractHandlerWebSocketProxyProcessor.cs b/src/Raven.Server/Documents/Handlers/Processors/AbstractHandlerWebSocketProxyProcessor.cs index 3764ce26544..a7e3d610c80 100644 --- a/src/Raven.Server/Documents/Handlers/Processors/AbstractHandlerWebSocketProxyProcessor.cs +++ b/src/Raven.Server/Documents/Handlers/Processors/AbstractHandlerWebSocketProxyProcessor.cs @@ -30,7 +30,7 @@ protected AbstractHandlerWebSocketProxyProcessor([NotNull] TRequestHandler reque public override async ValueTask ExecuteAsync() { using (var webSocket = await HttpContext.WebSockets.AcceptWebSocketAsync()) - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) { if (IsCurrentNode(out var nodeTag)) { diff --git a/src/Raven.Server/Documents/Handlers/Processors/Attachments/AbstractAttachmentHandlerProcessorForGetAttachment.cs b/src/Raven.Server/Documents/Handlers/Processors/Attachments/AbstractAttachmentHandlerProcessorForGetAttachment.cs index 1d9fe6b6be0..dd6d9e4b940 100644 --- a/src/Raven.Server/Documents/Handlers/Processors/Attachments/AbstractAttachmentHandlerProcessorForGetAttachment.cs +++ b/src/Raven.Server/Documents/Handlers/Processors/Attachments/AbstractAttachmentHandlerProcessorForGetAttachment.cs @@ -26,7 +26,7 @@ public override async ValueTask ExecuteAsync() var name = RequestHandler.GetQueryStringValueAndAssertIfSingleAndNotEmpty("name"); using (ContextPool.AllocateOperationContext(out TOperationContext context)) - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) { var type = AttachmentType.Document; string changeVector = null; diff --git a/src/Raven.Server/Documents/Handlers/Processors/Attachments/AbstractAttachmentHandlerProcessorForPutAttachment.cs b/src/Raven.Server/Documents/Handlers/Processors/Attachments/AbstractAttachmentHandlerProcessorForPutAttachment.cs index ffdd5cb8a8b..427c2ee6955 100644 --- a/src/Raven.Server/Documents/Handlers/Processors/Attachments/AbstractAttachmentHandlerProcessorForPutAttachment.cs +++ b/src/Raven.Server/Documents/Handlers/Processors/Attachments/AbstractAttachmentHandlerProcessorForPutAttachment.cs @@ -20,7 +20,7 @@ protected AbstractAttachmentHandlerProcessorForPutAttachment([NotNull] TRequestH public override async ValueTask ExecuteAsync() { using (ContextPool.AllocateOperationContext(out TOperationContext context)) - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) { var id = RequestHandler.GetQueryStringValueAndAssertIfSingleAndNotEmpty("id"); var name = RequestHandler.GetQueryStringValueAndAssertIfSingleAndNotEmpty("name"); diff --git a/src/Raven.Server/Documents/Handlers/Processors/Batches/AbstractBatchHandlerProcessorForBulkDocs.cs b/src/Raven.Server/Documents/Handlers/Processors/Batches/AbstractBatchHandlerProcessorForBulkDocs.cs index fe1ff293464..1e0cafdad88 100644 --- a/src/Raven.Server/Documents/Handlers/Processors/Batches/AbstractBatchHandlerProcessorForBulkDocs.cs +++ b/src/Raven.Server/Documents/Handlers/Processors/Batches/AbstractBatchHandlerProcessorForBulkDocs.cs @@ -43,7 +43,7 @@ public override async ValueTask ExecuteAsync() using (var commandsReader = GetCommandsReader()) using (ContextPool.AllocateOperationContext(out TOperationContext context)) - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) { var contentType = HttpContext.Request.ContentType; try diff --git a/src/Raven.Server/Documents/Handlers/Processors/Changes/AbstractChangesHandlerProcessorForGetChanges.cs b/src/Raven.Server/Documents/Handlers/Processors/Changes/AbstractChangesHandlerProcessorForGetChanges.cs index 45908645ace..5e4e0cb8e8d 100644 --- a/src/Raven.Server/Documents/Handlers/Processors/Changes/AbstractChangesHandlerProcessorForGetChanges.cs +++ b/src/Raven.Server/Documents/Handlers/Processors/Changes/AbstractChangesHandlerProcessorForGetChanges.cs @@ -36,7 +36,7 @@ public override async ValueTask ExecuteAsync() var connection = CreateChangesClientConnection(webSocket, throttleConnection, fromStudio); - using (var token = RequestHandler.CreateOperationToken(connection.DisposeToken)) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken(connection.DisposeToken)) using (ContextPool.AllocateOperationContext(out JsonOperationContext context)) { try @@ -151,7 +151,7 @@ private async Task HandleConnectionAsync( reader.TryGet("Param", out string commandParameter); reader.TryGet("Params", out BlittableJsonReaderArray commandParameters); - using (var commandToken = RequestHandler.CreateOperationToken(TimeSpan.FromSeconds(30))) + using (var commandToken = RequestHandler.CreateHttpRequestBoundTimeLimitedOperationToken(TimeSpan.FromSeconds(30))) await connection.HandleCommandAsync(command, commandParameter, commandParameters, commandToken.Token); if (reader.TryGet("CommandId", out int commandId)) diff --git a/src/Raven.Server/Documents/Handlers/Processors/Collections/AbstractCollectionsHandlerProcessorForGetCollectionDocuments.cs b/src/Raven.Server/Documents/Handlers/Processors/Collections/AbstractCollectionsHandlerProcessorForGetCollectionDocuments.cs index 94b4b19167c..3d0895a3f3b 100644 --- a/src/Raven.Server/Documents/Handlers/Processors/Collections/AbstractCollectionsHandlerProcessorForGetCollectionDocuments.cs +++ b/src/Raven.Server/Documents/Handlers/Processors/Collections/AbstractCollectionsHandlerProcessorForGetCollectionDocuments.cs @@ -26,7 +26,7 @@ public override async ValueTask ExecuteAsync() var sw = Stopwatch.StartNew(); long numberOfResults, totalDocumentsSizeInBytes; using (ContextPool.AllocateOperationContext(out TOperationContext context)) - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) { (numberOfResults, totalDocumentsSizeInBytes) = await GetCollectionDocumentsAndWriteAsync(context, name, start, pageSize, token.Token); } diff --git a/src/Raven.Server/Documents/Handlers/Processors/Indexes/AbstractIndexHandlerProcessorForTerms.cs b/src/Raven.Server/Documents/Handlers/Processors/Indexes/AbstractIndexHandlerProcessorForTerms.cs index 523c6bc6636..456764e7e71 100644 --- a/src/Raven.Server/Documents/Handlers/Processors/Indexes/AbstractIndexHandlerProcessorForTerms.cs +++ b/src/Raven.Server/Documents/Handlers/Processors/Indexes/AbstractIndexHandlerProcessorForTerms.cs @@ -26,7 +26,7 @@ protected AbstractIndexHandlerProcessorForTerms([NotNull] TRequestHandler reques public override async ValueTask ExecuteAsync() { - using (var token = RequestHandler.CreateTimeLimitedOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundTimeLimitedOperationToken()) using (RequestHandler.ServerStore.ContextPool.AllocateOperationContext(out TransactionOperationContext context)) { var field = RequestHandler.GetQueryStringValueAndAssertIfSingleAndNotEmpty("field"); diff --git a/src/Raven.Server/Documents/Handlers/Processors/Indexes/IndexHandlerProcessorForReplace.cs b/src/Raven.Server/Documents/Handlers/Processors/Indexes/IndexHandlerProcessorForReplace.cs index 6242ffeae83..c8fc986aa24 100644 --- a/src/Raven.Server/Documents/Handlers/Processors/Indexes/IndexHandlerProcessorForReplace.cs +++ b/src/Raven.Server/Documents/Handlers/Processors/Indexes/IndexHandlerProcessorForReplace.cs @@ -31,7 +31,7 @@ protected override ValueTask HandleCurrentNodeAsync() if (newIndex == null) throw new IndexDoesNotExistException($"Could not find side-by-side index for '{name}'."); - using (var token = RequestHandler.CreateOperationToken(TimeSpan.FromMinutes(15))) + using (var token = RequestHandler.CreateHttpRequestBoundTimeLimitedOperationToken(TimeSpan.FromMinutes(15))) { RequestHandler.Database.IndexStore.ReplaceIndexes(name, newIndex.Name, token.Token); } diff --git a/src/Raven.Server/Documents/Handlers/Processors/OngoingTasks/AbstractOngoingTasksHandlerProcessorForBackupDatabaseOnce.cs b/src/Raven.Server/Documents/Handlers/Processors/OngoingTasks/AbstractOngoingTasksHandlerProcessorForBackupDatabaseOnce.cs index 66586003304..0ecbb2f726e 100644 --- a/src/Raven.Server/Documents/Handlers/Processors/OngoingTasks/AbstractOngoingTasksHandlerProcessorForBackupDatabaseOnce.cs +++ b/src/Raven.Server/Documents/Handlers/Processors/OngoingTasks/AbstractOngoingTasksHandlerProcessorForBackupDatabaseOnce.cs @@ -58,7 +58,7 @@ public override async ValueTask ExecuteAsync() ServerStore.ConcurrentBackupsCounter.StartBackup(backupName, Logger); try { - var cancelToken = new OperationCancelToken(ServerStore.ServerShutdown); + var cancelToken = RequestHandler.CreateBackgroundOperationToken(); ScheduleBackup(backupConfiguration, operationId, backupName, sw, startTime, cancelToken); await using (var writer = new AsyncBlittableJsonTextWriter(context, RequestHandler.ResponseBodyStream())) diff --git a/src/Raven.Server/Documents/Handlers/Processors/Queries/AbstractDatabaseOperationQueriesHandlerProcessor.cs b/src/Raven.Server/Documents/Handlers/Processors/Queries/AbstractDatabaseOperationQueriesHandlerProcessor.cs index 4cb846735f8..398d9a3c629 100644 --- a/src/Raven.Server/Documents/Handlers/Processors/Queries/AbstractDatabaseOperationQueriesHandlerProcessor.cs +++ b/src/Raven.Server/Documents/Handlers/Processors/Queries/AbstractDatabaseOperationQueriesHandlerProcessor.cs @@ -59,7 +59,7 @@ private void ExecuteQueryOperation(IndexQueryServerSide query, long operationId, IDisposable returnContextToPool, OperationType operationType) { - var token = new OperationCancelToken(RequestHandler.Database.Configuration.Databases.QueryOperationTimeout.AsTimeSpan, RequestHandler.Database.DatabaseShutdown); + var token = RequestHandler.CreateTimeLimitedBackgroundOperationTokenForQueryOperation(); var description = GetOperationDescription(query); diff --git a/src/Raven.Server/Documents/Handlers/Processors/Queries/AbstractQueriesHandlerProcessorForGet.cs b/src/Raven.Server/Documents/Handlers/Processors/Queries/AbstractQueriesHandlerProcessorForGet.cs index 885a769f1b8..2994c4d8edb 100644 --- a/src/Raven.Server/Documents/Handlers/Processors/Queries/AbstractQueriesHandlerProcessorForGet.cs +++ b/src/Raven.Server/Documents/Handlers/Processors/Queries/AbstractQueriesHandlerProcessorForGet.cs @@ -96,7 +96,7 @@ public override async ValueTask ExecuteAsync() { try { - using (var token = RequestHandler.CreateTimeLimitedQueryToken()) + using (var token = RequestHandler.CreateHttpRequestBoundTimeLimitedOperationTokenForQuery()) using (AllocateContextForQueryOperation(out var queryContext, out var context)) { var addSpatialProperties = RequestHandler.GetBoolValueQueryString("addSpatialProperties", required: false) ?? false; diff --git a/src/Raven.Server/Documents/Handlers/Processors/Rachis/RachisHandlerProcessorForWaitForIndexNotifications.cs b/src/Raven.Server/Documents/Handlers/Processors/Rachis/RachisHandlerProcessorForWaitForIndexNotifications.cs index e70b390a60b..96cae83899e 100644 --- a/src/Raven.Server/Documents/Handlers/Processors/Rachis/RachisHandlerProcessorForWaitForIndexNotifications.cs +++ b/src/Raven.Server/Documents/Handlers/Processors/Rachis/RachisHandlerProcessorForWaitForIndexNotifications.cs @@ -14,7 +14,7 @@ public RachisHandlerProcessorForWaitForIndexNotifications([NotNull] DatabaseRequ protected override async ValueTask WaitForCommandsAsync(TransactionOperationContext _, WaitForIndexNotificationRequest commands) { - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) { foreach (var index in commands.RaftCommandIndexes) { diff --git a/src/Raven.Server/Documents/Handlers/Processors/Revisions/AbstractRevisionsHandlerProcessorForGetResolvedRevisions.cs b/src/Raven.Server/Documents/Handlers/Processors/Revisions/AbstractRevisionsHandlerProcessorForGetResolvedRevisions.cs index db085ea7847..70c8e0bacfe 100644 --- a/src/Raven.Server/Documents/Handlers/Processors/Revisions/AbstractRevisionsHandlerProcessorForGetResolvedRevisions.cs +++ b/src/Raven.Server/Documents/Handlers/Processors/Revisions/AbstractRevisionsHandlerProcessorForGetResolvedRevisions.cs @@ -23,7 +23,7 @@ public override async ValueTask ExecuteAsync() var date = Convert.ToDateTime(since).ToUniversalTime(); using (ContextPool.AllocateOperationContext(out TOperationContext context)) - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) { await GetResolvedRevisionsAndWriteAsync(context, since: date, take, token.Token); } diff --git a/src/Raven.Server/Documents/Handlers/Processors/Revisions/AbstractRevisionsHandlerProcessorForGetRevisions.cs b/src/Raven.Server/Documents/Handlers/Processors/Revisions/AbstractRevisionsHandlerProcessorForGetRevisions.cs index d641dbb1936..6f4304d0f5a 100644 --- a/src/Raven.Server/Documents/Handlers/Processors/Revisions/AbstractRevisionsHandlerProcessorForGetRevisions.cs +++ b/src/Raven.Server/Documents/Handlers/Processors/Revisions/AbstractRevisionsHandlerProcessorForGetRevisions.cs @@ -24,7 +24,7 @@ protected AbstractRevisionsHandlerProcessorForGetRevisions([NotNull] TRequestHan public override async ValueTask ExecuteAsync() { using(ContextPool.AllocateOperationContext(out TOperationContext context)) - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) { var changeVectors = RequestHandler.GetStringValuesQueryString("changeVector", required: false); var metadataOnly = RequestHandler.GetBoolValueQueryString("metadataOnly", required: false) ?? false; diff --git a/src/Raven.Server/Documents/Handlers/Processors/Revisions/AbstractRevisionsHandlerProcessorForRevertRevisions.cs b/src/Raven.Server/Documents/Handlers/Processors/Revisions/AbstractRevisionsHandlerProcessorForRevertRevisions.cs index e7d18aace4e..8ddf1fbd4fa 100644 --- a/src/Raven.Server/Documents/Handlers/Processors/Revisions/AbstractRevisionsHandlerProcessorForRevertRevisions.cs +++ b/src/Raven.Server/Documents/Handlers/Processors/Revisions/AbstractRevisionsHandlerProcessorForRevertRevisions.cs @@ -30,7 +30,7 @@ public override async ValueTask ExecuteAsync() configuration = JsonDeserializationServer.RevertRevisions(json); } - var token = RequestHandler.CreateTimeLimitedOperationToken(useRequestAbortedToken: false); + var token = RequestHandler.CreateTimeLimitedBackgroundOperationToken(); var operationId = RequestHandler.GetLongQueryString("operationId", required: false) ?? GetNextOperationId(); ScheduleRevertRevisions(operationId, configuration, token); diff --git a/src/Raven.Server/Documents/Handlers/Processors/Revisions/RevisionsHandlerProcessorForGetRevisionsBin.cs b/src/Raven.Server/Documents/Handlers/Processors/Revisions/RevisionsHandlerProcessorForGetRevisionsBin.cs index be6acb57606..3c7343edb11 100644 --- a/src/Raven.Server/Documents/Handlers/Processors/Revisions/RevisionsHandlerProcessorForGetRevisionsBin.cs +++ b/src/Raven.Server/Documents/Handlers/Processors/Revisions/RevisionsHandlerProcessorForGetRevisionsBin.cs @@ -39,7 +39,7 @@ protected override async ValueTask GetAndWriteRevisionsBinAsync(DocumentsOperati long count; long totalDocumentsSizeInBytes; - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) await using (var writer = new AsyncBlittableJsonTextWriter(context, RequestHandler.ResponseBodyStream())) { writer.WriteStartObject(); diff --git a/src/Raven.Server/Documents/Handlers/Processors/Smuggler/AbstractSmugglerHandlerProcessorForExport.cs b/src/Raven.Server/Documents/Handlers/Processors/Smuggler/AbstractSmugglerHandlerProcessorForExport.cs index ff67ca8ae3d..ceaa4eb9c2e 100644 --- a/src/Raven.Server/Documents/Handlers/Processors/Smuggler/AbstractSmugglerHandlerProcessorForExport.cs +++ b/src/Raven.Server/Documents/Handlers/Processors/Smuggler/AbstractSmugglerHandlerProcessorForExport.cs @@ -83,7 +83,7 @@ public override async ValueTask ExecuteAsync() HttpContext.Response.Headers[Constants.Headers.ContentType] = "application/octet-stream"; ApplyBackwardCompatibility(options); - var token = RequestHandler.CreateOperationToken(); + var token = RequestHandler.CreateHttpRequestBoundOperationToken(); await ExportAsync(context, returnContextToPool, operationId, options, startDocumentEtag, startRaftIndex, token); } diff --git a/src/Raven.Server/Documents/Handlers/Processors/Smuggler/AbstractSmugglerHandlerProcessorForImport.cs b/src/Raven.Server/Documents/Handlers/Processors/Smuggler/AbstractSmugglerHandlerProcessorForImport.cs index 4309f026c4b..a483aae1b32 100644 --- a/src/Raven.Server/Documents/Handlers/Processors/Smuggler/AbstractSmugglerHandlerProcessorForImport.cs +++ b/src/Raven.Server/Documents/Handlers/Processors/Smuggler/AbstractSmugglerHandlerProcessorForImport.cs @@ -62,7 +62,7 @@ internal async Task Import(JsonOperationContext context, string data } } - var token = RequestHandler.CreateOperationToken(); + var token = RequestHandler.CreateHttpRequestBoundOperationToken(); var result = new SmugglerResult(); BlittableJsonReaderObject blittableJson = null; diff --git a/src/Raven.Server/Documents/Handlers/Processors/Smuggler/AbstractSmugglerHandlerProcessorForImportDir.cs b/src/Raven.Server/Documents/Handlers/Processors/Smuggler/AbstractSmugglerHandlerProcessorForImportDir.cs index dd177ef7517..079495d4769 100644 --- a/src/Raven.Server/Documents/Handlers/Processors/Smuggler/AbstractSmugglerHandlerProcessorForImportDir.cs +++ b/src/Raven.Server/Documents/Handlers/Processors/Smuggler/AbstractSmugglerHandlerProcessorForImportDir.cs @@ -48,7 +48,7 @@ private async Task BulkImport(BlockingCollection>> files, stri var tasks = new Task[Math.Max(1, maxTasks)]; var finalResult = new SmugglerResult(); - var token = RequestHandler.CreateOperationToken(); + var token = RequestHandler.CreateHttpRequestBoundOperationToken(); for (int i = 0; i < tasks.Length; i++) { diff --git a/src/Raven.Server/Documents/Handlers/Processors/Smuggler/AbstractSmugglerHandlerProcessorForImportGet.cs b/src/Raven.Server/Documents/Handlers/Processors/Smuggler/AbstractSmugglerHandlerProcessorForImportGet.cs index 447605d5781..a60ea3c79df 100644 --- a/src/Raven.Server/Documents/Handlers/Processors/Smuggler/AbstractSmugglerHandlerProcessorForImportGet.cs +++ b/src/Raven.Server/Documents/Handlers/Processors/Smuggler/AbstractSmugglerHandlerProcessorForImportGet.cs @@ -35,7 +35,7 @@ protected override async ValueTask ImportAsync(JsonOperationContext context, lon var options = DatabaseSmugglerOptionsServerSide.Create(HttpContext); await using (var file = await GetImportStream()) await using (var stream = new GZipStream(new BufferedStream(file, 128 * Voron.Global.Constants.Size.Kilobyte), CompressionMode.Decompress)) - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) { var result = await DoImport(context, stream, options, result: null, onProgress: null, operationId.Value, token); await WriteSmugglerResultAsync(context, result, RequestHandler.ResponseBodyStream()); diff --git a/src/Raven.Server/Documents/Handlers/Processors/Streaming/AbstractStreamingHandlerProcessorForGetDocs.cs b/src/Raven.Server/Documents/Handlers/Processors/Streaming/AbstractStreamingHandlerProcessorForGetDocs.cs index 682f6aa15c5..0cc9c2507aa 100644 --- a/src/Raven.Server/Documents/Handlers/Processors/Streaming/AbstractStreamingHandlerProcessorForGetDocs.cs +++ b/src/Raven.Server/Documents/Handlers/Processors/Streaming/AbstractStreamingHandlerProcessorForGetDocs.cs @@ -19,7 +19,7 @@ protected abstract ValueTask GetDocumentsAndWriteAsync(TOperationContext context public override async ValueTask ExecuteAsync() { using (ContextPool.AllocateOperationContext(out TOperationContext context)) - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) { await GetDocumentsAndWriteAsync(context, RequestHandler.GetStart(), RequestHandler.GetPageSize(), RequestHandler.GetStringQueryString("startsWith", required: false), RequestHandler.GetStringQueryString("excludes", required: false), RequestHandler.GetStringQueryString("matches", required: false), diff --git a/src/Raven.Server/Documents/Handlers/Processors/Streaming/AbstractStreamingHandlerProcessorForGetStreamQuery.cs b/src/Raven.Server/Documents/Handlers/Processors/Streaming/AbstractStreamingHandlerProcessorForGetStreamQuery.cs index e328c7c525b..8c9b27a8a9b 100644 --- a/src/Raven.Server/Documents/Handlers/Processors/Streaming/AbstractStreamingHandlerProcessorForGetStreamQuery.cs +++ b/src/Raven.Server/Documents/Handlers/Processors/Streaming/AbstractStreamingHandlerProcessorForGetStreamQuery.cs @@ -56,7 +56,7 @@ public override async ValueTask ExecuteAsync() // ReSharper disable once ArgumentsStyleLiteral using (var tracker = GetTimeTracker()) - using (var token = RequestHandler.CreateTimeLimitedQueryToken()) + using (var token = RequestHandler.CreateHttpRequestBoundTimeLimitedOperationTokenForQuery()) using(AllocateContext(out TOperationContext context)) { IndexQueryServerSide query; diff --git a/src/Raven.Server/Documents/Handlers/Processors/Streaming/AbstractStreamingHandlerProcessorForGetTimeSeries.cs b/src/Raven.Server/Documents/Handlers/Processors/Streaming/AbstractStreamingHandlerProcessorForGetTimeSeries.cs index 7ae38596603..4da3cf1f1d2 100644 --- a/src/Raven.Server/Documents/Handlers/Processors/Streaming/AbstractStreamingHandlerProcessorForGetTimeSeries.cs +++ b/src/Raven.Server/Documents/Handlers/Processors/Streaming/AbstractStreamingHandlerProcessorForGetTimeSeries.cs @@ -37,7 +37,7 @@ public override async ValueTask ExecuteAsync() using (ContextPool.AllocateOperationContext(out TOperationContext context)) using (OpenReadTransaction(context)) - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) { await GetAndWriteTimeSeriesAsync(context, documentId, name, from, to, offset, token.Token); } diff --git a/src/Raven.Server/Documents/Handlers/Processors/Studio/StudioCollectionHandlerProcessorForDeleteCollection.cs b/src/Raven.Server/Documents/Handlers/Processors/Studio/StudioCollectionHandlerProcessorForDeleteCollection.cs index 0c9fcf1df88..57eb9a85013 100644 --- a/src/Raven.Server/Documents/Handlers/Processors/Studio/StudioCollectionHandlerProcessorForDeleteCollection.cs +++ b/src/Raven.Server/Documents/Handlers/Processors/Studio/StudioCollectionHandlerProcessorForDeleteCollection.cs @@ -35,7 +35,7 @@ private void ExecuteCollectionOperation( DocumentsOperationContext docsContext, IDisposable returnToContextPool, OperationType operationType, string collectionName, long operationId, HashSet excludeIds) { - var token = new OperationCancelToken(RequestHandler.Database.Configuration.Databases.CollectionOperationTimeout.AsTimeSpan, RequestHandler.Database.DatabaseShutdown); + var token = RequestHandler.CreateTimeLimitedBackgroundOperationTokenForCollectionOperation(); var collectionRunner = new StudioCollectionRunner(RequestHandler.Database, docsContext, excludeIds); diff --git a/src/Raven.Server/Documents/Handlers/Processors/TimeSeries/AbstractTimeSeriesHandlerProcessorForGetTimeSeriesRanges.cs b/src/Raven.Server/Documents/Handlers/Processors/TimeSeries/AbstractTimeSeriesHandlerProcessorForGetTimeSeriesRanges.cs index 7a49e8bf201..5791cbbc74b 100644 --- a/src/Raven.Server/Documents/Handlers/Processors/TimeSeries/AbstractTimeSeriesHandlerProcessorForGetTimeSeriesRanges.cs +++ b/src/Raven.Server/Documents/Handlers/Processors/TimeSeries/AbstractTimeSeriesHandlerProcessorForGetTimeSeriesRanges.cs @@ -37,7 +37,7 @@ public override async ValueTask ExecuteAsync() var returnFullResults = RequestHandler.GetBoolValueQueryString("full", required: false) ?? false; using (ContextPool.AllocateOperationContext(out TOperationContext context)) - using(var token = RequestHandler.CreateOperationToken()) + using(var token = RequestHandler.CreateHttpRequestBoundOperationToken()) { await GetTimeSeriesRangesAndWriteAsync(context, documentId, names, fromList, toList, start, pageSize, includeDoc, includeTags, returnFullResults, token.Token); } diff --git a/src/Raven.Server/Documents/Handlers/TimeSeriesHandler.cs b/src/Raven.Server/Documents/Handlers/TimeSeriesHandler.cs index 1080af0590b..a51c4dc2792 100644 --- a/src/Raven.Server/Documents/Handlers/TimeSeriesHandler.cs +++ b/src/Raven.Server/Documents/Handlers/TimeSeriesHandler.cs @@ -51,7 +51,7 @@ public async Task ReadRangesPost() Results = new List() }; - using (var token = CreateOperationToken()) + using (var token = CreateHttpRequestBoundOperationToken()) using (ContextPool.AllocateOperationContext(out DocumentsOperationContext context)) using (context.OpenReadTransaction()) { diff --git a/src/Raven.Server/Documents/Handlers/TransactionsRecordingHandler.cs b/src/Raven.Server/Documents/Handlers/TransactionsRecordingHandler.cs index 62fa31a7f69..7319ec874f9 100644 --- a/src/Raven.Server/Documents/Handlers/TransactionsRecordingHandler.cs +++ b/src/Raven.Server/Documents/Handlers/TransactionsRecordingHandler.cs @@ -46,7 +46,7 @@ public async Task ReplayRecording() var operationId = GetLongQueryString("operationId", false) ?? Database.Operations.GetNextOperationId(); - using (var token = CreateOperationToken()) + using (var token = CreateHttpRequestBoundOperationToken()) { var result = await Database.Operations.AddLocalOperation( operationId, diff --git a/src/Raven.Server/Documents/Sharding/Handlers/Admin/Processors/Revisions/ShardedAdminRevisionsHandlerProcessorForDeleteRevisions.cs b/src/Raven.Server/Documents/Sharding/Handlers/Admin/Processors/Revisions/ShardedAdminRevisionsHandlerProcessorForDeleteRevisions.cs index d169d6cf705..fd2c052d55a 100644 --- a/src/Raven.Server/Documents/Sharding/Handlers/Admin/Processors/Revisions/ShardedAdminRevisionsHandlerProcessorForDeleteRevisions.cs +++ b/src/Raven.Server/Documents/Sharding/Handlers/Admin/Processors/Revisions/ShardedAdminRevisionsHandlerProcessorForDeleteRevisions.cs @@ -27,7 +27,7 @@ protected override async ValueTask DeleteRevisionsAsync(TransactionOperationCont cmds[shard] = new DeleteRevisionsOperation.DeleteRevisionsCommand(DocumentConventions.Default, context, new DeleteRevisionsOperation.Parameters() {DocumentIds = ids.Ids.ToArray()}); } - using(var token = RequestHandler.CreateOperationToken()) + using(var token = RequestHandler.CreateHttpRequestBoundOperationToken()) await RequestHandler.ShardExecutor.ExecuteParallelForShardsAsync(shardsToDocs.Keys.ToArray(), new ShardedDeleteRevisionsOperation(RequestHandler.HttpContext, cmds), token.Token); } diff --git a/src/Raven.Server/Documents/Sharding/Handlers/BulkInsert/ShardedBulkInsertHandler.cs b/src/Raven.Server/Documents/Sharding/Handlers/BulkInsert/ShardedBulkInsertHandler.cs index d23d0fdec05..a9277194c80 100644 --- a/src/Raven.Server/Documents/Sharding/Handlers/BulkInsert/ShardedBulkInsertHandler.cs +++ b/src/Raven.Server/Documents/Sharding/Handlers/BulkInsert/ShardedBulkInsertHandler.cs @@ -9,7 +9,7 @@ public class ShardedBulkInsertHandler : ShardedDatabaseRequestHandler [RavenShardedAction("/databases/*/bulk_insert", "POST")] public async Task BulkInsert() { - var operationCancelToken = CreateOperationToken(); + var operationCancelToken = CreateHttpRequestBoundOperationToken(); var id = GetLongQueryString("id"); var skipOverwriteIfUnchanged = GetBoolValueQueryString("skipOverwriteIfUnchanged", required: false) ?? false; diff --git a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Attachments/ShardedAttachmentHandlerProcessorForDeleteAttachment.cs b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Attachments/ShardedAttachmentHandlerProcessorForDeleteAttachment.cs index e47fefd750f..79865198b56 100644 --- a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Attachments/ShardedAttachmentHandlerProcessorForDeleteAttachment.cs +++ b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Attachments/ShardedAttachmentHandlerProcessorForDeleteAttachment.cs @@ -19,7 +19,7 @@ protected override async ValueTask DeleteAttachmentAsync(TransactionOperationCon int shardNumber = RequestHandler.DatabaseContext.GetShardNumberFor(context, docId); - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) { await RequestHandler.ShardExecutor.ExecuteSingleShardAsync(cmd, shardNumber, token.Token); } diff --git a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Attachments/ShardedAttachmentHandlerProcessorForGetAttachmentMetadataWithCounts.cs b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Attachments/ShardedAttachmentHandlerProcessorForGetAttachmentMetadataWithCounts.cs index 4aa77b732db..6aea07d5480 100644 --- a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Attachments/ShardedAttachmentHandlerProcessorForGetAttachmentMetadataWithCounts.cs +++ b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Attachments/ShardedAttachmentHandlerProcessorForGetAttachmentMetadataWithCounts.cs @@ -21,7 +21,7 @@ protected override async ValueTask HandleAttachmentMetadataWithCountsAsync(strin using (ContextPool.AllocateOperationContext(out TransactionOperationContext context)) shardNumber = RequestHandler.DatabaseContext.GetShardNumberFor(context, documentId); - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) { var proxyCommand = new ProxyCommand(command, HttpContext.Response); await RequestHandler.ShardExecutor.ExecuteSingleShardAsync(proxyCommand, shardNumber, token.Token); diff --git a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Attachments/ShardedAttachmentHandlerProcessorForHeadAttachment.cs b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Attachments/ShardedAttachmentHandlerProcessorForHeadAttachment.cs index 3a6d06ede55..f6c9df80ff2 100644 --- a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Attachments/ShardedAttachmentHandlerProcessorForHeadAttachment.cs +++ b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Attachments/ShardedAttachmentHandlerProcessorForHeadAttachment.cs @@ -22,7 +22,7 @@ protected override async ValueTask HandleHeadAttachmentAsync(string documentId, using (ContextPool.AllocateOperationContext(out TransactionOperationContext context)) shardNumber = RequestHandler.DatabaseContext.GetShardNumberFor(context, documentId); - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) { var proxyCommand = new ProxyCommand(command, HttpContext.Response); await RequestHandler.ShardExecutor.ExecuteSingleShardAsync(proxyCommand, shardNumber, token.Token); diff --git a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Collections/ShardedCollectionsHandlerProcessorForGetCollectionStats.cs b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Collections/ShardedCollectionsHandlerProcessorForGetCollectionStats.cs index b3f5730eb3c..196f22d1d33 100644 --- a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Collections/ShardedCollectionsHandlerProcessorForGetCollectionStats.cs +++ b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Collections/ShardedCollectionsHandlerProcessorForGetCollectionStats.cs @@ -21,7 +21,7 @@ public ShardedCollectionsHandlerProcessorForGetCollectionStats([NotNull] Sharded protected override async ValueTask GetStatsAsync(TransactionOperationContext context, bool detailed) { - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) { if (detailed) { diff --git a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Counters/ShardedCountersHandlerProcessorForGetCounters.cs b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Counters/ShardedCountersHandlerProcessorForGetCounters.cs index 5baab57ff5a..7d39c17b2f6 100644 --- a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Counters/ShardedCountersHandlerProcessorForGetCounters.cs +++ b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Counters/ShardedCountersHandlerProcessorForGetCounters.cs @@ -19,7 +19,7 @@ protected override async ValueTask GetCountersAsync(TransactionO var shardNumber = RequestHandler.DatabaseContext.GetShardNumberFor(context, docId); - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) { return await RequestHandler.ShardExecutor.ExecuteSingleShardAsync(op, shardNumber, token.Token); } diff --git a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Counters/ShardedCountersHandlerProcessorForPostCounters.cs b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Counters/ShardedCountersHandlerProcessorForPostCounters.cs index 1476143126c..4c5f39301e5 100644 --- a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Counters/ShardedCountersHandlerProcessorForPostCounters.cs +++ b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Counters/ShardedCountersHandlerProcessorForPostCounters.cs @@ -41,7 +41,7 @@ protected override async ValueTask ApplyCountersOperationsAsync( } - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) { return await RequestHandler.ShardExecutor.ExecuteParallelForShardsAsync(shardsToPositions.Keys.ToArray(), new ShardedCounterBatchOperation(RequestHandler.HttpContext.Request, commandsPerShard), token.Token); diff --git a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Documents/ShardedDocumentHandlerProcessorForDelete.cs b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Documents/ShardedDocumentHandlerProcessorForDelete.cs index 10fc7c267ba..a35db1b8c30 100644 --- a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Documents/ShardedDocumentHandlerProcessorForDelete.cs +++ b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Documents/ShardedDocumentHandlerProcessorForDelete.cs @@ -21,7 +21,7 @@ protected override async ValueTask HandleDeleteDocumentAsync(string docId, strin using (ContextPool.AllocateOperationContext(out TransactionOperationContext context)) shardNumber = RequestHandler.DatabaseContext.GetShardNumberFor(context, docId); - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) { var proxyCommand = new ProxyCommand(command, HttpContext.Response); diff --git a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Documents/ShardedDocumentHandlerProcessorForGenerateClassFromDocument.cs b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Documents/ShardedDocumentHandlerProcessorForGenerateClassFromDocument.cs index 811adeeb390..2c5d966f2d7 100644 --- a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Documents/ShardedDocumentHandlerProcessorForGenerateClassFromDocument.cs +++ b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Documents/ShardedDocumentHandlerProcessorForGenerateClassFromDocument.cs @@ -21,7 +21,7 @@ protected override async ValueTask HandleClassGenerationAsync(string id, string using (ContextPool.AllocateOperationContext(out TransactionOperationContext context)) shardNumber = RequestHandler.DatabaseContext.GetShardNumberFor(context, id); - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) { var proxyCommand = new ProxyCommand(command, HttpContext.Response); await RequestHandler.ShardExecutor.ExecuteSingleShardAsync(proxyCommand, shardNumber, token.Token); diff --git a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Documents/ShardedDocumentHandlerProcessorForGet.cs b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Documents/ShardedDocumentHandlerProcessorForGet.cs index dac1d753ef8..dae714937c6 100644 --- a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Documents/ShardedDocumentHandlerProcessorForGet.cs +++ b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Documents/ShardedDocumentHandlerProcessorForGet.cs @@ -29,7 +29,7 @@ internal class ShardedDocumentHandlerProcessorForGet : AbstractDocumentHandlerPr public ShardedDocumentHandlerProcessorForGet(HttpMethod method, [NotNull] ShardedDocumentHandler requestHandler) : base(method, requestHandler) { - _operationCancelToken = requestHandler.CreateOperationToken(); + _operationCancelToken = requestHandler.CreateHttpRequestBoundOperationToken(); } protected override bool SupportsShowingRequestInTrafficWatch => false; diff --git a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Documents/ShardedDocumentHandlerProcessorForGetDocSize.cs b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Documents/ShardedDocumentHandlerProcessorForGetDocSize.cs index 87a1d4da3e5..a632c100515 100644 --- a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Documents/ShardedDocumentHandlerProcessorForGetDocSize.cs +++ b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Documents/ShardedDocumentHandlerProcessorForGetDocSize.cs @@ -21,7 +21,7 @@ protected override async ValueTask HandleDocSizeAsync(string docId) using (ContextPool.AllocateOperationContext(out TransactionOperationContext context)) shardNumber = RequestHandler.DatabaseContext.GetShardNumberFor(context, docId); - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) { var proxyCommand = new ProxyCommand(command, HttpContext.Response); await RequestHandler.ShardExecutor.ExecuteSingleShardAsync(proxyCommand, shardNumber, token.Token); diff --git a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Documents/ShardedDocumentHandlerProcessorForHead.cs b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Documents/ShardedDocumentHandlerProcessorForHead.cs index f3ade4968ff..1816c25ac3c 100644 --- a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Documents/ShardedDocumentHandlerProcessorForHead.cs +++ b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Documents/ShardedDocumentHandlerProcessorForHead.cs @@ -21,7 +21,7 @@ protected override async ValueTask HandleHeadRequestAsync(string docId, string c using (ContextPool.AllocateOperationContext(out TransactionOperationContext context)) shardNumber = RequestHandler.DatabaseContext.GetShardNumberFor(context, docId); - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) { var proxyCommand = new ProxyCommand(command, HttpContext.Response); await RequestHandler.ShardExecutor.ExecuteSingleShardAsync(proxyCommand, shardNumber, token.Token); diff --git a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Documents/ShardedDocumentHandlerProcessorForPatch.cs b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Documents/ShardedDocumentHandlerProcessorForPatch.cs index d41d6d49e40..10fabc9cb34 100644 --- a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Documents/ShardedDocumentHandlerProcessorForPatch.cs +++ b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Documents/ShardedDocumentHandlerProcessorForPatch.cs @@ -20,7 +20,7 @@ protected override async ValueTask HandleDocumentPatchAsync(string id, string ch int shardNumber = RequestHandler.DatabaseContext.GetShardNumberFor(context, id); - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) { var proxyCommand = new ProxyCommand(command, HttpContext.Response); await RequestHandler.ShardExecutor.ExecuteSingleShardAsync(proxyCommand, shardNumber, token.Token); diff --git a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Documents/ShardedDocumentHandlerProcessorForPut.cs b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Documents/ShardedDocumentHandlerProcessorForPut.cs index d04dc8175f5..8c380b0a027 100644 --- a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Documents/ShardedDocumentHandlerProcessorForPut.cs +++ b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Documents/ShardedDocumentHandlerProcessorForPut.cs @@ -21,7 +21,7 @@ protected override async ValueTask HandleDocumentPutAsync(string id, string chan int shardNumber = RequestHandler.DatabaseContext.GetShardNumberFor(context, id); - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) { var proxyCommand = new ProxyCommand(command, HttpContext.Response); await RequestHandler.ShardExecutor.ExecuteSingleShardAsync(proxyCommand, shardNumber, token.Token); diff --git a/src/Raven.Server/Documents/Sharding/Handlers/Processors/ETL/AbstractShardedEtlHandlerProcessorForTest.cs b/src/Raven.Server/Documents/Sharding/Handlers/Processors/ETL/AbstractShardedEtlHandlerProcessorForTest.cs index be84be873c4..962e7b0847a 100644 --- a/src/Raven.Server/Documents/Sharding/Handlers/Processors/ETL/AbstractShardedEtlHandlerProcessorForTest.cs +++ b/src/Raven.Server/Documents/Sharding/Handlers/Processors/ETL/AbstractShardedEtlHandlerProcessorForTest.cs @@ -33,7 +33,7 @@ protected override IDisposable TestScript(TransactionOperationContext context, T protected override async ValueTask HandleRemoteNodeAsync(TransactionOperationContext context, TTestEtlScript testScript, BlittableJsonReaderObject testScriptJson) { - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) { if (string.IsNullOrEmpty(testScript.DocumentId)) { diff --git a/src/Raven.Server/Documents/Sharding/Handlers/Processors/HiLo/ShardedHiLoHandlerProcessorForGetNextHiLo.cs b/src/Raven.Server/Documents/Sharding/Handlers/Processors/HiLo/ShardedHiLoHandlerProcessorForGetNextHiLo.cs index f0f5f8febe0..86a4bdce857 100644 --- a/src/Raven.Server/Documents/Sharding/Handlers/Processors/HiLo/ShardedHiLoHandlerProcessorForGetNextHiLo.cs +++ b/src/Raven.Server/Documents/Sharding/Handlers/Processors/HiLo/ShardedHiLoHandlerProcessorForGetNextHiLo.cs @@ -19,7 +19,7 @@ public ShardedHiLoHandlerProcessorForGetNextHiLo([NotNull] ShardedDatabaseReques public override async ValueTask ExecuteAsync() { - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) { var tag = GetTag(); var hiloDocId = HiLoHandler.RavenHiloIdPrefix + tag; diff --git a/src/Raven.Server/Documents/Sharding/Handlers/Processors/HiLo/ShardedHiLoHandlerProcessorForReturnHiLo.cs b/src/Raven.Server/Documents/Sharding/Handlers/Processors/HiLo/ShardedHiLoHandlerProcessorForReturnHiLo.cs index 6376db29986..6d57bcc0044 100644 --- a/src/Raven.Server/Documents/Sharding/Handlers/Processors/HiLo/ShardedHiLoHandlerProcessorForReturnHiLo.cs +++ b/src/Raven.Server/Documents/Sharding/Handlers/Processors/HiLo/ShardedHiLoHandlerProcessorForReturnHiLo.cs @@ -19,7 +19,7 @@ public ShardedHiLoHandlerProcessorForReturnHiLo([NotNull] ShardedDatabaseRequest public override async ValueTask ExecuteAsync() { - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) { var tag = GetTag(); var hiloDocId = HiLoHandler.RavenHiloIdPrefix + tag; diff --git a/src/Raven.Server/Documents/Sharding/Handlers/Processors/OngoingTasks/ShardedOngoingTasksHandlerProcessorForBackupDatabaseNow.cs b/src/Raven.Server/Documents/Sharding/Handlers/Processors/OngoingTasks/ShardedOngoingTasksHandlerProcessorForBackupDatabaseNow.cs index 382b2467c3c..510c8531ab8 100644 --- a/src/Raven.Server/Documents/Sharding/Handlers/Processors/OngoingTasks/ShardedOngoingTasksHandlerProcessorForBackupDatabaseNow.cs +++ b/src/Raven.Server/Documents/Sharding/Handlers/Processors/OngoingTasks/ShardedOngoingTasksHandlerProcessorForBackupDatabaseNow.cs @@ -18,7 +18,7 @@ public ShardedOngoingTasksHandlerProcessorForBackupDatabaseNow([NotNull] Sharded protected override ValueTask ScheduleBackupOperationAsync(long taskId, bool isFullBackup, long operationId, DateTime? _) { - var token = new OperationCancelToken(RequestHandler.DatabaseContext.Configuration.Databases.OperationTimeout.AsTimeSpan, RequestHandler.DatabaseContext.DatabaseShutdown); + var token = RequestHandler.CreateTimeLimitedBackgroundOperationToken(); var startTime = SystemTime.UtcNow; var t = RequestHandler.DatabaseContext.Operations.AddRemoteOperation, ShardedBackupResult, ShardedBackupProgress>(operationId, diff --git a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Queries/AbstractShardedOperationQueriesHandlerProcessor.cs b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Queries/AbstractShardedOperationQueriesHandlerProcessor.cs index b4bd7865d55..8866808f9d6 100644 --- a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Queries/AbstractShardedOperationQueriesHandlerProcessor.cs +++ b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Queries/AbstractShardedOperationQueriesHandlerProcessor.cs @@ -47,7 +47,7 @@ protected override void ScheduleOperation(TransactionOperationContext asyncOpera throw new NotSupportedInShardingException("Query with limit is not supported in patch / delete by query operation"); } - var token = new OperationCancelToken(RequestHandler.DatabaseContext.Configuration.Databases.OperationTimeout.AsTimeSpan, RequestHandler.DatabaseContext.DatabaseShutdown); + var token = RequestHandler.CreateTimeLimitedBackgroundOperationToken(); var op = GetOperation(query, operationId, options); diff --git a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Queries/ShardedQueriesHandlerProcessorForPatchTest.cs b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Queries/ShardedQueriesHandlerProcessorForPatchTest.cs index 31395760db8..cddd00e74a3 100644 --- a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Queries/ShardedQueriesHandlerProcessorForPatchTest.cs +++ b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Queries/ShardedQueriesHandlerProcessorForPatchTest.cs @@ -26,7 +26,7 @@ protected override async ValueTask HandleDocumentPatchTestAsync(IndexQueryServer int shardNumber = RequestHandler.DatabaseContext.GetShardNumberFor(context, docId); - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) { var proxyCommand = new ProxyCommand(command, HttpContext.Response); await RequestHandler.ShardExecutor.ExecuteSingleShardAsync(proxyCommand, shardNumber, token.Token); diff --git a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Revisions/ShardedRevisionsHandlerProcessorForGetRevisionsCount.cs b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Revisions/ShardedRevisionsHandlerProcessorForGetRevisionsCount.cs index c57d9820472..35f0535c89b 100644 --- a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Revisions/ShardedRevisionsHandlerProcessorForGetRevisionsCount.cs +++ b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Revisions/ShardedRevisionsHandlerProcessorForGetRevisionsCount.cs @@ -22,7 +22,7 @@ public ShardedRevisionsHandlerProcessorForGetRevisionsCount([NotNull] ShardedDat } long count; - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) { var op = new GetRevisionsCountOperation.GetRevisionsCountCommand(docId); count = await RequestHandler.ShardExecutor.ExecuteSingleShardAsync(op, shardNumber, token.Token); diff --git a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Stats/ShardedStatsHandlerProcessorForDatabaseHealthCheck.cs b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Stats/ShardedStatsHandlerProcessorForDatabaseHealthCheck.cs index 102ad5dbd93..07753eba09b 100644 --- a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Stats/ShardedStatsHandlerProcessorForDatabaseHealthCheck.cs +++ b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Stats/ShardedStatsHandlerProcessorForDatabaseHealthCheck.cs @@ -17,7 +17,7 @@ public ShardedStatsHandlerProcessorForDatabaseHealthCheck([NotNull] ShardedDatab protected override async Task GetNoContentStatusAsync() { - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) { await RequestHandler.ShardExecutor.ExecuteParallelForAllAsync(new GetShardedDatabaseHealthCheckOperation(RequestHandler.HttpContext.Request), token.Token); } diff --git a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Stats/ShardedStatsHandlerProcessorForEssentialStats.cs b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Stats/ShardedStatsHandlerProcessorForEssentialStats.cs index 1cca6d892e9..059e9fa561b 100644 --- a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Stats/ShardedStatsHandlerProcessorForEssentialStats.cs +++ b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Stats/ShardedStatsHandlerProcessorForEssentialStats.cs @@ -22,7 +22,7 @@ public ShardedStatsHandlerProcessorForEssentialStats([NotNull] ShardedDatabaseRe protected override async ValueTask GetEssentialDatabaseStatisticsAsync(TransactionOperationContext context) { - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) { var stats = await RequestHandler.ShardExecutor.ExecuteParallelForAllAsync(new GetShardedEssentialStatisticsOperation(RequestHandler.HttpContext.Request), token.Token); diff --git a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Studio/ShardedStudioCollectionFieldsHandlerProcessorForGetCollectionFields.cs b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Studio/ShardedStudioCollectionFieldsHandlerProcessorForGetCollectionFields.cs index 1668596b201..98b24fad481 100644 --- a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Studio/ShardedStudioCollectionFieldsHandlerProcessorForGetCollectionFields.cs +++ b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Studio/ShardedStudioCollectionFieldsHandlerProcessorForGetCollectionFields.cs @@ -18,7 +18,7 @@ public ShardedStudioCollectionFieldsHandlerProcessorForGetCollectionFields([NotN protected override async ValueTask> GetFieldsAsync(TransactionOperationContext context, string collection, string prefix) { - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) { var etag = RequestHandler.GetStringFromHeaders(Constants.Headers.IfNoneMatch); var op = new ShardedGetCollectionFieldsOperation(context, HttpContext, collection, prefix, etag); diff --git a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Studio/ShardedStudioCollectionHandlerProcessorForDeleteCollection.cs b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Studio/ShardedStudioCollectionHandlerProcessorForDeleteCollection.cs index 966a9ed6693..90121c491e8 100644 --- a/src/Raven.Server/Documents/Sharding/Handlers/Processors/Studio/ShardedStudioCollectionHandlerProcessorForDeleteCollection.cs +++ b/src/Raven.Server/Documents/Sharding/Handlers/Processors/Studio/ShardedStudioCollectionHandlerProcessorForDeleteCollection.cs @@ -21,7 +21,7 @@ protected override void ScheduleDeleteCollection(TransactionOperationContext con { using (returnToContextPool) { - var token = new OperationCancelToken(RequestHandler.DatabaseContext.Configuration.Databases.OperationTimeout.AsTimeSpan, RequestHandler.DatabaseContext.DatabaseShutdown); + var token = RequestHandler.CreateTimeLimitedBackgroundOperationToken(); var shardToIds = ShardLocator.GetDocumentIdsByShards(context, RequestHandler.DatabaseContext, excludeIds); diff --git a/src/Raven.Server/Documents/Sharding/Handlers/Processors/TimeSeries/ShardedTimeSeriesHandlerProcessorForGetDebugSegmentsSummary.cs b/src/Raven.Server/Documents/Sharding/Handlers/Processors/TimeSeries/ShardedTimeSeriesHandlerProcessorForGetDebugSegmentsSummary.cs index 2168637ff9a..76248de9e23 100644 --- a/src/Raven.Server/Documents/Sharding/Handlers/Processors/TimeSeries/ShardedTimeSeriesHandlerProcessorForGetDebugSegmentsSummary.cs +++ b/src/Raven.Server/Documents/Sharding/Handlers/Processors/TimeSeries/ShardedTimeSeriesHandlerProcessorForGetDebugSegmentsSummary.cs @@ -18,7 +18,7 @@ protected override async ValueTask GetSegmentsSummaryAndWriteAsync(TransactionOp { int shardNumber = RequestHandler.DatabaseContext.GetShardNumberFor(context, docId); var op = new ProxyCommand(new GetSegmentsSummaryOperation.GetSegmentsSummaryCommand(docId, name, from, to), RequestHandler.HttpContext.Response); - using(var token = RequestHandler.CreateOperationToken()) + using(var token = RequestHandler.CreateHttpRequestBoundOperationToken()) await RequestHandler.ShardExecutor.ExecuteSingleShardAsync(op, shardNumber, token.Token); } } diff --git a/src/Raven.Server/Documents/Sharding/Handlers/Processors/TimeSeries/ShardedTimeSeriesHandlerProcessorForGetTimeSeries.cs b/src/Raven.Server/Documents/Sharding/Handlers/Processors/TimeSeries/ShardedTimeSeriesHandlerProcessorForGetTimeSeries.cs index 29e4ef57399..2953c9f8d87 100644 --- a/src/Raven.Server/Documents/Sharding/Handlers/Processors/TimeSeries/ShardedTimeSeriesHandlerProcessorForGetTimeSeries.cs +++ b/src/Raven.Server/Documents/Sharding/Handlers/Processors/TimeSeries/ShardedTimeSeriesHandlerProcessorForGetTimeSeries.cs @@ -62,7 +62,7 @@ protected override async ValueTask GetTimeSeriesAndWriteA var fetchDocsOp = new FetchDocumentsFromShardsOperation(context, RequestHandler.HttpContext.Request, RequestHandler.DatabaseContext, idsByShards, includePaths: null, includeRevisions: null, counterIncludes: default, timeSeriesIncludes: null, compareExchangeValueIncludes: null, etag: null, metadataOnly: false); ShardedReadResult result; - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) result = await RequestHandler.ShardExecutor.ExecuteParallelForShardsAsync(idsByShards.Keys.ToArray(), fetchDocsOp, token.Token); var includesDocId = $"TimeSeriesRangeIncludes/{docId}"; diff --git a/src/Raven.Server/Documents/Sharding/Handlers/Processors/TimeSeries/ShardedTimeSeriesHandlerProcessorForPostTimeSeries.cs b/src/Raven.Server/Documents/Sharding/Handlers/Processors/TimeSeries/ShardedTimeSeriesHandlerProcessorForPostTimeSeries.cs index 3e553fa88d8..319e4bc2894 100644 --- a/src/Raven.Server/Documents/Sharding/Handlers/Processors/TimeSeries/ShardedTimeSeriesHandlerProcessorForPostTimeSeries.cs +++ b/src/Raven.Server/Documents/Sharding/Handlers/Processors/TimeSeries/ShardedTimeSeriesHandlerProcessorForPostTimeSeries.cs @@ -16,7 +16,7 @@ public ShardedTimeSeriesHandlerProcessorForPostTimeSeries([NotNull] ShardedDatab protected override async ValueTask ApplyTimeSeriesOperationAsync(string docId, TimeSeriesOperation operation, TransactionOperationContext context) { int shardNumber = RequestHandler.DatabaseContext.GetShardNumberFor(context, docId); - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) { var cmd = new TimeSeriesBatchOperation.TimeSeriesBatchCommand(RequestHandler.ShardExecutor.Conventions, docId, operation); await RequestHandler.ShardExecutor.ExecuteSingleShardAsync(new ProxyCommand(cmd, RequestHandler.HttpContext.Response), shardNumber, token.Token); diff --git a/src/Raven.Server/Documents/Sharding/Handlers/ReshardingHandler.cs b/src/Raven.Server/Documents/Sharding/Handlers/ReshardingHandler.cs index c7894e5a77c..089a83ffe01 100644 --- a/src/Raven.Server/Documents/Sharding/Handlers/ReshardingHandler.cs +++ b/src/Raven.Server/Documents/Sharding/Handlers/ReshardingHandler.cs @@ -45,10 +45,10 @@ public async Task StartResharding() var opDesc = new ReshardingOperationDetails { FromBucket = fromBucket, - ToBucket = toBucket, + ToBucket = toBucket, ToShard = toShard }; - var token = new OperationCancelToken(ServerStore.ServerShutdown); + var token = CreateBackgroundOperationToken(); _ = ServerStore.Operations.AddLocalOperation(operationId, OperationType.Resharding, $"Move to shard {toShard} buckets [{fromBucket}-{toBucket}]", opDesc, async action => { var result = new ReshardingResult(); diff --git a/src/Raven.Server/Documents/Sharding/Handlers/ShardedDatabaseRequestHandler.cs b/src/Raven.Server/Documents/Sharding/Handlers/ShardedDatabaseRequestHandler.cs index 7e522732cf9..bcf91f41d33 100644 --- a/src/Raven.Server/Documents/Sharding/Handlers/ShardedDatabaseRequestHandler.cs +++ b/src/Raven.Server/Documents/Sharding/Handlers/ShardedDatabaseRequestHandler.cs @@ -100,7 +100,7 @@ public override async Task WaitForIndexToBeAppliedAsync(TransactionOperationCont { await ServerStore.Cluster.WaitForIndexNotification(index); - using (var cts = CreateOperationToken()) + using (var cts = CreateHttpRequestBoundOperationToken()) { await DatabaseContext.RachisLogIndexNotifications.WaitForIndexNotification(index, cts.Token); @@ -114,27 +114,44 @@ public override async Task WaitForIndexToBeAppliedAsync(TransactionOperationCont } } - public override OperationCancelToken CreateOperationToken() + public override OperationCancelToken CreateHttpRequestBoundTimeLimitedOperationToken() { - return new OperationCancelToken(DatabaseContext.DatabaseShutdown, HttpContext.RequestAborted); + return CreateHttpRequestBoundTimeLimitedOperationToken(DatabaseContext.Configuration.Databases.OperationTimeout.AsTimeSpan); + } + + public override OperationCancelToken CreateHttpRequestBoundTimeLimitedOperationTokenForQuery() + { + return CreateHttpRequestBoundTimeLimitedOperationToken(DatabaseContext.Configuration.Databases.QueryTimeout.AsTimeSpan); } - public override OperationCancelToken CreateOperationToken(TimeSpan cancelAfter) + public override OperationCancelToken CreateHttpRequestBoundTimeLimitedOperationToken(TimeSpan cancelAfter) { return new OperationCancelToken(cancelAfter, DatabaseContext.DatabaseShutdown, HttpContext.RequestAborted); } - public override OperationCancelToken CreateTimeLimitedOperationToken(bool useRequestAbortedToken = true) + public override OperationCancelToken CreateHttpRequestBoundOperationToken() { - if (useRequestAbortedToken) - return new OperationCancelToken(DatabaseContext.Configuration.Databases.OperationTimeout.AsTimeSpan, DatabaseContext.DatabaseShutdown, HttpContext.RequestAborted); - return new OperationCancelToken(DatabaseContext.Configuration.Databases.OperationTimeout.AsTimeSpan, DatabaseContext.DatabaseShutdown); + return new OperationCancelToken(DatabaseContext.DatabaseShutdown, HttpContext.RequestAborted); + } + public override OperationCancelToken CreateTimeLimitedBackgroundOperationTokenForQueryOperation() + { + return new OperationCancelToken(DatabaseContext.Configuration.Databases.QueryOperationTimeout.AsTimeSpan, DatabaseContext.DatabaseShutdown); + } + + public override OperationCancelToken CreateTimeLimitedBackgroundOperationTokenForCollectionOperation() + { + return new OperationCancelToken(DatabaseContext.Configuration.Databases.CollectionOperationTimeout.AsTimeSpan, DatabaseContext.DatabaseShutdown); + } + + public override OperationCancelToken CreateTimeLimitedBackgroundOperationToken() + { + return new OperationCancelToken(DatabaseContext.Configuration.Databases.OperationTimeout.AsTimeSpan, DatabaseContext.DatabaseShutdown); } - public override OperationCancelToken CreateTimeLimitedQueryToken() + public override OperationCancelToken CreateBackgroundOperationToken() { - return new OperationCancelToken(DatabaseContext.Configuration.Databases.QueryTimeout.AsTimeSpan, DatabaseContext.DatabaseShutdown, HttpContext.RequestAborted); + return new OperationCancelToken(DatabaseContext.DatabaseShutdown); } public override string DatabaseName => DatabaseContext.DatabaseName; diff --git a/src/Raven.Server/Smuggler/Documents/Handlers/SmugglerHandler.cs b/src/Raven.Server/Smuggler/Documents/Handlers/SmugglerHandler.cs index 91e13653e55..1eefc80c197 100644 --- a/src/Raven.Server/Smuggler/Documents/Handlers/SmugglerHandler.cs +++ b/src/Raven.Server/Smuggler/Documents/Handlers/SmugglerHandler.cs @@ -334,7 +334,7 @@ public async Task MigrateFromAnotherDatabase() } var operationId = GetLongQueryString("operationId", false) ?? Database.Operations.GetNextOperationId(); - var token = new OperationCancelToken(Database.DatabaseShutdown); + var token = CreateBackgroundOperationToken(); var transformScript = migrationConfiguration.TransformScript; _ = Database.Operations.AddLocalOperation( @@ -444,7 +444,7 @@ public async Task ImportFromCsv() } } - var token = CreateOperationToken(); + var token = CreateHttpRequestBoundOperationToken(); var result = new SmugglerResult(); var operationId = GetLongQueryString("operationId", false) ?? Database.Operations.GetNextOperationId(); var collection = GetStringQueryString("collection", false); diff --git a/src/Raven.Server/Web/RequestHandler.cs b/src/Raven.Server/Web/RequestHandler.cs index 151cf0c196e..d58d7a7765f 100644 --- a/src/Raven.Server/Web/RequestHandler.cs +++ b/src/Raven.Server/Web/RequestHandler.cs @@ -27,15 +27,12 @@ using Raven.Client.ServerWide.Commands; using Raven.Client.ServerWide.Operations.Certificates; using Raven.Client.Util; -using Raven.Server.Documents.Handlers; -using Raven.Server.Documents.Handlers.Processors.OngoingTasks; using Raven.Server.Extensions; using Raven.Server.Json; using Raven.Server.Routing; using Raven.Server.ServerWide; using Raven.Server.ServerWide.Context; using Raven.Server.TrafficWatch; -using Raven.Server.Web.System; using Sparrow; using Sparrow.Json; using Sparrow.Json.Parsing; @@ -92,7 +89,7 @@ public virtual void Init(RequestHandlerContext context) } public abstract Task CheckForChanges(RequestHandlerContext context); - + internal Stream TryGetRequestFromStream(string itemName) { if (HttpContext.Request.HasFormContentType == false) @@ -817,21 +814,26 @@ protected void RedirectToLeader() HttpContext.Response.Headers.Add("Location", leaderLocation); } - public virtual OperationCancelToken CreateOperationToken() + public virtual OperationCancelToken CreateHttpRequestBoundOperationToken() { return new OperationCancelToken(ServerStore.ServerShutdown, HttpContext.RequestAborted); } - public virtual OperationCancelToken CreateOperationToken(CancellationToken token) + public virtual OperationCancelToken CreateHttpRequestBoundOperationToken(CancellationToken token) { return new OperationCancelToken(ServerStore.ServerShutdown, HttpContext.RequestAborted, token); } - public virtual OperationCancelToken CreateOperationToken(TimeSpan cancelAfter) + public virtual OperationCancelToken CreateHttpRequestBoundTimeLimitedOperationToken(TimeSpan cancelAfter) { return new OperationCancelToken(cancelAfter, ServerStore.ServerShutdown, HttpContext.RequestAborted); } + public virtual OperationCancelToken CreateBackgroundOperationToken() + { + return new OperationCancelToken(ServerStore.ServerShutdown); + } + public virtual Task WaitForIndexToBeAppliedAsync(TransactionOperationContext context, long index) { return Task.CompletedTask; @@ -905,7 +907,7 @@ private DynamicJsonValue GetConnectionStringConfigurationAuditJson(BlittableJson { case ConnectionStringType.Raven: return JsonDeserializationClient.RavenConnectionString(configuration).ToAuditJson(); - + case ConnectionStringType.ElasticSearch: return JsonDeserializationClient.ElasticSearchConnectionString(configuration).ToAuditJson(); diff --git a/src/Raven.Server/Web/Studio/Processors/AbstractBucketsHandlerProcessorForGetBuckets.cs b/src/Raven.Server/Web/Studio/Processors/AbstractBucketsHandlerProcessorForGetBuckets.cs index 75e7c5b0812..342311ef9be 100644 --- a/src/Raven.Server/Web/Studio/Processors/AbstractBucketsHandlerProcessorForGetBuckets.cs +++ b/src/Raven.Server/Web/Studio/Processors/AbstractBucketsHandlerProcessorForGetBuckets.cs @@ -36,7 +36,7 @@ public override async ValueTask ExecuteAsync() (int fromBucket, int toBucket, int range) = GetParameters(); using(ContextPool.AllocateOperationContext(out TOperationContext context)) - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) { var bucketsResults = await GetBucketsResults(context, fromBucket, toBucket, range,token.Token); diff --git a/src/Raven.Server/Web/Studio/Sharding/Processors/ShardedBucketsHandlerProcessorForGetBucket.cs b/src/Raven.Server/Web/Studio/Sharding/Processors/ShardedBucketsHandlerProcessorForGetBucket.cs index 91e0cd77ecc..350913c3e91 100644 --- a/src/Raven.Server/Web/Studio/Sharding/Processors/ShardedBucketsHandlerProcessorForGetBucket.cs +++ b/src/Raven.Server/Web/Studio/Sharding/Processors/ShardedBucketsHandlerProcessorForGetBucket.cs @@ -14,7 +14,7 @@ public ShardedBucketsHandlerProcessorForGetBucket([NotNull] ShardedDatabaseReque } protected override async ValueTask GetBucketInfo(TransactionOperationContext context, int bucket) { - using (var token = RequestHandler.CreateOperationToken()) + using (var token = RequestHandler.CreateHttpRequestBoundOperationToken()) { var shardNumber = ShardHelper.GetShardNumberFor(RequestHandler.DatabaseContext.DatabaseRecord.Sharding, bucket); var cmd = new GetBucketInfoCommand(bucket); diff --git a/src/Raven.Server/Web/Studio/SqlMigrationHandler.cs b/src/Raven.Server/Web/Studio/SqlMigrationHandler.cs index d8abd699607..914ad3f882d 100644 --- a/src/Raven.Server/Web/Studio/SqlMigrationHandler.cs +++ b/src/Raven.Server/Web/Studio/SqlMigrationHandler.cs @@ -58,7 +58,7 @@ public async Task ImportSql() var dbDriver = DatabaseDriverDispatcher.CreateDriver(sourceSqlDatabase.Provider, sourceSqlDatabase.ConnectionString, sourceSqlDatabase.Schemas); var schema = dbDriver.FindSchema(); - var token = new OperationCancelToken(Database.DatabaseShutdown); + var token = CreateBackgroundOperationToken(); var result = new MigrationResult(migrationRequest.Settings); var collectionsCount = migrationRequest.Settings.Collections.Count; diff --git a/src/Raven.Server/Web/System/AdminDatabasesHandler.cs b/src/Raven.Server/Web/System/AdminDatabasesHandler.cs index 9f053ea48e6..dbfb140aa1d 100644 --- a/src/Raven.Server/Web/System/AdminDatabasesHandler.cs +++ b/src/Raven.Server/Web/System/AdminDatabasesHandler.cs @@ -568,7 +568,7 @@ public async Task RestoreDatabase() await ServerStore.EnsureNotPassiveAsync(); - var cancelToken = new OperationCancelToken(ServerStore.ServerShutdown); + var cancelToken = CreateBackgroundOperationToken(); var operationId = ServerStore.Operations.GetNextOperationId(); @@ -604,7 +604,7 @@ public async Task DelayBackupTask() if (database == null) DatabaseDoesNotExistException.Throw(databaseName); - using (var token = CreateOperationToken()) + using (var token = CreateHttpRequestBoundOperationToken()) { await database.PeriodicBackupRunner.DelayAsync(id, delay.Value, GetCurrentCertificate(), token.Token); } @@ -1044,7 +1044,7 @@ public async Task CompactDatabase() } var database = await ServerStore.DatabasesLandlord.TryGetOrCreateResourceStore(compactSettings.DatabaseName).ConfigureAwait(false); - var token = new OperationCancelToken(ServerStore.ServerShutdown); + var token = CreateBackgroundOperationToken(); var compactDatabaseTask = new CompactDatabaseTask( ServerStore, compactSettings.DatabaseName, @@ -1225,7 +1225,7 @@ public async Task MigrateDatabaseOffline() var (commandline, tmpFile) = configuration.GenerateExporterCommandLine(); var processStartInfo = new ProcessStartInfo(dataExporter, commandline); - var token = new OperationCancelToken(ServerStore.ServerShutdown); + var token = new OperationCancelToken(database.DatabaseShutdown); Task timeout = null; if (configuration.Timeout.HasValue) diff --git a/src/Raven.Server/Web/System/SetupHandler.cs b/src/Raven.Server/Web/System/SetupHandler.cs index 9908a30043b..272bd7380f3 100644 --- a/src/Raven.Server/Web/System/SetupHandler.cs +++ b/src/Raven.Server/Web/System/SetupHandler.cs @@ -500,7 +500,7 @@ public async Task SetupUnsecuredPackage() AssertOnlyInSetupMode(); var stream = TryGetRequestFromStream("Options") ?? RequestBodyStream(); - var operationCancelToken = CreateOperationToken(); + var operationCancelToken = CreateHttpRequestBoundOperationToken(); var operationId = GetLongQueryString("operationId", false); if (operationId.HasValue == false) @@ -555,7 +555,7 @@ public async Task SetupSecured() AssertOnlyInSetupMode(); var stream = TryGetRequestFromStream("Options") ?? RequestBodyStream(); - var operationCancelToken = CreateOperationToken(); + var operationCancelToken = CreateHttpRequestBoundOperationToken(); var operationId = GetLongQueryString("operationId", false); if (operationId.HasValue == false) @@ -619,7 +619,7 @@ public async Task SetupLetsEncrypt() var stream = TryGetRequestFromStream("Options") ?? RequestBodyStream(); - var operationCancelToken = CreateOperationToken(); + var operationCancelToken = CreateHttpRequestBoundOperationToken(); var operationId = GetLongQueryString("operationId", false); if (operationId.HasValue == false) @@ -740,7 +740,7 @@ public async Task ContinueUnsecuredClusterSetup() { AssertOnlyInSetupMode(); - var operationCancelToken = CreateOperationToken(); + var operationCancelToken = CreateHttpRequestBoundOperationToken(); var operationId = GetLongQueryString("operationId", false); if (operationId.HasValue == false) @@ -770,7 +770,7 @@ public async Task ContinueClusterSetup() { AssertOnlyInSetupMode(); - var operationCancelToken = CreateOperationToken(); + var operationCancelToken = CreateHttpRequestBoundOperationToken(); var operationId = GetLongQueryString("operationId", false); if (operationId.HasValue == false)