Cadence工作流在引入版本控制后未执行活动

时间:2020-10-29 08:27:35

标签: cadence-workflow cadence temporal-workflow uber-cadence

我将cadence版本控制引入到cadence工作流中,此后工作流在版本控制引入时停止执行。 我收到以下错误:

2020-10-29T07:23:49.587Z DEBUG internal / internal_event_handlers.go:465 ExecuteActivity {“ Domain”: “ domain_1”,“ TaskList”:“ tasklist_1”,“ WorkerID”: “ 6 @ cdnc-5ddb9ccbb5-5dt5j @ tasklist”,“ WorkflowType”: “ do_work_workflow”,“ WorkflowID”:“创建”,“ 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”:“创建”,“ RunID”: “ cab97b65-9892-48c5-b842-3f8b462d8602”, “ CachedPreviousStartedEventID”:30,“ TaskFirstEventID”:22, “ TaskStartedEventID”:30,“ TaskPreviousStartedEventID”:21}

我的工作流程代码如下:

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。

我收到的错误消息是

缓存状态已失效,新任务发生意外事件

BadRequestError {消息:CadenceChangeVersion无效搜索 属性}

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

1 个答案:

答案 0 :(得分:0)

有两种可能:

  1. 您正在运行版本低于0.11的Cadence服务器。
  2. [很有可能]您的Cadence服务器已从较低版本升级,但未更改elasticSearch架构:
it.unimi.dsi.fastutil.objects.Object2LongMap

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

java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.base/java.lang.reflect.Method.invoke(Method.java:566)
    at com.intellij.idea.Main.bootstrap(Main.java:123)
    at com.intellij.idea.Main.main(Main.java:95)
Caused by: java.lang.NoClassDefFoundError: it/unimi/dsi/fastutil/objects/Object2LongMap
    at com.intellij.ide.plugins.MainRunner.start(MainRunner.java:26)
    ... 6 more
Caused by: java.lang.ClassNotFoundException: it.unimi.dsi.fastutil.objects.Object2LongMap
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
    ... 7 more

背景

CadenceChangeVersion在https://github.com/uber/cadence/releases/tag/v0.11.0中引入

这有助于搜索工作流程更改版本。

让我知道这是否不正确。