Bug #533

tcpgate mode req_reply=1 in multiple calls on same connection id may loose to generate response

Added by Madars Vitolins 8 months ago. Updated 8 months ago.

Status:NewStart date:03/23/2020
Priority:NormalDue date:
Assignee:-% Done:

0%

Category:-
Target version:-

Description

In persistent mode in sync by connection id, several parallel outgoing message callers may not get reply back due to

func XATMIDispatchCall(pool *XATMIPool, nr int, ctxData *atmi.TPSRVCTXDATA,
    buf *atmi.TypedUBF, cd int, releaseChan bool) {
...
//If we work on sync way, only one data exchange over
            //The single channel, then lets add to id waiter list
            haveMConWaiter := false
            if MReqReply == RR_PERS_CONN_EX2NET {
                ac.TpLogInfo("Adding request to conn table, by "+
                    "comp_id: [%d]", con.id_comp)
                MConWaiterMutex.Lock()
                MConWaiter[con.id_comp] = &block <<<<< This is overwritten...
                MConWaiterMutex.Unlock()
                haveMConWaiter = true
            }

History

#1 Updated by Madars Vitolins 8 months ago

The issue may be overcome with having seqout=1 flag. This due to fact that outgoing connections must be serialized on particular connection to have single block.
Thus fix could be automatically setting seqout for connection mode 1

Also available in: Atom PDF