当前位置: 首页 > 知识库问答 >
问题:

引入版本控制后,节奏工作流未执行活动

夏侯和韵
2023-03-14

我在节奏工作流中引入了节奏版本控制,之后工作流在版本控制引入时停止执行。我收到以下错误:

2020-10-29T07:23:49.587Z调试内部/内部事件处理程序。go:465执行活动{“域”:“域_1”,“任务列表”:“任务列表_1”、“工作人员ID”:“6@cdnc-5ddb9ccbb5-5dt5j@tasklist“,”WorkflowType“:”do_work_workflow“,”WorkflowID“:”CREATE“,”RunID“:“cab97b65-9892-48c5-b842-3f8b462d8602”,“ActivityID”:“4”,“ActivityType”:“do_Task_D”}2020-10-29T07:23:49.620Z DEBUG internal/internal_Task_handlers。go:1077缓存状态过时,新任务具有意外事件{“Domain”:“Domain_1”,“tasklist”:”tasklist_1“,“WorkerID“:”6@cdnc-5ddb9ccbb5-5dt5j@tasklist1“,”WorkflowID“:”CREATE“,”RunID“:

我的工作流代码将如下所示:

func doWorkflow(ctx workflow.Context, input string) error {
    err := doTaskA(input)
    if err != nil {
        return err
    }
    err = doTaskB(input)
    if err != nil {
        return err
    }
    versionTaskC := workflow.GetVersion(ctx, "ChangeID", workflow.DefaultVersion, 1)
    if versionTaskC == workflow.DefaultVersion {
        err = doTaskC(input)
        if err != nil {
            return err
        }
    } else {
        err = doTaskD(input)
        if err != nil {
            return err
        }
    }
    err = doTaskD2(input)
    if err != nil {
        return err
    }
    err = doTaskD3(input)
    if err != nil {
        return err
    }
    return nil
}

在ChangeID处,返回的版本为1,工作流尝试执行TaskD,但它没有执行它,它陷入了无限循环中,试图执行TaskD。

我收到的错误消息是

缓存状态已过时,新任务具有意外事件

错误请求错误{消息: 节奏更改版本不是有效的搜索属性}

你能帮我解决这个问题吗?

共有1个答案

孙正业
2023-03-14

有两种可能:

    < li >您正在运行版本低于0.11的Cadence服务器。 < Li >[很有可能]您的Cadence服务器从较低版本升级,但没有更改elasticSearch模式:
cadence admin cluster add-search-attr --search_attr_key CadenceChangeVersion --search_attr_type 1

您可能还需要添加以下内容:

cadence admin cluster add-search-attr --search_attr_key BinaryChecksums --search_attr_type 1

背景:

节奏变化版本在 https://github.com/uber/cadence/releases/tag/v0.11.0 中引入

这是为了帮助搜索工作流更改版本。

如果这不正确,请告诉我。

 类似资料:
  • 节奏工作流版本控制: 工作流执行具有以下代码: 工作流1: o/p的开始--版本1:1 工作流实施中的更改: 工作流2: o/p的开始--版本1:2 工作流实施中的更改: 工作流3: o/p的开始--版本1:3 工作流2的重放:o/p版本1: -1 工作流重播 1 : o/p --version1: -1 我期待低于o / p 重播工作流程2: o/p--版本1:2 工作流重播 1 : o/p -

  • temporal.io如何与cadenceworkflow.io?如果根据节奏工作流服务启动一个新项目,应该使用什么?

  • 可以运行不需要连接到cadence服务器的本地活动。是否有适当的方式在本地运行工作流,以防发生cadence中断?我正在使用Go客户端。

  • 这可以被认为是在节奏工作流的循环中调用相同活动的后续问题:在活动迭代的情况下,工作流如何恢复?是继续调用第i个活动(跳过已经调用的活动)还是从0重新开始?如果是这样,如何编写工作流以跳过调用的活动(0-'k')?

  • 在我们开始搞明白 Git 命令之前,你有必要先了解一下版本控制的基本流程。这本书会向你一步步地详细阐述各种不同的工作流程。但是首先还是让我们先来一起了解一下版本控制的最基本的流程。 版本控制中的最基本的模块就是 “仓库(Repository)”。 名词解释 仓库(Repository) 你可以把一个仓库想象成一个数据库,在那里你的版本控制系统存储了项目积攒的所有版本和元数据(metadata)。在

  • Cadence工作流需要具有确定性,这意味着如果使用相同的输入参数执行工作流,工作流预计会产生完全相同的结果。 当我作为Cadence的新用户了解到上述需求时,我想知道当需要打破确定性的变化时,我如何才能长期维护工作流。 一个示例场景是,您有一个连续执行Activity1和Activity2的工作流,然后您需要更改这些活动的顺序,以便工作流在Activity1之前执行Activity2。还有许多其