Exemplo n.º 1
0
 public LeaseAllocator(
     IBigBrother telemetry,
     ILeaseStore leaseStore,
     ISlottedInterval slottedInterval,
     IOptions <WorkerLeaseOptions> options)
 {
     _telemetry       = telemetry ?? throw new ArgumentNullException(nameof(telemetry));
     _leaseStore      = leaseStore ?? throw new ArgumentNullException(nameof(leaseStore));
     _slottedInterval = slottedInterval ?? throw new ArgumentNullException(nameof(slottedInterval));
     _options         = options ?? throw new ArgumentNullException(nameof(options));
 }
Exemplo n.º 2
0
        /// <summary>
        /// Initializes a new instance of the <see cref="DocumentServiceLeaseStoreManager"/> class.
        /// </summary>
        /// <remarks>
        /// Internal only for testing purposes, otherwise would be private.
        /// </remarks>
        internal DocumentServiceLeaseStoreManager(
            DocumentServiceLeaseStoreManagerSettings settings,
            IChangeFeedDocumentClient leaseDocumentClient,
            IRequestOptionsFactory requestOptionsFactory,
            IDocumentServiceLeaseUpdater leaseUpdater) // For testing purposes only.
        {
            if (settings == null)
            {
                throw new ArgumentNullException(nameof(settings));
            }
            if (settings.LeaseCollectionInfo == null)
            {
                throw new ArgumentNullException(nameof(settings.LeaseCollectionInfo));
            }
            if (settings.ContainerNamePrefix == null)
            {
                throw new ArgumentNullException(nameof(settings.ContainerNamePrefix));
            }
            if (settings.LeaseCollectionLink == null)
            {
                throw new ArgumentNullException(nameof(settings.LeaseCollectionLink));
            }
            if (string.IsNullOrEmpty(settings.HostName))
            {
                throw new ArgumentNullException(nameof(settings.HostName));
            }
            if (leaseDocumentClient == null)
            {
                throw new ArgumentNullException(nameof(leaseDocumentClient));
            }
            if (requestOptionsFactory == null)
            {
                throw new ArgumentException(nameof(requestOptionsFactory));
            }
            if (leaseUpdater == null)
            {
                throw new ArgumentException(nameof(leaseUpdater));
            }

            this.settings = settings;
            this.client   = leaseDocumentClient;
            this.requestOptionsFactory = requestOptionsFactory;
            this.leaseUpdater          = leaseUpdater;
            this.leaseStore            = new DocumentServiceLeaseStore(
                this.client,
                this.settings.LeaseCollectionInfo,
                this.settings.ContainerNamePrefix,
                this.settings.LeaseCollectionLink,
                this.requestOptionsFactory);
        }
        public Bootstrapper(IPartitionSynchronizer synchronizer, ILeaseStore leaseStore, TimeSpan lockTime, TimeSpan sleepTime)
        {
            if (synchronizer == null)
            {
                throw new ArgumentNullException(nameof(synchronizer));
            }
            if (leaseStore == null)
            {
                throw new ArgumentNullException(nameof(leaseStore));
            }
            if (lockTime <= TimeSpan.Zero)
            {
                throw new ArgumentException("should be positive", nameof(lockTime));
            }
            if (sleepTime <= TimeSpan.Zero)
            {
                throw new ArgumentException("should be positive", nameof(sleepTime));
            }

            this.synchronizer = synchronizer;
            this.leaseStore   = leaseStore;
            this.lockTime     = lockTime;
            this.sleepTime    = sleepTime;
        }
Exemplo n.º 4
0
        private async Task <long> ConsumeEvents(
            Action <IEnumerable <EventBase> > onEventReceived,
            ICommitTrailStore commitLogs, ILeaseStore leaseStore, long recentCommitId, long offsetCommitId)
        {
            // we have commits to take care ...
            var logs = (await commitLogs
                        .GetCommitsAsync(offsetCommitId, recentCommitId)
                        .ConfigureAwait(false))
                       .Where(log =>
                              log.StreamName.Equals(this._streamName, StringComparison.OrdinalIgnoreCase));

            if (logs.Any())
            {
                var stream = await GetStreamAsync(commitLogs).ConfigureAwait(false);

                var events = await stream.ReadEventsAsync(logs).ConfigureAwait(false);

                onEventReceived(events);

                await leaseStore.SetOffsetCommitIdAsync((offsetCommitId = recentCommitId));
            }

            return(offsetCommitId);
        }