private async Task <T> ExecuteReadOperationAsync <T>(IClientSessionHandle session, IReadOperation <T> operation, ReadPreference readPreference, CancellationToken cancellationToken) { using (var binding = new ReadPreferenceBinding(_cluster, readPreference, session.ToCoreSession())) { return(await _operationExecutor.ExecuteReadOperationAsync(binding, operation, cancellationToken).ConfigureAwait(false)); } }
public void Session_reference_count_should_be_decremented_as_soon_as_possible(int collectionSize, int batchSize) { RequireServer.Check(); DropCollection(); var documents = Enumerable.Range(1, collectionSize).Select(n => new BsonDocument("_id", n)); Insert(documents); _session.ReferenceCount().Should().Be(1); var cancellationToken = CancellationToken.None; using (var binding = new ReadPreferenceBinding(CoreTestConfiguration.Cluster, ReadPreference.Primary, _session.Fork())) using (var channelSource = (ChannelSourceHandle)binding.GetReadChannelSource(cancellationToken)) using (var channel = channelSource.GetChannel(cancellationToken)) { var query = new BsonDocument(); long cursorId; var firstBatch = GetFirstBatch(channel, query, batchSize, cancellationToken, out cursorId); using (var cursor = new AsyncCursor <BsonDocument>(channelSource, _collectionNamespace, firstBatch, cursorId, batchSize, null, BsonDocumentSerializer.Instance, new MessageEncoderSettings())) { AssertExpectedSessionReferenceCount(_session, cursor); while (cursor.MoveNext(cancellationToken)) { AssertExpectedSessionReferenceCount(_session, cursor); } AssertExpectedSessionReferenceCount(_session, cursor); } } _session.ReferenceCount().Should().Be(1); }
private async Task <T> ExecuteReadOperation <T>(IReadOperation <T> operation, TimeSpan?timeout, CancellationToken cancellationToken) { using (var binding = new ReadPreferenceBinding(_cluster, _settings.ReadPreference)) { return(await _operationExecutor.ExecuteReadOperationAsync(binding, operation, timeout ?? _settings.OperationTimeout, cancellationToken)); } }
private T ExecuteReadOperation <T>(IClientSessionHandle session, IReadOperation <T> operation, ReadPreference readPreference, CancellationToken cancellationToken) { using (var binding = new ReadPreferenceBinding(_cluster, readPreference, session.ToCoreSession())) { return(_operationExecutor.ExecuteReadOperation(binding, operation, cancellationToken)); } }
private T ExecuteReadOperation <T>(IReadOperation <T> operation, ReadPreference readPreference, CancellationToken cancellationToken) { using (var binding = new ReadPreferenceBinding(_cluster, readPreference)) { return(_operationExecutor.ExecuteReadOperation(binding, operation, cancellationToken)); } }
public static Task <BsonDocument> ExplainAggregation <TDocument, TResult>( this IMongoCollection <TDocument> collection , PipelineDefinition <TDocument, TResult> aggregationPipeline, ExplainVerbosity verbosity) { IBsonSerializerRegistry serializerRegistry = collection.Settings.SerializerRegistry; IBsonSerializer <TDocument> serializer = serializerRegistry.GetSerializer <TDocument>(); MessageEncoderSettings encoderSettings = collection.GetMessageEncoderSettings(); RenderedPipelineDefinition <TResult> renderedDefinition = aggregationPipeline.Render(serializer, serializerRegistry); IReadOperation <BsonDocument> explainOperation = new AggregateOperation <TResult>( collection.CollectionNamespace, renderedDefinition.Documents, renderedDefinition.OutputSerializer, encoderSettings) .ToExplainOperation(verbosity); ICluster cluster = GetCluster(collection); ICoreSessionHandle session = NoCoreSession.NewHandle(); using (IReadBinding binding = new ReadPreferenceBinding(cluster, collection.Settings.ReadPreference, session)) { var cancelToken = new CancellationToken(); return(explainOperation.ExecuteAsync(binding, cancelToken)); } }
private TResult ExecuteReadOperation <TResult>(IClientSessionHandle session, IReadOperation <TResult> operation, CancellationToken cancellationToken = default(CancellationToken)) { using (var binding = new ReadPreferenceBinding(_cluster, _settings.ReadPreference, session.ToCoreSession())) { return(_operationExecutor.ExecuteReadOperation(binding, operation, cancellationToken)); } }
/// <summary> /// Create a read binding handle. /// </summary> /// <param name="cluster">The cluster,</param> /// <param name="session">The session.</param> /// <param name="readPreference">The read preference.</param> /// <returns>An effective read binging.</returns> public static IReadBindingHandle CreateReadBinding(ICluster cluster, ICoreSessionHandle session, ReadPreference readPreference) { IReadBinding readBinding; if (session.IsInTransaction && IsChannelPinned(session.CurrentTransaction) && session.CurrentTransaction.State != CoreTransactionState.Starting) { readBinding = new ChannelReadWriteBinding( session.CurrentTransaction.PinnedServer, session.CurrentTransaction.PinnedChannel.Fork(), session); } else { if (IsInLoadBalancedMode(cluster.Description) && IsChannelPinned(session.CurrentTransaction)) { // unpin if the next operation is not under transaction session.CurrentTransaction.UnpinAll(); } readBinding = new ReadPreferenceBinding(cluster, readPreference, session); } return(new ReadBindingHandle(readBinding)); }
private async Task <TResult> ExecuteReadOperation <TResult>(IReadOperation <TResult> operation, ReadPreference readPreference, CancellationToken cancellationToken) { using (var binding = new ReadPreferenceBinding(_cluster, readPreference)) { return(await _operationExecutor.ExecuteReadOperationAsync(binding, operation, cancellationToken).ConfigureAwait(false)); } }
protected TResult ExecuteOperation <TResult>(IReadOperation <TResult> operation, ReadPreference readPreference, bool async) { var cluster = CoreTestConfiguration.Cluster; using (var binding = new ReadPreferenceBinding(cluster, readPreference)) { return(ExecuteOperation(operation, binding, async)); } }
/// <inheritdoc/> public sealed override async Task <IAsyncCursor <BsonDocument> > ListDatabasesAsync(CancellationToken cancellationToken = default(CancellationToken)) { var messageEncoderSettings = GetMessageEncoderSettings(); var operation = new ListDatabasesOperation(messageEncoderSettings); using (var binding = new ReadPreferenceBinding(_cluster, _settings.ReadPreference)) { return(await _operationExecutor.ExecuteReadOperationAsync(binding, operation, cancellationToken).ConfigureAwait(false)); } }
/// <summary> /// Gets the database names. /// </summary> /// <param name="timeout">The timeout.</param> /// <param name="cancellationToken">The cancellation token.</param> /// <returns>A list of the database on the server.</returns> public async Task <IReadOnlyList <string> > GetDatabaseNamesAsync(TimeSpan?timeout = null, CancellationToken cancellationToken = default(CancellationToken)) { var messageEncoderSettings = GetMessageEncoderSettings(); var operation = new ListDatabaseNamesOperation(messageEncoderSettings); using (var binding = new ReadPreferenceBinding(_cluster, _settings.ReadPreference)) { return(await _operationExecutor.ExecuteReadOperationAsync(binding, operation, timeout ?? _settings.OperationTimeout, cancellationToken).ConfigureAwait(false)); } }
protected TResult ExecuteOperation <TResult>(IReadOperation <TResult> operation, ReadPreference readPreference, bool async) { var cluster = CoreTestConfiguration.Cluster; using (var binding = new ReadPreferenceBinding(cluster, readPreference, NoCoreSession.NewHandle())) using (var bindingHandle = new ReadBindingHandle(binding)) { return(ExecuteOperation(operation, bindingHandle, async)); } }
public void Execute_should_return_expected_result() { var subject = new CurrentOpUsingFindOperation(_adminDatabaseNamespace, _messageEncoderSettings); using (var binding = new ReadPreferenceBinding(CoreTestConfiguration.Cluster, ReadPreference.PrimaryPreferred)) { var result = subject.Execute(binding, CancellationToken.None); result.Contains("inprog"); } }
private IReadBinding CreateReadBinding(IClientSessionHandle session, ReadPreference readPreference) { if (session.IsInTransaction && readPreference.ReadPreferenceMode != ReadPreferenceMode.Primary) { throw new InvalidOperationException("Read preference in a transaction must be primary."); } var binding = new ReadPreferenceBinding(_cluster, readPreference, session.WrappedCoreSession.Fork()); return(new ReadBindingHandle(binding)); }
public void Execute_should_return_expected_result() { RequireServer.Check().ClusterTypes(ClusterType.Standalone, ClusterType.ReplicaSet).StorageEngine("mmapv1"); var subject = new CurrentOpUsingFindOperation(_adminDatabaseNamespace, _messageEncoderSettings); using (var binding = new ReadPreferenceBinding(CoreTestConfiguration.Cluster, ReadPreference.PrimaryPreferred)) { var result = subject.Execute(binding, CancellationToken.None); result.Contains("inprog"); } }
public void Execute_should_return_expected_result() { RequireServer.Check().VersionGreaterThanOrEqualTo("3.1.2"); var subject = new CurrentOpOperation(_adminDatabaseNamespace, _messageEncoderSettings); using (var binding = new ReadPreferenceBinding(CoreTestConfiguration.Cluster, ReadPreference.PrimaryPreferred, NoCoreSession.NewHandle())) { var result = subject.Execute(binding); result.Contains("inprog"); } }
public void Execute_should_return_expected_result() { RequireServer.Check().Supports(Feature.CurrentOpCommand); var subject = new CurrentOpUsingCommandOperation(_adminDatabaseNamespace, _messageEncoderSettings); using (var binding = new ReadPreferenceBinding(CoreTestConfiguration.Cluster, ReadPreference.PrimaryPreferred, NoCoreSession.NewHandle())) { var result = subject.Execute(binding, CancellationToken.None); result.Contains("inprog"); } }
public void Execute_should_return_expected_result() { RequireServer.Where(minimumVersion: "3.1.2"); var subject = new CurrentOpOperation(_adminDatabaseNamespace, _messageEncoderSettings); using (var binding = new ReadPreferenceBinding(CoreTestConfiguration.Cluster, ReadPreference.PrimaryPreferred)) { var result = subject.Execute(binding); result.Contains("inprog"); } }
private IReadBindingHandle CreateReadBinding(IClientSessionHandle session) { var binding = new ReadPreferenceBinding(_cluster, _settings.ReadPreference, session.WrappedCoreSession.Fork()); return(new ReadBindingHandle(binding)); }
private static IReadBindingHandle CreateReadBinding(ReadPreference readPreference, ICoreSessionHandle session) { var binding = new ReadPreferenceBinding(__cluster.Value, readPreference, session.Fork()); return(new ReadBindingHandle(binding)); }