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"); }
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>()); }
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) { }
public RawStateful(IStateProviderReplica stateProviderReplica, IReliableStateManager reliableStateManager) { StateProviderReplica = stateProviderReplica; ReliableStateManager = reliableStateManager; StateProviderReplica.OnDataLossAsync = OnDataLossAsync; }
/// <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) { }