[MM-28397] Fix data race in SqlSupplier (#15419)
* Fix data race in SqlSupplier * Add comment Co-authored-by: Mattermod <mattermod@users.noreply.github.com>
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
96a3407b7a
Коммит
4e1824e143
@@ -115,7 +115,7 @@ type SqlSupplier struct {
|
||||
lockedToMaster bool
|
||||
context context.Context
|
||||
license *model.License
|
||||
licenseMutex sync.Mutex
|
||||
licenseMutex sync.RWMutex
|
||||
}
|
||||
|
||||
type TraceOnAdapter struct{}
|
||||
@@ -330,7 +330,10 @@ func (ss *SqlSupplier) GetMaster() *gorp.DbMap {
|
||||
}
|
||||
|
||||
func (ss *SqlSupplier) GetSearchReplica() *gorp.DbMap {
|
||||
if ss.license == nil {
|
||||
ss.licenseMutex.RLock()
|
||||
license := ss.license
|
||||
ss.licenseMutex.RUnlock()
|
||||
if license == nil {
|
||||
return ss.GetMaster()
|
||||
}
|
||||
|
||||
@@ -343,7 +346,10 @@ func (ss *SqlSupplier) GetSearchReplica() *gorp.DbMap {
|
||||
}
|
||||
|
||||
func (ss *SqlSupplier) GetReplica() *gorp.DbMap {
|
||||
if len(ss.settings.DataSourceReplicas) == 0 || ss.lockedToMaster || ss.license == nil {
|
||||
ss.licenseMutex.RLock()
|
||||
license := ss.license
|
||||
ss.licenseMutex.RUnlock()
|
||||
if len(ss.settings.DataSourceReplicas) == 0 || ss.lockedToMaster || license == nil {
|
||||
return ss.GetMaster()
|
||||
}
|
||||
|
||||
|
||||
Ссылка в новой задаче
Block a user