diff --git a/src/DotXxlJob.Core/Queue/JobTaskQueue.cs b/src/DotXxlJob.Core/Queue/JobTaskQueue.cs
index 523049c..85347a3 100644
--- a/src/DotXxlJob.Core/Queue/JobTaskQueue.cs
+++ b/src/DotXxlJob.Core/Queue/JobTaskQueue.cs
@@ -129,11 +129,19 @@ namespace DotXxlJob.Core
_jobLogger.Log("
----------- xxl-job job execute start -----------
----------- Param:{0}", triggerParam.ExecutorParams);
var exectorToken = ct;
+ CancellationTokenSource timeoutCts = null;
if (triggerParam.ExecutorTimeout > 0)
{
- exectorToken = CancellationTokenSource.CreateLinkedTokenSource(exectorToken, new CancellationTokenSource(triggerParam.ExecutorTimeout * 1000).Token).Token;
+ timeoutCts = new CancellationTokenSource(triggerParam.ExecutorTimeout * 1000);
+ exectorToken = CancellationTokenSource.CreateLinkedTokenSource(exectorToken, timeoutCts.Token).Token;
}
result = await Executor.Execute(triggerParam, exectorToken);
+ if(timeoutCts != null && timeoutCts.IsCancellationRequested)
+ {
+ result = ReturnT.FAIL_TIMEOUT;
+ timeoutCts.Dispose();
+ timeoutCts = null;
+ }
_jobLogger.Log("
----------- xxl-job job execute end(finish) -----------
----------- ReturnT:" + result.Code);
}