Skip to content

Commit 1f90985

Browse files
committed
Fix race condition in test
1 parent 56fcb23 commit 1f90985

File tree

2 files changed

+14
-10
lines changed

2 files changed

+14
-10
lines changed

service/matching/matchingEngine_test.go

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -456,9 +456,10 @@ func (s *matchingEngineSuite) TestSyncMatchActivities() {
456456
s.matchingEngine.config.RangeSize = rangeSize // override to low number for the test
457457

458458
dispatchTTL := time.Nanosecond
459+
dPtr := _maxDispatchDefault
459460
mgr := newTaskListManagerWithRateLimiter(
460461
s.matchingEngine, tlID, s.matchingEngine.config,
461-
newRateLimiter(&_maxDispatchDefault, dispatchTTL),
462+
newRateLimiter(&dPtr, dispatchTTL),
462463
)
463464
s.matchingEngine.updateTaskList(tlID, mgr)
464465
s.taskManager.getTaskListManager(tlID).rangeID = initialRangeID
@@ -498,15 +499,14 @@ func (s *matchingEngineSuite) TestSyncMatchActivities() {
498499
}, nil)
499500

500501
zeroDispatchCt := 0
501-
var maxDispatch float64
502502
for i := int64(0); i < taskCount; i++ {
503503
scheduleID := i * 3
504504

505505
var wg sync.WaitGroup
506506

507507
var result *workflow.PollForActivityTaskResponse
508508
var pollErr error
509-
maxDispatch = float64(i)
509+
maxDispatch := float64(i)
510510
if i%2 == 0 {
511511
maxDispatch = 0
512512
}
@@ -619,9 +619,10 @@ func (s *matchingEngineSuite) concurrentPublishConsumeActivities(
619619
tlID := &taskListID{domainID: domainID, taskListName: tl, taskType: persistence.TaskListTypeActivity}
620620
dispatchTTL := time.Nanosecond
621621
s.matchingEngine.config.RangeSize = rangeSize // override to low number for the test
622+
dPtr := _maxDispatchDefault
622623
mgr := newTaskListManagerWithRateLimiter(
623624
s.matchingEngine, tlID, s.matchingEngine.config,
624-
newRateLimiter(&_maxDispatchDefault, dispatchTTL),
625+
newRateLimiter(&dPtr, dispatchTTL),
625626
)
626627
s.matchingEngine.updateTaskList(tlID, mgr)
627628
s.taskManager.getTaskListManager(tlID).rangeID = initialRangeID
@@ -685,12 +686,12 @@ func (s *matchingEngineSuite) concurrentPublishConsumeActivities(
685686
Identity: &identity,
686687
})}
687688
}, nil)
688-
var maxDispatch float64
689+
var throttleMu sync.Mutex
689690
throttleCt := 0
690691
for p := 0; p < workerCount; p++ {
691-
go func() {
692+
go func(wNum int) {
692693
for i := int64(0); i < taskCount; {
693-
maxDispatch = dispatchLimitFn(p, i)
694+
maxDispatch := dispatchLimitFn(wNum, i)
694695
result, err := s.matchingEngine.PollForActivityTask(s.callContext, &matching.PollForActivityTaskRequest{
695696
DomainUUID: common.StringPtr(domainID),
696697
PollRequest: &workflow.PollForActivityTaskRequest{
@@ -701,7 +702,9 @@ func (s *matchingEngineSuite) concurrentPublishConsumeActivities(
701702
})
702703
if err != nil {
703704
s.Contains(err.Error(), "ServiceBusyError")
705+
throttleMu.Lock()
704706
throttleCt++
707+
throttleMu.Unlock()
705708
i++
706709
continue
707710
}
@@ -729,7 +732,7 @@ func (s *matchingEngineSuite) concurrentPublishConsumeActivities(
729732
i++
730733
}
731734
wg.Done()
732-
}()
735+
}(p)
733736
}
734737
wg.Wait()
735738
totalTasks := int(taskCount) * workerCount

service/matching/taskListManager.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ const (
4343
)
4444

4545
// NOTE: Is this good enough for stress tests?
46-
var (
46+
const (
4747
_maxDispatchDefault = 100000.0
4848
_dispatchLimitTTL = time.Second
4949
)
@@ -117,8 +117,9 @@ func (rl *rateLimiter) Consume(count int, timeout time.Duration) bool {
117117
func newTaskListManager(
118118
e *matchingEngineImpl, taskList *taskListID, config *Config, maxDispatchPerSecond *float64,
119119
) taskListManager {
120+
dPtr := _maxDispatchDefault
120121
if maxDispatchPerSecond == nil {
121-
maxDispatchPerSecond = &_maxDispatchDefault
122+
maxDispatchPerSecond = &dPtr
122123
}
123124
rl := newRateLimiter(maxDispatchPerSecond, _dispatchLimitTTL)
124125
return newTaskListManagerWithRateLimiter(e, taskList, config, rl)

0 commit comments

Comments
 (0)