【问题标题】:Why an activity task is scheduled but not started?为什么一个活动任务被安排了但没有开始?
【发布时间】:2020-12-03 01:42:07
【问题描述】:

通过查看历史记录,我安排了一个活动任务,但从未执行(开始),然后工作流超时。 我可以确认 cadence worker 正在运行,因为其他工作流程同时运行良好。

为什么活动没有在历史记录中启动/执行?我应该如何调查这样的问题?

我的活动超时与工作流超时相同。

问题来自Github issue

【问题讨论】:

    标签: cadence-workflow uber-cadence


    【解决方案1】:

    首先,带有重试的活动只会在活动完成或最终失败/超时时写入启动事件。

    从历史记录中,可以将活动事件之前的工作流超时写入历史记录。您需要确保工作流超时大于活动超时,以便活动超时事件可以在工作流超时之前写入历史记录。

    那么我们如何确定一个活动是否确实开始了呢?

    1. 当带有重试的活动正在运行时,查看状态的最佳方法是通过 CLI:
    ~/cadence [qlong-cli-wf-show-actvities-retry] M % ./cadence --do qlong wf show -w retry_db345b68-0e50-4c24-8d2d-8c6dd18d88dc
       1  WorkflowExecutionStarted  {WorkflowType:{Name:main.retryWorkflow},
                                    TaskList:{Name:retryactivityGroup}, Input:[],
                                    ExecutionStartToCloseTimeoutSeconds:120,
                                    TaskStartToCloseTimeoutSeconds:60,
                                    ContinuedFailureDetails:[], LastCompletionResult:[],
                                    OriginalExecutionRunId:63acf35f-9ede-48ef-aee7-66579382fed5,
                                    Identity:35027@IT-USA-25920@,
    ...
    ...
    ...
    ...
                                    ExpirationIntervalInSeconds:20},
                                    Header:{Fields:map{}}}
    ============Pending activities============
    [
      {
        "ActivityID": "0",
        "ActivityType": {
          "name": "main.batchProcessingActivity"
        },
        "State": "STARTED",
        "LastStartedTimestamp": "2020-10-11T22:47:16-07:00",
        "LastHeartbeatTimestamp": "2020-10-11T22:47:16-07:00",
        "Attempt": 0,
        "MaximumAttempts": 15,
        "ExpirationTimestamp": "2020-10-11T22:47:36-07:00"
      }
    ]
    NOTE: ActivityStartedEvent with retry policy will be written into history when the activity is finished.
    

    或通过 webUI 描述工作流视图,它显示待处理的活动。

    1. 如果您已完成 1. 确认活动未启动,那么我们需要查看任务列表和可用于任务列表的工作人员。
    ./cadence --do <> tl desc --tl <>
    
    

    最后,重试活动背后的原因:历史需要作为不变性是不可变的,但开始事件可以更改为正在重试的活动,直到它最终稳定下来。这种不变性对于 Cadence 架构很重要。但这在 webUI 中确实令人困惑。这里是 issue 来改进它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-29
      • 1970-01-01
      • 2017-09-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多