Uploaded image for project: 'Qpid JMS'
  1. Qpid JMS
  2. QPIDJMS-486

Cannot use connection URL with failover provider and custom cipher suites

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Open
    • Priority: Major
    • Resolution: Unresolved
    • Affects Version/s: 0.48.0
    • Fix Version/s: None
    • Component/s: qpid-jms-client
    • Labels:
      None

      Description

      Example URL:

      failover:(amqps://mybroker.local:5671?transport.connectTimeout=15000&transport.soLinger=10000&transport.tcpNoDelay=true&transport.sendBufferSize=65536&transport.receiveBufferSize=65536&transport.useOpenSSL=true&transport.contextProtocol=TLSv1.2&transport.enabledCipherSuites=TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384&transport.keyStoreType=JKS&transport.keyStoreLocation=/C:/Temp/keystore-store.jks&transport.keyStorePassword=REPLACE_ME&transport.trustStoreType=jks&transport.trustStoreLocation=/C:/Temp/trust-store.jks&transport.trustStorePassword=REPLACE_ME&amqp.maxFrameSize=102400&amqp.vhost=mybroker.local&amqp.drainTimeout=60000&amqp.idleTimeout=60000&amqp.saslLayer=true&amqp.saslMechanisms=EXTERNAL)?failover.maxReconnectAttempts=-1&failover.startupMaxReconnectAttempts=3&failover.warnAfterReconnectAttempts=1&jms.populateJMSXUserID=true&jms.localMessageExpiry=true&jms.requestTimeout=60000&jms.sendTimeout=60000&jms.receiveNoWaitLocalOnly=true&jms.validatePropertyNames=false&jms.redeliveryPolicy.maxRedeliveries=0&jms.redeliveryPolicy.outcome=REJECTED&jms.presettlePolicy.presettleAll=false
      

       Error Message:

      [FailoverProvider: async work thread] INFO FailoverProvider - Connection attempt:[1] to: amqps://mybroker.local:5671 failed
      [FailoverProvider: async work thread] ERROR ProviderFactory - Failed to create Provider instance for null, due to: {}
      java.io.IOException: No Provider scheme specified.
       at org.apache.qpid.jms.provider.ProviderFactory.findProviderFactory(ProviderFactory.java:149)
       at org.apache.qpid.jms.provider.ProviderFactory.findProviderFactory(ProviderFactory.java:131)
       at org.apache.qpid.jms.provider.ProviderFactory.create(ProviderFactory.java:102)
       at org.apache.qpid.jms.provider.failover.FailoverProvider$14.run(FailoverProvider.java:746)
       at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
       at java.util.concurrent.FutureTask.run(FutureTask.java:266)
       at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
       at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
       at java.lang.Thread.run(Thread.java:748)
      [FailoverProvider: async work thread] INFO FailoverProvider - Connection attempt:[1] to: null://null:-1 failed
      [FailoverProvider: async work thread] WARN FailoverProvider - Failed to connect after: 1 attempt(s) continuing to retry.
      [FailoverProvider: async work thread] INFO FailoverProvider - Connection attempt:[2] to: amqps://mybroker.local:5671 failed
      [FailoverProvider: async work thread] ERROR ProviderFactory - Failed to create Provider instance for null, due to: {}
      java.io.IOException: No Provider scheme specified.
       at org.apache.qpid.jms.provider.ProviderFactory.findProviderFactory(ProviderFactory.java:149)
       at org.apache.qpid.jms.provider.ProviderFactory.findProviderFactory(ProviderFactory.java:131)
       at org.apache.qpid.jms.provider.ProviderFactory.create(ProviderFactory.java:102)
       at org.apache.qpid.jms.provider.failover.FailoverProvider$14.run(FailoverProvider.java:746)
       at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
       at java.util.concurrent.FutureTask.run(FutureTask.java:266)
       at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
       at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
       at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
       at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
       at java.lang.Thread.run(Thread.java:748)
      

       

      I guess the problem is that the transport.enabledCipherSuites option contains a comma which is interpreted by the failover provider as the start of the URL of a secondary broker address.

       

      I tried to escape the comma as %26 but that didn't make a difference.

       

       

        Attachments

          Activity

            People

            • Assignee:
              Unassigned
              Reporter:
              seb Sebastian T
            • Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

              • Created:
                Updated: