And also, if you are using reflection to debug this, can you also print the
full package name of the class TypedValue$Builder extends?
My guess is that you are using the shaded version of the builder.
The shaded version is part of the: statefun-java-sdk, if you can remove
that dependency I believe it should be fine.

Good luck,
Igal.

On Tue, May 25, 2021 at 12:04 PM Igal Shilman <i...@ververica.com> wrote:

> Do you have the statefun-sdk-java as a dependency, if you are not using it
> can you remove it?
>
> On Tue, May 25, 2021 at 11:28 AM Bonino Dario <dario.bon...@gmail.com>
> wrote:
>
>> Dear Igal,
>>
>> we are actually analyzing the issue. Our imported package is
>>
>> import org.apache.flink.statefun.sdk.reqreply.generated.TypedValue
>>
>> however at runtime (we analyzed the method signature via reflection on
>> the typed value builder), the signature of the TypedValue.Builder.setValue
>> method is:
>>
>> org.apache.flink.statefun.sdk.reqreply.generated.TypedValue$Builder
>> org.apache.flink.statefun.sdk.reqreply.generated.TypedValue$Builder.setValue(org.apache.flink.statefun.sdk.shaded.com.google.protobuf.ByteString)
>>
>> and as you can notice, uses the shaded version of protobuf ByteString.
>> Instead we are attempting to pass a non-shaded version of ByteString as
>> a parameter and this leads to the reported error.
>>
>> Any idea on how to overcome this issue?
>>
>> Cheers,
>>
>> Dario
>> On 5/25/21 11:22 AM, Igal Shilman wrote:
>>
>> Hi Bonino,
>>
>> If you've also included the statefun-sdk-java into the class path then,
>> make sure that you are not using accidentally the shaded version of a
>> TypedValue (check the package name)
>>
>> Let me know if that helped, and we'll try to debug this together
>> otherwise.
>>
>> Cheers,
>> Igal.
>>
>> On Mon, May 24, 2021 at 6:46 PM Bonino Dario <dario.bon...@gmail.com>
>> wrote:
>>
>>> Hello list,
>>>
>>> we are manually building TypedValue instances to be sent to a python
>>> remote function (with a reqreply function builder). We create the typed
>>> value as follows (in Kotlin):
>>>
>>> override fun map(value: Tuple2<Long, MutableIterable>): TypedValue {
>>>         return TypedValue.newBuilder()
>>>             .setValue(getProtoValueByteString(value.f0, value.f1))
>>>             .setTypename(typeName)
>>>             .setHasValue(true)
>>>             .build()
>>>     }
>>>
>>> However,  when running  our job on a flink cluster (Flink 1.12.3,
>>> ververica platform) the job is terminated with this exception:
>>>
>>> java.lang.NoSuchMethodError: 
>>> org.apache.flink.statefun.sdk.reqreply.generated.TypedValue$Builder.setValue(Lcom/google/protobuf/ByteString;)Lorg/apache/flink/statefun/sdk/reqreply/generated/TypedValue$Builder
>>>
>>>
>>> although the setValue method is actually defined in the TypedValue
>>> class.
>>>
>>> We checked whether the issue could be related to some conflict on
>>> protobuf versions, but our classes are generated with protoc 3.7.1, which
>>> is aligned with what is reported in the flink-statefun (v3.0.0) parent pom.
>>> Any idea on what could cause the issue?
>>>
>>>
>>> Thanks and  best regards
>>>
>>> Dario Bonino
>>>
>>> --
>>> Ing. Dario Bonino, Ph.D
>>>
>>> e-m@il: dario.bon...@gmail.com
>>> www: https://www.linkedin.com/in/dariobonino
>>> <foaf:Person>
>>>     <foaf:firstName>Dario</foaf:firstName>
>>>     <foaf:surname>Bonino</foaf:surname>
>>>     <foaf:msnChatID>slide...@hotmail.com</foaf:msnChatID>
>>> </foaf:Person>
>>>
>>> --
>> Ing. Dario Bonino, Ph.D
>>
>> e-m@il: dario.bon...@gmail.com
>> www: https://www.linkedin.com/in/dariobonino
>> <foaf:Person>
>>      <foaf:firstName>Dario</foaf:firstName>
>>      <foaf:surname>Bonino</foaf:surname>
>>      <foaf:msnChatID>slide...@hotmail.com</foaf:msnChatID>
>> </foaf:Person>
>>
>>

Reply via email to