IBM Support

JR46595: DEADLOCK ON PROCESSCONTEXT TABLE WHEN TWO ASYNCHRONOUS RESPONSE MESSAGES ARRIVE SIMULTANEOUSLY

Subscribe

You can track all active APARs for this component.

 

APAR status

  • Closed as program error.

Error description

  • DEADLOCK ON PROCESSCONTEXT TABLE WHEN TWO ASYNCHRONOUS RESPONSE
    MESSAGES ARRIVE SIMULTANEOUSLY
    .
    In the processing of an asynchronous response message the
    corresponding row in process context table is first read and
    after that updated. When two such message are received at the
    same time a deadlock can occur.
    

Local fix

Problem summary

  • Problem Description:
    
    The For Each activity repeatedly runs the activities that it
    contains either sequentially or in parallel
    for a specified number of iterations. In case of parallel
    execution, the iterations may deadlock on the
    For Each instance when they determine their individual iteration
    counter value. In that case the following
    stack trace appears in the logs whereas the database JDBC driver
    classes may vary depending on the
    database system being used:
    
    [07/06/13 03:14:30:234 GMT] 00000113 TraceBPE      3
    com.ibm.bpe.engine.BpelEngine.onMessage(BpelEngine.java:1564)
    <Null Message>
    
    com.microsoft.sqlserver.jdbc.SQLServerException: Transaction
    (Process ID 165) was deadlocked on lock resources with another
    process and has been chosen as the deadlock victim. Rerun the
    transaction.
            at
    com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabase
    Error(SQLServerException.java:197)
            at
    com.microsoft.sqlserver.jdbc.SQLServerResultSet$FetchBuffer.next
    Row(SQLServerResultSet.java:4762)
            at
    com.microsoft.sqlserver.jdbc.SQLServerResultSet.fetchBufferNext(
    SQLServerResultSet.java:1682)
            at
    com.microsoft.sqlserver.jdbc.SQLServerResultSet.next(SQLServerRe
    sultSet.java:955)
            at
    com.ibm.ws.rsadapter.jdbc.WSJdbcResultSet.next(WSJdbcResultSet.j
    ava:3120)
            at
    com.ibm.bpe.database.DbAccActivityInstanceB.verifyVersionAndLock
    (DbAccActivityInstanceB.java:1005)
            at
    com.ibm.bpe.database.ActivityInstanceB.verifyVersionAndLock(Acti
    vityInstanceB.java:2433)
            at
    com.ibm.bpe.database.TomInstanceCache.verifyObjectInDb(TomInstan
    ceCache.java:385)
            at
    com.ibm.bpe.database.TomInstanceCache.get(TomInstanceCache.java:
    364)
            at
    com.ibm.bpe.database.ActivityInstanceB.selectCacheByPIIDATIDEHII
    DnullEnclosingFEIIDnull(ActivityInstanceB.java:2133)
            at
    com.ibm.bpe.database.Tom.getActivityInstanceB(Tom.java:12109)
            at
    com.ibm.bpe.engine.BpelVariableHandler.initializeVariable(BpelVa
    riableHandler.java:3213)
            at
    com.ibm.bpe.engine.BpelVariableHandler.createVariableInstancesFo
    rScope(BpelVariableHandler.java:1734)
            at
    com.ibm.bpe.engine.BpelScopeStateReady.startScopeInstance(BpelSc
    opeStateReady.java:65)
            at
    com.ibm.bpe.engine.BpelActivityKindComplexBegin.doActivate(BpelA
    ctivityKindComplexBegin.java:233)
            at
    com.ibm.bpe.engine.BpelActivityStateInactive.activateOrSkip(Bpel
    ActivityStateInactive.java:280)
            at
    com.ibm.bpe.engine.BpelEngineCore.continueControlLink(BpelEngine
    Core.java:291)
            at
    com.ibm.bpe.engine.BpelContinueLinkMessage3.execute(BpelContinue
    LinkMessage3.java:88)
            at
    com.ibm.bpe.engine.BpelEngine.onMessage(BpelEngine.java:1536)
            ...
    
    
    Problem Summary:
    
    The problem did happen because each individual iteration
    accesses the For Each activity to determine
    its individual iteration counter value.
    
    
    
    
    
    
    
    
    y
    

Problem conclusion

  • The problem has been fixed by passing the iteration counter
    value directly to each individual
    iteration and thus avoiding the need to access the For Each
    activity to determine the individual
    iteration counter value. Once installed, it is not advisable to
    remove the fix as long as there are
    messages in the BPEIntQueue. This is because the fix contains a
    new process navigation message that
    might stay on the BPEIntQueue and that would not be readable an
    more if the fix would be removed
    
    Problem will be fixed with V850 FP1
    

Temporary fix

Comments

APAR Information

  • APAR number

    JR46595

  • Reported component name

    BPM ADVANCED

  • Reported component ID

    5725C9400

  • Reported release

    850

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2013-05-08

  • Closed date

    2013-08-15

  • Last modified date

    2013-08-15

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

    IV41165

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

Fix information

  • Fixed component name

    BPM ADVANCED

  • Fixed component ID

    5725C9400

Applicable component levels

  • R850 PSY

       UP

[{"Business Unit":{"code":"BU053","label":"Cloud & Data Platform"},"Product":{"code":"SSFTN5","label":"IBM Business Process Manager Advanced"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"8.5","Edition":"","Line of Business":{"code":"LOB36","label":"IBM Automation"}}]

Document Information

Modified date:
15 August 2013