Esempio n. 1
0
        internal StatefulServiceReplicaAdapter(
            StatefulServiceContext context,
            IStatefulUserServiceReplica userServiceReplica)
        {
            this.serviceContext = context;
            this.traceId        = ServiceTrace.GetTraceIdForReplica(context.PartitionId, context.ReplicaId);
            this.serviceHelper  = new ServiceHelper(TraceType, this.traceId);

            this.servicePartition       = null;
            this.replicaListeners       = null;
            this.communicationListeners = null;
            this.endpointCollection     = new ServiceEndpointCollection();

            this.runAsynCancellationTokenSource = null;
            this.executeRunAsyncTask            = null;

            this.userServiceReplica           = userServiceReplica;
            this.userServiceReplica.Addresses = this.endpointCollection.ToReadOnlyDictionary();

            // The state provider replica should ideally be initialized
            // here (this.stateProviderReplica.Initialize()) with ServiceContext.
            // However the initialize function takes in StatefulServiceInitializationParameter
            // and resides in the DATA layer. DATA layer lies below SERVICES layer
            // and is agnostic of services and ServiceContext lies in SERVICES layer.
            // For now state provider replica is initialized when runtime calls
            // IStatefulServiceReplica.Initialize(StatefulServiceInitializationParameters initializationParameters)
            this.stateProviderReplica = this.userServiceReplica.CreateStateProviderReplica();
        }
 /// <summary>
 /// Creates a new StatefulService.
 /// </summary>
 /// <param name="serviceContext">
 /// A <see cref="StatefulServiceContext"/> that describes the service context.
 /// </param>
 /// <param name="stateProviderReplica">
 /// A <see cref="IStateProviderReplica"/> that represents a reliable state provider replica.
 /// </param>
 protected StatefulServiceBase(
     StatefulServiceContext serviceContext,
     IStateProviderReplica stateProviderReplica)
 {
     this.stateProviderReplica = stateProviderReplica;
     this.stateProviderReplica.OnDataLossAsync = this.OnDataLossAsync;
     this.restoreContext = new RestoreContext(this.stateProviderReplica);
     this.serviceContext = serviceContext;
     this.addresses      = new ReadOnlyDictionary <string, string>(new Dictionary <string, string>());
 }
        private void UpdateReplicatorSettings(string endpoint)
        {
            ReliableStateManagerReplicatorSettings replicatorSettings = GetReplicatorSettings(endpoint, true);
            IStateProviderReplica stateProviderReplica = ((ReliableStateManager)this.StateManager).Replica;

            Microsoft.ServiceFabric.Data.ReliableStateManagerImpl impl = (Microsoft.ServiceFabric.Data.ReliableStateManagerImpl)stateProviderReplica;
            impl.Replicator.LoggingReplicator.UpdateReplicatorSettings(replicatorSettings);

            UpgradeOrchestrationTrace.TraceSource.WriteInfo(TraceType, "Updated replicator settings");
        }
Esempio n. 4
0
        void IStatefulServiceReplica.Abort()
        {
            ServiceTrace.Source.WriteInfoWithId(
                TraceType,
                this.traceId,
                "Abort");

            this.AbortCommunicationListeners();
            this.CancelRunAsync().ContinueWith(t => t.Exception, TaskContinuationOptions.OnlyOnFaulted);
            this.userServiceReplica.OnAbort();

            if (this.stateProviderReplica != null)
            {
                this.stateProviderReplica.Abort();
                this.stateProviderReplica = null;
            }
        }
        /// <summary>
        /// Creates a new stateful service.
        /// </summary>
        /// <param name="serviceContext">
        /// A <see cref="StatefulServiceContext"/> describes the service context, which it provides information like replica ID, partition ID, and service name.
        /// </param>
        /// <param name="stateProviderReplica">
        /// A <see cref="IStateProviderReplica"/> represents a reliable state provider replica.
        /// </param>
        /// <exception cref="ArgumentNullException"></exception>
        protected StatefulServiceBase(
            StatefulServiceContext serviceContext,
            IStateProviderReplica stateProviderReplica)
        {
            if (serviceContext == null)
            {
                throw new ArgumentNullException(nameof(serviceContext));
            }

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

            this.stateProviderReplica = stateProviderReplica;
            this.stateProviderReplica.OnDataLossAsync = this.OnDataLossAsync;
            this.restoreContext = new RestoreContext(this.stateProviderReplica);
            this.serviceContext = serviceContext;
            this.addresses      = new ReadOnlyDictionary <string, string>(new Dictionary <string, string>());
        }
Esempio n. 6
0
        async Task IStatefulServiceReplica.CloseAsync(CancellationToken cancellationToken)
        {
            ServiceTrace.Source.WriteInfoWithId(
                TraceType,
                this.traceId,
                "CloseAsync");

            await this.CloseCommunicationListenersAsync(cancellationToken);

            await this.CancelRunAsync();

            await this.userServiceReplica.OnCloseAsync(cancellationToken);

            if (this.stateProviderReplica != null)
            {
                await this.stateProviderReplica.CloseAsync(cancellationToken);

                this.stateProviderReplica = null;
            }
        }
 public InternalsVisibleStatefulService(StatefulServiceContext serviceContext, IStateProviderReplica stateProviderReplica) : base(serviceContext, stateProviderReplica)
 {
 }
Esempio n. 8
0
 public RawStateful(IStateProviderReplica stateProviderReplica, IReliableStateManager reliableStateManager)
 {
     StateProviderReplica = stateProviderReplica;
     ReliableStateManager = reliableStateManager;
     StateProviderReplica.OnDataLossAsync = OnDataLossAsync;
 }
Esempio n. 9
0
 /// <summary>
 /// Initializes a new instance of the <cref name="RestoreContext"/> structure.
 /// </summary>
 /// <param name="stateProviderReplica">
 /// An <see cref="IStateProviderReplica"/> representing a reliable state provider replica.
 /// </param>
 public RestoreContext(IStateProviderReplica stateProviderReplica)
 {
     this.stateProviderReplica = stateProviderReplica;
 }
 public SealedStatefulService(StatefulServiceContext serviceContext, IStateProviderReplica stateProviderReplica) : base(serviceContext, stateProviderReplica)
 {
 }