mirror of
https://github.com/xcat2/confluent.git
synced 2024-11-25 11:01:09 +00:00
Disable attribute notify during json restore
This is guaranteed to be a lot of churn very quickly, disable it for now.
This commit is contained in:
parent
97ee8e2372
commit
df47c6d0fd
@ -119,6 +119,7 @@ _cfgstore = None
|
||||
_pendingchangesets = {}
|
||||
_txcount = 0
|
||||
_hasquorum = True
|
||||
_ready = False
|
||||
|
||||
_attraliases = {
|
||||
'bmc': 'hardwaremanagement.manager',
|
||||
@ -1273,6 +1274,7 @@ class ConfigManager(object):
|
||||
def __init__(self, tenant, decrypt=False, username=None):
|
||||
self.clientfiles = {}
|
||||
global _cfgstore
|
||||
self.inrestore = False
|
||||
with _initlock:
|
||||
if _cfgstore is None:
|
||||
init()
|
||||
@ -2089,6 +2091,10 @@ class ConfigManager(object):
|
||||
def _notif_attribwatchers(self, nodeattrs):
|
||||
if self.tenant not in self._attribwatchers:
|
||||
return
|
||||
if self.inrestore:
|
||||
# Do not stir up attribute watchers during a collective join or DB restore,
|
||||
# it's too hectic of a time to react
|
||||
return
|
||||
notifdata = {}
|
||||
attribwatchers = self._attribwatchers[self.tenant]
|
||||
for node in nodeattrs:
|
||||
@ -2471,6 +2477,13 @@ class ConfigManager(object):
|
||||
#TODO: wait for synchronization to suceed/fail??)
|
||||
|
||||
def _load_from_json(self, jsondata, sync=True):
|
||||
self.inrestore = True
|
||||
try:
|
||||
_load_from_json_backend(self, jsondata, sync=True)
|
||||
finally:
|
||||
self.inrestore = False
|
||||
|
||||
def _load_from_json_backend(self, jsondata, sync=True):
|
||||
"""Load fresh configuration data from jsondata
|
||||
|
||||
:param jsondata: String of jsondata
|
||||
@ -2939,9 +2952,9 @@ def get_globals():
|
||||
bkupglobals[globvar] = _cfgstore['globals'][globvar]
|
||||
return bkupglobals
|
||||
|
||||
|
||||
def init(stateless=False):
|
||||
global _cfgstore
|
||||
global _ready
|
||||
if stateless:
|
||||
_cfgstore = {}
|
||||
return
|
||||
@ -2949,6 +2962,9 @@ def init(stateless=False):
|
||||
ConfigManager._read_from_path()
|
||||
except IOError:
|
||||
_cfgstore = {}
|
||||
members = list(list_collective())
|
||||
if len(members) < 2:
|
||||
_ready = True
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
Loading…
Reference in New Issue
Block a user