Skip to content

Adding a new parameter type List to a workflow input causes the data converter to fail #2413

@antmendoza

Description

@antmendoza

Expected Behavior

Adding new parameters to running/closed workflows should be safe for the data converter and converted to null during replay

Actual Behavior

Adding a new parameter of type List to a workflow input causes the data converter to fail.

From:

        @WorkflowMethod
        String execute(String name);

to :

        @WorkflowMethod
        String execute(String name, List<String> names);

throws during replay

Caused by: java.lang.ClassCastException: class sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl cannot be cast to class java.lang.Class (sun.reflect.generics.reflectiveObjects.ParameterizedTypeImpl and java.lang.Class are in module java.base of loader 'bootstrap')
	at io.temporal.common.converter.DataConverter.fromPayloads(DataConverter.java:162)
	at io.temporal.internal.sync.POJOWorkflowImplementationFactory$POJOWorkflowImplementation.execute(POJOWorkflowImplementationFactory.java:349)
	at io.temporal.internal.sync.WorkflowExecutionHandler.runWorkflowMethod(WorkflowExecutionHandler.java:71)

Adding a new parameter of type String or Custom object works as expected.

From:

        @WorkflowMethod
        String execute(String name);

to :

        @WorkflowMethod
        String execute(String name, String names);

        @WorkflowMethod
        String execute(String name, MyObject names);

Steps to Reproduce the Problem

I have attached a project that reproduces the issue

Archive.zip

Specifications

  • Version: SDK 1.27.1
  • Platform:

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions