IBM Support

IT20441: Subscribing MQTT client to more than 100 topics in a single subscribe call causes FDC and client to be disconnected

Subscribe to this APAR

By subscribing, you receive periodic emails alerting you to the status of the APAR, along with a link to the fix after it becomes available. You can track this item individually or track all items by product.

Notify me when this APAR changes.

Notify me when an APAR for this component changes.

 

APAR status

  • Closed as program error.

Error description

  • When attempting to subscribe to more than 100 topics in a single
    MQTT subscribe call, the client is disconnected and an FDC is
    generated with:
    
    Probe Id          :- XR055005
    
    and exception and stack:
    
    java.lang.IllegalStateException: MQTTWireContext repeated
    retry:RETRY
    	at
    com.ibm.mq.MQXRService.MQTTWireContext.receive(MQTTWireContext.j
    ava:403)
    	at
    com.ibm.mq.communications.NonBlockingConnection.receive(NonBlock
    ingConnection.java:378)
    	at
    com.ibm.mq.communications.NonBlockingWorker.run(NonBlockingWorke
    r.java:339)
    	at java.lang.Thread.run(Thread.java:809)
    
    The last entries in the history will be subscribes, for example:
        2 Tue Oct 24 15:09:16 BST 2017 RECEIVED_MQTT
    mqttMessageType:SUBSCRIBE
        3 Tue Oct 24 15:09:16 BST 2017 RECEIVED_MQTT
    mqttMessageType:SUBSCRIBE
    
    If this is traced, the trace will show a
    TransactionFullException being generated:
    
    13.59.46.738   31  @XXXXXXXX
    com.ibm.mq.MQXRService.MQTTServerSessionV3
          ----+---- { receiveSubscribe
    [com.ibm.mqttv3.internal.MQTTSubscribe@XXXXXXXX] [SUBSCRIBE] [1]
    [clientID]
    13.59.46.738   31  @XXXXXXXX
    com.ibm.mq.MQXRService.MQTTServerSessionV3
          ----+----+ { registerSubscriptions
    [com.ibm.mqttv3.internal.MQTTSubscribe@XXXXXXXX]
    13.59.46.738   31
    com.ibm.mq.MQXRService.MQXRServiceException
          ----+----+- { <init>
    [com.ibm.mq.MQXRService.TransactionFullException]
    [com.ibm.mq.MQXRService.MQTTServerSessionV3@XXXXXXXX,clientident
    ifier=clientID,conname=X.X.X.X] [class
    com.ibm.mq.MQXRService.TransactionFullException]
    13.59.46.738   31
    com.ibm.mq.MQXRService.MQXRServiceException
          ----+----+- } <init>
    [com.ibm.mq.MQXRService.TransactionFullException]
    13.59.46.738   31  @XXXXXXXX
    com.ibm.mq.MQXRService.MQTTServerSessionV3
          ----+----+ } registerSubscriptions [%C%]
    [com.ibm.mq.MQXRService.TransactionFullException]
    13.59.46.738   31  @XXXXXXXX
    com.ibm.mq.MQXRService.MQTTServerSessionV3
          ----+---- } receiveSubscribe [%C%]
    [com.ibm.mq.MQXRService.TransactionFullException]
    

Local fix

  • Ensure that each subscribe action has less number of topics
    then the value of  maximumSubscriptionOperationsPerBatch
    

Problem summary

  • ****************************************************************
    USERS AFFECTED:
    This issue affects users trying to subscribe an MQTT client to
    more than 100 topics in a single subscribe call
    
    
    Platforms affected:
    MultiPlatform
    
    ****************************************************************
    PROBLEM DESCRIPTION:
    When an MQTT client tried to subscribe to more than 100 topics
    in a single subscribe call, this failed, causing an FDC with
    probe XR055005 to be generated, and the client to be
    disconnected. This was because of a hard-coded limit to the
    number of topics that could be subscribed to in a single
    subscribe call by an MQTT client. This limit could not be
    modified.
    

Problem conclusion

  • The limit to the number of subscriptions that can be made in a
    single MQTT subscribe call is now configurable - so if the user
    intends to subscribe to more than 100 topics in a single
    subscribe call this limit can be increased to allow this.
    
    To modify the limit, set the following property:
    
    com.ibm.mq.MQXR.MaximumSubscriptionOperationsPerBatch=<required
    value>
    
    in the MQXR properties file:
    
    <MQ_DATA_DIRECTORY>/qmgrs/<QUEUE_MANAGER_NAME>/mqxr/mqxr_unix.pr
    operties
    
    for Linux, or the mqxr_win.properties file at the same directory
    for Windows.
    
    Note that the default value for the maximumOperationsPerBatch
    property - which specifies the total operations per batch, not
    just subscriptions - is 500. If setting the value of
    MaximumSubscriptionOperationsPerBatch to more than 500, the
    value of maximumOperationsPerBatch will also have to be
    increased to that higher value, by setting the property:
    
    com.ibm.mq.MQXR.MaximumOperationsPerBatch=<required value>
    
    in the same properties file as the
    MaximumSubscriptionOperationsPerBatch property is set.
    
    ---------------------------------------------------------------
    The fix is targeted for delivery in the following PTFs:
    
    Version    Maintenance Level
    v8.0       8.0.0.9
    v9.0 CD    9.0.5
    v9.0 LTS   9.0.0.3
    
    The latest available maintenance can be obtained from
    'WebSphere MQ Recommended Fixes'
    http://www-1.ibm.com/support/docview.wss?rs=171&uid=swg27006037
    
    If the maintenance level is not yet available information on
    its planned availability can be found in 'WebSphere MQ
    Planned Maintenance Release Dates'
    http://www-1.ibm.com/support/docview.wss?rs=171&uid=swg27006309
    ---------------------------------------------------------------
    

Temporary fix

Comments

APAR Information

  • APAR number

    IT20441

  • Reported component name

    WMQ BASE MULTIP

  • Reported component ID

    5724H7251

  • Reported release

    800

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2017-05-03

  • Closed date

    2017-12-04

  • Last modified date

    2017-12-04

  • APAR is sysrouted FROM one or more of the following:

  • APAR is sysrouted TO one or more of the following:

Fix information

  • Fixed component name

    WMQ BASE MULTIP

  • Fixed component ID

    5724H7251

Applicable component levels

  • R800 PSY

       UP

[{"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Product":{"code":"SSYHRD","label":"IBM MQ"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"8.0.0.0","Edition":"","Line of Business":{"code":"LOB45","label":"Automation"}}]

Document Information

Modified date:
04 December 2017