JournaledGrain<TGrainState> Class
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
A base class for log-consistent grains using standard event-sourcing terminology. All operations are reentrancy-safe.
public abstract class JournaledGrain<TGrainState> : Orleans.EventSourcing.JournaledGrain<TGrainState,object> where TGrainState : class, new()
type JournaledGrain<'GrainState (requires 'GrainState : null and 'GrainState : (new : unit -> 'GrainState))> = class
inherit JournaledGrain<'GrainState, obj (requires 'GrainState : null and 'GrainState : (new : unit -> 'GrainState))>
Public MustInherit Class JournaledGrain(Of TGrainState)
Inherits JournaledGrain(Of TGrainState, Object)
Type Parameters
- TGrainState
The type for the grain state, i.e. the aggregate view of the event log.
- Inheritance
- Inheritance
- Inheritance
Constructors
JournaledGrain<TGrainState>() |
Initializes a new instance of the JournaledGrain<TGrainState> class. |
JournaledGrain<TGrainState>(IGrainIdentity, IGrainRuntime) |
This constructor is particularly useful for unit testing where test code can create a Grain and replace the IGrainIdentity, IGrainRuntime and State with test doubles (mocks/stubs). |
Properties
DefaultAdaptorFactory |
If there is no log-consistency provider specified, store versioned state using default storage provider (Inherited from JournaledGrain<TGrainState,TEventBase>) |
GrainContext | (Inherited from Grain) |
GrainFactory |
Gets an object which can be used to access other grains. Null if this grain is not associated with a Runtime, such as when created directly for unit testing. (Inherited from Grain) |
GrainReference | (Inherited from Grain) |
IdentityString |
String representation of grain's SiloIdentity including type and primary key. (Inherited from Grain) |
RuntimeIdentity |
A unique identifier for the current silo. There is no semantic content to this string, but it may be useful for logging. (Inherited from Grain) |
ServiceProvider |
Gets the IServiceProvider managed by the runtime. Null if this grain is not associated with a Runtime, such as when created directly for unit testing. (Inherited from Grain) |
State |
Gets the current confirmed state. Includes only confirmed events. (Inherited from JournaledGrain<TGrainState,TEventBase>) |
TentativeState |
Gets the current tentative state. Includes both confirmed and unconfirmed events. (Inherited from JournaledGrain<TGrainState,TEventBase>) |
UnconfirmedEvents |
Returns the current queue of unconfirmed events. (Inherited from JournaledGrain<TGrainState,TEventBase>) |
UnresolvedConnectionIssues |
Gets a list of all currently unresolved connection issues. (Inherited from JournaledGrain<TGrainState,TEventBase>) |
Version |
Gets the version of the current confirmed state. Equals the total number of confirmed events. (Inherited from JournaledGrain<TGrainState,TEventBase>) |
Methods
ConfirmEvents() |
Waits until all previously raised events have been confirmed. await this after raising one or more events, to ensure events are persisted before proceeding, or to guarantee strong consistency (linearizability) even if there are multiple instances of this grain (Inherited from JournaledGrain<TGrainState,TEventBase>) |
DeactivateOnIdle() |
Deactivate this activation of the grain after the current grain method call is completed. This call will mark this activation of the current grain to be deactivated and removed at the end of the current method. The next call to this grain will result in a different activation to be used, which typical means a new activation will be created automatically by the runtime. (Inherited from Grain) |
DelayDeactivation(TimeSpan) |
Delay Deactivation of this activation at least for the specified time duration.
A positive |
DisableStatsCollection() | (Inherited from JournaledGrain<TGrainState,TEventBase>) |
EnableStatsCollection() | (Inherited from JournaledGrain<TGrainState,TEventBase>) |
GetLogger() |
Returns a logger object that this grain's code can use for tracing. The name of the logger will be derived from the grain class name. (Inherited from Grain) |
GetLogger(String) |
Returns a logger object that this grain's code can use for tracing. (Inherited from Grain) |
GetReminder(String) |
Returns a previously registered reminder. (Inherited from Grain) |
GetReminders() |
Returns a list of all reminders registered by the grain. (Inherited from Grain) |
GetStats() | (Inherited from JournaledGrain<TGrainState,TEventBase>) |
GetStreamProvider(String) | (Inherited from Grain) |
GetStreamProviders() | (Inherited from Grain) |
InstallAdaptor(ILogViewAdaptorFactory, Object, String, IGrainStorage, ILogConsistencyProtocolServices) |
Called right after grain is constructed, to install the adaptor. The log-consistency provider contains a factory method that constructs the adaptor with chosen types for this grain (Inherited from JournaledGrain<TGrainState,TEventBase>) |
InstallAdaptor(ILogViewAdaptorFactory, Object, String, IGrainStorage, ILogConsistencyProtocolServices) |
Called right after grain is constructed, to install the adaptor. The log-consistency provider contains a factory method that constructs the adaptor with chosen types for this grain (Inherited from JournaledGrain<TGrainState,TEventBase>) |
MigrateOnIdle() |
Starts an attempt to migrating this instance to another location. Migration captures the current RequestContext, making it available to the activation's placement director so that it can consider it when selecting a new location. Migration will occur asynchronously, when no requests are executing, and will not occur if the activation's placement director does not select an alternative location. (Inherited from Grain) |
OnActivateAsync() |
By default, upon activation, the journaled grain waits until it has loaded the latest view from storage. Subclasses can override this behavior, and skip the wait if desired. (Inherited from JournaledGrain<TGrainState,TEventBase>) |
OnActivateAsync(CancellationToken) |
By default, upon activation, the journaled grain waits until it has loaded the latest view from storage. Subclasses can override this behavior, and skip the wait if desired. (Inherited from JournaledGrain<TGrainState,TEventBase>) |
OnConnectionIssue(ConnectionIssue) |
Called when the underlying persistence or replication protocol is running into some sort of connection trouble. Override this to monitor the health of the log-consistency protocol and/or to customize retry delays. Any exceptions thrown are caught and logged by the ILogViewAdaptorFactory. (Inherited from JournaledGrain<TGrainState,TEventBase>) |
OnConnectionIssue(ConnectionIssue) |
Called when the underlying persistence or replication protocol is running into some sort of connection trouble. Override this to monitor the health of the log-consistency protocol and/or to customize retry delays. Any exceptions thrown are caught and logged by the ILogConsistencyProvider. (Inherited from JournaledGrain<TGrainState,TEventBase>) |
OnConnectionIssueResolved(ConnectionIssue) |
Called when a previously reported connection issue has been resolved. Override this to monitor the health of the log-consistency protocol. Any exceptions thrown are caught and logged by the ILogConsistencyProvider. (Inherited from JournaledGrain<TGrainState,TEventBase>) |
OnConnectionIssueResolved(ConnectionIssue) |
Called when a previously reported connection issue has been resolved. Override this to monitor the health of the log-consistency protocol. Any exceptions thrown are caught and logged by the ILogViewAdaptorFactory. (Inherited from JournaledGrain<TGrainState,TEventBase>) |
OnDeactivateAsync() |
This method is called at the begining of the process of deactivating a grain. (Inherited from Grain) |
OnDeactivateAsync(DeactivationReason, CancellationToken) |
This method is called at the beginning of the process of deactivating a grain. (Inherited from Grain) |
OnStateChanged() |
Called after the confirmed state may have changed (i.e. the confirmed version number is larger). Override this to react to changes of the confirmed state. (Inherited from JournaledGrain<TGrainState,TEventBase>) |
OnTentativeStateChanged() |
Called whenever the tentative state may have changed due to local or remote events. Override this to react to changes of the state. (Inherited from JournaledGrain<TGrainState,TEventBase>) |
Participate(IGrainLifecycle) | (Inherited from Grain) |
Participate(IGrainLifecycle) | (Inherited from LogConsistentGrain<TView>) |
Participate(IGrainLifecycle) | (Inherited from LogConsistentGrain<TView>) |
RaiseConditionalEvent<TEvent>(TEvent) |
Raise an event conditionally. Succeeds only if there are no conflicts, that is, no other events were raised in the meantime. (Inherited from JournaledGrain<TGrainState,TEventBase>) |
RaiseConditionalEvents<TEvent>(IEnumerable<TEvent>) |
Raise multiple events, as an atomic sequence, conditionally. Succeeds only if there are no conflicts, that is, no other events were raised in the meantime. (Inherited from JournaledGrain<TGrainState,TEventBase>) |
RaiseEvent<TEvent>(TEvent) |
Raises an event. (Inherited from JournaledGrain<TGrainState,TEventBase>) |
RaiseEvents<TEvent>(IEnumerable<TEvent>) |
Raise multiple events, as an atomic sequence. (Inherited from JournaledGrain<TGrainState,TEventBase>) |
RefreshNow() |
Retrieves the latest state now, and confirms all previously raised events. Effectively, this enforces synchronization with the global state. Await this before reading the state to ensure strong consistency (linearizability) even if there are multiple instances of this grain (Inherited from JournaledGrain<TGrainState,TEventBase>) |
RegisterOrUpdateReminder(String, TimeSpan, TimeSpan) |
Registers a persistent, reliable reminder to send regular notifications (reminders) to the grain.
The grain must implement the |
RegisterTimer(Func<Object,Task>, Object, TimeSpan, TimeSpan) |
Obsolete.
Registers a timer to send periodic callbacks to this grain. (Inherited from Grain) |
RetrieveConfirmedEvents(Int32, Int32) |
Retrieves a segment of the confirmed event sequence, possibly from storage. Throws NotSupportedException if the events are not available to read. Whether events are available, and for how long, depends on the providers used and how they are configured. (Inherited from JournaledGrain<TGrainState,TEventBase>) |
TransitionState(TGrainState, TEventBase) |
Defines how to apply events to the state. Unless it is overridden in the subclass, it calls a dynamic "Apply" function on the state, with the event as a parameter. All exceptions thrown by this method are caught and logged by the log view provider. Override this to customize how to transition the state for a given event. (Inherited from JournaledGrain<TGrainState,TEventBase>) |
UnregisterReminder(IGrainReminder) |
Unregisters a previously registered reminder. (Inherited from Grain) |
Explicit Interface Implementations
Extension Methods
DeactivateOnIdle(IGrainBase) |
Deactivate this grain activation after the current grain method call is completed. This call will mark this activation of the current grain to be deactivated and removed at the end of the current method. The next call to this grain will result in a different activation to be used, which typical means a new activation will be created automatically by the runtime. |
MigrateOnIdle(IGrainBase) |
Starts an attempt to migrating this instance to another location. Migration captures the current RequestContext, making it available to the activation's placement director so that it can consider it when selecting a new location. Migration will occur asynchronously, when no requests are executing, and will not occur if the activation's placement director does not select an alternative location. |
RegisterGrainTimer(IGrainBase, Func<CancellationToken,Task>, GrainTimerCreationOptions) |
Creates a grain timer. |
RegisterGrainTimer(IGrainBase, Func<CancellationToken,Task>, TimeSpan, TimeSpan) |
Creates a grain timer. |
RegisterGrainTimer(IGrainBase, Func<Task>, GrainTimerCreationOptions) | |
RegisterGrainTimer(IGrainBase, Func<Task>, TimeSpan, TimeSpan) |
Creates a grain timer. |
RegisterGrainTimer<TState>(IGrainBase, Func<TState,CancellationToken,Task>, TState, GrainTimerCreationOptions) |
Creates a grain timer. |
RegisterGrainTimer<TState>(IGrainBase, Func<TState,CancellationToken,Task>, TState, TimeSpan, TimeSpan) |
Creates a grain timer. |
RegisterGrainTimer<TState>(IGrainBase, Func<TState,Task>, TState, GrainTimerCreationOptions) | |
RegisterGrainTimer<TState>(IGrainBase, Func<TState,Task>, TState, TimeSpan, TimeSpan) |
Creates a grain timer. |
AsReference(IAddressable, Type) |
Returns a typed reference to the provided grain. |
AsReference<TGrainInterface>(IAddressable) |
Returns a typed reference to the provided grain. |
BindGrainReference(IAddressable, IGrainFactory) |
Binds the grain reference to the provided IGrainFactory. |
Cast(IAddressable, Type) |
Returns a typed reference to the provided grain. |
Cast<TGrainInterface>(IAddressable) |
Returns a typed reference to the provided grain. |
GetGrainId(IAddressable) |
Returns the grain id corresponding to the provided grain. |
GetGrainIdentity(IGrain) | |
GetPrimaryKey(IGrain, String) | |
GetPrimaryKey(IGrain) | |
GetPrimaryKey(IAddressable, String) |
Returns the Guid representation of a grain primary key. |
GetPrimaryKey(IAddressable) |
Returns the Guid representation of a grain primary key. |
GetPrimaryKeyLong(IGrain, String) | |
GetPrimaryKeyLong(IGrain) | |
GetPrimaryKeyLong(IAddressable, String) |
Returns the |
GetPrimaryKeyLong(IAddressable) |
Returns the |
GetPrimaryKeyString(IAddressable) |
Returns the |
IsPrimaryKeyBasedOnLong(IAddressable) |
Returns whether part of the primary key is of type |
GetReminder(Grain, String) |
Returns a previously registered reminder. |
GetReminder(IGrainBase, String) |
Returns a previously registered reminder. |
GetReminders(Grain) |
Returns a list of all reminders registered by the grain. |
GetReminders(IGrainBase) |
Returns a list of all reminders registered by the grain. |
RegisterOrUpdateReminder(Grain, String, TimeSpan, TimeSpan) |
Registers a persistent, reliable reminder to send regular notifications (reminders) to the grain.
The grain must implement the |
RegisterOrUpdateReminder(IGrainBase, String, TimeSpan, TimeSpan) |
Registers a persistent, reliable reminder to send regular notifications (reminders) to the grain.
The grain must implement the |
UnregisterReminder(Grain, IGrainReminder) |
Unregisters a previously registered reminder. |
UnregisterReminder(IGrainBase, IGrainReminder) |
Unregisters a previously registered reminder. |
GetStreamProvider(Grain, String) |
Gets the stream provider with the specified |
GetStreamProvider(IGrainBase, String) |
Gets the stream provider with the specified |
GetLogger(Grain, String) |
Returns a logger object that this grain's code can use for tracing. |
GetLogger(Grain) |
Returns a logger object that this grain's code can use for tracing. The name of the logger will be derived from the grain class name. |
GetGrainStorage(Grain, IServiceProvider) |
Acquire the storage provider associated with the grain type. |