/// <summary> /// Adds a mutation to be retried by this manager /// </summary> /// <param name="retryDelegate"></param> /// <param name="identifier"></param> public void AddMutationForRetry(DelayedMutation.DelayedMutationDelegate retryDelegate, string identifier) { this.ScheduleMutationRetry(new DelayedMutation(retryDelegate, identifier)); }
/// <summary> /// Schedules the given mutation to be re-executed at a time in the future based on its retry count /// </summary> /// <param name="mut">The mutation to reschedule</param> private void ScheduleMutationRetry(DelayedMutation mut) { mut.ReadyOn = DateTime.Now + RETRY_DELAYS[mut.RetryCount]; _log.InfoFormat("[Inworldz.Data.Inventory.Cassandra] Mutation {0} will be retried at {1}", mut.Identifier, mut.ReadyOn); lock (_delayedMutations) { _delayedMutations.Add(mut); } }