Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug] ClassNotFoundException error occurred when using Function development in the kubernetes cluster #22513

Open
2 of 3 tasks
Awsmsniper opened this issue Apr 16, 2024 · 1 comment
Labels
type/bug The PR fixed a bug or issue reported a bug

Comments

@Awsmsniper
Copy link

Search before asking

  • I searched in the issues and found nothing similar.

Read release policy

  • I understand that unsupported versions don't get bug fixes. I will attempt to reproduce the issue on a supported version of Pulsar client and Pulsar broker.

Version

  • kubernetes: 1.28
  • jdk: 17
  • pulsar: 3.2.1
  • pulsar-functions-pulsarctl-java-runner: 3.2.1.2

Minimal reproduce step

  1. Develop using the Extended Pulsar Functions SDK for Java and connect to the Redis cluster
  2. Edit yaml file
  3. kubectl apply -f function.yaml

What did you expect to see?

The function can connect to the Redis cluster and work properly.

What did you see instead?

2024-04-15T06:18:32,716+0000 [public/default/demo-function-las-auth-0] ERROR org.apache.pulsar.functions.instance.JavaInstanceRunnable - Sink open produced uncaught exception:
java.lang.ClassNotFoundException: com.alibaba.fastjson2.JSONObject
        at java.net.URLClassLoader.findClass(URLClassLoader.java:445) ~[?:?]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:592) ~[?:?]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[?:?]
        at org.apache.pulsar.common.util.Reflections.loadClass(Reflections.java:310) ~[io.streamnative-pulsar-common-3.2.1.2.jar:3.2.1.2]
        at org.apache.pulsar.functions.sink.PulsarSink.initializeSchema(PulsarSink.java:437) ~[io.streamnative-pulsar-functions-instance-3.2.1.2.jar:3.2.1.2]
        at org.apache.pulsar.functions.sink.PulsarSink.open(PulsarSink.java:362) ~[io.streamnative-pulsar-functions-instance-3.2.1.2.jar:3.2.1.2]
        at org.apache.pulsar.functions.instance.JavaInstanceRunnable.setupOutput(JavaInstanceRunnable.java:1070) ~[io.streamnative-pulsar-functions-instance-3.2.1.2.jar:?]
        at org.apache.pulsar.functions.instance.JavaInstanceRunnable.setup(JavaInstanceRunnable.java:261) ~[io.streamnative-pulsar-functions-instance-3.2.1.2.jar:?]
        at org.apache.pulsar.functions.instance.JavaInstanceRunnable.run(JavaInstanceRunnable.java:305) ~[io.streamnative-pulsar-functions-instance-3.2.1.2.jar:?]
        at java.lang.Thread.run(Thread.java:840) ~[?:?]
2024-04-15T06:18:32,725+0000 [public/default/demo-function-las-auth-0] ERROR org.apache.pulsar.functions.instance.JavaInstanceRunnable - [public/default/demo-function-las-auth:0] Uncaught exception in Java Instance
java.lang.ClassNotFoundException: com.alibaba.fastjson2.JSONObject
        at java.net.URLClassLoader.findClass(URLClassLoader.java:445) ~[?:?]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:592) ~[?:?]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:525) ~[?:?]
        at org.apache.pulsar.common.util.Reflections.loadClass(Reflections.java:310) ~[io.streamnative-pulsar-common-3.2.1.2.jar:3.2.1.2]
        at org.apache.pulsar.functions.sink.PulsarSink.initializeSchema(PulsarSink.java:437) ~[io.streamnative-pulsar-functions-instance-3.2.1.2.jar:3.2.1.2]
        at org.apache.pulsar.functions.sink.PulsarSink.open(PulsarSink.java:362) ~[io.streamnative-pulsar-functions-instance-3.2.1.2.jar:3.2.1.2]
        at org.apache.pulsar.functions.instance.JavaInstanceRunnable.setupOutput(JavaInstanceRunnable.java:1070) ~[io.streamnative-pulsar-functions-instance-3.2.1.2.jar:?]
        at org.apache.pulsar.functions.instance.JavaInstanceRunnable.setup(JavaInstanceRunnable.java:261) ~[io.streamnative-pulsar-functions-instance-3.2.1.2.jar:?]
        at org.apache.pulsar.functions.instance.JavaInstanceRunnable.run(JavaInstanceRunnable.java:305) ~[io.streamnative-pulsar-functions-instance-3.2.1.2.jar:?]
        at java.lang.Thread.run(Thread.java:840) ~[?:?]

Anything else?

apiVersion: compute.functionmesh.io/v1alpha1
kind: Function
metadata:
  name: demo-function-las-auth
  namespace: pulsar
spec:
  image: streamnative/pulsar-functions-pulsarctl-java-runner:3.2.1.2 # using java function runner
  className: com.audit.function.handler.LasAuthFunction
  forwardSourceMessageProperty: true
  maxPendingAsyncRequests: 1000
  replicas: 1
  maxReplicas: 5
  logTopic: persistent://demo-tenants/log-namespace/function-las-auth-logs
  input:
    topics:
    - persistent://demo-tenants/log-namespace/las-auth
    typeClassName: "[Ljava.lang.String;"
  output:
    topic: persistent://demo-tenants/log-namespace/las-auth-done
    typeClassName: "com.alibaba.fastjson2.JSONObject"
  funcConfig:
    redis.url: redis-cluster.redis-cluster.svc.cluster.local
    redis.password: ******
  secretsMap:
    "redis-ca-certs":
      path: "redis-ca-certs"
      key: "ca.crt"
    "redis-tls-cert":
      path: "redis-tls-cert"
      key: "tls.crt"
    "redis-tls-key":
      path: "redis-tls-key"
      key: "tls.key"
  pulsar:
    pulsarConfig: "demo-pulsar"
    authSecret: "pulsar-auth"
    tlsConfig:
      enabled: true
      allowInsecure: true
      hostnameVerification: false
      certSecretName: pulsar-tls-proxy
      certSecretKey: ""
  resources:
    requests:
      cpu: "2"
      memory: 4G
    limits:
      cpu: "2"
      memory: 4G
  java:
    extraDependenciesDir: random-dir/
    jar: demo-function-1.1-SNAPSHOT.jar # the package will download as this filename.
    log:
      level: "debug"
    jarLocation: function://demo-tenants/log-namespace/demo-las-auth-function@1.1 # function package URL
    javaOpts:
      - "--add-opens java.base/sun.net=ALL-UNNAMED"
      - "--add-opens java.management/sun.management=ALL-UNNAMED"
  autoAck: true
---
apiVersion: v1
kind: ConfigMap
metadata:
  name: demo-pulsar
  namespace: pulsar
data:
  webServiceURL: https://pulsar-proxy.pulsar.svc.cluster.local:443
  brokerServiceURL: pulsar+ssl://pulsar-proxy.pulsar.svc.cluster.local:6651
---
apiVersion: v1
metadata:
  name: pulsar-auth
  namespace: pulsar
data:
  clientAuthenticationPlugin: ******
  clientAuthenticationParameters: ******
kind: Secret
type: Opaque

Are you willing to submit a PR?

  • I'm willing to submit a PR!
@Awsmsniper Awsmsniper added the type/bug The PR fixed a bug or issue reported a bug label Apr 16, 2024
@Awsmsniper
Copy link
Author

@lhotari @nlu90 Hope to receive help, thank you very much!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
type/bug The PR fixed a bug or issue reported a bug
Projects
None yet
Development

No branches or pull requests

1 participant