summaryrefslogtreecommitdiffstats
path: root/store/sqlstore/supplier.go
diff options
context:
space:
mode:
authorJoram Wilander <jwawilander@gmail.com>2018-06-27 05:08:40 -0400
committerGeorge Goldberg <george@gberg.me>2018-06-27 10:08:40 +0100
commit0d91bf323ec32f46453b2c4c1877e8eeb830ab4d (patch)
treed458825ac3f5c710e95fc171fa23217377e53b37 /store/sqlstore/supplier.go
parentf17c15c9d83e42e46adb8e8c1fb9706b22fe6f50 (diff)
downloadchat-0d91bf323ec32f46453b2c4c1877e8eeb830ab4d.tar.gz
chat-0d91bf323ec32f46453b2c4c1877e8eeb830ab4d.tar.bz2
chat-0d91bf323ec32f46453b2c4c1877e8eeb830ab4d.zip
Lock bulk importing to master database node (#9012)
Diffstat (limited to 'store/sqlstore/supplier.go')
-rw-r--r--store/sqlstore/supplier.go11
1 files changed, 10 insertions, 1 deletions
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
}