BulkInsert.Store (), кажется, никогда не вернется - PullRequest
0 голосов
/ 26 января 2019

Я использую массовую вставку, чтобы «скопировать» документы с идентификатором типа «session / 1/0000000000000000020-A» в БД с новым идентификатором:

                try
                {
                    //Insert new items.
                    using (var bulkInsert = DocumentStoreHolder.Store.BulkInsert())
                    {
                        foreach (var sessionItem in storedItems)
                        {
                            var attDoc = (AttributeDoc) sessionItem;
                            if (attDoc.Value == "00000032")
                            {
                                var x = 0; //dummy code to set a breakpoint.
                            }

                            sessionItem.StorageId = null; //Id is NULLED here.
                            bulkInsert.Store(sessionItem);
                        }
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                    throw;
                }

У меня есть документы с«Значение» от «00000000» до «00000050».Документы копируются до тех пор, пока не будет достигнут документ со значением «00000032».На данный момент

bulkInsert.Store(sessionItem)

, кажется, никогда не вернется.Я не получаю исключения.В Studio я вижу это:

BulkInsert Stats

К вашему сведению: мое поле RavenDB Id сопоставлено с StorageId.

store.Conventions.FindIdentityProperty = memberInfo => memberInfo.Name == nameof(BaseDoc.StorageId);

I'mвсе еще пытаюсь воспроизвести это на небольшом примере ...

Версия: 4.1.4-patch-41008

Есть мысли по этому поводу?

ОБНОВЛЕНИЕ: если я убью своюПриложение Я вижу следующее исключение в журнале Raven-Studio:

failed to process bulk insert Inserted 32 documents in 11 batches. Last document id: 'AttributeDocs/160-A'
System.InvalidOperationException: Failed to process bulk insert Inserted 32 documents in 11 batches. Last document id: 'AttributeDocs/160-A' ---> Microsoft.AspNetCore.Connections.ConnectionResetException: Eine vorhandene Verbindung wurde vom Remotehost geschlossen ---> System.Net.Sockets.SocketException: Eine vorhandene Verbindung wurde vom Remotehost geschlossen
   at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketAwaitable.GetResult()
   at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketConnection.ProcessReceives()
   at Microsoft.AspNetCore.Server.Kestrel.Transport.Sockets.Internal.SocketConnection.DoReceive()
   --- End of inner exception stack trace ---
   at System.IO.Pipelines.PipeCompletion.ThrowLatchedException()
   at System.IO.Pipelines.Pipe.GetReadResult(ReadResult& result)
   at System.IO.Pipelines.Pipe.GetReadAsyncResult()
   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.Http1MessageBody.PumpAsync()
   at System.IO.Pipelines.PipeCompletion.ThrowLatchedException()
   at System.IO.Pipelines.Pipe.GetReadResult(ReadResult& result)
   at System.IO.Pipelines.Pipe.GetReadAsyncResult()
   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.MessageBody.ReadAsync(Memory`1 buffer, CancellationToken cancellationToken)
   at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpRequestStream.ReadAsyncInternal(Memory`1 buffer, CancellationToken cancellationToken)
   at Raven.Client.Extensions.TaskExtensions.<>c__3`1.<WithCancellation>b__3_0(Task`1 t) in C:\Builds\RavenDB-4.1-Patch\41008\src\Raven.Client\Extensions\TaskExtensions.cs:line 36
   at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke()
   at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location where exception was thrown ---
   at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot)
--- End of stack trace from previous location where exception was thrown ---
   at Raven.Server.Documents.Handlers.BatchRequestParser.RefillParserBuffer(Stream stream, ManagedPinnedBuffer buffer, UnmanagedJsonParser parser, CancellationToken token) in C:\Builds\RavenDB-4.1-Patch\41008\src\Raven.Server\Documents\Handlers\BatchRequestParser.cs:line 965
   at Raven.Server.Documents.Handlers.BatchRequestParser.ReadMany.MoveNextUnlikely(JsonOperationContext ctx) in C:\Builds\RavenDB-4.1-Patch\41008\src\Raven.Server\Documents\Handlers\BatchRequestParser.cs:line 314
   at Raven.Server.Documents.Handlers.BulkInsertHandler.DoBulkInsert(Action`1 onProgress, CancellationToken token) in C:\Builds\RavenDB-4.1-Patch\41008\src\Raven.Server\Documents\Handlers\BulkInsertHandler.cs:line 96
   --- End of inner exception stack trace ---
   at Raven.Server.Documents.Handlers.BulkInsertHandler.DoBulkInsert(Action`1 onProgress, CancellationToken token) in C:\Builds\RavenDB-4.1-Patch\41008\src\Raven.Server\Documents\Handlers\BulkInsertHandler.cs:line 141
   at Raven.Server.Documents.Handlers.BulkInsertHandler.BulkInsert() in C:\Builds\RavenDB-4.1-Patch\41008\src\Raven.Server\Documents\Handlers\BulkInsertHandler.cs:line 28
   at Raven.Server.Routing.RequestRouter.HandlePath(RequestHandlerContext reqCtx) in C:\Builds\RavenDB-4.1-Patch\41008\src\Raven.Server\Routing\RequestRouter.cs:line 124
   at Raven.Server.RavenServerStartup.RequestHandler(HttpContext context) in C:\Builds\RavenDB-4.1-Patch\41008\src\Raven.Server\RavenServerStartup.cs:line 173

ОБНОВЛЕНИЕ 2:

, если я не обнуляет StorageId

sessionItem.StorageId = null; //Id is NULLED here.

BulkInsert работает.Но тогда операция, конечно, бессмысленна.

Обновление3 :

Call stack

Thread

Я полагаю, клиент не может рисовать новые номера HiLo.Если я использую «someId /», то каждый документ сохраняется нормально.

Обновление 4:

mscorlib.dll!System.Threading.Monitor.Wait(object obj, int millisecondsTimeout, bool exitContext)
mscorlib.dll!System.Threading.Monitor.Wait(object obj, int millisecondsTimeout)
mscorlib.dll!System.Threading.ManualResetEventSlim.Wait(int millisecondsTimeout, System.Threading.CancellationToken cancellationToken)
mscorlib.dll!System.Threading.Tasks.Task.SpinThenBlockingWait(int millisecondsTimeout, System.Threading.CancellationToken cancellationToken)
mscorlib.dll!System.Threading.Tasks.Task.InternalWait(int millisecondsTimeout, System.Threading.CancellationToken cancellationToken)
mscorlib.dll!System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(System.Threading.Tasks.Task task)
Raven.Client.dll!Raven.Client.Util.AsyncHelpers.RunSync<string>(System.Func<System.Threading.Tasks.Task<string>> task) Line 133
    at C:\Builds\RavenDB-Stable-4.1\src\Raven.Client\Util\AsyncHelpers.cs(133)
Raven.Client.dll!Raven.Client.Documents.BulkInsert.BulkInsertOperation..ctor.AnonymousMethod__1(object entity) Line 214
    at C:\Builds\RavenDB-Stable-4.1\src\Raven.Client\Documents\BulkInsert\BulkInsertOperation.cs(214)
Raven.Client.dll!Raven.Client.Documents.Identity.GenerateEntityIdOnTheClient.GetOrGenerateDocumentId(object entity) Line 58
    at C:\Builds\RavenDB-Stable-4.1\src\Raven.Client\Documents\Identity\GenerateEntityIdOnTheClient.cs(58)
Raven.Client.dll!Raven.Client.Documents.Identity.GenerateEntityIdOnTheClient.GenerateDocumentIdForStorage(object entity) Line 83
    at C:\Builds\RavenDB-Stable-4.1\src\Raven.Client\Documents\Identity\GenerateEntityIdOnTheClient.cs(83)
Raven.Client.dll!Raven.Client.Documents.BulkInsert.BulkInsertOperation.GetId(object entity) Line 490
    at C:\Builds\RavenDB-Stable-4.1\src\Raven.Client\Documents\BulkInsert\BulkInsertOperation.cs(490)
Raven.Client.dll!Raven.Client.Documents.BulkInsert.BulkInsertOperation.StoreAsync(object entity, Raven.Client.Documents.Session.IMetadataDictionary metadata) Line 256
    at C:\Builds\RavenDB-Stable-4.1\src\Raven.Client\Documents\BulkInsert\BulkInsertOperation.cs(256)
GrpcAkka.Server.exe!GrpcAkka.Server.Impl.SessionsImpl.SaveSession(SaveSessionRequest request, Grpc.Core.ServerCallContext context) Line 175
    at C:\Users\KingKnecht\Documents\Visual Studio 2017\Projects\GrpcAkka\GrpcAkka.Server\Impl\SessionsImpl.cs(175)
[Resuming Async Method]
mscorlib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.MoveNextRunner.InvokeMoveNext(object stateMachine)
mscorlib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx)
mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx)
mscorlib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.MoveNextRunner.Run()
mscorlib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.OutputAsyncCausalityEvents.AnonymousMethod__0()
mscorlib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.ContinuationWrapper.Invoke()
mscorlib.dll!System.Runtime.CompilerServices.TaskAwaiter.OutputWaitEtwEvents.AnonymousMethod__0()
mscorlib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.ContinuationWrapper.Invoke()
mscorlib.dll!System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action action, bool allowInlining, ref System.Threading.Tasks.Task currentTask)
mscorlib.dll!System.Threading.Tasks.Task.FinishContinuations()
mscorlib.dll!System.Threading.Tasks.Task.FinishStageThree()
mscorlib.dll!System.Threading.Tasks.Task<System.__Canon>.TrySetResult(System.__Canon result)
mscorlib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<string>.SetResult(string result)
Raven.Client.dll!Raven.Client.Documents.BulkInsert.BulkInsertOperation.StoreAsync(object entity, Raven.Client.Documents.Session.IMetadataDictionary metadata) Line 262
    at C:\Builds\RavenDB-Stable-4.1\src\Raven.Client\Documents\BulkInsert\BulkInsertOperation.cs(262)
[Resuming Async Method]
mscorlib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.MoveNextRunner.InvokeMoveNext(object stateMachine)
mscorlib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx)
mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx)
mscorlib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.MoveNextRunner.Run()
mscorlib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.OutputAsyncCausalityEvents.AnonymousMethod__0()
mscorlib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.ContinuationWrapper.Invoke()
mscorlib.dll!System.Runtime.CompilerServices.TaskAwaiter.OutputWaitEtwEvents.AnonymousMethod__0()
mscorlib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.ContinuationWrapper.Invoke()
mscorlib.dll!System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action action, bool allowInlining, ref System.Threading.Tasks.Task currentTask)
mscorlib.dll!System.Threading.Tasks.Task.FinishContinuations()
mscorlib.dll!System.Threading.Tasks.Task.FinishStageThree()
mscorlib.dll!System.Threading.Tasks.Task<System.Threading.Tasks.VoidTaskResult>.TrySetResult(System.Threading.Tasks.VoidTaskResult result)
mscorlib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.Threading.Tasks.VoidTaskResult>.SetResult(System.Threading.Tasks.VoidTaskResult result)
mscorlib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder.SetResult()
Raven.Client.dll!Raven.Client.Documents.BulkInsert.BulkInsertOperation.StoreAsync(object entity, string id, Raven.Client.Documents.Session.IMetadataDictionary metadata) Line 380
    at C:\Builds\RavenDB-Stable-4.1\src\Raven.Client\Documents\BulkInsert\BulkInsertOperation.cs(380)
[Resuming Async Method]
mscorlib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.MoveNextRunner.InvokeMoveNext(object stateMachine)
mscorlib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx)
mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx)
mscorlib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.MoveNextRunner.Run()
mscorlib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.OutputAsyncCausalityEvents.AnonymousMethod__0()
mscorlib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.ContinuationWrapper.Invoke()
mscorlib.dll!System.Runtime.CompilerServices.TaskAwaiter.OutputWaitEtwEvents.AnonymousMethod__0()
mscorlib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.ContinuationWrapper.Invoke()
mscorlib.dll!System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action action, bool allowInlining, ref System.Threading.Tasks.Task currentTask)
mscorlib.dll!System.Threading.Tasks.Task.FinishContinuations()
mscorlib.dll!System.Threading.Tasks.Task.FinishStageThree()
mscorlib.dll!System.Threading.Tasks.Task<System.Threading.Tasks.VoidTaskResult>.TrySetResult(System.Threading.Tasks.VoidTaskResult result)
mscorlib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.Threading.Tasks.VoidTaskResult>.SetResult(System.Threading.Tasks.VoidTaskResult result)
mscorlib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.Threading.Tasks.VoidTaskResult>.SetResult(System.Threading.Tasks.Task<System.Threading.Tasks.VoidTaskResult> completedTask)
Raven.Client.dll!Raven.Client.Documents.BulkInsert.BulkInsertOperation.WaitForId() Line 242
    at C:\Builds\RavenDB-Stable-4.1\src\Raven.Client\Documents\BulkInsert\BulkInsertOperation.cs(242)
[Resuming Async Method]
mscorlib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.MoveNextRunner.InvokeMoveNext(object stateMachine)
mscorlib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx)
mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx)
mscorlib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.MoveNextRunner.Run()
mscorlib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.OutputAsyncCausalityEvents.AnonymousMethod__0()
mscorlib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.ContinuationWrapper.Invoke()
mscorlib.dll!System.Runtime.CompilerServices.TaskAwaiter.OutputWaitEtwEvents.AnonymousMethod__0()
mscorlib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.ContinuationWrapper.Invoke()
mscorlib.dll!System.Threading.Tasks.AwaitTaskContinuation.RunOrScheduleAction(System.Action action, bool allowInlining, ref System.Threading.Tasks.Task currentTask)
mscorlib.dll!System.Threading.Tasks.Task.FinishContinuations()
mscorlib.dll!System.Threading.Tasks.Task.FinishStageThree()
mscorlib.dll!System.Threading.Tasks.Task<System.Threading.Tasks.VoidTaskResult>.TrySetResult(System.Threading.Tasks.VoidTaskResult result)
mscorlib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder<System.Threading.Tasks.VoidTaskResult>.SetResult(System.Threading.Tasks.VoidTaskResult result)
mscorlib.dll!System.Runtime.CompilerServices.AsyncTaskMethodBuilder.SetResult()
Raven.Client.dll!Raven.Client.Http.RequestExecutor.ExecuteAsync<long>(Raven.Client.Http.ServerNode chosenNode, int? nodeIndex, Sparrow.Json.JsonOperationContext context, Raven.Client.Http.RavenCommand<long> command, bool shouldRetry, Raven.Client.Documents.Session.SessionInfo sessionInfo, System.Threading.CancellationToken token) Line 823
    at C:\Builds\RavenDB-Stable-4.1\src\Raven.Client\Http\RequestExecutor.cs(823)
[Resuming Async Method]
mscorlib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.MoveNextRunner.InvokeMoveNext(object stateMachine)
mscorlib.dll!System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx)
mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state, bool preserveSyncCtx)
mscorlib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.MoveNextRunner.Run()
mscorlib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.OutputAsyncCausalityEvents.AnonymousMethod__0()
mscorlib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.ContinuationWrapper.Invoke()
mscorlib.dll!System.Runtime.CompilerServices.TaskAwaiter.OutputWaitEtwEvents.AnonymousMethod__0()
mscorlib.dll!System.Runtime.CompilerServices.AsyncMethodBuilderCore.ContinuationWrapper.Invoke()
mscorlib.dll!System.Threading.Tasks.AwaitTaskContinuation.ExecuteWorkItemHelper()
mscorlib.dll!System.Threading.Tasks.AwaitTaskContinuation.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem()
mscorlib.dll!System.Threading.ThreadPoolWorkQueue.Dispatch()
mscorlib.dll!System.Threading._ThreadPoolWaitCallback.PerformWaitCallback()
[Async Call Stack]
[Async] Grpc.Core.dll!Grpc.Core.Internal.UnaryServerCallHandler<SaveSessionRequest, SaveSessionReply>.HandleCall(Grpc.Core.Internal.ServerRpcNew newRpc, Grpc.Core.Internal.CompletionQueueSafeHandle cq)
[Async] Grpc.Core.dll!Grpc.Core.Server.HandleCallAsync(Grpc.Core.Internal.ServerRpcNew newRpc, Grpc.Core.Internal.CompletionQueueSafeHandle cq, System.Action continuation)

UPDATE5: Сессия Fiddler

...