/// <summary> Delete / Clear state data function for this storage provider. </summary> /// <see cref="IStorageProvider.ClearStateAsync"/> public virtual async Task ClearStateAsync(string grainType, GrainReference grainReference, IGrainState grainState) { var keys = MakeKeys(grainType, grainReference); if (Log.IsVerbose2) { Log.Verbose2("Delete Keys={0} Etag={1}", StorageProviderUtils.PrintKeys(keys), grainState.ETag); } string key = HierarchicalKeyStore.MakeStoreKey(keys); IMemoryStorageGrain storageGrain = GetStorageGrain(key); await storageGrain.DeleteStateAsync(STATE_STORE_NAME, key, grainState.ETag); }
/// <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) { var keys = MakeKeys(grainType, 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); } if (eTag != null && eTag != etag) { throw new InconsistentStateException(string.Format("Etag mismatch durign Delete: Expected = {0} Received = {1}", this.etag, eTag)); } string key = HierarchicalKeyStore.MakeStoreKey(keys); IMemoryStorageGrain storageGrain = GetStorageGrain(key); await storageGrain.DeleteStateAsync(STATE_STORE_NAME, key); etag = NewEtag(); }
/// <summary> Delete / Clear state data function for this storage provider. </summary> /// <see cref="IGrainStorage.ClearStateAsync"/> public virtual async Task ClearStateAsync(string grainType, GrainReference grainReference, IGrainState grainState) { var keys = MakeKeys(grainType, grainReference); if (logger.IsEnabled(LogLevel.Trace)) { logger.LogTrace("Delete Keys={Keys} Etag={Etag}", StorageProviderUtils.PrintKeys(keys), grainState.ETag); } string key = HierarchicalKeyStore.MakeStoreKey(keys); IMemoryStorageGrain storageGrain = GetStorageGrain(key); try { await storageGrain.DeleteStateAsync(STATE_STORE_NAME, key, grainState.ETag); grainState.ETag = null; } catch (MemoryStorageEtagMismatchException e) { throw e.AsInconsistentStateException(); } }
/// <summary> Delete / Clear state data function for this storage provider. </summary> /// <see cref="IStorageProvider.ClearStateAsync"/> public virtual async Task ClearStateAsync(string grainType, GrainReference grainReference, IGrainState grainState) { IList <Tuple <string, string> > keys = MakeKeys(grainType, grainReference).ToList(); if (Log.IsVerbose2) { Log.Verbose2("Delete Keys={0} Etag={1}", StorageProviderUtils.PrintKeys(keys), grainState.ETag); } string key = HierarchicalKeyStore.MakeStoreKey(keys); IMemoryStorageGrain storageGrain = GetStorageGrain(key); try { await storageGrain.DeleteStateAsync(STATE_STORE_NAME, key, grainState.ETag); grainState.ETag = null; } catch (MemoryStorageEtagMismatchException e) { throw e.AsInconsistentStateException(); } }