Don't hold lock while sending transaction

This commit is contained in:
Neil Alexander 2020-12-07 11:43:35 +00:00
parent 36356ac8d1
commit 8861f907ed
No known key found for this signature in database
GPG key ID: A02A2019A2BB0944

View file

@ -279,11 +279,13 @@ func (oq *destinationQueue) backgroundSend() {
if eduCount > maxEDUsPerTransaction {
eduCount = maxEDUsPerTransaction
}
toSendPDUs := oq.pendingPDUs[:pduCount]
toSendEDUs := oq.pendingEDUs[:eduCount]
oq.pendingMutex.RUnlock()
// If we have pending PDUs or EDUs then construct a transaction.
// Try sending the next transaction and see what happens.
transaction, pc, ec, terr := oq.nextTransaction(oq.pendingPDUs[:pduCount], oq.pendingEDUs[:eduCount])
oq.pendingMutex.RUnlock()
transaction, pc, ec, terr := oq.nextTransaction(toSendPDUs, toSendEDUs)
if terr != nil {
// We failed to send the transaction. Mark it as a failure.
oq.statistics.Failure()