IBM Support

IV41165: 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.
    

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 any
    more if the fix would be removed.
    
    iFix available on top of V700 FP5
    

Temporary fix

Comments

APAR Information

  • APAR number

    IV41165

  • Reported component name

    BUS PRC CHOREOG

  • Reported component ID

    5655FLW11

  • Reported release

    700

  • Status

    CLOSED PER

  • PE

    NoPE

  • HIPER

    NoHIPER

  • Special Attention

    NoSpecatt

  • Submitted date

    2013-04-30

  • Closed date

    2013-08-15

  • Last modified date

    2013-08-15

Fix information

  • Fixed component name

    BUS PRC CHOREOG

  • Fixed component ID

    5655FLW11

Applicable component levels

  • R700 PSY

       UP

[{"Business Unit":{"code":"BU048","label":"IBM Software"},"Product":{"code":"SSCBJCZ","label":"Business Process Choreographer"},"Component":"","ARM Category":[],"Platform":[{"code":"PF025","label":"Platform Independent"}],"Version":"7.0","Edition":"","Line of Business":{"code":"","label":""}}]

Document Information

Modified date:
15 August 2013