Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IStorageProvider methods parameter grainType from string to Type #1075

Closed
wants to merge 1 commit into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 16 additions & 16 deletions src/Orleans/Core/GrainStateStorageBridge.cs
Original file line number Diff line number Diff line change
Expand Up @@ -36,13 +36,13 @@ internal class GrainStateStorageBridge : IStorage
{
private readonly IStorageProvider store;
private readonly Grain grain;
private readonly string grainTypeName;
private readonly Type grainType;

public GrainStateStorageBridge(string grainTypeName, Grain grain, IStorageProvider store)
public GrainStateStorageBridge(Type grainType, Grain grain, IStorageProvider store)
{
if (grainTypeName == null)
if (grainType == null)
{
throw new ArgumentNullException("grainTypeName", "No grain type name supplied");
throw new ArgumentNullException("grainType", "No grain type supplied");
}
if (store == null)
{
Expand All @@ -52,7 +52,7 @@ public GrainStateStorageBridge(string grainTypeName, Grain grain, IStorageProvid
{
throw new ArgumentNullException("grain.GrainState", "No grain state object supplied");
}
this.grainTypeName = grainTypeName;
this.grainType = grainType;
this.grain = grain;
this.store = store;
}
Expand All @@ -68,13 +68,13 @@ public async Task ReadStateAsync()
GrainReference grainRef = grain.GrainReference;
try
{
await store.ReadStateAsync(grainTypeName, grainRef, grain.GrainState);
StorageStatisticsGroup.OnStorageRead(store, grainTypeName, grainRef, sw.Elapsed);
await store.ReadStateAsync(grainType, grainRef, grain.GrainState);

StorageStatisticsGroup.OnStorageRead(store, grainType.FullName, grainRef, sw.Elapsed);
}
catch (Exception exc)
{
StorageStatisticsGroup.OnStorageReadError(store, grainTypeName, grainRef);
StorageStatisticsGroup.OnStorageReadError(store, grainType.FullName, grainRef);

string errMsg = MakeErrorMsg(what, exc);
store.Log.Error((int) ErrorCode.StorageProvider_ReadFailed, errMsg, exc);
Expand All @@ -97,9 +97,9 @@ public async Task WriteStateAsync()
Exception errorOccurred;
try
{
await store.WriteStateAsync(grainTypeName, grainRef, grain.GrainState);
await store.WriteStateAsync(grainType, grainRef, grain.GrainState);

StorageStatisticsGroup.OnStorageWrite(store, grainTypeName, grainRef, sw.Elapsed);
StorageStatisticsGroup.OnStorageWrite(store, grainType.FullName, grainRef, sw.Elapsed);
errorOccurred = null;
}
catch (Exception exc)
Expand All @@ -109,7 +109,7 @@ public async Task WriteStateAsync()
// Note, we can't do this inside catch block above, because await is not permitted there.
if (errorOccurred != null)
{
StorageStatisticsGroup.OnStorageWriteError(store, grainTypeName, grainRef);
StorageStatisticsGroup.OnStorageWriteError(store, grainType.FullName, grainRef);

string errMsgToLog = MakeErrorMsg(what, errorOccurred);
store.Log.Error((int) ErrorCode.StorageProvider_WriteFailed, errMsgToLog, errorOccurred);
Expand Down Expand Up @@ -152,16 +152,16 @@ public async Task ClearStateAsync()
try
{
// Clear (most likely Delete) state from external storage
await store.ClearStateAsync(grainTypeName, grainRef, grain.GrainState);
await store.ClearStateAsync(grainType, grainRef, grain.GrainState);
// Null out the in-memory copy of the state
grain.GrainState.SetAll(null);

// Update counters
StorageStatisticsGroup.OnStorageDelete(store, grainTypeName, grainRef, sw.Elapsed);
StorageStatisticsGroup.OnStorageDelete(store, grainType.FullName, grainRef, sw.Elapsed);
}
catch (Exception exc)
{
StorageStatisticsGroup.OnStorageDeleteError(store, grainTypeName, grainRef);
StorageStatisticsGroup.OnStorageDeleteError(store, grainType.FullName, grainRef);

string errMsg = MakeErrorMsg(what, exc);
store.Log.Error((int) ErrorCode.StorageProvider_DeleteFailed, errMsg, exc);
Expand All @@ -184,7 +184,7 @@ private string MakeErrorMsg(string what, Exception exc)

GrainReference grainReference = grain.GrainReference;
return string.Format("Error from storage provider during {0} for grain Type={1} Pk={2} Id={3} Error={4}" + Environment.NewLine + " {5}",
what, grainTypeName, grainReference.GrainId.ToDetailedString(), grainReference, errorCode, TraceLogger.PrintException(exc));
what, grainType.FullName, grainReference.GrainId.ToDetailedString(), grainReference, errorCode, TraceLogger.PrintException(exc));
}
}
}
12 changes: 6 additions & 6 deletions src/Orleans/Providers/IStorageProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -42,25 +42,25 @@ public interface IStorageProvider : IProvider
Logger Log { get; }

/// <summary>Read data function for this storage provider instance.</summary>
/// <param name="grainType">Type of this grain [fully qualified class name]</param>
/// <param name="grainType">Type of this grain</param>
/// <param name="grainReference">Grain reference object for this grain.</param>
/// <param name="grainState">State data object to be populated for this grain.</param>
/// <returns>Completion promise for the Read operation on the specified grain.</returns>
Task ReadStateAsync(string grainType, GrainReference grainReference, GrainState grainState);
Task ReadStateAsync(Type grainType, GrainReference grainReference, GrainState grainState);

/// <summary>Write data function for this storage provider instance.</summary>
/// <param name="grainType">Type of this grain [fully qualified class name]</param>
/// <param name="grainType">Type of this grain</param>
/// <param name="grainReference">Grain reference object for this grain.</param>
/// <param name="grainState">State data object to be written for this grain.</param>
/// <returns>Completion promise for the Write operation on the specified grain.</returns>
Task WriteStateAsync(string grainType, GrainReference grainReference, GrainState grainState);
Task WriteStateAsync(Type grainType, GrainReference grainReference, GrainState grainState);

/// <summary>Delete / Clear data function for this storage provider instance.</summary>
/// <param name="grainType">Type of this grain [fully qualified class name]</param>
/// <param name="grainType">Type of this grain</param>
/// <param name="grainReference">Grain reference object for this grain.</param>
/// <param name="grainState">Copy of last-known state data object for this grain.</param>
/// <returns>Completion promise for the Delete operation on the specified grain.</returns>
Task ClearStateAsync(string grainType, GrainReference grainReference, GrainState grainState);
Task ClearStateAsync(Type grainType, GrainReference grainReference, GrainState grainState);
}

/// <summary>
Expand Down
12 changes: 6 additions & 6 deletions src/OrleansAzureUtils/Providers/Storage/AzureTableStorage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -153,14 +153,14 @@ public Task Close()

/// <summary> Read state data function for this storage provider. </summary>
/// <see cref="IStorageProvider.ReadStateAsync"/>
public async Task ReadStateAsync(string grainType, GrainReference grainReference, GrainState grainState)
public async Task ReadStateAsync(Type grainType, GrainReference grainReference, GrainState grainState)
{
if (tableDataManager == null) throw new ArgumentException("GrainState-Table property not initialized");

string pk = GetKeyString(grainReference);
if (Log.IsVerbose3) Log.Verbose3((int)AzureProviderErrorCode.AzureTableProvider_ReadingData, "Reading: GrainType={0} Pk={1} Grainid={2} from Table={3}", grainType, pk, grainReference, tableName);
string partitionKey = pk;
string rowKey = grainType;
string rowKey = grainType.FullName;
GrainStateRecord record = await tableDataManager.Read(partitionKey, rowKey);
if (record != null)
{
Expand All @@ -176,15 +176,15 @@ public async Task ReadStateAsync(string grainType, GrainReference grainReference

/// <summary> Write state data function for this storage provider. </summary>
/// <see cref="IStorageProvider.WriteStateAsync"/>
public async Task WriteStateAsync(string grainType, GrainReference grainReference, GrainState grainState)
public async Task WriteStateAsync(Type grainType, GrainReference grainReference, GrainState grainState)
{
if (tableDataManager == null) throw new ArgumentException("GrainState-Table property not initialized");

string pk = GetKeyString(grainReference);
if (Log.IsVerbose3)
Log.Verbose3((int)AzureProviderErrorCode.AzureTableProvider_WritingData, "Writing: GrainType={0} Pk={1} Grainid={2} ETag={3} to Table={4}", grainType, pk, grainReference, grainState.Etag, tableName);

var entity = new GrainStateEntity { PartitionKey = pk, RowKey = grainType };
var entity = new GrainStateEntity { PartitionKey = pk, RowKey = grainType.FullName };
ConvertToStorageFormat(grainState, entity);
var record = new GrainStateRecord { Entity = entity, ETag = grainState.Etag };
try
Expand All @@ -207,13 +207,13 @@ public async Task WriteStateAsync(string grainType, GrainReference grainReferenc
/// cleared by overwriting with default / null values.
/// </remarks>
/// <see cref="IStorageProvider.ClearStateAsync"/>
public async Task ClearStateAsync(string grainType, GrainReference grainReference, GrainState grainState)
public async Task ClearStateAsync(Type grainType, GrainReference grainReference, GrainState grainState)
{
if (tableDataManager == null) throw new ArgumentException("GrainState-Table property not initialized");

string pk = GetKeyString(grainReference);
if (Log.IsVerbose3) Log.Verbose3((int)AzureProviderErrorCode.AzureTableProvider_WritingData, "Clearing: GrainType={0} Pk={1} Grainid={2} ETag={3} DeleteStateOnClear={4} from Table={5}", grainType, pk, grainReference, grainState.Etag, isDeleteStateOnClear, tableName);
var entity = new GrainStateEntity { PartitionKey = pk, RowKey = grainType };
var entity = new GrainStateEntity { PartitionKey = pk, RowKey = grainType.FullName };
var record = new GrainStateRecord { Entity = entity, ETag = grainState.Etag };
string operation = "Clearing";
try
Expand Down
12 changes: 6 additions & 6 deletions src/OrleansProviders/Storage/MemoryStorage.cs
Original file line number Diff line number Diff line change
Expand Up @@ -125,9 +125,9 @@ public virtual Task Close()

/// <summary> Read state data function for this storage provider. </summary>
/// <see cref="IStorageProvider#ReadStateAsync"/>
public virtual async Task ReadStateAsync(string grainType, GrainReference grainReference, GrainState grainState)
public virtual async Task ReadStateAsync(Type grainType, GrainReference grainReference, GrainState grainState)
{
var keys = MakeKeys(grainType, grainReference);
var keys = MakeKeys(grainType.FullName, grainReference);

if (Log.IsVerbose2) Log.Verbose2("Read Keys={0}", StorageProviderUtils.PrintKeys(keys));

Expand All @@ -142,9 +142,9 @@ public virtual async Task ReadStateAsync(string grainType, GrainReference grainR

/// <summary> Write state data function for this storage provider. </summary>
/// <see cref="IStorageProvider#WriteStateAsync"/>
public virtual async Task WriteStateAsync(string grainType, GrainReference grainReference, GrainState grainState)
public virtual async Task WriteStateAsync(Type grainType, GrainReference grainReference, GrainState grainState)
{
var keys = MakeKeys(grainType, grainReference);
var keys = MakeKeys(grainType.FullName, grainReference);
var data = grainState.AsDictionary();
string receivedEtag = grainState.Etag;

Expand All @@ -162,9 +162,9 @@ public virtual async Task WriteStateAsync(string grainType, GrainReference grain

/// <summary> Delete / Clear state data function for this storage provider. </summary>
/// <see cref="IStorageProvider#ClearStateAsync"/>
public virtual async Task ClearStateAsync(string grainType, GrainReference grainReference, GrainState grainState)
public virtual async Task ClearStateAsync(Type grainType, GrainReference grainReference, GrainState grainState)
{
var keys = MakeKeys(grainType, grainReference);
var keys = MakeKeys(grainType.FullName, grainReference);
string eTag = grainState.Etag; // TOD: Should this be 'null' for always Delete?

if (Log.IsVerbose2) Log.Verbose2("Delete Keys={0} Etag={1}", StorageProviderUtils.PrintKeys(keys), eTag);
Expand Down
6 changes: 3 additions & 3 deletions src/OrleansProviders/Storage/MemoryStorageWithLatency.cs
Original file line number Diff line number Diff line change
Expand Up @@ -84,17 +84,17 @@ public override async Task Close()
await MakeFixedLatencyCall(() => base.Close());
}

public override async Task ReadStateAsync(string grainType, GrainReference grainReference, GrainState grainState)
public override async Task ReadStateAsync(Type grainType, GrainReference grainReference, GrainState grainState)
{
await MakeFixedLatencyCall(() => base.ReadStateAsync(grainType, grainReference, grainState));
}

public override async Task WriteStateAsync(string grainType, GrainReference grainReference, GrainState grainState)
public override async Task WriteStateAsync(Type grainType, GrainReference grainReference, GrainState grainState)
{
await MakeFixedLatencyCall(() => base.WriteStateAsync(grainType, grainReference, grainState));
}

public override async Task ClearStateAsync(string grainType, GrainReference grainReference, GrainState grainState)
public override async Task ClearStateAsync(Type grainType, GrainReference grainReference, GrainState grainState)
{
await MakeFixedLatencyCall(() => base.ClearStateAsync(grainType, grainReference, grainState));
}
Expand Down
12 changes: 6 additions & 6 deletions src/OrleansProviders/Storage/ShardedStorageProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -137,27 +137,27 @@ public Task Close()

/// <summary> Read state data function for this storage provider. </summary>
/// <see cref="IStorageProvider#ReadStateAsync"/>
public Task ReadStateAsync(string grainType, GrainReference grainReference, GrainState grainState)
public Task ReadStateAsync(Type grainType, GrainReference grainReference, GrainState grainState)
{
int num = FindStorageShard(grainType, grainReference);
int num = FindStorageShard(grainType.FullName, grainReference);
IStorageProvider provider = storageProviders[num];
return provider.ReadStateAsync(grainType, grainReference, grainState);
}

/// <summary> Write state data function for this storage provider. </summary>
/// <see cref="IStorageProvider#WriteStateAsync"/>
public Task WriteStateAsync(string grainType, GrainReference grainReference, GrainState grainState)
public Task WriteStateAsync(Type grainType, GrainReference grainReference, GrainState grainState)
{
int num = FindStorageShard(grainType, grainReference);
int num = FindStorageShard(grainType.FullName, grainReference);
IStorageProvider provider = storageProviders[num];
return provider.WriteStateAsync(grainType, grainReference, grainState);
}

/// <summary> Deleet / Clear state data function for this storage provider. </summary>
/// <see cref="IStorageProvider#ClearStateAsync"/>
public Task ClearStateAsync(string grainType, GrainReference grainReference, GrainState grainState)
public Task ClearStateAsync(Type grainType, GrainReference grainReference, GrainState grainState)
{
int num = FindStorageShard(grainType, grainReference);
int num = FindStorageShard(grainType.FullName, grainReference);
IStorageProvider provider = storageProviders[num];
return provider.ClearStateAsync(grainType, grainReference, grainState);
}
Expand Down
4 changes: 2 additions & 2 deletions src/OrleansRuntime/Catalog/Catalog.cs
Original file line number Diff line number Diff line change
Expand Up @@ -674,7 +674,7 @@ private void CreateGrainInstance(string grainTypeName, ActivationData data, stri
SetupStorageProvider(data);

data.GrainInstance.GrainState = state;
data.GrainInstance.Storage = new GrainStateStorageBridge(data.GrainTypeName, data.GrainInstance, data.StorageProvider);
data.GrainInstance.Storage = new GrainStateStorageBridge(grainType, data.GrainInstance, data.StorageProvider);
}
}

Expand Down Expand Up @@ -741,7 +741,7 @@ private async Task SetupActivationState(ActivationData result, string grainType)
var grainRef = result.GrainReference;

await scheduler.RunOrQueueTask(() =>
result.StorageProvider.ReadStateAsync(grainType, grainRef, state),
result.StorageProvider.ReadStateAsync(result.GrainInstanceType, grainRef, state),
new SchedulingContext(result));

sw.Stop();
Expand Down
12 changes: 6 additions & 6 deletions src/OrleansSQLUtils/Storage/Provider/SqlStorageProvider.cs
Original file line number Diff line number Diff line change
Expand Up @@ -87,9 +87,9 @@ Task IProvider.Close()
return TaskDone.Done;
}

async Task IStorageProvider.ReadStateAsync(string grainType, GrainReference grainReference, GrainState grainState)
async Task IStorageProvider.ReadStateAsync(Type grainType, GrainReference grainReference, GrainState grainState)
{
var grainIdentity = GrainIdentity.FromGrainReference(grainType, grainReference);
var grainIdentity = GrainIdentity.FromGrainReference(grainType.FullName, grainReference);

if (_ignore)
return;
Expand All @@ -100,12 +100,12 @@ async Task IStorageProvider.ReadStateAsync(string grainType, GrainReference grai
}


async Task IStorageProvider.WriteStateAsync(string grainType, GrainReference grainReference, GrainState grainState)
async Task IStorageProvider.WriteStateAsync(Type grainType, GrainReference grainReference, GrainState grainState)
{
if (_ignore)
return;

var grainIdentity = GrainIdentity.FromGrainReference(grainType, grainReference);
var grainIdentity = GrainIdentity.FromGrainReference(grainType.FullName, grainReference);
await _dataManager.UpsertStateAsync(grainIdentity, grainState.AsDictionary());
}

Expand All @@ -117,9 +117,9 @@ async Task IStorageProvider.WriteStateAsync(string grainType, GrainReference gra
/// <param name="grainReference"></param>
/// <param name="grainState"></param>
/// <returns></returns>
Task IStorageProvider.ClearStateAsync(string grainType, GrainReference grainReference, GrainState grainState)
Task IStorageProvider.ClearStateAsync(Type grainType, GrainReference grainReference, GrainState grainState)
{
Log.Verbose2("ClearStateAsync {0} {1} {2}", grainType, grainReference.ToKeyString(), grainState.Etag);
Log.Verbose2("ClearStateAsync {0} {1} {2}", grainType.FullName, grainReference.ToKeyString(), grainState.Etag);

return TaskDone.Done;
}
Expand Down