[Stateful Functions] Problems with Protobuf Versions

classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

[Stateful Functions] Problems with Protobuf Versions

Jan Brusch
Hi,

I have a bit of a strange problem: I can't get a Statefun Application to
Compile or Run (Depending on the exact Protobuf version) with a Protobuf
version newer than 3.3.0. I have had this problem over multiple project
setups and multiple versions of Flink Statefun with Java8.

Protobuf 3.3.0 works fine and all, but it does seem a bit odd...


The most common error behaviour is a successful maven build and the
following Runtime Error on Startup:

java.lang.NoClassDefFoundError:
com/google/protobuf/GeneratedMessageV3$UnusedPrivateParameter


Does anyone else have this Problem or found a solution for this in the past?


Best regards

Jan

....



--
neuland  – Büro für Informatik GmbH
Konsul-Smidt-Str. 8g, 28217 Bremen

Telefon (0421) 380107 57
Fax (0421) 380107 99
https://www.neuland-bfi.de

https://twitter.com/neuland
https://facebook.com/neulandbfi
https://xing.com/company/neulandbfi


Geschäftsführer: Thomas Gebauer, Jan Zander
Registergericht: Amtsgericht Bremen, HRB 23395 HB
USt-ID. DE 246585501

Reply | Threaded
Open this post in threaded view
|

Re: [Stateful Functions] Problems with Protobuf Versions

Tzu-Li (Gordon) Tai
Hi,

This hints an incompatible Protobuf generated class by the protoc compiler, and the runtime dependency used by the code.

Could you try to make sure the `protoc` compiler version matches the Protobuf version in your code?

Cheers,
Gordon

On Fri, Jan 29, 2021 at 6:07 AM Jan Brusch <[hidden email]> wrote:
Hi,

I have a bit of a strange problem: I can't get a Statefun Application to
Compile or Run (Depending on the exact Protobuf version) with a Protobuf
version newer than 3.3.0. I have had this problem over multiple project
setups and multiple versions of Flink Statefun with Java8.

Protobuf 3.3.0 works fine and all, but it does seem a bit odd...


The most common error behaviour is a successful maven build and the
following Runtime Error on Startup:

java.lang.NoClassDefFoundError:
com/google/protobuf/GeneratedMessageV3$UnusedPrivateParameter


Does anyone else have this Problem or found a solution for this in the past?


Best regards

Jan

....



--
neuland  – Büro für Informatik GmbH
Konsul-Smidt-Str. 8g, 28217 Bremen

Telefon (0421) 380107 57
Fax (0421) 380107 99
https://www.neuland-bfi.de

https://twitter.com/neuland
https://facebook.com/neulandbfi
https://xing.com/company/neulandbfi


Geschäftsführer: Thomas Gebauer, Jan Zander
Registergericht: Amtsgericht Bremen, HRB 23395 HB
USt-ID. DE 246585501

Reply | Threaded
Open this post in threaded view
|

Re: [Stateful Functions] Problems with Protobuf Versions

Igal Shilman
In reply to this post by Jan Brusch
Adding user@flink (was accidentally omitted previously)

On Fri, Jan 29, 2021 at 5:18 PM Igal Shilman <[hidden email]> wrote:
Hi Jan,

Glad to hear that 3.71 and 3.3.0 works for you. You can still include protobuf in your project, but the version needs to be compatible with
what you will find at runtime. Hopefully we will manage to shade protobuf for the next release, and it will not be an issue anymore.

Good luck!
Igal.


On Fri, Jan 29, 2021 at 3:39 PM Jan Brusch <[hidden email]> wrote:

Hi Igal,

thanks for your reply! Your explanation makes complete sense.

Protobuf 3.7.1 is totally fine, as is 3.3.0 by the way, I just found the behaviour of flink odd.

That means we shouldn't explictly import protobuf via the pom.xml in statefun projects?


Best regards and a nice weekend

Jan


On 29.01.21 13:40, Igal Shilman wrote:
Hi Jan,

I'm assuming you are using the embedded SDK. (for remote functions it shouldn't matter)
Currently we use protobuf 3.7.1 for the embedded SDK, and if you are using a different version of protobuf-java, then
having both of them in the Java classpath at runtime explains the strange behaviour you are referring to.

We are exploring ways to shade Protobuf for the next release of StateFun, and thus eliminating issues like this.

Is using 3.7.1 an option for you?

Thanks,
Igal.

On Thu, Jan 28, 2021 at 11:14 PM Jan Brusch <[hidden email]> wrote:
Hi,

I have a bit of a strange problem: I can't get a Statefun Application to
Compile or Run (Depending on the exact Protobuf version) with a Protobuf
version newer than 3.3.0. I have had this problem over multiple project
setups and multiple versions of Flink Statefun with Java8.

Protobuf 3.3.0 works fine and all, but it does seem a bit odd...


The most common error behaviour is a successful maven build and the
following Runtime Error on Startup:

java.lang.NoClassDefFoundError:
com/google/protobuf/GeneratedMessageV3$UnusedPrivateParameter


Does anyone else have this Problem or found a solution for this in the past?


Best regards

Jan

....



--
neuland  – Büro für Informatik GmbH
Konsul-Smidt-Str. 8g, 28217 Bremen

Telefon (0421) 380107 57
Fax (0421) 380107 99
https://www.neuland-bfi.de

https://twitter.com/neuland
https://facebook.com/neulandbfi
https://xing.com/company/neulandbfi


Geschäftsführer: Thomas Gebauer, Jan Zander
Registergericht: Amtsgericht Bremen, HRB 23395 HB
USt-ID. DE 246585501

-- 
neuland  – Büro für Informatik GmbH
Konsul-Smidt-Str. 8g, 28217 Bremen

Telefon (0421) 380107 57
Fax (0421) 380107 99
https://www.neuland-bfi.de

https://twitter.com/neuland
https://facebook.com/neulandbfi
https://xing.com/company/neulandbfi


Geschäftsführer: Thomas Gebauer, Jan Zander
Registergericht: Amtsgericht Bremen, HRB 23395 HB
USt-ID. DE 246585501