From 10b1eac59208d4e8d91bb4f5796700061937bf13 Mon Sep 17 00:00:00 2001 From: Darren Shepherd Date: Tue, 21 Jul 2020 08:26:08 -0700 Subject: [PATCH] Fix concurrent map access panic --- pkg/resources/schemas/template.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/pkg/resources/schemas/template.go b/pkg/resources/schemas/template.go index b32b2c5..b683aad 100644 --- a/pkg/resources/schemas/template.go +++ b/pkg/resources/schemas/template.go @@ -94,24 +94,24 @@ func (s *Store) sendSchemas(result chan types.APIEvent, apiOp *types.APIRequest, return oldSchemas } + inNewSchemas := map[string]bool{} for _, apiObject := range schemastore.FilterSchemas(apiOp, schemas.Schemas).Objects { result <- types.APIEvent{ Name: types.ChangeAPIEvent, ResourceType: "schema", 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{ - Name: types.ChangeAPIEvent, + Name: types.RemoveAPIEvent, ResourceType: "schema", - Object: types.APIObject{ - Type: "schema", - ID: id, - Object: oldSchema, - }, + Object: oldSchema, } }