Fixing race in update channel (#7269)
* Fixing race in update channel * Switching to struct copy
Этот коммит содержится в:
@@ -53,6 +53,11 @@ type ChannelPatch struct {
|
|||||||
Purpose *string `json:"purpose"`
|
Purpose *string `json:"purpose"`
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (o *Channel) DeepCopy() *Channel {
|
||||||
|
copy := *o
|
||||||
|
return ©
|
||||||
|
}
|
||||||
|
|
||||||
func (o *Channel) ToJson() string {
|
func (o *Channel) ToJson() string {
|
||||||
b, err := json.Marshal(o)
|
b, err := json.Marshal(o)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
@@ -27,6 +27,15 @@ func TestChannelJson(t *testing.T) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestChannelCopy(t *testing.T) {
|
||||||
|
o := Channel{Id: NewId(), Name: NewId()}
|
||||||
|
ro := o.DeepCopy()
|
||||||
|
|
||||||
|
if o.Id != ro.Id {
|
||||||
|
t.Fatal("Ids do not match")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func TestChannelPatch(t *testing.T) {
|
func TestChannelPatch(t *testing.T) {
|
||||||
p := &ChannelPatch{Name: new(string), DisplayName: new(string), Header: new(string), Purpose: new(string)}
|
p := &ChannelPatch{Name: new(string), DisplayName: new(string), Header: new(string), Purpose: new(string)}
|
||||||
*p.Name = NewId()
|
*p.Name = NewId()
|
||||||
|
|||||||
@@ -405,7 +405,7 @@ func (s SqlChannelStore) get(id string, master bool, allowFromCache bool) StoreC
|
|||||||
if metrics != nil {
|
if metrics != nil {
|
||||||
metrics.IncrementMemCacheHitCounter("Channel")
|
metrics.IncrementMemCacheHitCounter("Channel")
|
||||||
}
|
}
|
||||||
result.Data = cacheItem.(*model.Channel)
|
result.Data = (cacheItem.(*model.Channel)).DeepCopy()
|
||||||
storeChannel <- result
|
storeChannel <- result
|
||||||
close(storeChannel)
|
close(storeChannel)
|
||||||
return
|
return
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user