public async Task UpsertMetadataAsync(EventMetadata metadata) { _ = metadata ?? throw new ArgumentNullException(nameof(metadata)); try { if (State.Metadata != null && metadata.ResourceUriString != this.GetPrimaryKeyString()) { throw new ResourceIdentityMismatchException("Metadata resource mismatch."); } State.Metadata = metadata; ISigmaAlgebra resourceList = GrainFactory.GetGrain <ISigmaAlgebra>("resourcelist"); await resourceList.AddAsync(metadata.ResourceUriString); await WriteStateAsync(); } catch (Exception ex) { await logger?.LogErrorAsync(ex, $"Pi-system UpdateMetadataAsync '{metadata.ResourceUriString}'"); await NotifyErrorAsync(ex); throw; } }
public async Task UpsertMetadataAsync(EventMetadata metadata) { if (metadata == null) { throw new ArgumentNullException("metadata"); } if (State.Metadata != null && metadata.ResourceUriString != this.GetPrimaryKeyString()) { Trace.TraceWarning("Resource metadata identifier mismatch failed for resource metadata upsert."); Exception ex = new ResourceIdentityMismatchException(String.Format("Resource metadata {0} does not match grain identity {1}", State.Metadata.ResourceUriString, this.GetPrimaryKeyString())); await NotifyErrorAsync(ex); throw ex; } State.Metadata = metadata; ISigmaAlgebra resourceList = GrainFactory.GetGrain <ISigmaAlgebra>("resourcelist"); await resourceList.AddAsync(metadata.ResourceUriString); await WriteStateAsync(); }