示例#1
0
        public async Task <bool> RemoveRow(GrainReference grainRef, string reminderName, string eTag)
        {
            var entry = new ReminderTableEntry
            {
                PartitionKey = ReminderTableEntry.ConstructPartitionKey(remTableManager.ServiceId, grainRef),
                RowKey       = ReminderTableEntry.ConstructRowKey(grainRef, reminderName),
                ETag         = eTag,
            };

            try
            {
                if (logger.IsEnabled(LogLevel.Trace))
                {
                    logger.Trace("RemoveRow entry = {0}", entry.ToString());
                }

                bool result = await remTableManager.DeleteReminderEntryConditionally(entry, eTag);

                if (result == false)
                {
                    logger.Warn((int)AzureUtils.Utilities.ErrorCode.AzureTable_43,
                                $"Delete failed on the reminder table. Will retry. Entry = {entry}");
                }
                return(result);
            }
            catch (Exception exc)
            {
                logger.Warn((int)AzureUtils.Utilities.ErrorCode.AzureTable_44,
                            $"Intermediate error when deleting reminder entry {entry} to the table {remTableManager.TableName}.", exc);
                throw;
            }
        }
示例#2
0
        private static ReminderTableEntry ConvertToTableEntry(ReminderEntry remEntry, Guid serviceId, string deploymentId)
        {
            string partitionKey = ReminderTableEntry.ConstructPartitionKey(serviceId, remEntry.GrainRef);
            string rowKey       = ReminderTableEntry.ConstructRowKey(remEntry.GrainRef, remEntry.ReminderName);
            string serviceIdStr = ReminderTableEntry.ConstructServiceIdStr(serviceId);

            var consistentHash = remEntry.GrainRef.GetUniformHashCode();

            return(new ReminderTableEntry
            {
                PartitionKey = partitionKey,
                RowKey = rowKey,

                ServiceId = serviceIdStr,
                DeploymentId = deploymentId,
                GrainReference = remEntry.GrainRef.ToKeyString(),
                ReminderName = remEntry.ReminderName,

                StartAt = LogFormatter.PrintDate(remEntry.StartAt),
                Period = remEntry.Period.ToString(),

                GrainRefConsistentHash = String.Format("{0:X8}", consistentHash),
                ETag = remEntry.ETag,
            });
        }
示例#3
0
        public async Task <bool> RemoveRow(GrainReference grainRef, string reminderName, string eTag)
        {
            var entry = new ReminderTableEntry
            {
                PartitionKey = ReminderTableEntry.ConstructPartitionKey(remTableManager.ServiceId, grainRef),
                RowKey       = ReminderTableEntry.ConstructRowKey(grainRef, reminderName),
                ETag         = eTag,
            };

            try
            {
                if (logger.IsVerbose2)
                {
                    logger.Verbose2("RemoveRow entry = {0}", entry.ToString());
                }

                bool result = await remTableManager.DeleteReminderEntryConditionally(entry, eTag);

                if (result == false)
                {
                    logger.Warn(ErrorCode.AzureTable_43, String.Format("Delete failed on the reminder table. Will retry. Entry = {0}", entry));
                }
                return(result);
            }
            catch (Exception exc)
            {
                logger.Warn(ErrorCode.AzureTable_44, String.Format("Intermediate error when deleting reminder entry {0} to the table {1}.",
                                                                   entry, remTableManager.TableName), exc);
                throw;
            }
        }