Menu

#2889 imm: avoid BAD_HANDLE result on requests after timeout on CCB apply

5.18.09
fixed
nobody
None
enhancement
imm
nd
major
False
2018-09-29
2018-07-04
No

If CCB apply (IMMND_EVT_A2ND_CCB_APPLY) gets TIMEOUT (e.g: PBE is hung during that time), here is what will be happening at IMMND and IMMA:

IMMND purges that synchronous request by doing following main jobs:
1) Attemp to abort CCB even the CCB state is in critical.
2) Remove client node from client dabase.

At IMMA, inside saImmOmCcbApply() call, imma_proc_recover_ccb_result() is invoked to get CCB result by sending IMMND_EVT_A2ND_RECOVER_CCB_OUTCOME to the IMMND. After the CCB is commited, imma_proc_recover_ccb_result() returns SA_AIS_OK to saImmOmCcbApply() and then SA_AIS_OK to user.

Later on, when user performs any IMM call on that IMM OM handle such as saImmOmFinalize() will result in BAD_HANDLE as the client node has already removed in #2 above.

See syslog and imma trace from the attachment.

1 Attachments

Related

Wiki: ChangeLog-5.18.09

Discussion

  • Vu Minh Nguyen

    Vu Minh Nguyen - 2018-07-04
    • Description has changed:

    Diff:

    --- old
    +++ new
    @@ -7,3 +7,5 @@
     At IMMA, inside `saImmOmCcbApply()` call, `imma_proc_recover_ccb_result()` is invoked to get CCB result by sending `IMMND_EVT_A2ND_RECOVER_CCB_OUTCOME` to the IMMND. After the CCB is commited, `imma_proc_recover_ccb_result()` returns SA_AIS_OK to `saImmOmCcbApply()` and then SA_AIS_OK to user.
    
     Later on, when user performs any IMM call on that IMM OM handle such as `saImmOmFinalize()` will result in `BAD_HANDLE` as the client node has already removed in #2 above.
    +
    +See syslog and imma trace from the attachment.
    
    • Attachments has changed:

    Diff:

    --- old
    +++ new
    @@ -0,0 +1 @@
    +ccb_apply_get_TIMEOUT_result_in_BAD_HANDLE.txt (30.3 kB; text/plain)
    
     
  • Vu Minh Nguyen

    Vu Minh Nguyen - 2018-07-06
    • status: assigned --> review
     
  • Vu Minh Nguyen

    Vu Minh Nguyen - 2018-07-18
    • Type: defect --> enhancement
     
  • Vu Minh Nguyen

    Vu Minh Nguyen - 2018-07-18

    If user does recovery the handle in this case, then no functionality is impacted. But if there are choices about getting SA_AIS_OK or getting BAD_HANDLE in subsequence call,
    user probably prefer to the former one if there is no consequence/issue at all.

    So, change this ticket to enhancement instead.

     
  • Vu Minh Nguyen

    Vu Minh Nguyen - 2018-07-25
    • summary: imm: purge sync request on client having critical CCB --> imm: avoid BAD_HANDLE result on requests after timeout on CCB apply
     
  • Vu Minh Nguyen

    Vu Minh Nguyen - 2018-07-27
    • status: review --> fixed
    • assigned_to: Vu Minh Nguyen --> nobody
     
  • Vu Minh Nguyen

    Vu Minh Nguyen - 2018-07-27

    commit ede5191f9caf41836a65acaffd648e7ac0b00590 (HEAD -> develop, origin/develop, ticket-2889)
    Author: Vu Minh Nguyen vu.m.nguyen@dektech.com.au
    Date: Fri Jul 27 09:37:28 2018 +0700

    imm: avoid BAD_HANDLE result on requests after timeout on CCB apply [#2889]
    
    When CCB apply (IMMND_EVT_A2ND_CCB_APPLY) gets TIMEOUT, IMMND will be
    informed the timeout via msg type IMMND_EVT_A2ND_CL_TIMEOUT, then
    doing following things:
    1) Attemp to abort CCB even the CCB state is in critical.
    2) Remove client node from client dabase.
    
    Once the CCB has been comitted, saImmOmCcbApply() returns SA_AIS_OK to user.
    As the client is removed at #2 above, any IMM operations on the IMM OM handle
    such as saImmOmCcbObjectDelete() or saImmOmFinalize() will result in BAD_HANDLE.
    
    With this enhancement, the client having critical CCB will not be purged
    when timeout happens at IMM sync requests.
    
     
  • Gary Lee

    Gary Lee - 2018-09-29
    • Component: imm --> unknown
     
  • Gary Lee

    Gary Lee - 2018-09-29
    • Component: unknown --> imm
     

Log in to post a comment.