FFST: IBM MQ classes for JMS

Describes the name, location, and contents of the First Failure Support Technology ( FFST ) files that are generated by the IBM® MQ classes for JMS.

When using the IBM MQ classes for JMS, FFST information is recorded in a file in a directory that is called FFDC, which by default is a subdirectory of the current working directory for the IBM MQ classes for JMS application that was running when the FFST was generated. The FFST information is recorded whether you are using Jakarta Messaging 3.0 or JMS 2.0. If the property com.ibm.msg.client.commonservices.trace.outputName has been set in the IBM MQ classes for JMS configuration file, the FFDC directory is a subdirectory of the directory that the property points to. For more information, see The IBM MQ classes for JMS/Jakarta Messaging configuration file.

An FFST file contains one FFST record. Each FFST record contains information about an error that is normally severe, and possibly unrecoverable. These records typically indicate either a configuration problem with the system or an internal error within the IBM MQ classes for JMS .

FFST files are named JMSC nnnn.FDC, where nnnn starts at 1. If the full file name already exists, this value is incremented by one until a unique FFST file name is found.

An instance of an IBM MQ classes for JMS application writes FFST information to multiple FFST files. If multiple errors occur during a single execution of the application, each FFST record is written to a different FFST file.

Sections of an FFST record

An FFST record that is generated by the IBM MQ classes for JMS contains the following sections:
The header
A header, indicating the time when the FFST record was created, the platform that the IBM MQ classes for JMS application is running on, and the internal method that was being called. The header also contains a probe identifier, which uniquely identifies the place within the IBM MQ classes for JMS that generated the FFST record.
Data
Some internal data that is associated with the FFST record.
Version information
Information about the version of the IBM MQ classes for JMS being used by the application that generated the FFST record.
Stack Trace
The Java stack trace for the thread that generated the FFST record.
Property Store Contents
A list of all of the Java system properties that have been set on the Java Runtime Environment that the IBM MQ classes for JMS application is running in.
WorkQueueMananger Contents
Information about the internal thread pool that is used by the IBM MQ classes for JMS .
Runtime properties
Details about the amount of memory and the number of processors available on the system where the IBM MQ classes for JMS application is running.
Component Manager Contents
Some information about the internal components that are loaded by the IBM MQ classes for JMS .
Provider Specific information
Information about all of the active JMS Connections, JMS Sessions, MessageProducer, and MessageConsumer objects currently being used by the IBM MQ classes for JMS application that was running when the FFST was generated. This information includes the name of the queue manager that JMS Connections and JMS Sessions are connected to, and the name of the IBM MQ queue or topic objects that are being used by MessageProducers and MessageConsumers.
All Thread information
Details about the state of all of the active threads in the Java Runtime Environment that the IBM MQ classes for JMS application was running in when the FFST record was generated. The name of each thread is shown, together with a Java stack trace for every thread.

Example FFST log file

----------------------------------START FFST------------------------------------
c:\JBoss-6.0.0\bin\FFDC\JMSCC0007.FDC PID:4472

JMS Common Client First Failure Symptom Report


Product     :- IBM MQ classes for JMS
Date/Time    :- Mon Feb 03 14:14:46 GMT 2014
System time   :- 1391436886081
Operating System :- Windows Server 2008
UserID      :- pault
Java Vendor   :- IBM Corporation
Java Version   :- 2.6

Source Class   :- com.ibm.msg.client.commonservices.j2se.wmqsupport.PropertyStoreImpl
Source Method  :- getBooleanProperty(String)
ProbeID     :- XS002005
Thread      :- name=pool-1-thread-3 priority=5 group=workmanager-threads
ccl=BaseClassLoader@ef1c3794{vfs:///C:/JBoss-6.0.0/server/default/deploy/basicMDB.ear}

Data
----

|  name :- com.ibm.mq.connector.performJavaEEContainerChecks

Version information
-------------------

Java Message Service Client
7.5.0.2
p750-002-130627
Production

IBM MQ classes for Java Message Service
7.5.0.2
p750-002-130627
Production

IBM MQ JMS Provider
7.5.0.2
p750-002-130627
Production

Common Services for Java Platform, Standard Edition
7.5.0.2
p750-002-130627
Production



Stack trace
-----------

Stack trace to show the location of the FFST call
|  FFST Location :- java.lang.Exception
|  	at com.ibm.msg.client.commonservices.trace.Trace.getCurrentPosition(Trace.java:1972)
|  	at com.ibm.msg.client.commonservices.trace.Trace.createFFSTString(Trace.java:1911)
|  	at com.ibm.msg.client.commonservices.trace.Trace.ffstInternal(Trace.java:1800)
|  	at com.ibm.msg.client.commonservices.trace.Trace.ffst(Trace.java:1624)
|  	at com.ibm.msg.client.commonservices.j2se.propertystore.PropertyStoreImpl.getBooleanProperty(
PropertyStoreImpl.java:322)
|  	at com.ibm.msg.client.commonservices.propertystore.PropertyStore.getBooleanPropertyObject(Pr
opertyStore.java:302)
|  	at com.ibm.mq.connector.outbound.ConnectionWrapper.jcaMethodAllowed(ConnectionWrapper.java:510)
|  	at com.ibm.mq.connector.outbound.ConnectionWrapper.setExceptionListener(ConnectionWrapper.java:244)
|  	at com.ibm.basicMDB.MDB.onMessage(MDB.java:45)
...

Property Store Contents
-----------------------

All currently set properties
|  awt.toolkit                           :- sun.awt.windows.WToolkit
|  catalina.ext.dirs                        :- C:\JBoss-6.0.0\server\default\lib
|  catalina.home                          :- C:\JBoss-6.0.0\server\default
|  com.ibm.cpu.endian                        :- little
|  com.ibm.jcl.checkClassPath                    :-
|  com.ibm.mq.connector.performJavaEEContainerChecks        :- false
|  com.ibm.oti.configuration                    :- scar
|  com.ibm.oti.jcl.build                      :- 20131013_170512
|  com.ibm.oti.shared.enabled                    :- false
|  com.ibm.oti.vm.bootstrap.library.path              :- C:\Program
Files\IBM\Java70\jre\bin\compressedrefs;C:\Program Files\IBM\Java70\jre\bin
|  com.ibm.oti.vm.library.version                  :- 26
|  com.ibm.system.agent.path                    :- C:\Program
Files\IBM\Java70\jre\bin
|  com.ibm.util.extralibs.properties                :-
|  com.ibm.vm.bitmode                        :- 64
|  com.ibm.zero.version                       :- 2
|  console.encoding                         :- Cp850
|  file.encoding                          :- Cp1252
|  file.encoding.pkg                        :- sun.io
...


WorkQueueMananger Contents
--------------------------

|  Current ThreadPool size   :- 2
|  Maintain ThreadPool size   :- false
|  Maximum ThreadPool size   :- -1
|  ThreadPool inactive timeout :- 0

Runtime properties
------------------

|  Available processors     :- 4
|  Free memory in bytes (now)  :- 54674936
|  Max memory in bytes     :- 536870912
|  Total memory in bytes (now) :- 235012096

Component Manager Contents
--------------------------

Common Services Components:
|  CMVC        :- p750-002-130627
|  Class Name     :- class com.ibm.msg.client.commonservices.j2se.J2SEComponent
|  Component Name   :- com.ibm.msg.client.commonservices.j2se
|  Component Title  :- Common Services for Java Platform, Standard Edition
|  Factory Class   :- class com.ibm.msg.client.commonservices.j2se.CommonServicesImplementation
|  Version      :- 7.5.0.2
|  inPreferenceTo[0] :- com.ibm.msg.client.commonservices.j2me

Messaging Provider Components:
|  CMVC       :- p750-002-130627
|  Class Name    :- class com.ibm.msg.client.wmq.factories.WMQComponent
|  Component Name  :- com.ibm.msg.client.wmq
|  Component Title :- IBM MQ JMS Provider
|  Factory Class  :- class com.ibm.msg.client.wmq.factories.WMQFactoryFactory
|  Version     :- 7.5.0.2




Provider Specific Information
-----------------------------

Overview of JMS System
Num. Connections : 3
Num. Sessions  : 3
Num. Consumers  : 0
Num. Producers  : 0

Detailed JMS System Information
Connections   :
|  Instance          :- com.ibm.msg.client.wmq.internal.WMQXAConnection@bd4b665a
|  connectOptions       :- version:5 options:64 clientConn:
[channelName:'MY.SVRCONN' version:10 channelType:6 transportType:2 desc:'<null>'
qMgrName:'test' xmitQName:'<null>' connectionName:'9.20.124.119(1414)' mcaName:'<null>'
modeName:'<null>' tpName:'<null>' batchSize:50 discInterval:6000 shortRetryCount:10
shortRetryInterval:60 longRetryCount:999999999 longRetryInterval:1200
seqNumberWrap:99999999 maxMsgLength:104857600 putAuthority:1 dataConversion:0
userIdentifier:'<null>' password:'<null>' mcaUserIdentifier:'<null>' mcaType:1
remoteUserIdentifier:'' msgRetryExit:'<null>' msgRetryUserData:'<null>' msgRetryCount:10
heartbeatInterval:1 batchInterval:0 nonPersistentMsgSpeed:2 clustersDefined:0
networkPriority:0
mcaSecurityId:000000000000000000000000000000000000000000000000000000000000000000000000000
00000 remoteSecurityId:000000000000000000000000000000000000000000000000000000000000000000000000
00000000 sslCipherSpec:'<null>' sslPeerName:'<null>' sslClientAuth:0 keepAliveInterval:-1
localAddress:'<null>' batchHeartbeat:0 hdrCompList:(0,-1)msgCompList:(0,-1,-1,-1,-1,-1,-
1,-1,-1,-1,-1,-1,-1,-1,-1,-1)clwlChannelRank:0 clwlChannelPriority:0 clwlChannelWeight:50
channelMonitoring:0 channelStatistics:0 exitNameLength:128 exitDataLength:32
sendExitsDefined:0 sendExit:'<null>'
sendUserData:0000000000000000000000000000000000000000000000000000000000000000
sendExitPtr:<null> sendUserDataPtr:<null> receiveExitsDefined:0 receiveExit:'<null>'
receiveUserData:0000000000000000000000000000000000000000000000000000000000000000
receiveExitPtr:<null> ReceiveUserDataPtr:<null> SharingConversations:999999999
propertyControl:0 maxInstances:999999999 maxInstancesPerClient:999999999
clientChannelWeight:0 connectionAffinity:1 batchDataLimit:5000 useDLQ:2 defReconnect:0 ]
connTag:000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000000000000000000000000000000000000000
sslConfig:[version:1 keyRepository:'<null>' cryptoHardware:'<null>' authInfoRecCount:0
keyResetCount:0 fipsRequired:0 encryptionPolicySuiteB:(1,0,0,0)certificateValPolicy:0 ]
connectionId:414D51437465737420202020202020208CA3E2522028FD02 securityParms:[<null>]
|  exceptionListener      :-
com.ibm.msg.client.jms.internal.JmsProviderExceptionListener@f17b3583
|  helper           :-
com.ibm.msg.client.wmq.internal.WMQConsumerOwnerShadow@adabbe93
|  queueManagerName      :- test
...

Sessions     : 3
|  Instance      :- com.ibm.msg.client.wmq.internal.WMQXASession@f5c63f0a
|  Parent Connection :- com.ibm.msg.client.wmq.internal.WMQXAConnection@228b45cb
|  ackMode      :- 0
|  asfConsumer    :- <null>
|  asfDestination   :- <null>
|  asfSubName     :- <null>
|  asyncPutCounter  :-
com.ibm.msg.client.wmq.internal.WMQSession$AsyncPutCounter@88db6ec0
|  didRecovAsyncPut  :- false
|  helper       :-
com.ibm.msg.client.wmq.internal.WMQConsumerOwnerShadow@28192ad1
|  inSyncpoint    :- false
|  queueManagerName  :- test
...

Consumers    :
Producers    :

All Thread Information
Name : DispatchThread:
[com.ibm.mq.jmqi.remote.impl.RemoteSession[connectionId=414D51437465737420202020202020208
CA3E2522028FA01]]
Priority : 5
ThreadGroup : java.lang.ThreadGroup[name=JMSCCThreadPool,maxpri=10]
ID : 86
State : TIMED_WAITING
Stack : java.lang.Object.wait(Object.java:-2)
: java.lang.Object.wait(Object.java:196)
:
com.ibm.mq.jmqi.remote.impl.RemoteDispatchThread.waitOnSleepingEvent(RemoteDispatchThread
.java:151)
:
com.ibm.mq.jmqi.remote.impl.RemoteDispatchThread.sleepPhase(RemoteDispatchThread.java:636)
:
com.ibm.mq.jmqi.remote.impl.RemoteDispatchThread.run(RemoteDispatchThread.java:385)
:
com.ibm.msg.client.commonservices.workqueue.WorkQueueItem.runTask(WorkQueueItem.java:214)
:
com.ibm.msg.client.commonservices.workqueue.SimpleWorkQueueItem.runItem(SimpleWorkQueueIt
em.java:105)
:
com.ibm.msg.client.commonservices.workqueue.WorkQueueItem.run(WorkQueueItem.java:229)
:
com.ibm.msg.client.commonservices.workqueue.WorkQueueManager.runWorkQueueItem(WorkQueueMa
nager.java:303)
:
com.ibm.msg.client.commonservices.j2se.workqueue.WorkQueueManagerImplementation$ThreadPoo
lWorker.run(WorkQueueManagerImplementation.java:1219)
Name : RcvThread:
com.ibm.mq.jmqi.remote.impl.RemoteTCPConnection@269522111[qmid=test_2014-01-
24_15.55.24,fap=10,channel=MY.SVRCONN,ccsid=850,sharecnv=10,hbint=300,peer=/9.20.124.119(
1414),localport=65243,ssl=no,hConns=0,LastDataSend=1391436871409 (0ms ago
),LastDataRecv=1391436871409 (0ms ago),]
Priority : 5
ThreadGroup : java.lang.ThreadGroup[name=JMSCCThreadPool,maxpri=10]
ID : 84
State : RUNNABLE
Stack :
java.net.SocketInputStream.socketRead0(SocketInputStream.java:-2)
:
java.net.SocketInputStream.read(SocketInputStream.java:163)
:
java.net.SocketInputStream.read(SocketInputStream.java:133)
:
com.ibm.mq.jmqi.remote.impl.RemoteTCPConnection.receive(RemoteTCPConnection.java:1545)
:
com.ibm.mq.jmqi.remote.impl.RemoteRcvThread.receiveBuffer(RemoteRcvThread.java:794)
:
com.ibm.mq.jmqi.remote.impl.RemoteRcvThread.receiveOneTSH(RemoteRcvThread.java:757)
:
com.ibm.mq.jmqi.remote.impl.RemoteRcvThread.run(RemoteRcvThread.java:150)
:
com.ibm.msg.client.commonservices.workqueue.WorkQueueItem.runTask(WorkQueueItem.java:214)
:
com.ibm.msg.client.commonservices.workqueue.SimpleWorkQueueItem.runItem(SimpleWorkQueueIte
m.java:105)
:
com.ibm.msg.client.commonservices.workqueue.WorkQueueItem.run(WorkQueueItem.java:229)
:
com.ibm.msg.client.commonservices.workqueue.WorkQueueManager.runWorkQueueItem(WorkQueueManager.java:303)
:
com.ibm.msg.client.commonservices.j2se.workqueue.WorkQueueManagerImplementation$ThreadPoo
lWorker.run(WorkQueueManagerImplementation.java:1219)


...
First Failure Symptom Report completed at Mon Feb 03 14:14:46 GMT 2014
------------------------------------END FFST------------------------------------

The information in the header, Data, and Stack Trace sections of the FFST record are used by IBM to assist in problem determination. In many cases, there is little that the system administrator can do when an FFST record is generated, apart from raising problems through the IBM Support Center.

Suppressing FFST records

An FFST file that is generated by the IBM MQ classes for JMS contain one FFST record. If a problem occurs multiple times during the execution of an IBM MQ classes for JMS application, multiple FFST files with the same probe identifier are generated. This might not be desirable. The property com.ibm.msg.client.commonservices.ffst.suppress can be used to suppress the production of FFST files. This property must be set in the IBM MQ classes for JMS configuration file used by the application, and can take the following values:
  • 0: Output all FFDC files (default).
  • -1: Output only the first FFST file for a probe identifier.
  • integer: Suppress all FFST files for a probe identifier except those files that are a multiple of this number.