Beispiel #1
0
 public ClusterNodeFactory(ClusterContext clusterContext, IConnectionPoolFactory connectionPoolFactory, ILogger <ClusterNode> logger,
                           ObjectPool <OperationBuilder> operationBuilderPool, ICircuitBreaker circuitBreaker, ISaslMechanismFactory saslMechanismFactory,
                           IIpEndPointService ipEndPointService, IRedactor redactor, IRequestTracer tracer)
 {
     _clusterContext        = clusterContext ?? throw new ArgumentNullException(nameof(clusterContext));
     _connectionPoolFactory = connectionPoolFactory ?? throw new ArgumentNullException(nameof(connectionPoolFactory));
     _logger = logger ?? throw new ArgumentNullException(nameof(logger));
     _operationBuilderPool = operationBuilderPool ?? throw new ArgumentNullException(nameof(operationBuilderPool));
     _circuitBreaker       = circuitBreaker ?? throw new ArgumentException(nameof(circuitBreaker));
     _saslMechanismFactory = saslMechanismFactory;
     _ipEndPointService    = ipEndPointService ?? throw new ArgumentNullException(nameof(ipEndPointService));
     _redactor             = redactor ?? throw new ArgumentNullException(nameof(redactor));
     _tracer = tracer;
 }
Beispiel #2
0
 public ScramShaMechanism(MechanismType mechanismType,
                          string password,
                          string username,
                          ILogger <ScramShaMechanism> logger,
                          IRequestTracer tracer,
                          IOperationConfigurator operationConfigurator)
     : base(tracer, operationConfigurator)
 {
     MechanismType = mechanismType;
     _username     = username ?? throw new ArgumentNullException(nameof(username));
     _password     = password ?? throw new ArgumentNullException(nameof(password));
     Logger        = logger ?? throw new ArgumentNullException(nameof(logger));
     ClientNonce   = GenerateClientNonce();
 }
        public SearchClient(
            CouchbaseHttpClient httpClient,
            IServiceUriProvider serviceUriProvider,
            ILogger <SearchClient> logger,
            IRequestTracer tracer)
            : base(httpClient)
        {
            _serviceUriProvider = serviceUriProvider ?? throw new ArgumentNullException(nameof(serviceUriProvider));
            _logger             = logger ?? throw new ArgumentNullException(nameof(logger));
            _tracer             = tracer;

            // Always use the SearchDataMapper
            _dataMapper = new SearchDataMapper();
        }
 public QueryClient(
     CouchbaseHttpClient httpClient,
     IServiceUriProvider serviceUriProvider,
     ITypeSerializer serializer,
     ILogger <QueryClient> logger,
     IRequestTracer tracer)
     : base(httpClient)
 {
     _serviceUriProvider = serviceUriProvider ?? throw new ArgumentNullException(nameof(serviceUriProvider));
     _serializer         = serializer ?? throw new ArgumentNullException(nameof(serializer));
     _logger             = logger ?? throw new ArgumentNullException(nameof(logger));
     _tracer             = tracer ?? throw new ArgumentNullException(nameof(tracer));
     HttpClient.Timeout  = Timeout.InfiniteTimeSpan;
 }
Beispiel #5
0
 internal CouchbaseCollection(BucketBase bucket, IOperationConfigurator operationConfigurator,
                              ILogger <CouchbaseCollection> logger,
                              ILogger <GetResult> getLogger, IRedactor redactor,
                              string name, IScope scope, IRequestTracer tracer)
 {
     Name     = name ?? throw new ArgumentNullException(nameof(name));
     _bucket  = bucket ?? throw new ArgumentNullException(nameof(bucket));
     Logger   = logger ?? throw new ArgumentNullException(nameof(logger));
     Redactor = redactor ?? throw new ArgumentNullException(nameof(redactor));
     _operationConfigurator =
         operationConfigurator ?? throw new ArgumentNullException(nameof(operationConfigurator));
     _getLogger = getLogger ?? throw new ArgumentNullException(nameof(getLogger));
     _tracer    = tracer;
     Scope      = scope ?? throw new ArgumentNullException(nameof(scope));
 }
Beispiel #6
0
        public ViewClient(CouchbaseHttpClient httpClient,
                          ITypeSerializer serializer,
                          ILogger <ViewClient> logger,
                          IRedactor redactor,
                          IRequestTracer tracer)
            : base(httpClient)
        {
            _serializer = serializer ?? throw new ArgumentNullException(nameof(ITypeSerializer));
            _logger     = logger ?? throw new ArgumentNullException(nameof(logger));
            _redactor   = redactor ?? throw new ArgumentNullException(nameof(redactor));
            _tracer     = tracer;

            // set timeout to infinite so we can stream results without the connection
            // closing part way through
            httpClient.Timeout = Timeout.InfiniteTimeSpan;
        }
Beispiel #7
0
        internal Cluster(ClusterOptions clusterOptions)
        {
            if (clusterOptions == null)
            {
                throw new InvalidConfigurationException("ClusterOptions is null.");
            }
            if (string.IsNullOrWhiteSpace(clusterOptions.Password) || string.IsNullOrWhiteSpace(clusterOptions.UserName))
            {
                throw new InvalidConfigurationException("Username and password are required.");
            }

            var configTokenSource = new CancellationTokenSource();

            _context = new ClusterContext(this, configTokenSource, clusterOptions);
            _context.Start();

            LazyQueryClient             = new Lazy <IQueryClient>(() => _context.ServiceProvider.GetRequiredService <IQueryClient>());
            LazyAnalyticsClient         = new Lazy <IAnalyticsClient>(() => _context.ServiceProvider.GetRequiredService <IAnalyticsClient>());
            LazySearchClient            = new Lazy <ISearchClient>(() => _context.ServiceProvider.GetRequiredService <ISearchClient>());
            LazyQueryManager            = new Lazy <IQueryIndexManager>(() => _context.ServiceProvider.GetRequiredService <IQueryIndexManager>());
            LazyBucketManager           = new Lazy <IBucketManager>(() => _context.ServiceProvider.GetRequiredService <IBucketManager>());
            LazyUserManager             = new Lazy <IUserManager>(() => _context.ServiceProvider.GetRequiredService <IUserManager>());
            LazySearchManager           = new Lazy <ISearchIndexManager>(() => _context.ServiceProvider.GetRequiredService <ISearchIndexManager>());
            LazyAnalyticsIndexManager   = new Lazy <IAnalyticsIndexManager>(() => _context.ServiceProvider.GetRequiredService <IAnalyticsIndexManager>());
            LazyEventingFunctionManager = new Lazy <IEventingFunctionManager>(() => _context.ServiceProvider.GetRequiredService <IEventingFunctionManager>());

            _logger            = _context.ServiceProvider.GetRequiredService <ILogger <Cluster> >();
            _retryOrchestrator = _context.ServiceProvider.GetRequiredService <IRetryOrchestrator>();
            _redactor          = _context.ServiceProvider.GetRequiredService <IRedactor>();
            _tracer            = _context.ServiceProvider.GetRequiredService <IRequestTracer>();
            _retryStrategy     = _context.ServiceProvider.GetRequiredService <IRetryStrategy>();

            var meter = _context.ServiceProvider.GetRequiredService <IMeter>();

            if (meter is not NoopMeter)
            {
                // Don't instantiate the meter forwarder if we're using the NoopMeter, since the meter forwarder
                // will create subscriptions to the .NET metrics and start collecting/forwarding data. We can avoid
                // this performance penalty when we know we're doing nothing with the data.
                _meterForwarder = new MeterForwarder(meter);
            }

            var bootstrapperFactory = _context.ServiceProvider.GetRequiredService <IBootstrapperFactory>();

            _bootstrapper = bootstrapperFactory.Create(clusterOptions.BootstrapPollInterval);
        }
Beispiel #8
0
        protected BucketBase(string name,
                             ClusterContext context,
                             IScopeFactory scopeFactory,
                             IRetryOrchestrator retryOrchestrator,
                             ILogger logger,
                             IRedactor redactor,
                             IBootstrapperFactory bootstrapperFactory,
                             IRequestTracer tracer)
        {
            Name              = name ?? throw new ArgumentNullException(nameof(name));
            Context           = context ?? throw new ArgumentNullException(nameof(context));
            _scopeFactory     = scopeFactory ?? throw new ArgumentNullException(nameof(scopeFactory));
            RetryOrchestrator = retryOrchestrator ?? throw new ArgumentNullException(nameof(retryOrchestrator));
            Logger            = logger ?? throw new ArgumentNullException(nameof(logger));
            Redactor          = redactor ?? throw new ArgumentNullException(nameof(redactor));
            Tracer            = tracer;

            BootstrapperFactory = bootstrapperFactory ?? throw new ArgumentNullException(nameof(bootstrapperFactory));
            Bootstrapper        = bootstrapperFactory.Create(Context.ClusterOptions.BootstrapPollInterval);
        }
Beispiel #9
0
        internal Cluster(ClusterOptions clusterOptions)
        {
            if (clusterOptions == null)
            {
                throw new InvalidConfigurationException("ClusterOptions is null.");
            }
            if (string.IsNullOrWhiteSpace(clusterOptions.Password) || string.IsNullOrWhiteSpace(clusterOptions.UserName))
            {
                throw new InvalidConfigurationException("Username and password are required.");
            }

            var configTokenSource = new CancellationTokenSource();

            _context = new ClusterContext(this, configTokenSource, clusterOptions);
            _context.StartConfigListening();

            LazyQueryClient             = new Lazy <IQueryClient>(() => _context.ServiceProvider.GetRequiredService <IQueryClient>());
            LazyAnalyticsClient         = new Lazy <IAnalyticsClient>(() => _context.ServiceProvider.GetRequiredService <IAnalyticsClient>());
            LazySearchClient            = new Lazy <ISearchClient>(() => _context.ServiceProvider.GetRequiredService <ISearchClient>());
            LazyQueryManager            = new Lazy <IQueryIndexManager>(() => _context.ServiceProvider.GetRequiredService <IQueryIndexManager>());
            LazyBucketManager           = new Lazy <IBucketManager>(() => _context.ServiceProvider.GetRequiredService <IBucketManager>());
            LazyUserManager             = new Lazy <IUserManager>(() => _context.ServiceProvider.GetRequiredService <IUserManager>());
            LazySearchManager           = new Lazy <ISearchIndexManager>(() => _context.ServiceProvider.GetRequiredService <ISearchIndexManager>());
            LazyAnalyticsIndexManager   = new Lazy <IAnalyticsIndexManager>(() => _context.ServiceProvider.GetRequiredService <IAnalyticsIndexManager>());
            LazyEventingFunctionManager = new Lazy <IEventingFunctionManager>(() => _context.ServiceProvider.GetRequiredService <IEventingFunctionManager>());

            _logger            = _context.ServiceProvider.GetRequiredService <ILogger <Cluster> >();
            _retryOrchestrator = _context.ServiceProvider.GetRequiredService <IRetryOrchestrator>();
            _redactor          = _context.ServiceProvider.GetRequiredService <IRedactor>();
            _tracer            = _context.ServiceProvider.GetRequiredService <IRequestTracer>();
            _retryStrategy     = _context.ServiceProvider.GetRequiredService <IRetryStrategy>();
            _meter             = _context.ServiceProvider.GetRequiredService <IMeter>();

            var bootstrapperFactory = _context.ServiceProvider.GetRequiredService <IBootstrapperFactory>();

            _bootstrapper = bootstrapperFactory.Create(clusterOptions.BootstrapPollInterval);
        }
Beispiel #10
0
 public BucketFactory(
     ClusterContext clusterContext,
     IScopeFactory scopeFactory,
     IRetryOrchestrator retryOrchestrator,
     IVBucketKeyMapperFactory vBucketKeyMapperFactory,
     IKetamaKeyMapperFactory ketamaKeyMapperFactory,
     ILogger <CouchbaseBucket> couchbaseLogger,
     ILogger <MemcachedBucket> memcachedLogger,
     IRedactor redactor,
     IBootstrapperFactory bootstrapperFactory,
     IRequestTracer tracer
     )
 {
     _clusterContext          = clusterContext ?? throw new ArgumentNullException(nameof(clusterContext));
     _scopeFactory            = scopeFactory ?? throw new ArgumentNullException(nameof(scopeFactory));
     _retryOrchestrator       = retryOrchestrator ?? throw new ArgumentNullException(nameof(retryOrchestrator));
     _vBucketKeyMapperFactory = vBucketKeyMapperFactory ?? throw new ArgumentNullException(nameof(vBucketKeyMapperFactory));
     _ketamaKeyMapperFactory  = ketamaKeyMapperFactory ?? throw new ArgumentNullException(nameof(ketamaKeyMapperFactory));
     _couchbaseLogger         = couchbaseLogger ?? throw new ArgumentNullException(nameof(couchbaseLogger));
     _memcachedLogger         = memcachedLogger ?? throw new ArgumentNullException(nameof(memcachedLogger));
     _redactor            = redactor ?? throw new ArgumentNullException(nameof(IRedactor));
     _bootstrapperFactory = bootstrapperFactory ?? throw new ArgumentNullException(nameof(bootstrapperFactory));
     _tracer = tracer ?? throw new ArgumentNullException(nameof(tracer));
 }
Beispiel #11
0
 internal MemcachedBucket(string name, ClusterContext context, IScopeFactory scopeFactory, IRetryOrchestrator retryOrchestrator, IKetamaKeyMapperFactory ketamaKeyMapperFactory,
                          ILogger <MemcachedBucket> logger, IRedactor redactor, IBootstrapperFactory bootstrapperFactory, IRequestTracer tracer) :
     this(name, context, scopeFactory, retryOrchestrator, ketamaKeyMapperFactory, logger,
          new HttpClusterMap(context.ServiceProvider.GetRequiredService <CouchbaseHttpClient>(), context), redactor, bootstrapperFactory, tracer)
 {
 }
 internal static IInternalSpan RootSpan(this IRequestTracer tracer, string serviceName, string operation) =>
 tracer.InternalSpan(operation, null)
 .WithDefaultAttributes()
 .WithTag(CouchbaseTags.Service, serviceName);
Beispiel #13
0
 protected SaslMechanismBase(IRequestTracer tracer)
 {
     Tracer = tracer;
 }
 public RequestSpan(IRequestTracer tracer, Activity activity, IRequestSpan?parentSpan = null)
 {
     _tracer     = tracer;
     _activity   = activity;
     _parentSpan = parentSpan;
 }
 internal MemcachedBucket(string name, ClusterContext context, IScopeFactory scopeFactory, IRetryOrchestrator retryOrchestrator, IKetamaKeyMapperFactory ketamaKeyMapperFactory,
                          ILogger <MemcachedBucket> logger, TypedRedactor redactor, IBootstrapperFactory bootstrapperFactory, IRequestTracer tracer, IOperationConfigurator operationConfigurator, IRetryStrategy retryStrategy, IHttpClusterMapFactory httpClusterMapFactory, BucketConfig config) :
     this(name, context, scopeFactory, retryOrchestrator, ketamaKeyMapperFactory, logger,
          httpClusterMapFactory, redactor, bootstrapperFactory, tracer, operationConfigurator, retryStrategy, config)
 {
 }
 public EventingFunctionManager(IEventingFunctionService service, ILogger <EventingFunctionManager> logger, IRequestTracer tracer)
 {
     _service = service;
     _logger  = logger;
     _tracer  = tracer;
 }
Beispiel #17
0
 protected SaslMechanismBase(IRequestTracer tracer, IOperationConfigurator operationConfigurator)
 {
     OperationConfigurator = operationConfigurator;
     Tracer = tracer;
 }
Beispiel #18
0
 public OpenTelemetryRequestSpan(IRequestTracer tracer, Activity activity, IRequestSpan?parentSpan = null)
 {
     _tracer     = tracer ?? throw new ArgumentNullException(nameof(tracer));
     _activity   = activity ?? throw new ArgumentNullException(nameof(activity));
     _parentSpan = parentSpan;
 }
Beispiel #19
0
 /// <summary>
 /// A custom <see cref="RequestTracer"/> implementation.
 /// </summary>
 /// <remarks>In most all cases the default <see cref="RequestTracer"/> is sufficient and should be used.</remarks>
 /// <param name="requestTracer">The custom <see cref="IRequestTracer"/> to override the default <see cref="RequestTracer"/></param>
 /// <returns>A <see cref="TracingOptions"/> object for chaining.</returns>
 public TracingOptions WithTracer(IRequestTracer requestTracer)
 {
     RequestTracer = requestTracer;
     return(this);
 }
Beispiel #20
0
 internal MemcachedBucket(string name, ClusterContext context, IScopeFactory scopeFactory, IRetryOrchestrator retryOrchestrator, IKetamaKeyMapperFactory ketamaKeyMapperFactory,
                          ILogger <MemcachedBucket> logger, HttpClusterMapBase httpClusterMap, IRedactor redactor, IBootstrapperFactory bootstrapperFactory, IRequestTracer tracer)
     : base(name, context, scopeFactory, retryOrchestrator, logger, redactor, bootstrapperFactory, tracer)
 {
     BucketType = BucketType.Memcached;
     Name       = name;
     _ketamaKeyMapperFactory = ketamaKeyMapperFactory ?? throw new ArgumentNullException(nameof(ketamaKeyMapperFactory));
     _httpClusterMap         = httpClusterMap;
 }
Beispiel #21
0
 public TracingDiagnosticListener(IRequestTracer requestTracer)
 {
     _requestTracer = requestTracer;
 }
 public PlainSaslMechanism(string username, string password, ILogger <PlainSaslMechanism> logger, IRequestTracer tracer,
                           IOperationConfigurator operationConfigurator)
     : base(tracer, operationConfigurator)
 {
     _username     = username ?? throw new ArgumentNullException(nameof(username));
     _password     = password ?? throw new ArgumentNullException(nameof(password));
     Logger        = logger;
     MechanismType = MechanismType.Plain;
 }
 internal MemcachedBucket(string name, ClusterContext context, IScopeFactory scopeFactory, IRetryOrchestrator retryOrchestrator, IKetamaKeyMapperFactory ketamaKeyMapperFactory,
                          ILogger <MemcachedBucket> logger, IHttpClusterMapFactory httpClusterMapFactory, TypedRedactor redactor, IBootstrapperFactory bootstrapperFactory, IRequestTracer tracer, IOperationConfigurator operationConfigurator, IRetryStrategy retryStrategy, BucketConfig config)
     : base(name, context, scopeFactory, retryOrchestrator, logger, redactor, bootstrapperFactory, tracer, operationConfigurator, retryStrategy, config)
 {
     BucketType = BucketType.Memcached;
     Name       = name;
     _ketamaKeyMapperFactory = ketamaKeyMapperFactory ?? throw new ArgumentNullException(nameof(ketamaKeyMapperFactory));
     _httpClusterMapFactory  = httpClusterMapFactory ?? throw new ArgumentNullException(nameof(httpClusterMapFactory));
     _httpClusterMap         = _httpClusterMapFactory.Create(Context);
 }
Beispiel #24
0
        public ClusterNode(ClusterContext context, IConnectionPoolFactory connectionPoolFactory, ILogger <ClusterNode> logger,
                           ObjectPool <OperationBuilder> operationBuilderPool, ICircuitBreaker circuitBreaker, ISaslMechanismFactory saslMechanismFactory,
                           IRedactor redactor, IPEndPoint endPoint, BucketType bucketType, NodeAdapter nodeAdapter, IRequestTracer tracer)
        {
            _context              = context ?? throw new ArgumentNullException(nameof(context));
            _logger               = logger ?? throw new ArgumentNullException(nameof(logger));
            _circuitBreaker       = circuitBreaker ?? throw new ArgumentException(nameof(circuitBreaker));
            _operationBuilderPool =
                operationBuilderPool ?? throw new ArgumentNullException(nameof(operationBuilderPool));
            _saslMechanismFactory = saslMechanismFactory ?? throw new ArgumentException(nameof(saslMechanismFactory));
            _redactor             = redactor ?? throw new ArgumentNullException(nameof(redactor));
            _tracer    = tracer;
            BucketType = bucketType;
            EndPoint   = endPoint ?? throw new ArgumentNullException(nameof(endPoint));

            _cachedToString = $"{EndPoint}-{_id}";

            KeyEndPoints = new ReadOnlyObservableCollection <IPEndPoint>(_keyEndPoints);
            UpdateKeyEndPoints();
            ((INotifyCollectionChanged)_keyEndPoints).CollectionChanged += (_, e) => OnKeyEndPointsChanged(e);

            if (connectionPoolFactory == null)
            {
                throw new ArgumentNullException(nameof(connectionPoolFactory));
            }

            ConnectionPool = connectionPoolFactory.Create(this);

            if (nodeAdapter != null)
            {
                NodesAdapter = nodeAdapter;
            }
        }
Beispiel #25
0
 public HttpRequestDiagnosticListener(IRequestTracer requestTracer)
 {
     _requestTracer = requestTracer;
 }