Skip to content

Commit 1607e8b

Browse files
update resendMutex and unit test
1 parent bbefdb7 commit 1607e8b

File tree

5 files changed

+16
-39
lines changed

5 files changed

+16
-39
lines changed

in_session.go

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -231,15 +231,7 @@ func (state inSession) resendMessages(session *session, beginSeqNo, endSeqNo int
231231
}
232232

233233
session.resendMutex.Lock()
234-
session.resendRequestActive = true
235-
session.resendMutex.Unlock()
236-
237-
defer func() {
238-
session.resendMutex.Lock()
239-
session.resendRequestActive = false
240-
session.resendMutex.Unlock()
241-
session.resendCond.Broadcast()
242-
}()
234+
defer session.resendMutex.Unlock()
243235

244236
seqNum := beginSeqNo
245237
nextSeqNum := seqNum

in_session_test.go

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -388,15 +388,9 @@ func (s *InSessionTestSuite) TestFIXMsgInResendRequestBlocksSend() {
388388
Return(nil)
389389

390390
s.MockApp.On("FromAdmin").Return(nil)
391-
go s.fixMsgIn(s.session, s.ResendRequest(1))
391+
s.fixMsgIn(s.session, s.ResendRequest(1))
392392

393-
s.MockApp.AssertNumberOfCalls(s.T(), "ToApp", 1)
394393
s.NextSenderMsgSeqNum(2)
395-
396-
s.Require().Nil(s.session.send(s.NewOrderSingle()))
397-
s.LastToAppMessageSent()
398-
s.MockApp.AssertNumberOfCalls(s.T(), "ToApp", 2)
399-
s.NextSenderMsgSeqNum(3)
400394
}
401395

402396
func (s *InSessionTestSuite) TestFIXMsgInTargetTooLow() {

quickfix_test.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
package quickfix
1717

1818
import (
19-
"sync"
2019
"time"
2120

2221
"github.com/stretchr/testify/mock"
@@ -222,7 +221,6 @@ func (s *SessionSuiteRig) Init() {
222221
messageOut: s.Receiver.sendChannel,
223222
sessionEvent: make(chan internal.Event),
224223
}
225-
s.session.resendCond = sync.NewCond(&s.resendMutex)
226224
s.MaxLatency = 120 * time.Second
227225
}
228226

session.go

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,8 @@ type session struct {
4040
toSend [][]byte
4141

4242
// Mutex for access to toSend.
43-
sendMutex sync.RWMutex
44-
45-
resendRequestActive bool
46-
resendMutex sync.Mutex
47-
resendCond *sync.Cond
43+
sendMutex sync.Mutex
44+
resendMutex sync.RWMutex
4845

4946
sessionEvent chan internal.Event
5047
messageEvent chan bool
@@ -275,8 +272,8 @@ func (s *session) resend(msg *Message) bool {
275272

276273
// queueForSend will validate, persist, and queue the message for send.
277274
func (s *session) queueForSend(msg *Message) error {
278-
s.sendMutex.RLock()
279-
defer s.sendMutex.RUnlock()
275+
s.sendMutex.Lock()
276+
defer s.sendMutex.Unlock()
280277

281278
msgBytes, err := s.prepMessageForSend(msg, nil)
282279
if err != nil {
@@ -306,14 +303,11 @@ func (s *session) sendInReplyTo(msg *Message, inReplyTo *Message) error {
306303
return s.queueForSend(msg)
307304
}
308305

309-
s.resendMutex.Lock()
310-
for s.resendRequestActive {
311-
s.resendCond.Wait()
312-
}
313-
s.resendMutex.Unlock()
306+
s.resendMutex.RLock()
307+
defer s.resendMutex.RUnlock()
314308

315-
s.sendMutex.RLock()
316-
defer s.sendMutex.RUnlock()
309+
s.sendMutex.Lock()
310+
defer s.sendMutex.Unlock()
317311

318312
msgBytes, err := s.prepMessageForSend(msg, inReplyTo)
319313
if err != nil {
@@ -328,8 +322,8 @@ func (s *session) sendInReplyTo(msg *Message, inReplyTo *Message) error {
328322

329323
// dropAndReset will drop the send queue and reset the message store.
330324
func (s *session) dropAndReset() error {
331-
s.sendMutex.RLock()
332-
defer s.sendMutex.RUnlock()
325+
s.sendMutex.Lock()
326+
defer s.sendMutex.Unlock()
333327

334328
s.dropQueued()
335329
return s.store.Reset()
@@ -340,8 +334,8 @@ func (s *session) dropAndSend(msg *Message) error {
340334
return s.dropAndSendInReplyTo(msg, nil)
341335
}
342336
func (s *session) dropAndSendInReplyTo(msg *Message, inReplyTo *Message) error {
343-
s.sendMutex.RLock()
344-
defer s.sendMutex.RUnlock()
337+
s.sendMutex.Lock()
338+
defer s.sendMutex.Unlock()
345339

346340
msgBytes, err := s.prepMessageForSend(msg, inReplyTo)
347341
if err != nil {
@@ -423,8 +417,8 @@ func (s *session) dropQueued() {
423417
}
424418

425419
func (s *session) EnqueueBytesAndSend(msg []byte) {
426-
s.sendMutex.RLock()
427-
defer s.sendMutex.RUnlock()
420+
s.sendMutex.Lock()
421+
defer s.sendMutex.Unlock()
428422

429423
s.toSend = append(s.toSend, msg)
430424
s.sendQueued(true)

session_factory.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,6 @@ func (f sessionFactory) newSession(
8989
sessionID: sessionID,
9090
stopOnce: sync.Once{},
9191
}
92-
s.resendCond = sync.NewCond(&s.resendMutex)
9392

9493
var validatorSettings = defaultValidatorSettings
9594
if settings.HasSetting(config.ValidateFieldsOutOfOrder) {

0 commit comments

Comments
 (0)