nlu90 edited a comment on issue #11338:
URL: https://github.com/apache/pulsar/issues/11338#issuecomment-882894305
I did some check.
If function compiled with 2.7.1 is submitted to a Pulsar 2.8.0 cluster
directly, the following error is reported:
```
14:50:51.313 [public/default/Fun1-0] INFO function-Fun1 - A message with a
value of "5. hello" has arrived on one of the following topics:
public/default/fun-test
14:50:51.313 [public/default/Fun1-0] WARN
org.apache.pulsar.functions.instance.JavaInstanceRunnable - Encountered
exception when processing message
+++PulsarRecord(topicName=Optional[persistent://public/default/fun-test],
partition=0,
message=Optional[org.apache.pulsar.client.impl.MessageImpl@634a263c],
schema=org. +++apache.pulsar.client.impl.schema.StringSchema@6961b9d7,
failFunction=org.apache.pulsar.functions.source.PulsarSource$$Lambda$134/129491009@21b63931,
ackFunction=org.
+++apache.pulsar.functions.source.PulsarSource$$Lambda$133/1005835213@3d56e9eb)
java.lang.RuntimeException: java.lang.NoSuchMethodError:
org.apache.pulsar.common.schema.SchemaInfo.builder()Lorg/apache/pulsar/common/schema/SchemaInfo$SchemaInfoBuilder;
at
org.apache.pulsar.client.internal.ReflectionUtils.catchExceptions(ReflectionUtils.java:42)
~[java-instance.jar:?]
at
org.apache.pulsar.client.internal.DefaultImplementation.newJSONSchema(DefaultImplementation.java:274)
~[java-instance.jar:?]
at org.apache.pulsar.client.api.Schema.JSON(Schema.java:335)
~[java-instance.jar:?]
at com.mycompany.app.Fun1.process(Fun1.java:27) ~[?:?]
at com.mycompany.app.Fun1.process(Fun1.java:13) ~[?:?]
at
org.apache.pulsar.functions.instance.JavaInstance.handleMessage(JavaInstance.java:95)
~[org.apache.pulsar-pulsar-functions-instance-2.8.0.jar:?]
at
org.apache.pulsar.functions.instance.JavaInstanceRunnable.run(JavaInstanceRunnable.java:271)
[org.apache.pulsar-pulsar-functions-instance-2.8.0.jar:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_241]
Caused by: java.lang.NoSuchMethodError:
org.apache.pulsar.common.schema.SchemaInfo.builder()Lorg/apache/pulsar/common/schema/SchemaInfo$SchemaInfoBuilder;
at
org.apache.pulsar.client.impl.schema.util.SchemaUtil.parseSchemaInfo(SchemaUtil.java:50)
~[org.apache.pulsar-pulsar-client-original-2.8.0.jar:2.8.0]
at
org.apache.pulsar.client.impl.schema.JSONSchema.of(JSONSchema.java:93)
~[org.apache.pulsar-pulsar-client-original-2.8.0.jar:2.8.0]
at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source) ~[?:?]
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
~[?:1.8.0_241]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_241]
at
org.apache.pulsar.client.internal.DefaultImplementation.lambda$newJSONSchema$31(DefaultImplementation.java:277)
~[java-instance.jar:?]
at
org.apache.pulsar.client.internal.ReflectionUtils.catchExceptions(ReflectionUtils.java:34)
~[java-instance.jar:?]
... 7 more
```
User need to compile their function code with pulsar 2.8.0 dependency in
order to avoid this problem. And after recomplie, the problem is resolved:
```
15:08:48.284 [public/default/Fun1-0] INFO function-Fun1 - schema
org.apache.pulsar.client.impl.schema.JSONSchema@3d102034
```
And if a function compiled with 2.8.0 dependency is submitted to Pulsar
Cluster 2.7.2, the following error reported:
```
15:11:55.423 [public/default/Fun1-0] WARN
org.apache.pulsar.functions.instance.JavaInstanceRunnable - Encountered
exception when processing message
+++PulsarRecord(topicName=Optional[persistent://public/default/fun-test],
partition=0,
message=Optional[org.apache.pulsar.client.impl.MessageImpl@2421d146],
schema=org. +++apache.pulsar.client.impl.schema.StringSchema@2376fd6a,
failFunction=org.apache.pulsar.functions.source.PulsarSource$$Lambda$140/1102914687@79223ac3,
ackFunction=org.
+++apache.pulsar.functions.source.PulsarSource$$Lambda$139/1983986396@5ea1a88a)
java.lang.RuntimeException: java.lang.IncompatibleClassChangeError:
Implementing class
at
org.apache.pulsar.client.internal.ReflectionUtils.catchExceptions(ReflectionUtils.java:46)
~[java-instance.jar:?]
at
org.apache.pulsar.client.internal.DefaultImplementation.newJSONSchema(DefaultImplementation.java:275)
~[java-instance.jar:?]
at org.apache.pulsar.client.api.Schema.JSON(Schema.java:306)
~[java-instance.jar:?]
at com.mycompany.app.Fun1.process(Fun1.java:27) ~[?:?]
at com.mycompany.app.Fun1.process(Fun1.java:13) ~[?:?]
at
org.apache.pulsar.functions.instance.JavaInstance.handleMessage(JavaInstance.java:81)
~[org.apache.pulsar-pulsar-functions-instance-2.7.2.jar:?]
at
org.apache.pulsar.functions.instance.JavaInstanceRunnable.run(JavaInstanceRunnable.java:260)
[org.apache.pulsar-pulsar-functions-instance-2.7.2.jar:?]
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_241]
Caused by: java.lang.IncompatibleClassChangeError: Implementing class
at java.lang.ClassLoader.defineClass1(Native Method) ~[?:1.8.0_241]
at java.lang.ClassLoader.defineClass(ClassLoader.java:756) ~[?:1.8.0_241]
at
java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
~[?:1.8.0_241]
at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
~[?:1.8.0_241]
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
~[?:1.8.0_241]
at java.net.URLClassLoader$1.run(URLClassLoader.java:369) ~[?:1.8.0_241]
at java.net.URLClassLoader$1.run(URLClassLoader.java:363) ~[?:1.8.0_241]
at java.security.AccessController.doPrivileged(Native Method)
~[?:1.8.0_241]
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
~[?:1.8.0_241]
at java.lang.ClassLoader.loadClass(ClassLoader.java:418) ~[?:1.8.0_241]
at java.lang.ClassLoader.loadClass(ClassLoader.java:351) ~[?:1.8.0_241]
at java.lang.Class.getDeclaredMethods0(Native Method) ~[?:1.8.0_241]
at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
~[?:1.8.0_241]
at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
~[?:1.8.0_241]
at java.lang.Class.getMethod0(Class.java:3018) ~[?:1.8.0_241]
at java.lang.Class.getMethod(Class.java:1784) ~[?:1.8.0_241]
at
org.apache.pulsar.client.internal.ReflectionUtils.getStaticMethod(ReflectionUtils.java:79)
~[java-instance.jar:?]
at
org.apache.pulsar.client.internal.DefaultImplementation.lambda$newJSONSchema$31(DefaultImplementation.java:276)
~[java-instance.jar:?]
at
org.apache.pulsar.client.internal.ReflectionUtils.catchExceptions(ReflectionUtils.java:35)
~[java-instance.jar:?]
... 7 more
```
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]