Reduce data races (#14549)
* Add race conditions into test * Fix Race in GetManager() * DataAsync() use error chan * just log no chan * finish
This commit is contained in:
@ -25,6 +25,7 @@ var (
|
||||
// ErrExecTimeout represent a timeout error
|
||||
ErrExecTimeout = errors.New("Process execution timeout")
|
||||
manager *Manager
|
||||
managerInit sync.Once
|
||||
|
||||
// DefaultContext is the default context to run processing commands in
|
||||
DefaultContext = context.Background()
|
||||
@ -48,11 +49,11 @@ type Manager struct {
|
||||
|
||||
// GetManager returns a Manager and initializes one as singleton if there's none yet
|
||||
func GetManager() *Manager {
|
||||
if manager == nil {
|
||||
managerInit.Do(func() {
|
||||
manager = &Manager{
|
||||
processes: make(map[int64]*Process),
|
||||
}
|
||||
}
|
||||
})
|
||||
return manager
|
||||
}
|
||||
|
||||
|
@ -12,6 +12,15 @@ import (
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func TestGetManager(t *testing.T) {
|
||||
go func() {
|
||||
// test race protection
|
||||
_ = GetManager()
|
||||
}()
|
||||
pm := GetManager()
|
||||
assert.NotNil(t, pm)
|
||||
}
|
||||
|
||||
func TestManager_Add(t *testing.T) {
|
||||
pm := Manager{processes: make(map[int64]*Process)}
|
||||
|
||||
|
Reference in New Issue
Block a user