Implement check() in ObjectBroker
parent
4687f34d9d
commit
f9f5a0d89d
|
@ -55,6 +55,7 @@ class ObjectBroker:
|
|||
self.__unsaved = {}
|
||||
|
||||
log("ObjectBroker instantiated", LLDEBUGCALL)
|
||||
self.check()
|
||||
|
||||
def save(self,o,recursed=False):
|
||||
|
||||
|
@ -90,7 +91,7 @@ class ObjectBroker:
|
|||
return o
|
||||
|
||||
state = pickle.loads(self.__store[ persistence_id ])
|
||||
# dump_state(state)
|
||||
dump_state(state)
|
||||
|
||||
m = __import__(state["module"],fromlist=[state["class"]])
|
||||
cls = getattr(m, state["class"] )
|
||||
|
@ -112,4 +113,32 @@ class ObjectBroker:
|
|||
|
||||
def remove(self,o=None,persistence_id=None):
|
||||
pass
|
||||
|
||||
def check(self):
|
||||
log("ObjectBroker: checking consistency of store",LLINFO)
|
||||
|
||||
clean = True
|
||||
|
||||
for uid in dir(self.__store):
|
||||
if not uid == "ROOT":
|
||||
try:
|
||||
state = pickle.loads(self.__store[ uid ])
|
||||
for n in state["pfields"]:
|
||||
if not state["pfields"][n] in self.__store:
|
||||
log("Found Object {0} referencing non-existent {1} = {2}".format(uid,n,state["pfields"][n]))
|
||||
clean = False
|
||||
except:
|
||||
clean = False
|
||||
|
||||
# if not clean:
|
||||
# log("ObjectBroker: consistency check failed!",LLERROR)
|
||||
# raise Exception("ObjectBroker not consistent")
|
||||
|
||||
log("ObjectBroker: consistency check successful",LLINFO)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue