[
https://issues.apache.org/jira/browse/QPIDJMS-587?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17718507#comment-17718507
]
Robbie Gemmell edited comment on QPIDJMS-587 at 5/2/23 10:05 AM:
-----------------------------------------------------------------
I was not asking you to give any of the tree. Just noting that giving an
isolated snippet as you did is not particularly interpretable without full
context. Even the added detail you gave, isnt sufficient to fully analyse the
snippet...though it does actually point to your application not doing only what
you described.
We wont be removing dependency management within the client itself. It shouldnt
even matter if we did, particularly so in the example you just described.
Your applications netty dependency version selection is not behaving at all the
way I would expect, or have just locally tested out to verify, when inheriting
dependencyManagement via netty-bom from the spring-boot-dependencies pom/bom
via one of their parents, such as e.g their
[suggested|https://docs.spring.io/spring-boot/docs/2.7.11/reference/html/getting-started.html#getting-started.first-application.pom]
spring-boot-starter-parent, and then declaring a simple dependency on the
client within the same application pom.
That inherited netty-bom dependencyManagement should still be overriding any
client-defined netty versions, regardless of whether any client used module is
dependency managed in the client or not, unless something else is overriding
that inherited management with some other selection criteria in the application
pom. Given you indicated changing qpid-jms management had any effect here,
which it shouldn't....are you importing the qpid-jms-parent pom in the
application dependencyManagement or something strange like that?
was (Author: gemmellr):
I was not asking you to give any of the tree. Just noting that giving an
isolated snippet as you did is not particularly interpretable without full
context. Even the added detail you gave, isnt sufficient to fully analyse the
snippet...though it does actually point to your application not doing only what
you described.
We wont be removing dependency management within the client itself. It shouldnt
even matter if we did, particularly so in the example you just described.
Your applications netty dependency version selection is not behaving at all the
way I would expect, or have just locally tested out to verify, when inheriting
dependencyManagement via netty-bom from the spring-boot-dependencies pom/bom
via one of their parents, such as e.g their
[https://docs.spring.io/spring-boot/docs/2.7.11/reference/html/getting-started.html#getting-started.first-application.pom|suggested]
spring-boot-starter-parent, and then declaring a simple dependency on the
client within the same application pom.
That inherited netty-bom dependencyManagement should still be overriding any
client-defined netty versions, regardless of whether any client used module is
dependency managed in the client or not, unless something else is overriding
that inherited management with some other selection criteria in the application
pom. Given you indicated changing qpid-jms management had any effect here,
which it shouldn't....are you importing the qpid-jms-parent pom in the
application dependencyManagement or something strange like that?
> io.netty:netty-transport-native-unix-common not managed but used
> ----------------------------------------------------------------
>
> Key: QPIDJMS-587
> URL: https://issues.apache.org/jira/browse/QPIDJMS-587
> Project: Qpid JMS
> Issue Type: Bug
> Components: qpid-jms-client, qpid-jms-discovery
> Affects Versions: 2.2.0
> Environment: linux OS running a Spring Boot app 2.7.11 and qpid-jms
> 2.2.0 together.
> Reporter: Harald Aamot
> Priority: Major
> Fix For: 2.3.0
>
> Attachments: image-2023-04-28-12-03-00-922.png,
> image-2023-04-28-12-03-40-683.png
>
>
> When using qpid-jms 2.2.0 running on a linux OS then netty transitively pulls
> in io.netty:netty-transport-native-unix-common .
> The version for this depndency is not managed in qpid-jms.
> When running a SpringBoot 2.7.11 application, Spring Boot manages io.netty on
> version 4.1.91.Final . This version then gets used for
> io.netty:netty-transport-native-unix-common, while the other netty components
> run on 4.1.86.Final (managed by qpid-jms).
> This leads to a runtime exception when trying to connect.
> Reason is this:
> With netty 4.1.91.Final an incompatible change for qpid-jms has been made.
> Changelog [https://netty.io/news/2023/04/03/4-1-91-Final.html]
> incompatible change [https://github.com/netty/netty/issues/13317]
> code changed there [https://github.com/netty/netty/pull/13318]
> {noformat}
> ["jakarta.jms.JMSException: Could not initialize class
> io.netty.channel.unix.Errors","
> at
> org.apache.qpid.jms.provider.ProviderException.toJMSException(ProviderException.java:34)","
> at
> org.apache.qpid.jms.exceptions.JmsExceptionSupport.create(JmsExceptionSupport.java:80)","
> at
> org.apache.qpid.jms.exceptions.JmsExceptionSupport.create(JmsExceptionSupport.java:112)","
> at
> org.apache.qpid.jms.JmsConnection.onAsyncException(JmsConnection.java:1564)","
> at
> org.apache.qpid.jms.JmsConnection.onProviderException(JmsConnection.java:1548)","
> at
> org.apache.qpid.jms.JmsConnection.onConnectionFailure(JmsConnection.java:1392)","
> at
> org.apache.qpid.jms.provider.failover.FailoverProvider.lambda$reportReconnectFailure$3(FailoverProvider.java:808)","
> at
> java.base/java.util.concurrent.Executors$RunnableAdapter.call(Unknown
> Source)","
> at java.base/java.util.concurrent.FutureTask.run(Unknown Source)","
> at
> java.base/java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(Unknown
> Source)","
> at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown
> Source)","
> at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown
> Source)","
> at java.base/java.lang.Thread.run(Unknown Source)","Caused by:
> org.apache.qpid.jms.provider.exceptions.ProviderIOException: Could not
> initialize class io.netty.channel.unix.Errors","
> at
> org.apache.qpid.jms.provider.exceptions.ProviderExceptionSupport.createOrPassthroughFatal(ProviderExceptionSupport.java:46)","
> at
> org.apache.qpid.jms.provider.amqp.AmqpProvider.connect(AmqpProvider.java:309)","
> at
> org.apache.qpid.jms.provider.failover.FailoverProvider$14.run(FailoverProvider.java:747)","
> ... 6 more","Caused by: java.io.IOException: Could not initialize class
> io.netty.channel.unix.Errors","
> at
> org.apache.qpid.jms.util.IOExceptionSupport.create(IOExceptionSupport.java:45)","
> at
> org.apache.qpid.jms.transports.netty.NettyTcpTransport$2.operationComplete(NettyTcpTransport.java:176)","
> at
> org.apache.qpid.jms.transports.netty.NettyTcpTransport$2.operationComplete(NettyTcpTransport.java:171)","
> at
> io.netty.util.concurrent.DefaultPromise.notifyListener0(DefaultPromise.java:590)","
> at
> io.netty.util.concurrent.DefaultPromise.notifyListenersNow(DefaultPromise.java:557)","
> at
> io.netty.util.concurrent.DefaultPromise.notifyListeners(DefaultPromise.java:492)","
> at
> io.netty.util.concurrent.DefaultPromise.setValue0(DefaultPromise.java:636)","
> at
> io.netty.util.concurrent.DefaultPromise.setFailure0(DefaultPromise.java:629)","
> at
> io.netty.util.concurrent.DefaultPromise.tryFailure(DefaultPromise.java:118)","
> at
> io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.connect(AbstractEpollChannel.java:637)","
> at
> io.netty.channel.DefaultChannelPipeline$HeadContext.connect(DefaultChannelPipeline.java:1342)","
> at
> io.netty.channel.AbstractChannelHandlerContext.invokeConnect(AbstractChannelHandlerContext.java:653)","
> at
> io.netty.channel.AbstractChannelHandlerContext.connect(AbstractChannelHandlerContext.java:632)","
> at io.netty.handler.ssl.SslHandler.connect(SslHandler.java:714)","
> at
> io.netty.channel.AbstractChannelHandlerContext.invokeConnect(AbstractChannelHandlerContext.java:657)","
> at
> io.netty.channel.AbstractChannelHandlerContext.connect(AbstractChannelHandlerContext.java:632)","
> at
> io.netty.channel.AbstractChannelHandlerContext.connect(AbstractChannelHandlerContext.java:616)","
> at
> io.netty.channel.DefaultChannelPipeline.connect(DefaultChannelPipeline.java:978)","
> at io.netty.channel.AbstractChannel.connect(AbstractChannel.java:265)","
> at io.netty.bootstrap.Bootstrap$3.run(Bootstrap.java:250)","
> at
> io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174)","
> at
> io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167)","
> at
> io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)","
> at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:406)","
> at
> io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)","
> at
> io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)","
> ... 1 more","Caused by: java.lang.NoClassDefFoundError: Could not
> initialize class io.netty.channel.unix.Errors","
> at io.netty.channel.unix.Socket.connect(Socket.java:351)","
> at
> io.netty.channel.epoll.AbstractEpollChannel.doConnect0(AbstractEpollChannel.java:773)","
> at
> io.netty.channel.epoll.EpollSocketChannel.doConnect0(EpollSocketChannel.java:144)","
> at
> io.netty.channel.epoll.AbstractEpollChannel.doConnect(AbstractEpollChannel.java:758)","
> at
> io.netty.channel.epoll.AbstractEpollChannel$AbstractEpollUnsafe.connect(AbstractEpollChannel.java:600)","
> ... 17 more"]}
> {noformat}
> {code:java}
> [2023-04-24T11:18:33.655Z]
> github.wdf.sap.corp/nextgenpayroll-montblanc/process-tracker-service/main:
> 2023-04-24T11:18:18.885Z [APP/PROC/WEB/1] OUT {"msg":"Connection attempt:[15]
> to:
> amqps://aba5da1c-7ba4-4a97-a7b8-bed634abc51d.messaging.eu10.mq.messagebroker.cloud.sap:7027
>
> failed","level":"INFO","written_ts":"1682335098885062000","logger":"org.apache.qpid.jms.provider.failover.FailoverProvider","written_at":"2023-04-24T11:18:18.884Z","thread":"FailoverProvider:
> async work thread","type":"log"} [2023-04-24T11:18:33.655Z]
> github.wdf.sap.corp/nextgenpayroll-montblanc/process-tracker-service/main:
> 2023-04-24T11:18:18.898Z [APP/PROC/WEB/1] OUT {"msg":"Failed to connect
> after: 15
> attempt(s)","level":"ERROR","written_ts":"1682335098898191000","logger":"org.apache.qpid.jms.provider.failover.FailoverProvider","written_at":"2023-04-24T11:18:18.897Z","thread":"FailoverProvider:
> async work thread","type":"log"} [2023-04-24T11:18:33.655Z]
> github.wdf.sap.corp/nextgenpayroll-montblanc/process-tracker-service/main:
> 2023-04-24T11:18:18.898Z [APP/PROC/WEB/1] OUT {"msg":"Connection
> ID:4c280ae9-787d-4ef2-bf11-1f3f9682e709:1 has failed due to: Could not
> initialize class
> io.netty.channel.unix.Errors","level":"WARN","written_ts":"1682335098898573000","logger":"org.apache.qpid.jms.JmsConnection","written_at":"2023-04-24T11:18:18.898Z","thread":"FailoverProvider:
> async work thread","type":"log"}{code}
>
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]