Пример #1
0
 private ReminderEntry ConvertFromTableEntry(ReminderTableEntry tableEntry, string eTag)
 {
     try
     {
         return new ReminderEntry
         {
             GrainRef = GrainReference.FromKeyString(tableEntry.GrainReference),
             ReminderName = tableEntry.ReminderName,
             StartAt = TraceLogger.ParseDate(tableEntry.StartAt),
             Period = TimeSpan.Parse(tableEntry.Period),
             ETag = eTag,
         };
     }
     catch (Exception exc)
     {
         var error = String.Format( "Failed to parse ReminderTableEntry: {0}. This entry is corrupt, going to ignore it.",
             tableEntry);
         logger.Error(ErrorCode.AzureTable_49, error, exc);
         throw;
     }
     finally
     {
         string serviceIdStr = ReminderTableEntry.ConstructServiceIdStr(remTableManager.ServiceId);
         if (!tableEntry.ServiceId.Equals(serviceIdStr))
         {
             var error = String.Format( "Read a reminder entry for wrong Service id. Read {0}, but my service id is {1}. Going to discard it.",
                 tableEntry, serviceIdStr);
             logger.Warn(ErrorCode.AzureTable_ReadWrongReminder, error);
             throw new ApplicationException(error);
         }
     }
 }
Пример #2
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;
            }
        }