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]


Reply via email to