APAR status
Closed as program error.
Error description
A JMS application connects to a queue manager using IBM MQ messaging provider migration mode and a TopicConnectionFactory that has the following properties set: - BROKERVER: 2 - MSGSELECTION: BROKER After the application has connected to the queue manager, it calls the method: Session.createDurableSubscriber(Topic, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String. html?is-external=true">String</a>, <a href="http://docs.oracle.com/javase/7/docs/api/java/lang/String. html?is-external=true">String</a>, boolean) to create a durable subscription for a topic, specifying a message selector, for example: Property1=Value1 and Property2=Value2 When using the WebSphere MQ V7.0.1 classes for JMS, the application receives copies of the messages that are published on the topic and match the selector. However, when the application is using the IBM MQ V8.0 classes for JMS, the application no longer receives copies of any messages that are published on the topic and match the message selector.
Local fix
Problem summary
**************************************************************** USERS AFFECTED: This issue affects users of the IBM MQ classes for JMS who have applications that: - Connect to a queue manager using IBM MQ messaging provider migration mode. - And use either a ConnectionFactory or TopicConnectionFactory that has the following properties set: BROKERVER: 2 MSGSELECTION: BROKER - And create either a durable or non-durable subscription on a topic specifying a message selector. Platforms affected: MultiPlatform **************************************************************** PROBLEM DESCRIPTION: If an application connects to a queue manager using IBM MQ messaging provider migration mode and creates a subscription on a topic specifying a message selector, then by default the message selection functionality is provided by the IBM MQ classes for JMS. In order to have the queue manager perform the message selection, the properties: - BROKERVER: 2 - MSGSELECTION: BROKER need to be set on the ConnectionFactory or TopicConnectionFactory used by the application to create a connection to the queue manager. If an application using the WebSphere MQ V7.0.1 classes for JMS did this, then the WebSphere MQ V7.0.1 classes for JMS would convert the message selector into an "MQSI" format before passing it to the queued publish/subscribe interface on the queue manager. For example, the selector: Property1=Value1 and Property2=Value2 would become Root.MQRFH2.usr.Property1=Value1 and Root.MQRFH2.usr.Property2=Value2 In IBM MQ V8, this behaviour was changed so that: - If the IBM classes for JMS were connecting to a queue manager using IBM MQ messaging provider migration mode. - And the queue manager had the PSMODE attribute set to ENABLED. then the selector would be passed to the queued publish/subscribe interface "as-is" and not converted. This behavioural change caused issues if the publish/subscribe broker which was using the queued publish/subscribe interface was expecting the message selector to be in the "MQSI" format. Because the message selector was in a different format to the one expected by the publish/subscribe broker, the broker would never find any messages which matched the selector. As a result, whenever a message that matched the selector was published on the topic, the broker failed to make a copy of that message for the application to process.
Problem conclusion
The IBM MQ classes for JMS have been updated so that if an application is: - Connecting to a queue manager using IBM MQ messaging provider migration mode. - And using either a ConnectionFactory or TopicConnectionFactory that has the following properties set: BROKERVER: 2 MSGSELECTION: BROKER - And is creating either a durable or non-durable subscription on a topic specifying a message selector. then the IBM MQ classes for JMS will use the value of the Java system property: com.ibm.mq.jms.pubsub.rawBrokerSelectors to determine how to handle the message selector before passing it to the queued publish/subscribe interface: - If the property is set to the value "false", then the message selector will be converted into an "MQSI" format before being passed to the queued publish/subscribe interface. - If the property is set to any other value, then the message selector will be passed to the publish/subscribe interface "as-is". - If the property is not set, then the IBM MQ classes for JMS will look at the PSMODE attribute of the queue manager that it is connecting to: - If the PSMODE attribute is set to "ENABLED", then the message selector will be passed to the publish/subscribe interface "as-is". - If the PSMODE attribute is set either "DISABLED" or "COMPAT", then the message selector will be converted into an "MQSI" format before being passed to the publish/subscribe interface. By default, the property is not set, which means that existing applications should continue to work as they do today after the fix for this APAR has been applied. For example, to start a Java application called myJavaApp with the property set to the value "false", to ensure that the IBM MQ classes for JMS convert the message selector into an "MQSI" format, run the following command: java -Dcom.ibm.mq.jms.pubsub.rawBrokerSelectors=false myJavaApp --------------------------------------------------------------- The fix is targeted for delivery in the following PTFs: Version Maintenance Level v8.0 8.0.0.11 v9.0 LTS 9.0.0.6 v9.1 CD 9.1.2 v9.1 LTS 9.1.0.2 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
IT26379
Reported component name
IBM MQ BASE MP
Reported component ID
5724H7251
Reported release
800
Status
CLOSED PER
PE
NoPE
HIPER
NoHIPER
Special Attention
NoSpecatt / Xsystem
Submitted date
2018-09-21
Closed date
2018-10-26
Last modified date
2018-10-26
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
IBM MQ BASE MP
Fixed component ID
5724H7251
Applicable component levels
[{"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:
26 October 2018