From 899e1cc070982d699f11a6c05f9d395d4616794d Mon Sep 17 00:00:00 2001 From: Philip O'Toole Date: Mon, 5 Oct 2015 15:37:59 -0700 Subject: [PATCH] Only attempt monitor storage creation on leader Since only the leader can create it, the system might as well only attempt creation on the leader. --- monitor/service.go | 3 ++- monitor/service_test.go | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/monitor/service.go b/monitor/service.go index 84336d60420..c9d4a5fd61d 100644 --- a/monitor/service.go +++ b/monitor/service.go @@ -88,6 +88,7 @@ type Monitor struct { ClusterID() (uint64, error) NodeID() uint64 WaitForLeader(d time.Duration) error + IsLeader() bool CreateDatabaseIfNotExists(name string) (*meta.DatabaseInfo, error) CreateRetentionPolicyIfNotExists(database string, rpi *meta.RetentionPolicyInfo) (*meta.RetentionPolicyInfo, error) SetDefaultRetentionPolicy(database, name string) error @@ -297,7 +298,7 @@ func (m *Monitor) Diagnostics() (map[string]*Diagnostic, error) { // createInternalStorage ensures the internal storage has been created. func (m *Monitor) createInternalStorage() { - if m.storeCreated { + if !m.MetaStore.IsLeader() || m.storeCreated { return } diff --git a/monitor/service_test.go b/monitor/service_test.go index e8435859204..776e59a579b 100644 --- a/monitor/service_test.go +++ b/monitor/service_test.go @@ -42,6 +42,7 @@ type mockMetastore struct{} func (m *mockMetastore) ClusterID() (uint64, error) { return 1, nil } func (m *mockMetastore) NodeID() uint64 { return 2 } func (m *mockMetastore) WaitForLeader(d time.Duration) error { return nil } +func (m *mockMetastore) IsLeader() bool { return true } func (m *mockMetastore) SetDefaultRetentionPolicy(database, name string) error { return nil } func (m *mockMetastore) DropRetentionPolicy(database, name string) error { return nil } func (m *mockMetastore) CreateDatabaseIfNotExists(name string) (*meta.DatabaseInfo, error) {