Я использую массовую вставку, чтобы «скопировать» документы с идентификатором типа «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 я вижу это:
К вашему сведению: мое поле 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 :
Я полагаю, клиент не может рисовать новые номера 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