[#3896cn] Fix nil pointer when passing data through patch
This commit is contained in:
parent
0ce95aa2e3
commit
4ce9c83fad
|
@ -46,13 +46,22 @@ func (s *Server) UpdateDataStructure(data []byte) error {
|
||||||
s.Container.OomDisabled = v
|
s.Container.OomDisabled = v
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Mergo also cannot handle this boolean value.
|
||||||
|
if v, err := jsonparser.GetBoolean(data, "suspended"); err != nil {
|
||||||
|
if err != jsonparser.KeyPathNotFoundError {
|
||||||
|
return errors.WithStack(err)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
s.Suspended = v
|
||||||
|
}
|
||||||
|
|
||||||
// Environment and Mappings should be treated as a full update at all times, never a
|
// Environment and Mappings should be treated as a full update at all times, never a
|
||||||
// true patch, otherwise we can't know what we're passing along.
|
// true patch, otherwise we can't know what we're passing along.
|
||||||
if len(src.EnvVars) > 0 {
|
if src.EnvVars != nil && len(src.EnvVars) > 0 {
|
||||||
s.EnvVars = src.EnvVars
|
s.EnvVars = src.EnvVars
|
||||||
}
|
}
|
||||||
|
|
||||||
if len(src.Allocations.Mappings) > 0 {
|
if src.Allocations != nil && src.Allocations.Mappings != nil && len(src.Allocations.Mappings) > 0 {
|
||||||
s.Allocations.Mappings = src.Allocations.Mappings
|
s.Allocations.Mappings = src.Allocations.Mappings
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -89,6 +98,8 @@ func (s *Server) runBackgroundActions() {
|
||||||
// yet, do it immediately.
|
// yet, do it immediately.
|
||||||
go func(server *Server) {
|
go func(server *Server) {
|
||||||
if server.Suspended && server.State != ProcessOfflineState {
|
if server.Suspended && server.State != ProcessOfflineState {
|
||||||
|
zap.S().Infow("server suspended with running process state, terminating now", zap.String("server", server.Uuid))
|
||||||
|
|
||||||
if err := server.Environment.Terminate(os.Kill); err != nil {
|
if err := server.Environment.Terminate(os.Kill); err != nil {
|
||||||
zap.S().Warnw(
|
zap.S().Warnw(
|
||||||
"failed to terminate server environment after seeing suspension",
|
"failed to terminate server environment after seeing suspension",
|
||||||
|
|
Loading…
Reference in New Issue
Block a user