I don't think this is a big problem. Because people can recompile the
function and submit the function. Most of the computing/streaming
engines ask users to recompile the jobs and resubmit the jobs when it
upgrades to a new version. The best approach here is to document this
behavior.

Also, if you are using Kubernetes runtime to schedule functions, you
are not really impacted.

- Sijie

On Fri, Jul 16, 2021 at 2:44 AM Enrico Olivelli <eolive...@gmail.com> wrote:
>
> Hello,
> I have reported this issue [1] about upgrading from Pulsar 2.7 to 2.8.
> More information is on the ticket, but the short version of the story is
> that
> in Pulsar 2.8 we introduced a breaking change in the Schema API, by
> switching SchemaInfo from a class to an interface.
>
> This leads to an IncompatibleClassChangeError  when you have a Function or
> a Connector that is using Schema.JSON(Pojo.class) and you upgrade your
> Pulsar cluster (the functions worker pod for instance) from Pulsar 2.7.x to
> Pulsar 2.8.0.
>
> The bad problem is that you cannot upgrade Pulsar without interrupting the
> service and coordinating with the upgrade of the Functions.
> Your functions need to be recompiled against the Pulsar 2.8 API and
> deployed again in production.
>
> I have tried to move back SchemaInfo to an "abstract class" but without
> success, because then you fall into errors.
>
> I am not sure there is a way to provide a good "upgrade path" for
> Functions/IO users.
>
> If we do not find a way we have to document the upgrade in the official
> Pulsar Documentation.
>
> We must do our best to prevent users from falling again into this bad
> situation.
>
> Any suggestions or thoughts ?
>
> Regards
> Enrico
>
> [1] https://github.com/apache/pulsar/issues/11338

Reply via email to