NewLife/AntJob

增加申请任务时的埋点,方便分析调度平台为什么没有分配任务
大石头 authored at 2025-08-02 10:01:46
a94bb3b
Tree
1 Parent(s) a33cd55
Summary: 1 changed files with 22 additions and 8 deletions.
Modified +22 -8
Modified +22 -8
diff --git a/AntJob.Server/Services/JobService.cs b/AntJob.Server/Services/JobService.cs
index 3772dc7..98d24f4 100644
--- a/AntJob.Server/Services/JobService.cs
+++ b/AntJob.Server/Services/JobService.cs
@@ -137,6 +137,8 @@ public class JobService(AppService appService, ICacheProvider cacheProvider, ITr
     /// <returns></returns>
     public ITask[] Acquire(App app, AcquireModel model, AppOnline online)
     {
+        using var span = _tracer?.NewSpan(nameof(Acquire), new { app = app?.Name, job = model.Job, count = model.Count, topic = model.Topic, online.Client });
+
         var jobName = model.Job?.Trim();
         if (jobName.IsNullOrEmpty()) return [];
 
@@ -148,7 +150,14 @@ public class JobService(AppService appService, ICacheProvider cacheProvider, ITr
 
         // 作业是否启用,是否处于免打扰时间
         var job = app.Jobs.FirstOrDefault(e => e.Name == jobName);
-        if (job != null && (!job.Enable || job.CheckQuiet(DateTime.Now))) return [];
+        if (job != null && (!job.Enable || job.CheckQuiet(DateTime.Now)))
+        {
+            if (!job.Enable)
+                span?.AppendTag("作业停用");
+            else
+                span?.AppendTag($"免打扰时间:{job.QuietTime}");
+            return [];
+        }
 
         // 全局锁,确保单个作业只有一个线程在分配作业
         using var ck = _cacheProvider.AcquireLock($"antjob:lock:{job.ID}", 15_000);
@@ -167,7 +176,11 @@ public class JobService(AppService appService, ICacheProvider cacheProvider, ITr
         var ip = online.UpdateIP;
         //var ip = remote?.Host;
         //var online = _appService.GetOnline(app, remote + "", ip);
-        if (!online.Enable) return [];
+        if (!online.Enable)
+        {
+            span?.AppendTag("应用在线实例停止分配任务");
+            return [];
+        }
 
         var list = new List<JobTask>();
 
@@ -737,7 +750,7 @@ public class JobService(AppService appService, ICacheProvider cacheProvider, ITr
     /// <returns></returns>
     public IList<JobTask> AcquireDelay(Job job, String server, String client, Int32 count, ICache cache)
     {
-        using var span = _tracer?.NewSpan(nameof(AcquireDelay), new { job.Name, server, client, count });
+        using var span = _tracer?.NewSpan(nameof(AcquireDelay), new { job.Name, server, client, job.MaxRetry, job.MaxError, count });
 
         using var ts = Job.Meta.CreateTrans();
 
@@ -758,7 +771,7 @@ public class JobService(AppService appService, ICacheProvider cacheProvider, ITr
         ts.Commit();
 
         // 记录任务数
-        span?.AppendTag(null, list.Count);
+        span?.AppendTag($"now={now.ToFullString()} maxError={maxError}", list.Count);
 
         return list;
     }
@@ -772,18 +785,19 @@ public class JobService(AppService appService, ICacheProvider cacheProvider, ITr
     /// <returns></returns>
     public IList<JobTask> AcquireOld(Job job, String server, String client, Int32 count, ICache cache)
     {
-        using var span = _tracer?.NewSpan(nameof(AcquireOld), new { job.Name, server, client, count });
+        using var span = _tracer?.NewSpan(nameof(AcquireOld), new { job.Name, server, client, job.MaxRetry, job.MaxError, count });
 
         using var ts = Job.Meta.CreateTrans();
         var list = new List<JobTask>();
 
         var now = DateTime.Now;
+        var end = now;
         var maxError = job.MaxError - job.Error;
 
         // 查找历史错误任务
         if (job.ErrorDelay > 0)
         {
-            var end = now.AddSeconds(-job.ErrorDelay);
+            end = now.AddSeconds(-job.ErrorDelay);
             var list2 = JobTask.Search(job.ID, now.AddDays(-7), end, job.MaxRetry, maxError, [JobStatus.错误], count);
             if (list2.Count > 0) list.AddRange(list2);
         }
@@ -791,7 +805,7 @@ public class JobService(AppService appService, ICacheProvider cacheProvider, ITr
         // 查找历史中断任务,持续10分钟仍然未完成
         if (job.MaxTime > 0 && list.Count < count)
         {
-            var end = now.AddSeconds(-job.MaxTime);
+            end = now.AddSeconds(-job.MaxTime);
             var list2 = JobTask.Search(job.ID, now.AddDays(-7), end, job.MaxRetry, maxError, [JobStatus.就绪, JobStatus.抽取中, JobStatus.处理中], count - list.Count);
             if (list2.Count > 0) list.AddRange(list2);
         }
@@ -812,7 +826,7 @@ public class JobService(AppService appService, ICacheProvider cacheProvider, ITr
         ts.Commit();
 
         // 记录任务数
-        span?.AppendTag(null, list.Count);
+        span?.AppendTag($"now={now.ToFullString()} end={end.ToFullString()} maxError={maxError}", list.Count);
 
         return list;
     }