public void Apply(ApplyStateContext context, IWriteOnlyTransaction transaction) { transaction.AddToSet( "failed", context.JobId, JobHelper.ToTimestamp(DateTime.UtcNow)); }
public override void Apply( ApplyStateContext context, IWriteOnlyTransaction transaction) { transaction.AddToSet( "processing", context.JobId, JobHelper.ToTimestamp(DateTime.UtcNow)); }
public void OnStateApplied(ApplyStateContext context, IWriteOnlyTransaction transaction) { var awaitingState = context.NewState as AwaitingState; if (awaitingState != null) { context.JobExpirationTimeout = awaitingState.Expiration; } }
public ProcessingStateHandlerFacts() { _context = new ApplyStateContextMock(); _context.StateContextValue.JobIdValue = JobId; _context.NewStateValue = new ProcessingState("server", 1); _transaction = Substitute.For<IWriteOnlyTransaction>(); }
public SucceededStateHandlerFacts() { _context = new ApplyStateContextMock(); _context.StateContextValue.JobIdValue = JobId; _context.NewStateValue = new SucceededState(null, 11, 123); _transaction = Substitute.For<IWriteOnlyTransaction>(); }
public DeletedStateHandlerFacts() { _context = new ApplyStateContextMock(); _context.StateContextValue.JobIdValue = JobId; _context.NewStateValue = new DeletedState(); _transaction = Substitute.For<IWriteOnlyTransaction>(); }
public FailedStateHandlerFacts() { _context = new ApplyStateContextMock(); _context.StateContextValue.JobIdValue = JobId; _context.NewStateValue = new FailedState(new InvalidOperationException()); _transaction = Substitute.For<IWriteOnlyTransaction>(); }
public void OnStateUnapplied( ApplyStateContext context, IWriteOnlyTransaction transaction) { Assert.NotNull(context); Assert.NotNull(transaction); _results.Add(String.Format("{0}::{1}", _name, "OnStateUnapplied")); }
public void OnStateApplied(ApplyStateContext context, IWriteOnlyTransaction transaction) { var failedState = context.NewState as FailedState; if (failedState != null) { Logger.ErrorException( String.Format("Background job #{0} was failed with an exception.", context.JobId), failedState.Exception); } }
public void Apply(ApplyStateContext context, IWriteOnlyTransaction transaction) { var enqueuedState = context.NewState as EnqueuedState; if (enqueuedState == null) { throw new InvalidOperationException(String.Format( "`{0}` state handler can be registered only for the Enqueued state.", typeof(Handler).FullName)); } transaction.AddToQueue(enqueuedState.Queue, context.JobId); }
public void Apply(ApplyStateContext context, IWriteOnlyTransaction transaction) { var scheduledState = context.NewState as ScheduledState; if (scheduledState == null) { throw new InvalidOperationException(String.Format( "`{0}` state handler can be registered only for the Scheduled state.", typeof(Handler).FullName)); } var timestamp = JobHelper.ToTimestamp(scheduledState.EnqueueAt); transaction.AddToSet("schedule", context.JobId, timestamp); }
public void ApplyState(IWriteOnlyTransaction transaction, ApplyStateContext context) { var filterInfo = GetFilters(context.Job); var filters = filterInfo.ApplyStateFilters; foreach (var state in context.TraversedStates) { transaction.AddJobState(context.JobId, state); } foreach (var handler in _handlers.GetHandlers(context.OldStateName)) { handler.Unapply(context, transaction); } foreach (var filter in filters) { filter.OnStateUnapplied(context, transaction); } transaction.SetJobState(context.JobId, context.NewState); foreach (var handler in _handlers.GetHandlers(context.NewState.Name)) { handler.Apply(context, transaction); } foreach (var filter in filters) { filter.OnStateApplied(context, transaction); } if (context.NewState.IsFinal) { transaction.ExpireJob(context.JobId, context.JobExpirationTimeout); } else { transaction.PersistJob(context.JobId); } }
public void OnStateApplied(ApplyStateContext context, IWriteOnlyTransaction transaction) { //设置过期时间,任务将在三天后过期,过期的任务会自动被扫描并删除 context.JobExpirationTimeout = TimeSpan.FromDays(3); }
public void Apply(ApplyStateContext context, IWriteOnlyTransaction transaction) { transaction.IncrementCounter("stats:deleted"); }
public void OnStateUnapplied(ApplyStateContext context, IWriteOnlyTransaction transaction) { var globalTimeout = CodingUtil.JobTimeoutDays(); context.JobExpirationTimeout = TimeSpan.FromDays(globalTimeout); }
public ITagsTransaction GetTransaction(IWriteOnlyTransaction transaction) { return(new MemoryTagsTransaction()); }
/// <inheritdoc /> public void OnStateUnapplied(ApplyStateContext context, IWriteOnlyTransaction transaction) { if (context.OldStateName == ScheduledState.StateName) { transaction.RemoveFromSet("retries", context.BackgroundJob.Id); } }
void IApplyStateFilter.OnStateUnapplied(ApplyStateContext context, IWriteOnlyTransaction transaction) { }
public void Apply(ApplyStateContext context, IWriteOnlyTransaction transaction) { transaction.InsertToList("deleted", context.BackgroundJob.Id); transaction.TrimList("deleted", 0, 99); }
public void Unapply(ApplyStateContext context, IWriteOnlyTransaction transaction) { transaction.RemoveFromSet("schedule", context.JobId); }
public void OnStateApplied(ApplyStateContext context, IWriteOnlyTransaction transaction) { context.JobExpirationTimeout = TimeSpan.FromDays(270); }
public void OnStateApplied(ApplyStateContext context, IWriteOnlyTransaction transaction) { //context.JobExpirationTimeout = TimeSpan.MaxValue; context.JobExpirationTimeout = TimeSpan.FromDays(365 * 40); }
private static void OnVerify(object state) { mDetectionTimer.Change(-1, -1); if (string.IsNullOrEmpty(ProcessMonitor.CurrentServerId)) { mDetectionTimer.Change(1000 * 1, 1000 * 1); return; } try { using (var connection = JobStorage.Current.GetConnection()) { //拿到所有的周期性job var jobagentServerList = new Dictionary <string, Tuple <string, string, string> >(); var jobList = connection.GetRecurringJobs(); foreach (var job in jobList) { var httpJob = job.Job.Args.FirstOrDefault() as HttpJobItem; //只处理agentjob if (httpJob == null || string.IsNullOrEmpty(httpJob.AgentClass)) { continue; } var key = httpJob.GetUrlHost(); if (!jobagentServerList.ContainsKey(key)) { jobagentServerList.Add(key, new Tuple <string, string, string>(httpJob.Url, httpJob.BasicUserName, httpJob.BasicPassword)); } } if (!jobagentServerList.Any()) { return; } IWriteOnlyTransaction writeTransaction = null; if (!isInit) { writeTransaction = connection.CreateWriteTransaction(); } var index = 1; foreach (var jobagent in jobagentServerList) { if (!isInit) { var data = new ProcessInfo { Id = index, Server = jobagent.Key, ProcessName = "waiting...", CpuUsage = 0.0, WorkingSet = 0, Timestamp = DateTimeOffset.UtcNow.AddMinutes(-2) }; var values = new Dictionary <string, string> { [jobagent.Key] = SerializationHelper.Serialize(data) }; writeTransaction?.SetRangeInHash("AgentHeart:" + ProcessMonitor.CurrentServerId, values); index++; } new Task(async() => { await SendHeartbeat(jobagent.Key, jobagent.Value.Item1, jobagent.Value.Item2, jobagent.Value.Item3); }).Start(); } if (!isInit) { isInit = true; // if storage supports manual expiration handling if (writeTransaction is JobStorageTransaction jsTransaction) { jsTransaction.ExpireHash("AgentHeart:" + ProcessMonitor.CurrentServerId, TimeSpan.FromMinutes(1)); } writeTransaction?.Commit(); writeTransaction?.Dispose(); } } } catch { // ignored } finally { mDetectionTimer.Change(1000 * 5, 1000 * 5); } }
public void Unapply(ApplyStateContext context, IWriteOnlyTransaction transaction) { transaction.RemoveFromSet("awaiting", context.BackgroundJob.Id); }
public void Apply(ApplyStateContext context, IWriteOnlyTransaction transaction) { transaction.AddToSet("awaiting", context.BackgroundJob.Id, JobHelper.ToTimestamp(DateTime.UtcNow)); }
public void OnStateUnapplied(ApplyStateContext context, IWriteOnlyTransaction transaction) { UpdateTagState(context); }
public void Unapply(ApplyStateContext context, IWriteOnlyTransaction transaction) { transaction.RemoveFromList("succeeded", context.JobId); }
public ITagsTransaction GetTransaction(IWriteOnlyTransaction transaction) { return(new MysqlTagsTransaction(_options, transaction)); }
public void Unapply(ApplyStateContext context, IWriteOnlyTransaction transaction) { transaction.RemoveFromList("deleted", context.BackgroundJob.Id); }
public void OnStateUnapplied(ApplyStateContext content, IWriteOnlyTransaction transcation) { }
public void Unapply(ApplyStateContext context, IWriteOnlyTransaction transaction) => transaction.DecrementCounter(StateStatKey);
public void Apply(ApplyStateContext context, IWriteOnlyTransaction transaction) { var enqueuedState = context.NewState as EnqueuedState; if (enqueuedState == null) { throw new InvalidOperationException( $"`{typeof (Handler).FullName}` state handler can be registered only for the Enqueued state."); } transaction.AddToQueue(enqueuedState.Queue, context.BackgroundJob.Id); }
public void OnStateUnapplied(ApplyStateContext context, IWriteOnlyTransaction transaction) { }
public override ITagsTransaction GetTransaction(IWriteOnlyTransaction transaction) { return(new RedisTagsTransaction()); }
public void Unapply(ApplyStateContext context, IWriteOnlyTransaction transaction) { transaction.DecrementCounter("stats:succeeded"); }
public void Apply(ApplyStateContext context, IWriteOnlyTransaction transaction) { transaction.InsertToList("succeeded", context.JobId); transaction.TrimList("succeeded", 0, 99); }
public void OnStateApplied(ApplyStateContext context, IWriteOnlyTransaction transaction) { context.JobExpirationTimeout = TimeSpan.FromDays(35); }
public virtual void Apply( ApplyStateContext context, IWriteOnlyTransaction transaction) { }
public void Unapply(ApplyStateContext context, IWriteOnlyTransaction transaction) { }
/// <inheritdoc /> public void OnStateApplied(ApplyStateContext context, IWriteOnlyTransaction transaction) { if (context.NewState is ScheduledState && context.NewState.Reason != null && context.NewState.Reason.StartsWith("Retry attempt")) { transaction.AddToSet("retries", context.BackgroundJob.Id); } }
public void Apply(ApplyStateContext context, IWriteOnlyTransaction transaction) { transaction.InsertToList("deleted", context.JobId); transaction.TrimList("deleted", 0, RedisStorage.DeletedListSize); }
public void OnStateUnapplied(ApplyStateContext context, IWriteOnlyTransaction transaction) { context.JobExpirationTimeout = TimeSpan.FromHours(10); }
public void Apply(ApplyStateContext context, IWriteOnlyTransaction transaction) { transaction.IncrementCounter("stats:succeeded"); }
public void Unapply(ApplyStateContext context, IWriteOnlyTransaction transaction) { transaction.RemoveFromSet("failed", context.JobId); }
public void OnStateApplied(ApplyStateContext context, IWriteOnlyTransaction transaction) { if (context.NewState.IsFinal && context.NewState.Name == "Succeeded") //Send your message to client via signalR }}
public void Apply(ApplyStateContext context, IWriteOnlyTransaction transaction) { transaction.InsertToList("succeeded", context.JobId); transaction.TrimList("succeeded", 0, RedisStorage.SucceededListSize); }
public void Unapply(ApplyStateContext context, IWriteOnlyTransaction transaction) { transaction.RemoveFromList(State.Succeeded, context.BackgroundJob.Id); }
public void Apply(ApplyStateContext context, IWriteOnlyTransaction transaction) { transaction.InsertToList(State.Succeeded, context.BackgroundJob.Id); transaction.TrimList(State.Succeeded, 0, 99); }
public void Unapply(ApplyStateContext context, IWriteOnlyTransaction transaction) { transaction.DecrementCounter("stats:deleted"); }
public void Apply(ApplyStateContext context, IWriteOnlyTransaction transaction) { transaction.AddToSet("processing", context.BackgroundJob.Id, JobHelper.ToTimestamp(DateTime.UtcNow)); }
public void OnStateApplied(ApplyStateContext context, IWriteOnlyTransaction transaction) { Logger.InfoFormat( $"Job `{context.BackgroundJob?.Id}` state was changed from `{context.OldStateName}` to `{context.NewState?.Name}`"); }
public abstract void Apply(ApplyStateContext context, IWriteOnlyTransaction transaction);
public void Unapply(ApplyStateContext context, IWriteOnlyTransaction transaction) { transaction.RemoveFromSet("processing", context.BackgroundJob.Id); }
public void OnStateUnapplied(ApplyStateContext context, IWriteOnlyTransaction transaction) { Logger.InfoFormat($"Job `{context.BackgroundJob?.Id}` state `{context.OldStateName}` was unapplied."); }