streamnative / aop

AMQP on Pulsar protocol handler
Apache License 2.0
114 stars 47 forks source link

[BUG] ClassNotFoundException: io.streamnative.pulsar.handlers.amqp.authentication.AuthenticationProviderBasic #864

Open emmanuelGuiton opened 1 year ago

emmanuelGuiton commented 1 year ago

Describe the bug I am trying to configure Basic AMQP authentication using apachepulsar/pulsar Docker image + AoP. I can successfully install the protocol handler. When I register the io.streamnative.pulsar.handlers.amqp.authentication.AuthenticationProviderBasic provider in the standalone.conf authenticationProviders=org.apache.pulsar.broker.authentication.AuthenticationProviderBasic,io.streamnative.pulsar.handlers.amqp.authentication.AuthenticationProviderBasic I get a ClassNotFoundException :

2023-03-23T16:15:58,773+0000 [main] ERROR org.apache.pulsar.broker.PulsarService - Failed to start Pulsar service: Failed to load an authentication provider.
org.apache.pulsar.broker.PulsarServerException: Failed to load an authentication provider.
        at org.apache.pulsar.broker.authentication.AuthenticationService.<init>(AuthenticationService.java:81) ~[org.apache.pulsar-pulsar-broker-common-2.11.0.jar:2.11.0]
        at org.apache.pulsar.broker.service.BrokerService.<init>(BrokerService.java:348) ~[org.apache.pulsar-pulsar-broker-2.11.0.jar:2.11.0]
        at org.apache.pulsar.broker.PulsarService.newBrokerService(PulsarService.java:1839) ~[org.apache.pulsar-pulsar-broker-2.11.0.jar:2.11.0]
        at org.apache.pulsar.broker.PulsarService.start(PulsarService.java:756) ~[org.apache.pulsar-pulsar-broker-2.11.0.jar:2.11.0]
        at org.apache.pulsar.PulsarStandalone.start(PulsarStandalone.java:348) ~[org.apache.pulsar-pulsar-broker-2.11.0.jar:2.11.0]
        at org.apache.pulsar.PulsarStandaloneStarter.main(PulsarStandaloneStarter.java:141) ~[org.apache.pulsar-pulsar-broker-2.11.0.jar:2.11.0]
Caused by: java.lang.ClassNotFoundException: io.streamnative.pulsar.handlers.amqp.authentication.AuthenticationProviderBasic
        at jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[?:?]
        at jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[?:?]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?]
        at java.lang.Class.forName0(Native Method) ~[?:?]
        at java.lang.Class.forName(Class.java:375) ~[?:?]
        at org.apache.pulsar.broker.authentication.AuthenticationService.<init>(AuthenticationService.java:57) ~[org.apache.pulsar-pulsar-broker-common-2.11.0.jar:2.11.0]
        ... 5 more

What am I doing wrong ?

To Reproduce Steps to reproduce the behavior:

  1. Write a Dockerfile to install the AoP NAR file in the apachepulsar/pulsar image
  2. Add io.streamnative.pulsar.handlers.amqp.authentication.AuthenticationProviderBasic to the authenticationProviders parameter in the standalone.conf file.
  3. Run the image with the command bin/pulsar standalone
  4. Look for the error in the logs.

Expected behavior The basic authentication provider for AMQP should register successfully.

Additional context Using Pulsar 2.11.0 and AoP 2.11.0.3

emmanuelGuiton commented 1 year ago

Note that the result is the same when I use the streamnative/sn-pulsar:2.10.3.6 image instead of building a custom image with only the AoP plugin.

2023-03-27T15:22:35,177+0000 [main] ERROR org.apache.pulsar.broker.PulsarService - Failed to start Pulsar service: Failed to load an authentication provider.
org.apache.pulsar.broker.PulsarServerException: Failed to load an authentication provider.
        at org.apache.pulsar.broker.authentication.AuthenticationService.<init>(AuthenticationService.java:80) ~[io.streamnative-pulsar-broker-common-2.10.3.6.jar:2.10.3.6]
        at org.apache.pulsar.broker.service.BrokerService.<init>(BrokerService.java:344) ~[io.streamnative-pulsar-broker-2.10.3.6.jar:2.10.3.6]
        at org.apache.pulsar.broker.PulsarService.newBrokerService(PulsarService.java:1757) ~[io.streamnative-pulsar-broker-2.10.3.6.jar:2.10.3.6]
        at org.apache.pulsar.broker.PulsarService.start(PulsarService.java:699) ~[io.streamnative-pulsar-broker-2.10.3.6.jar:2.10.3.6]
        at org.apache.pulsar.PulsarStandalone.start(PulsarStandalone.java:301) ~[io.streamnative-pulsar-broker-2.10.3.6.jar:2.10.3.6]
        at org.apache.pulsar.PulsarStandaloneStarter.main(PulsarStandaloneStarter.java:143) ~[io.streamnative-pulsar-broker-2.10.3.6.jar:2.10.3.6]
Caused by: java.lang.ClassNotFoundException: io.streamnative.pulsar.handlers.amqp.authentication.AuthenticationProviderBasic
        at jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) ~[?:?]
        at jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~[?:?]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:522) ~[?:?]
        at java.lang.Class.forName0(Native Method) ~[?:?]
        at java.lang.Class.forName(Class.java:315) ~[?:?]
        at org.apache.pulsar.broker.authentication.AuthenticationService.<init>(AuthenticationService.java:56) ~[io.streamnative-pulsar-broker-common-2.10.3.6.jar:2.10.3.6]
        ... 5 more
2023-03-27T15:22:35,182+0000 [main] ERROR org.apache.pulsar.PulsarStandaloneStarter - Failed to start pulsar service.
org.apache.pulsar.broker.PulsarServerException: org.apache.pulsar.broker.PulsarServerException: Failed to load an authentication provider.
        at org.apache.pulsar.broker.PulsarService.start(PulsarService.java:840) ~[io.streamnative-pulsar-broker-2.10.3.6.jar:2.10.3.6]
        at org.apache.pulsar.PulsarStandalone.start(PulsarStandalone.java:301) ~[io.streamnative-pulsar-broker-2.10.3.6.jar:2.10.3.6]
        at org.apache.pulsar.PulsarStandaloneStarter.main(PulsarStandaloneStarter.java:143) ~[io.streamnative-pulsar-broker-2.10.3.6.jar:2.10.3.6]
Caused by: org.apache.pulsar.broker.PulsarServerException: Failed to load an authentication provider.
        at org.apache.pulsar.broker.authentication.AuthenticationService.<init>(AuthenticationService.java:80) ~[io.streamnative-pulsar-broker-common-2.10.3.6.jar:2.10.3.6]
        at org.apache.pulsar.broker.service.BrokerService.<init>(BrokerService.java:344) ~[io.streamnative-pulsar-broker-2.10.3.6.jar:2.10.3.6]
        at org.apache.pulsar.broker.PulsarService.newBrokerService(PulsarService.java:1757) ~[io.streamnative-pulsar-broker-2.10.3.6.jar:2.10.3.6]
        at org.apache.pulsar.broker.PulsarService.start(PulsarService.java:699) ~[io.streamnative-pulsar-broker-2.10.3.6.jar:2.10.3.6]
        ... 2 more
Caused by: java.lang.ClassNotFoundException: io.streamnative.pulsar.handlers.amqp.authentication.AuthenticationProviderBasic
        at jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) ~[?:?]
        at jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~[?:?]
        at java.lang.ClassLoader.loadClass(ClassLoader.java:522) ~[?:?]
        at java.lang.Class.forName0(Native Method) ~[?:?]
        at java.lang.Class.forName(Class.java:315) ~[?:?]
        at org.apache.pulsar.broker.authentication.AuthenticationService.<init>(AuthenticationService.java:56) ~[io.streamnative-pulsar-broker-common-2.10.3.6.jar:2.10.3.6]
        at org.apache.pulsar.broker.service.BrokerService.<init>(BrokerService.java:344) ~[io.streamnative-pulsar-broker-2.10.3.6.jar:2.10.3.6]
        at org.apache.pulsar.broker.PulsarService.newBrokerService(PulsarService.java:1757) ~[io.streamnative-pulsar-broker-2.10.3.6.jar:2.10.3.6]
        at org.apache.pulsar.broker.PulsarService.start(PulsarService.java:699) ~[io.streamnative-pulsar-broker-2.10.3.6.jar:2.10.3.6]
        ... 2 more
emmanuelGuiton commented 1 year ago

Well, I finally noticed that the io.streamnative.pulsar.handlers.amqp.authentication.AuthenticationProviderBasic class does not exist in version 2.10.x . So my second comment is pointless.