public async Task Batch() { using (ContextPool.AllocateOperationContext(out DocumentsOperationContext context)) { var countersBlittable = await context.ReadForMemoryAsync(RequestBodyStream(), "counters"); var counterBatch = JsonDeserializationClient.CounterBatch(countersBlittable); if (TrafficWatchManager.HasRegisteredClients) { AddStringToHttpContext(countersBlittable.ToString(), TrafficWatchChangeType.Counters); } var cmd = new ExecuteCounterBatchCommand(Database, counterBatch); if (cmd.HasWrites) { try { await Database.TxMerger.Enqueue(cmd); } catch (DocumentDoesNotExistException) { HttpContext.Response.StatusCode = (int)HttpStatusCode.NotFound; throw; } } else { using (context.OpenReadTransaction()) { cmd.ExecuteDirectly(context); } } using (var writer = new BlittableJsonTextWriter(context, ResponseBodyStream())) { context.Write(writer, cmd.CountersDetail.ToJson()); writer.Flush(); } } }