Fix concurrent map access panic

This commit is contained in:
Darren Shepherd
2020-07-21 08:26:08 -07:00
parent 4e81175966
commit 10b1eac592

View File

@@ -94,24 +94,24 @@ func (s *Store) sendSchemas(result chan types.APIEvent, apiOp *types.APIRequest,
return oldSchemas return oldSchemas
} }
inNewSchemas := map[string]bool{}
for _, apiObject := range schemastore.FilterSchemas(apiOp, schemas.Schemas).Objects { for _, apiObject := range schemastore.FilterSchemas(apiOp, schemas.Schemas).Objects {
result <- types.APIEvent{ result <- types.APIEvent{
Name: types.ChangeAPIEvent, Name: types.ChangeAPIEvent,
ResourceType: "schema", ResourceType: "schema",
Object: apiObject, Object: apiObject,
} }
delete(oldSchemas.Schemas, apiObject.ID) inNewSchemas[apiObject.ID] = true
} }
for id, oldSchema := range oldSchemas.Schemas { for _, oldSchema := range schemastore.FilterSchemas(apiOp, oldSchemas.Schemas).Objects {
if inNewSchemas[oldSchema.ID] {
continue
}
result <- types.APIEvent{ result <- types.APIEvent{
Name: types.ChangeAPIEvent, Name: types.RemoveAPIEvent,
ResourceType: "schema", ResourceType: "schema",
Object: types.APIObject{ Object: oldSchema,
Type: "schema",
ID: id,
Object: oldSchema,
},
} }
} }