public async Task <MembershipTableData> ReadRow(SiloAddress siloAddress) { try { var siloEntryKeys = new Dictionary <string, AttributeValue> { { $"{SiloInstanceRecord.DEPLOYMENT_ID_PROPERTY_NAME}", new AttributeValue(this.clusterId) }, { $"{SiloInstanceRecord.SILO_IDENTITY_PROPERTY_NAME}", new AttributeValue(SiloInstanceRecord.ConstructSiloIdentity(siloAddress)) } }; var versionEntryKeys = new Dictionary <string, AttributeValue> { { $"{SiloInstanceRecord.DEPLOYMENT_ID_PROPERTY_NAME}", new AttributeValue(this.clusterId) }, { $"{SiloInstanceRecord.SILO_IDENTITY_PROPERTY_NAME}", new AttributeValue(SiloInstanceRecord.TABLE_VERSION_ROW) } }; var entries = await storage.GetEntriesTxAsync(this.options.TableName, new[] { siloEntryKeys, versionEntryKeys }, fields => new SiloInstanceRecord(fields)); MembershipTableData data = Convert(entries.ToList()); if (this.logger.IsEnabled(LogLevel.Trace)) { this.logger.Trace("Read my entry {0} Table=" + Environment.NewLine + "{1}", siloAddress.ToLongString(), data.ToString()); } return(data); } catch (Exception exc) { this.logger.Warn(ErrorCode.MembershipBase, $"Intermediate error reading silo entry for key {siloAddress.ToLongString()} from the table {this.options.TableName}.", exc); throw; } }