Fix concurrent map writes, close #3126

This commit is contained in:
Jinzhu 2020-07-10 07:14:37 +08:00
parent c091cd6aa4
commit bc3728a18f
1 changed files with 7 additions and 7 deletions

View File

@ -207,8 +207,7 @@ func Parse(dest interface{}, cacheStore *sync.Map, namer Namer) (*Schema, error)
} }
} }
cacheStore.Store(modelType, schema) if _, loaded := cacheStore.LoadOrStore(modelType, schema); !loaded {
// parse relations for unidentified fields // parse relations for unidentified fields
for _, field := range schema.Fields { for _, field := range schema.Fields {
if field.DataType == "" && field.Creatable { if field.DataType == "" && field.Creatable {
@ -217,6 +216,7 @@ func Parse(dest interface{}, cacheStore *sync.Map, namer Namer) (*Schema, error)
} }
} }
} }
}
return schema, schema.err return schema, schema.err
} }