Esempio n. 1
0
        public async Task <BatchResponse> ExecuteAsync(CancellationToken cancellationToken)
        {
            BatchExecUtils.EnsureValid(this.inputOperations, this.batchOptions, this.maxServerRequestOperationCount);

            PartitionKey?serverRequestPartitionKey = this.partitionKey;

            if (this.batchOptions != null && this.batchOptions.IsEffectivePartitionKeyRouting)
            {
                serverRequestPartitionKey = null;
            }

            SinglePartitionKeyServerBatchRequest serverRequest = await SinglePartitionKeyServerBatchRequest.CreateAsync(
                serverRequestPartitionKey,
                new ArraySegment <ItemBatchOperation>(this.inputOperations.ToArray()),
                this.maxServerRequestBodyLength,
                this.maxServerRequestOperationCount,
                serializer : this.clientContext.CosmosSerializer,
                cancellationToken : cancellationToken);

            if (serverRequest.Operations.Count != this.inputOperations.Count)
            {
                throw new CosmosException(HttpStatusCode.RequestEntityTooLarge, ClientResources.BatchTooLarge);
            }

            return(await this.ExecuteServerRequestAsync(serverRequest, cancellationToken));
        }
        public async Task <TransactionalBatchResponse> ExecuteAsync(CancellationToken cancellationToken)
        {
            using (this.diagnosticsContext.CreateOverallScope("BatchExecuteAsync"))
            {
                BatchExecUtils.EnsureValid(this.inputOperations, this.batchOptions);

                PartitionKey?serverRequestPartitionKey = this.partitionKey;
                if (this.batchOptions != null && this.batchOptions.IsEffectivePartitionKeyRouting)
                {
                    serverRequestPartitionKey = null;
                }

                SinglePartitionKeyServerBatchRequest serverRequest;
                using (this.diagnosticsContext.CreateScope("CreateBatchRequest"))
                {
                    serverRequest = await SinglePartitionKeyServerBatchRequest.CreateAsync(
                        serverRequestPartitionKey,
                        new ArraySegment <ItemBatchOperation>(this.inputOperations.ToArray()),
                        this.clientContext.SerializerCore,
                        cancellationToken);
                }

                return(await this.ExecuteServerRequestAsync(serverRequest, cancellationToken));
            }
        }
        public async Task <TransactionalBatchResponse> ExecuteAsync(ITrace trace, CancellationToken cancellationToken)
        {
            using (ITrace executeNextBatchTrace = trace.StartChild("Execute Next Batch", TraceComponent.Batch, Tracing.TraceLevel.Info))
            {
                BatchExecUtils.EnsureValid(this.inputOperations, this.batchOptions);

                PartitionKey?serverRequestPartitionKey = this.partitionKey;
                if (this.batchOptions != null && this.batchOptions.IsEffectivePartitionKeyRouting)
                {
                    serverRequestPartitionKey = null;
                }

                SinglePartitionKeyServerBatchRequest serverRequest;
                serverRequest = await SinglePartitionKeyServerBatchRequest.CreateAsync(
                    serverRequestPartitionKey,
                    new ArraySegment <ItemBatchOperation>(this.inputOperations.ToArray()),
                    this.clientContext.SerializerCore,
                    executeNextBatchTrace,
                    cancellationToken);

                return(await this.ExecuteServerRequestAsync(
                           serverRequest,
                           executeNextBatchTrace,
                           cancellationToken));
            }
        }
Esempio n. 4
0
        public async Task <BatchResponse> ExecuteAsync(CancellationToken cancellationToken)
        {
            BatchExecUtils.EnsureValid(this.inputOperations, this.batchOptions);

            PartitionKey?serverRequestPartitionKey = this.partitionKey;

            if (this.batchOptions != null && this.batchOptions.IsEffectivePartitionKeyRouting)
            {
                serverRequestPartitionKey = null;
            }

            SinglePartitionKeyServerBatchRequest serverRequest = await SinglePartitionKeyServerBatchRequest.CreateAsync(
                serverRequestPartitionKey,
                new ArraySegment <ItemBatchOperation>(this.inputOperations.ToArray()),
                this.clientContext.CosmosSerializer,
                cancellationToken);

            return(await this.ExecuteServerRequestAsync(serverRequest, cancellationToken));
        }