MM-29478: Fix race in TestNotifyClusterEvent (#16240)
The messages slice was accessed in a race manner. We protect it with a mutex ```release-note NONE ``` https://mattermost.atlassian.net/browse/MM-29478
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
ce28d41aef
Коммит
6c71fbaebd
@@ -4,12 +4,15 @@
|
|||||||
package testlib
|
package testlib
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"sync"
|
||||||
|
|
||||||
"github.com/mattermost/mattermost-server/v5/einterfaces"
|
"github.com/mattermost/mattermost-server/v5/einterfaces"
|
||||||
"github.com/mattermost/mattermost-server/v5/model"
|
"github.com/mattermost/mattermost-server/v5/model"
|
||||||
)
|
)
|
||||||
|
|
||||||
type FakeClusterInterface struct {
|
type FakeClusterInterface struct {
|
||||||
clusterMessageHandler einterfaces.ClusterMessageHandler
|
clusterMessageHandler einterfaces.ClusterMessageHandler
|
||||||
|
mut sync.RWMutex
|
||||||
messages []*model.ClusterMessage
|
messages []*model.ClusterMessage
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -34,6 +37,8 @@ func (c *FakeClusterInterface) GetMyClusterInfo() *model.ClusterInfo { return ni
|
|||||||
func (c *FakeClusterInterface) GetClusterInfos() []*model.ClusterInfo { return nil }
|
func (c *FakeClusterInterface) GetClusterInfos() []*model.ClusterInfo { return nil }
|
||||||
|
|
||||||
func (c *FakeClusterInterface) SendClusterMessage(message *model.ClusterMessage) {
|
func (c *FakeClusterInterface) SendClusterMessage(message *model.ClusterMessage) {
|
||||||
|
c.mut.Lock()
|
||||||
|
defer c.mut.Unlock()
|
||||||
c.messages = append(c.messages, message)
|
c.messages = append(c.messages, message)
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -64,9 +69,13 @@ func (c *FakeClusterInterface) GetPluginStatuses() (model.PluginStatuses, *model
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (c *FakeClusterInterface) GetMessages() []*model.ClusterMessage {
|
func (c *FakeClusterInterface) GetMessages() []*model.ClusterMessage {
|
||||||
|
c.mut.RLock()
|
||||||
|
defer c.mut.RUnlock()
|
||||||
return c.messages
|
return c.messages
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *FakeClusterInterface) ClearMessages() {
|
func (c *FakeClusterInterface) ClearMessages() {
|
||||||
|
c.mut.Lock()
|
||||||
|
defer c.mut.Unlock()
|
||||||
c.messages = nil
|
c.messages = nil
|
||||||
}
|
}
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user