mattisonchao opened a new pull request #14316:
URL: https://github.com/apache/pulsar/pull/14316


   ### Motivation
   
   Users who use the ``WebSocket`` API to create a new reader with the 
partitioned topic will get ``ClassCastException``.
   
   ```java
   15:44:23.004 [pulsar-websocket-web-1-5] WARN  
org.apache.pulsar.websocket.ReaderHandler - [10.130.0.83:35389] Failed in 
creating reader  on topic persistent://bt_sp_prod/theos_interp_v1/spy_option
   java.lang.ClassCastException: class 
org.apache.pulsar.client.impl.MultiTopicsReaderImpl cannot be cast to class 
org.apache.pulsar.client.impl.ReaderImpl 
(org.apache.pulsar.client.impl.MultiTopicsReaderImpl and 
org.apache.pulsar.client.impl.ReaderImpl are in unnamed module of loader 'app')
        at 
org.apache.pulsar.websocket.ReaderHandler.<init>(ReaderHandler.java:107) 
~[io.streamnative-pulsar-websocket-2.8.2.2.jar:2.8.2.2]
        at 
org.apache.pulsar.websocket.WebSocketReaderServlet.lambda$configure$0(WebSocketReaderServlet.java:44)
 ~[io.streamnative-pulsar-websocket-2.8.2.2.jar:2.8.2.2]
        at 
org.eclipse.jetty.websocket.server.WebSocketServerFactory.acceptWebSocket(WebSocketServerFactory.java:230)
 
~[org.eclipse.jetty.websocket-websocket-server-9.4.43.v20210629.jar:9.4.43.v20210629]
        at 
org.eclipse.jetty.websocket.server.WebSocketServerFactory.acceptWebSocket(WebSocketServerFactory.java:215)
 
~[org.eclipse.jetty.websocket-websocket-server-9.4.43.v20210629.jar:9.4.43.v20210629]
        at 
org.eclipse.jetty.websocket.servlet.WebSocketServlet.service(WebSocketServlet.java:160)
 
~[org.eclipse.jetty.websocket-websocket-servlet-9.4.43.v20210629.jar:9.4.43.v20210629]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) 
~[javax.servlet-javax.servlet-api-3.1.0.jar:3.1.0]
        at 
org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:799) 
~[org.eclipse.jetty-jetty-servlet-9.4.43.v20210629.jar:9.4.43.v20210629]
        at 
org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:550) 
~[org.eclipse.jetty-jetty-servlet-9.4.43.v20210629.jar:9.4.43.v20210629]
        at 
org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
 ~[org.eclipse.jetty-jetty-server-9.4.43.v20210629.jar:9.4.43.v20210629]
        at 
org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1624)
 ~[org.eclipse.jetty-jetty-server-9.4.43.v20210629.jar:9.4.43.v20210629]
        at 
org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:233)
 ~[org.eclipse.jetty-jetty-server-9.4.43.v20210629.jar:9.4.43.v20210629]
        at 
org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1434)
 ~[org.eclipse.jetty-jetty-server-9.4.43.v20210629.jar:9.4.43.v20210629]
        at 
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:188)
 ~[org.eclipse.jetty-jetty-server-9.4.43.v20210629.jar:9.4.43.v20210629]
        at 
org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:501) 
~[org.eclipse.jetty-jetty-servlet-9.4.43.v20210629.jar:9.4.43.v20210629]
        at 
org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1594)
 ~[org.eclipse.jetty-jetty-server-9.4.43.v20210629.jar:9.4.43.v20210629]
        at 
org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:186)
 ~[org.eclipse.jetty-jetty-server-9.4.43.v20210629.jar:9.4.43.v20210629]
        at 
org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1349)
 ~[org.eclipse.jetty-jetty-server-9.4.43.v20210629.jar:9.4.43.v20210629]
        at 
org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:141) 
~[org.eclipse.jetty-jetty-server-9.4.43.v20210629.jar:9.4.43.v20210629]
        at 
org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:234)
 ~[org.eclipse.jetty-jetty-server-9.4.43.v20210629.jar:9.4.43.v20210629]
        at 
org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:146)
 ~[org.eclipse.jetty-jetty-server-9.4.43.v20210629.jar:9.4.43.v20210629]
        at 
org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:127) 
~[org.eclipse.jetty-jetty-server-9.4.43.v20210629.jar:9.4.43.v20210629]
        at org.eclipse.jetty.server.Server.handle(Server.java:516) 
~[org.eclipse.jetty-jetty-server-9.4.43.v20210629.jar:9.4.43.v20210629]
        at 
org.eclipse.jetty.server.HttpChannel.lambda$handle$1(HttpChannel.java:388) 
~[org.eclipse.jetty-jetty-server-9.4.43.v20210629.jar:9.4.43.v20210629]
        at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:633) 
[org.eclipse.jetty-jetty-server-9.4.43.v20210629.jar:9.4.43.v20210629]
        at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:380) 
[org.eclipse.jetty-jetty-server-9.4.43.v20210629.jar:9.4.43.v20210629]
        at 
org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:277) 
[org.eclipse.jetty-jetty-server-9.4.43.v20210629.jar:9.4.43.v20210629]
        at 
org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:311)
 [org.eclipse.jetty-jetty-io-9.4.43.v20210629.jar:9.4.43.v20210629]
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) 
[org.eclipse.jetty-jetty-io-9.4.43.v20210629.jar:9.4.43.v20210629]
        at 
org.eclipse.jetty.io.ssl.SslConnection$DecryptedEndPoint.onFillable(SslConnection.java:555)
 [org.eclipse.jetty-jetty-io-9.4.43.v20210629.jar:9.4.43.v20210629]
        at 
org.eclipse.jetty.io.ssl.SslConnection.onFillable(SslConnection.java:410) 
[org.eclipse.jetty-jetty-io-9.4.43.v20210629.jar:9.4.43.v20210629]
        at 
org.eclipse.jetty.io.ssl.SslConnection$2.succeeded(SslConnection.java:164) 
[org.eclipse.jetty-jetty-io-9.4.43.v20210629.jar:9.4.43.v20210629]
        at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:105) 
[org.eclipse.jetty-jetty-io-9.4.43.v20210629.jar:9.4.43.v20210629]
        at org.eclipse.jetty.io.ChannelEndPoint$1.run(ChannelEndPoint.java:104) 
[org.eclipse.jetty-jetty-io-9.4.43.v20210629.jar:9.4.43.v20210629]
        at 
org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.runTask(EatWhatYouKill.java:338)
 [org.eclipse.jetty-jetty-util-9.4.43.v20210629.jar:9.4.43.v20210629]
        at 
org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.doProduce(EatWhatYouKill.java:315)
 [org.eclipse.jetty-jetty-util-9.4.43.v20210629.jar:9.4.43.v20210629]
        at 
org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.tryProduce(EatWhatYouKill.java:173)
 [org.eclipse.jetty-jetty-util-9.4.43.v20210629.jar:9.4.43.v20210629]
        at 
org.eclipse.jetty.util.thread.strategy.EatWhatYouKill.run(EatWhatYouKill.java:131)
 [org.eclipse.jetty-jetty-util-9.4.43.v20210629.jar:9.4.43.v20210629]
        at 
org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:386)
 [org.eclipse.jetty-jetty-util-9.4.43.v20210629.jar:9.4.43.v20210629]
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) 
[?:?]
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) 
[?:?]
        at 
io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
 [io.netty-netty-common-4.1.72.Final.jar:4.1.72.Final]
        at java.lang.Thread.run(Thread.java:829) [?:?]
   ```
   
   ### Modifications
   
   - Convert it based on type judgment.
   
   ### Verifying this change
   
   - [x] Make sure that the change passes the CI checks.
   
   ### Documentation
   
   Check the box below or label this PR directly (if you have committer 
privilege).
   
   Need to update docs? 
   
   - [x] `no-need-doc` 
     
   
   


-- 
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