From 0d91bf323ec32f46453b2c4c1877e8eeb830ab4d Mon Sep 17 00:00:00 2001 From: Joram Wilander Date: Wed, 27 Jun 2018 05:08:40 -0400 Subject: Lock bulk importing to master database node (#9012) --- store/sqlstore/store.go | 2 ++ store/sqlstore/supplier.go | 11 ++++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) (limited to 'store/sqlstore') diff --git a/store/sqlstore/store.go b/store/sqlstore/store.go index fc7b3be18..500f98235 100644 --- a/store/sqlstore/store.go +++ b/store/sqlstore/store.go @@ -65,6 +65,8 @@ type SqlStore interface { RemoveIndexIfExists(indexName string, tableName string) bool GetAllConns() []*gorp.DbMap Close() + LockToMaster() + UnlockFromMaster() Team() store.TeamStore Channel() store.ChannelStore Post() store.PostStore diff --git a/store/sqlstore/supplier.go b/store/sqlstore/supplier.go index 02a3cef7f..1e6bdcba1 100644 --- a/store/sqlstore/supplier.go +++ b/store/sqlstore/supplier.go @@ -105,6 +105,7 @@ type SqlSupplier struct { searchReplicas []*gorp.DbMap oldStores SqlSupplierOldStores settings *model.SqlSettings + lockedToMaster bool } func NewSqlSupplier(settings model.SqlSettings, metrics einterfaces.MetricsInterface) *SqlSupplier { @@ -283,7 +284,7 @@ func (ss *SqlSupplier) GetSearchReplica() *gorp.DbMap { } func (ss *SqlSupplier) GetReplica() *gorp.DbMap { - if len(ss.settings.DataSourceReplicas) == 0 { + if len(ss.settings.DataSourceReplicas) == 0 || ss.lockedToMaster { return ss.GetMaster() } @@ -801,6 +802,14 @@ func (ss *SqlSupplier) Close() { } } +func (ss *SqlSupplier) LockToMaster() { + ss.lockedToMaster = true +} + +func (ss *SqlSupplier) UnlockFromMaster() { + ss.lockedToMaster = false +} + func (ss *SqlSupplier) Team() store.TeamStore { return ss.oldStores.team } -- cgit v1.2.3-1-g7c22