check for missing supercalls to module init methods
Change-Id: I8b7fe5cdd2883fd45532a3e8ac2d7b32945b36a3
This commit is contained in:
parent
245f4f48bf
commit
8253fe471b
@ -257,6 +257,9 @@ class Module(HasAccessibles):
|
|||||||
self.name = name
|
self.name = name
|
||||||
self.valueCallbacks = {}
|
self.valueCallbacks = {}
|
||||||
self.errorCallbacks = {}
|
self.errorCallbacks = {}
|
||||||
|
self.earlyInitDone = False
|
||||||
|
self.initModuleDone = False
|
||||||
|
self.startModuleDone = False
|
||||||
errors = []
|
errors = []
|
||||||
|
|
||||||
# handle module properties
|
# handle module properties
|
||||||
@ -523,11 +526,12 @@ class Module(HasAccessibles):
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
def earlyInit(self):
|
def earlyInit(self):
|
||||||
# may be overriden in derived classes to init stuff
|
"""initialise module with stuff to be done before all modules are created"""
|
||||||
self.log.debug('empty %s.earlyInit()' % self.__class__.__name__)
|
self.earlyInitDone = True
|
||||||
|
|
||||||
def initModule(self):
|
def initModule(self):
|
||||||
self.log.debug('empty %s.initModule()' % self.__class__.__name__)
|
"""initialise module with stuff to be done after all modules are created"""
|
||||||
|
self.initModuleDone = True
|
||||||
|
|
||||||
def pollOneParam(self, pname):
|
def pollOneParam(self, pname):
|
||||||
"""poll parameter <pname> with proper error handling"""
|
"""poll parameter <pname> with proper error handling"""
|
||||||
@ -569,7 +573,11 @@ class Module(HasAccessibles):
|
|||||||
has finished its initial work
|
has finished its initial work
|
||||||
might return a timeout value, if different from default
|
might return a timeout value, if different from default
|
||||||
"""
|
"""
|
||||||
mkthread(self.writeInitParams, started_callback)
|
if self.writeDict:
|
||||||
|
mkthread(self.writeInitParams, started_callback)
|
||||||
|
else:
|
||||||
|
started_callback()
|
||||||
|
self.startModuleDone = True
|
||||||
|
|
||||||
|
|
||||||
class Readable(Module):
|
class Readable(Module):
|
||||||
|
@ -281,6 +281,8 @@ class Server:
|
|||||||
modobj.pollerClass.add_to_table(poll_table, modobj)
|
modobj.pollerClass.add_to_table(poll_table, modobj)
|
||||||
# also call earlyInit on the modules
|
# also call earlyInit on the modules
|
||||||
modobj.earlyInit()
|
modobj.earlyInit()
|
||||||
|
if not modobj.earlyInitDone:
|
||||||
|
modobj.log.warning('missing supercall to earlyInit')
|
||||||
|
|
||||||
# handle attached modules
|
# handle attached modules
|
||||||
for modname, modobj in self.modules.items():
|
for modname, modobj in self.modules.items():
|
||||||
@ -296,6 +298,8 @@ class Server:
|
|||||||
for modname, modobj in self.modules.items():
|
for modname, modobj in self.modules.items():
|
||||||
try:
|
try:
|
||||||
modobj.initModule()
|
modobj.initModule()
|
||||||
|
if not modobj.initModuleDone:
|
||||||
|
modobj.log.warning('missing supercall to initModule')
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
if failure_traceback is None:
|
if failure_traceback is None:
|
||||||
failure_traceback = traceback.format_exc()
|
failure_traceback = traceback.format_exc()
|
||||||
@ -319,6 +323,8 @@ class Server:
|
|||||||
event = threading.Event()
|
event = threading.Event()
|
||||||
# startModule must return either a timeout value or None (default 30 sec)
|
# startModule must return either a timeout value or None (default 30 sec)
|
||||||
timeout = modobj.startModule(started_callback=event.set) or 30
|
timeout = modobj.startModule(started_callback=event.set) or 30
|
||||||
|
if not modobj.startModuleDone:
|
||||||
|
modobj.log.warning('missing supercall to startModule')
|
||||||
start_events.append((time.time() + timeout, 'module %s' % modname, event))
|
start_events.append((time.time() + timeout, 'module %s' % modname, event))
|
||||||
for poller in poll_table.values():
|
for poller in poll_table.values():
|
||||||
event = threading.Event()
|
event = threading.Event()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user