Fix Race condition in tablename
Fixes https://github.com/jinzhu/gorm/issues/1407
This commit is contained in:
parent
82eb9f8a5b
commit
1acdf8b3ea
@ -17,6 +17,8 @@ var DefaultTableNameHandler = func(db *DB, defaultTableName string) string {
|
|||||||
return defaultTableName
|
return defaultTableName
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var mutex sync.Mutex
|
||||||
|
|
||||||
type safeModelStructsMap struct {
|
type safeModelStructsMap struct {
|
||||||
m map[reflect.Type]*ModelStruct
|
m map[reflect.Type]*ModelStruct
|
||||||
l *sync.RWMutex
|
l *sync.RWMutex
|
||||||
@ -50,6 +52,9 @@ type ModelStruct struct {
|
|||||||
|
|
||||||
// TableName get model's table name
|
// TableName get model's table name
|
||||||
func (s *ModelStruct) TableName(db *DB) string {
|
func (s *ModelStruct) TableName(db *DB) string {
|
||||||
|
mutex.Lock()
|
||||||
|
defer mutex.Unlock()
|
||||||
|
|
||||||
if s.defaultTableName == "" && db != nil && s.ModelType != nil {
|
if s.defaultTableName == "" && db != nil && s.ModelType != nil {
|
||||||
// Set default table name
|
// Set default table name
|
||||||
if tabler, ok := reflect.New(s.ModelType).Interface().(tabler); ok {
|
if tabler, ok := reflect.New(s.ModelType).Interface().(tabler); ok {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user