IBM Support

JR49261: Concurrent threads working with the same shared business object instance lock each other

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • Shared business objects are intended to be used by multiple BPD
    and task instances in parallel. When updates and reads come
    together in concurrent threads on the same shared business
    object instance, two threads may lock each other.
    
       These are the error and exception that are logged.  And these
    may be logged repeatedly.
    .
    [2/19/15 8:46:56:694 CST] 00000138 wle_perf      E   CWLLG1179E:
     An exception occurred while recording error
    com.lombardisoftware.core.TeamWorksException: Distributed
    transaction completed. Either enlist this session in a new
    transaction or the NULL transaction.
     at
    com.lombardisoftware.core.TeamWorksException.asTeamWorksExceptio
    n(TeamWorksException.java:136)
     at
    com.lombardisoftware.utility.db.DbUtils$1.doInTransaction(DbUtil
    s.java:77)
     at
    com.lombardisoftware.server.core.TXCommand$3.call(TXCommand.java
    :96)
     at
    com.lombardisoftware.utility.spring.ProgrammaticTransactionSuppo
    rt.executeInExistingTransaction
    (ProgrammaticTransactionSupport.java:566)
     at
    com.lombardisoftware.utility.spring.ProgrammaticTransactionSuppo
    rt.execute(ProgrammaticTransactionSupport.java:296)
     at
    com.lombardisoftware.server.core.TXCommand.executeInDeadlockRetr
    yLoop(TXCommand.java:94)
     at
    com.lombardisoftware.utility.db.DbUtils.executeInTransaction(DbU
    tils.java:72)
     at
    com.lombardisoftware.server.tracking.transfer.DataTransferCore.p
    rocessSingly(DataTransferCore.java:340)
     at
    com.lombardisoftware.server.tracking.transfer.DataTransferCore.p
    rocessByClaim(DataTransferCore.java:285)
     at
    com.lombardisoftware.server.tracking.transfer.DataTransferCore.t
    ransferFromProcessServers(DataTransferCore.java:166)
     at
    com.lombardisoftware.server.tracking.transfer.DataTransferCore.t
    ransferData(DataTransferCore.java:124)
    
    . . .
    Caused by: com.microsoft.sqlserver.jdbc.SQLServerException:
    Distributed transaction completed. Either enlist this session
    in a new transaction or the NULL transaction.
     at
    com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabase
    Error(SQLServerException.java:196)
     at
    com.microsoft.sqlserver.jdbc.SQLServerStatement.getNextResult(SQ
    LServerStatement.java:1454)
    
    .--------------------------------------------------------------
       In another case, the root exception was this.
    Caused by:
    com.lombardisoftware.bpd.runtime.engine.BPDCaughtException:
    PreparedStatementCallback; bad SQL grammar [SELECT
    INSTANCE_VERSION, JDATA FROM BPM_SHARED_OBJECT_INSTANCE WHERE
    DEFINITION_VERSION_ID=? AND INSTANCE_VERSION=(SELECT
    MAX(INSTANCE_VERSION) FROM BPM_SHARED_OBJECT_INSTANCE WITH
    (ROWLOCK, READPAST) WHERE DEFINITION_VERSION_ID=?)];
    nested exception is
    com.microsoft.sqlserver.jdbc.SQLServerException: Distributed
    transaction completed. Either enlist this session in a new
    transaction or the NULL transaction.
        at
    com.lombardisoftware.bpd.component.flowcomponent.activity.worker
    .BPDActivityWorker.processCompletedTaskOutputs
    (BPDActivityWorker.java:12
    21)
        at
    com.lombardisoftware.bpd.component.flowcomponent.activity.worker
    .BPDActivityWorker.executeImplementation
    (BPDActivityWorker.java:480)
        at
    com.lombardisoftware.bpd.component.flowcomponent.activity.worker
    .BPDActivityWorker.doWork(BPDActivityWorker.java:257)
        at
    com.lombardisoftware.bpd.runtime.engine.FlowObjectExecutionTreeN
    ode.doWork(FlowObjectExecutionTreeNode.java:370)
        at
    com.lombardisoftware.bpd.runtime.engine.BPDEngine.executeTreeNod
    e(BPDEngine.java:316)
    

Local fix

  • n/a
    

Problem summary

  • Concurrent threads working with the same shared business object
    instance lock each other
    
    PROBLEM DETAILED DESCRIPTION:
    Shared business objects are intended to be used by multiple BPD
    and task instances in parallel. When updates and reads come
    together in concurrent threads on the same shared business
    object instance, two threads may lock each other.
    

Problem conclusion

  • The fix optimizes the access path to shared business objects and
    the statements that are used to prevent locks.
    
    FIX AVAILABILITY:
    iFix for 8.0.1.2 is/will be available on Fix Central; search for
    APAR JR49261 at http://www.ibm.com/support/fixcentral/
    iFix for 8.5.0.1 is/will be available on Fix Central; search for
    APAR JR49261 at http://www.ibm.com/support/fixcentral/
    Fix is also targetted for inclusion in next fixpack for
    BPM 8.0.1
    
    When obtaining any of the above fixes, be sure to download the
    accompanying readme, for itself, and any prerequisite fixes, and
    review them thoroughly.
    

Temporary fix

Comments

APAR Information

  • APAR number

    JR49261

  • Reported component name

    BPM STANDARD

  • Reported component ID

    5725C9500

  • Reported release

    801

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt / Xsystem

  • Submitted date

    2014-02-03

  • Closed date

    2014-03-14

  • Last modified date

    2016-09-09

  • 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

    BPM STANDARD

  • Fixed component ID

    5725C9500

Applicable component levels

  • R801 PSY

       UP

  • R850 PSY

       UP

[{"Line of Business":{"code":"LOB45","label":"Automation"},"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Product":{"code":"SSFTDH","label":"IBM Business Process Manager Standard"},"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"8.0.1"}]

Document Information

Modified date:
07 October 2021