Beispiel #1
0
 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);
     }
 }
Beispiel #10
0
            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);
            }
Beispiel #11
0
            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);
            }
        }
Beispiel #13
0
 public void OnStateApplied(ApplyStateContext context, IWriteOnlyTransaction transaction)
 {
     //设置过期时间,任务将在三天后过期,过期的任务会自动被扫描并删除
     context.JobExpirationTimeout = TimeSpan.FromDays(3);
 }
Beispiel #14
0
 public void Apply(ApplyStateContext context, IWriteOnlyTransaction transaction)
 {
     transaction.IncrementCounter("stats:deleted");
 }
Beispiel #15
0
        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);
 }
Beispiel #20
0
 public void Unapply(ApplyStateContext context, IWriteOnlyTransaction transaction)
 {
     transaction.RemoveFromSet("schedule", context.JobId);
 }
 public void OnStateApplied(ApplyStateContext context, IWriteOnlyTransaction transaction)
 {
     context.JobExpirationTimeout = TimeSpan.FromDays(270);
 }
Beispiel #22
0
 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);
            }
        }
Beispiel #24
0
 public void Unapply(ApplyStateContext context, IWriteOnlyTransaction transaction)
 {
     transaction.RemoveFromSet("awaiting", context.BackgroundJob.Id);
 }
Beispiel #25
0
 public void Apply(ApplyStateContext context, IWriteOnlyTransaction transaction)
 {
     transaction.AddToSet("awaiting", context.BackgroundJob.Id, JobHelper.ToTimestamp(DateTime.UtcNow));
 }
Beispiel #26
0
 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);
Beispiel #32
0
            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);
            }
Beispiel #33
0
 public void OnStateUnapplied(ApplyStateContext context, IWriteOnlyTransaction transaction)
 {
 }
Beispiel #34
0
 public override ITagsTransaction GetTransaction(IWriteOnlyTransaction transaction)
 {
     return(new RedisTagsTransaction());
 }
Beispiel #35
0
 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 void Unapply(ApplyStateContext context, IWriteOnlyTransaction transaction)
 {
     transaction.RemoveFromList("succeeded", context.JobId);
 }
Beispiel #39
0
 public virtual void Apply(
     ApplyStateContext context, IWriteOnlyTransaction transaction)
 {
 }
Beispiel #40
0
 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);
     }
 }
Beispiel #42
0
 void IApplyStateFilter.OnStateUnapplied(ApplyStateContext context, IWriteOnlyTransaction transaction)
 {
 }
 public void Apply(ApplyStateContext context, IWriteOnlyTransaction transaction)
 {
     transaction.InsertToList("deleted", context.JobId);
     transaction.TrimList("deleted", 0, RedisStorage.DeletedListSize);
 }
Beispiel #44
0
 public void OnStateUnapplied(ApplyStateContext context, IWriteOnlyTransaction transaction)
 {
     context.JobExpirationTimeout = TimeSpan.FromHours(10);
 }
Beispiel #45
0
 public void Apply(ApplyStateContext context, IWriteOnlyTransaction transaction)
 {
     transaction.IncrementCounter("stats:succeeded");
 }
		public void Unapply(ApplyStateContext context, IWriteOnlyTransaction transaction)
		{
			transaction.RemoveFromSet("failed", context.JobId);
		}
Beispiel #47
0
 public void Unapply(ApplyStateContext context, IWriteOnlyTransaction transaction)
 {
 }
Beispiel #48
0
 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);
 }
Beispiel #50
0
 public void Unapply(ApplyStateContext context, IWriteOnlyTransaction transaction)
 {
     transaction.RemoveFromList(State.Succeeded, context.BackgroundJob.Id);
 }
 public void Apply(ApplyStateContext context, IWriteOnlyTransaction transaction)
 {
     transaction.InsertToList("succeeded", context.JobId);
     transaction.TrimList("succeeded", 0, 99);
 }
Beispiel #52
0
 public void Apply(ApplyStateContext context, IWriteOnlyTransaction transaction)
 {
     transaction.InsertToList(State.Succeeded, context.BackgroundJob.Id);
     transaction.TrimList(State.Succeeded, 0, 99);
 }
Beispiel #53
0
 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 Apply(ApplyStateContext context, IWriteOnlyTransaction transaction)
 {
     transaction.InsertToList("deleted", context.BackgroundJob.Id);
     transaction.TrimList("deleted", 0, 99);
 }
 public void Unapply(ApplyStateContext context, IWriteOnlyTransaction transaction)
 {
     transaction.RemoveFromList("deleted", context.BackgroundJob.Id);
 }
 public void OnStateApplied(ApplyStateContext context, IWriteOnlyTransaction transaction)
 {
     Logger.InfoFormat(
         $"Job `{context.BackgroundJob?.Id}` state was changed from `{context.OldStateName}` to `{context.NewState?.Name}`");
 }
Beispiel #58
0
 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.");
 }