IBM Support

IJ40696: PSDI.WORKFLOW.WFREVISIONSET.GETREVISION DB CONNECTION LEAK - ISEMPTY

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

  • The SystemOut.log log stack trace shows a database connection
    leak was triggered when a workflow is being initiated and there
    are multiple revisions.
    
    [22/12/21 11:12:17:122 GMT] 000000dc SystemOut     O 22 Dec 2021
    11:12:17:122 [INFO] [UI1] [] BMXAA7084I - The database
    connection has been opened for: 244737 ms
    DbConnectionWatchDog:Db Connection reference id=33535 SPID=3096
    
    The code is calling the MboSet.isEmpty method and that is known
    to leak DB connections if there are multiple records in the
    MBOSet.
    
    The logs show that this is leaked for 4 minutes.
    
    See Connection reference: 33535
    
    
    Stack trace:
    [22/12/21 11:12:17:122 GMT] 000000dc SystemOut     O 22 Dec 2021
    11:12:17:122 [INFO] [UI1] [] BMXAA7084I - The database
    connection has been opened for: 244737 ms
    DbConnectionWatchDog:Db Connection reference id=33535 SPID=3096
    	Create time:1640171292384
    	Create stack trace:
    psdi.server.DbConnectionWatchDog$ConnectionData.<init>(DbConnec
    tionWatchDog.java:60)
    psdi.server.DbConnectionWatchDog.addConnection(DbConnectionWatc
    hDog.java:252)
    psdi.server.ConRef.notifyDBConnectionWatchDog(ConRef.java:238)
    psdi.server.DBManager.getConnectionDetail(DBManager.java:1732)
    psdi.server.DBManager.getConnection(DBManager.java:1472)
    psdi.server.AppService.getDBConnection(AppService.java:572)
    psdi.mbo.MboSet.getNextRecordData(MboSet.java:3289)
    psdi.mbo.MboSet.fetchMbosActual(MboSet.java:2948)
    psdi.mbo.MboSet.fetchMbos(MboSet.java:2905)
    psdi.mbo.MboSet.getMbo(MboSet.java:2121)
    
    psdi.mbo.MboSet.isEmpty(MboSet.java:4417)
    
    psdi.workflow.WFRevisionSet.getRevision(WFRevisionSet.java:67)
    psdi.workflow.WFProcess.initiateWorkflow(WFProcess.java:735)
    psdi.workflow.virtual.InitiateWorkflowMboSet.execute(InitiateWo
    rkflowMboSet.java:93)
    psdi.workflow.WorkflowDirector.doSpecificProcess(WorkflowDirect
    or.java:830)
    psdi.workflow.WorkflowDirector.doStateChangeFromStart(WorkflowD
    irector.java:545)
    psdi.workflow.WorkflowDirector.doStateChange(WorkflowDirector.j
    ava:420)
    psdi.workflow.WorkflowDirector.input(WorkflowDirector.java:299)
    psdi.workflow.WorkflowDirector.startInput(WorkflowDirector.java
    :1306)
    psdi.webclient.system.beans.AppBean.ROUTEWF(AppBean.java:2140)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccesso
    rImpl.java:90)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMetho
    dAccessorImpl.java:55)
    java.lang.reflect.Method.invoke(Method.java:508)
    psdi.webclient.system.session.WebClientSession.defaultHandler(W
    ebClientSession.java:1510)
    psdi.webclient.system.session.WebClientSession.handleEvent(WebC
    lientSession.java:1403)
    psdi.webclient.system.session.WebClientSession.processRequestEv
    ent(WebClientSession.java:6219)
    psdi.webclient.system.session.WebClientSession.handleClientSide
    QueueRequest(WebClientSession.java:6175)
    psdi.webclient.system.session.WebClientSession.handleRequest(We
    bClientSession.java:892)
    psdi.webclient.system.session.AsyncRequestManager.handleRequest
    (AsyncRequestManager.java:555)
    psdi.webclient.system.session.AsyncRequestManager.manageRequest
    (AsyncRequestManager.java:253)
    psdi.webclient.system.controller.RequestManager.manageRequest(R
    equestManager.java:290)
    psdi.webclient.servlet.WebClientServlet.handleRequest(WebClient
    Servlet.java:141)
    psdi.webclient.servlet.WebClientServlet.doPost(WebClientServlet
    .java:52)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
    com.ibm.ws.webcontainer.servlet.ServletWrapper.service(ServletW
    rapper.java:1235)
    com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(Se
    rvletWrapper.java:779)
    com.ibm.ws.webcontainer.servlet.ServletWrapper.handleRequest(Se
    rvletWrapper.java:478)
    com.ibm.ws.webcontainer.servlet.ServletWrapperImpl.handleReques
    t(ServletWrapperImpl.java:179)
    com.ibm.ws.webcontainer.filter.WebAppFilterChain.invokeTarget(W
    ebAppFilterChain.java:143)
    com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAp
    pFilterChain.java:96)
    psdi.webclient.system.filter.HttpCrossSiteScriptingSecurity.doF
    ilter(HttpCrossSiteScriptingSecurity.java:66)
    com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(F
    ilterInstanceWrapper.java:197)
    com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAp
    pFilterChain.java:90)
    psdi.webclient.system.filter.MXCorrelationFilter.doFilter(MXCor
    relationFilter.java:137)
    com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(F
    ilterInstanceWrapper.java:197)
    com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAp
    pFilterChain.java:90)
    psdi.webclient.system.filter.PerformanceMonitor.doFilter(Perfor
    manceMonitor.java:126)
    com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(F
    ilterInstanceWrapper.java:197)
    com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAp
    pFilterChain.java:90)
    psdi.webclient.system.filter.HttpXFrameOptionsFilter.doFilter(H
    ttpXFrameOptionsFilter.java:38)
    com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(F
    ilterInstanceWrapper.java:197)
    com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAp
    pFilterChain.java:90)
    psdi.webclient.system.filter.MTContextFilter.doFilter(MTContext
    Filter.java:53)
    com.ibm.ws.webcontainer.filter.FilterInstanceWrapper.doFilter(F
    ilterInstanceWrapper.java:197)
    com.ibm.ws.webcontainer.filter.WebAppFilterChain.doFilter(WebAp
    pFilterChain.java:90)
    com.ibm.ws.webcontainer.filter.WebAppFilterManager.doFilter(Web
    AppFilterManager.java:979)
    com.ibm.ws.webcontainer.filter.WebAppFilterManager.invokeFilter
    s(WebAppFilterManager.java:1119)
    com.ibm.ws.webcontainer.servlet.CacheServletWrapper.handleReque
    st(CacheServletWrapper.java:82)
    com.ibm.ws.webcontainer.WebContainer.handleRequest(WebContainer
    .java:963)
    com.ibm.ws.webcontainer.WSWebContainer.handleRequest(WSWebConta
    iner.java:1817)
    com.ibm.ws.webcontainer.channel.WCChannelLink.ready(WCChannelLi
    nk.java:382)
    com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleDisc
    rimination(HttpInboundLink.java:465)
    com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.handleNewR
    equest(HttpInboundLink.java:532)
    com.ibm.ws.http.channel.inbound.impl.HttpInboundLink.processReq
    uest(HttpInboundLink.java:318)
    com.ibm.ws.http.channel.inbound.impl.HttpICLReadCallback.comple
    te(HttpICLReadCallback.java:88)
    com.ibm.ws.tcp.channel.impl.AioReadCompletionListener.futureCom
    pleted(AioReadCompletionListener.java:175)
    com.ibm.io.async.AbstractAsyncFuture.invokeCallback(AbstractAsy
    ncFuture.java:217)
    com.ibm.io.async.AsyncChannelFuture.fireCompletionActions(Async
    ChannelFuture.java:161)
    com.ibm.io.async.AsyncFuture.completed(AsyncFuture.java:138)
    com.ibm.io.async.ResultHandler.complete(ResultHandler.java:204)
    		com.ibm.io.async.ResultHandler.runEventProcessingLoop(ResultH
    andler.java:775)
    		com.ibm.io.async.ResultHandler$2.run(ResultHandler.java:905)
    		com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1909)
    	Life   time:244738 ms
    
    Unexpected Results:
    
    The DB connection watchdog is generating a warning. MBOSet/DB
    connection related resources are being used too long.
    
    Expected Results:
    
    MBOSet should be closed immediately after it is used. It should
    not be leaked and generate this warning.
    The isEmpty call can be replaced by a call to notExists.
    notExists does not leak a DB connection.
    
    Environment:
    
    Tivoli's process automation engine 7.6.1.2
    

Local fix

  • N/A - Dev to provide fix
    

Problem summary

  • ****************************************************************
    * USERS AFFECTED:                                              *
    * Maximo users                                                 *
    ****************************************************************
    * PROBLEM DESCRIPTION:                                         *
    * Database connection leak on WFRevisionSet when a workflow is *
    * being initiated and there are multiple revisions.            *
    ****************************************************************
    The SystemOut.log log stack trace shows a database connection
    leak was triggered when a workflow is being initiated and there
    are multiple revisions.
    [22/12/21 11:12:17:122 GMT] 000000dc SystemOut O 22 Dec 2021
    11:12:17:122 [INFO] [UI1] [] BMXAA7084I - The database
    connection has been opened for: 244737 ms
    DbConnectionWatchDog:Db Connection reference id=33535 SPID=3096
    The code is calling the MboSet.isEmpty method and that is known
    to leak DB connections if there are multiple records in the
    MBOSet.
    The logs show that this is leaked for 4 minutes.
    See Connection reference: 33535
    Stack trace:
    [22/12/21 11:12:17:122 GMT] 000000dc SystemOut O 22 Dec 2021
    11:12:17:122 [INFO] [UI1] [] BMXAA7084I - The database
    connection has been opened for: 244737 ms
    DbConnectionWatchDog:Db Connection reference id=33535 SPID=3096
    Create time:1640171292384
    Create stack trace:
    psdi.server.DbConnectionWatchDog$ConnectionData.<init>(DbConnec
    tionWatchDog.java:60)
    psdi.server.DbConnectionWatchDog.addConnection(DbConnectionWatc
    hDog.java:252)
    psdi.server.ConRef.notifyDBConnectionWatchDog(ConRef.java:238)
    psdi.server.DBManager.getConnectionDetail(DBManager.java:1732)
    psdi.server.DBManager.getConnection(DBManager.java:1472)
    psdi.server.AppService.getDBConnection(AppService.java:572)
    psdi.mbo.MboSet.getNextRecordData(MboSet.java:3289)
    psdi.mbo.MboSet.fetchMbosActual(MboSet.java:2948)
    psdi.mbo.MboSet.fetchMbos(MboSet.java:2905)
    psdi.mbo.MboSet.getMbo(MboSet.java:2121)
    psdi.mbo.MboSet.isEmpty(MboSet.java:4417)
    psdi.workflow.WFRevisionSet.getRevision(WFRevisionSet.java:67)
    psdi.workflow.WFProcess.initiateWorkflow(WFProcess.java:735)
    psdi.workflow.virtual.InitiateWorkflowMboSet.execute(InitiateWo
    rkflowMboSet.java:93)
    psdi.workflow.WorkflowDirector.doSpecificProcess(WorkflowDirect
    or.java:830)
    psdi.workflow.WorkflowDirector.doStateChangeFromStart(WorkflowD
    irector.java:545)
    psdi.workflow.WorkflowDirector.doStateChange(WorkflowDirector.j
    ava:420)
    psdi.workflow.WorkflowDirector.input(WorkflowDirector.java:299)
    psdi.workflow.WorkflowDirector.startInput(WorkflowDirector.java
    :1306)
    psdi.webclient.system.beans.AppBean.ROUTEWF(AppBean.java:2140)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    ...
    Life time:244738 ms
    Unexpected Results:
    The DB connection watchdog is generating a warning. MBOSet/DB
    connection related resources are being used too long.
    Expected Results:
    MBOSet should be closed immediately after it is used. It should
    not be leaked and generate this warning.
    

Problem conclusion

  • The fix for this APAR will be contained in a future release
    

Temporary fix

Comments

APAR Information

  • APAR number

    IJ40696

  • Reported component name

    MAXIMO SYSTEMS

  • Reported component ID

    5724R46AV

  • Reported release

    761

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2022-06-17

  • Closed date

    2022-09-19

  • Last modified date

    2022-09-19

  • 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

    MAXIMO SYSTEMS

  • Fixed component ID

    5724R46AV

Applicable component levels

[{"Business Unit":{"code":"BU059","label":"IBM Software w\/o TPS"},"Product":{"code":"SSLKT6","label":"Maximo Asset Management"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"761","Line of Business":{"code":"LOB59","label":"Sustainability Software"}}]

Document Information

Modified date:
19 September 2022