MM-11649: Fix caching issue in channel API endpoints. (#9345)

This fixes an issue where the cached Channel objects would contain data
from a failed update when the update to the database failed.
Этот коммит содержится в:
George Goldberg
2018-09-06 22:41:19 +01:00
коммит произвёл Carlos Tadeu Panato Junior
родитель d2190527ea
Коммит 72258266aa
2 изменённых файлов: 10 добавлений и 4 удалений

Просмотреть файл

@@ -97,10 +97,11 @@ func updateChannel(c *Context, w http.ResponseWriter, r *http.Request) {
} }
var oldChannel *model.Channel var oldChannel *model.Channel
var err *model.AppError if originalOldChannel, err := c.App.GetChannel(channel.Id); err != nil {
if oldChannel, err = c.App.GetChannel(channel.Id); err != nil {
c.Err = err c.Err = err
return return
} else {
oldChannel = originalOldChannel.DeepCopy()
} }
switch oldChannel.Type { switch oldChannel.Type {
@@ -229,10 +230,12 @@ func patchChannel(c *Context, w http.ResponseWriter, r *http.Request) {
return return
} }
oldChannel, err := c.App.GetChannel(c.Params.ChannelId) var oldChannel *model.Channel
if err != nil { if originalOldChannel, err := c.App.GetChannel(c.Params.ChannelId); err != nil {
c.Err = err c.Err = err
return return
} else {
oldChannel = originalOldChannel.DeepCopy()
} }
switch oldChannel.Type { switch oldChannel.Type {

Просмотреть файл

@@ -59,6 +59,9 @@ type ChannelPatch struct {
func (o *Channel) DeepCopy() *Channel { func (o *Channel) DeepCopy() *Channel {
copy := *o copy := *o
if copy.SchemeId != nil {
copy.SchemeId = NewString(*o.SchemeId)
}
return &copy return &copy
} }