summaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorLV-426 <lv-426@taproot.org.il>2015-05-21 18:44:32 +0300
committerLV-426 <lv-426@taproot.org.il>2015-05-22 01:49:28 +0300
commit5ea84448d04e5cef423d495e4b313df3dc5c41b3 (patch)
treed1b3787d79ce916f92a318ffdcf6504cd487941b /src/server
parenta564bceaa9e4f295dfd744bb509630d77590d590 (diff)
rz_kernel: check deco__DB_status_check() before DB dependent calls:
- connection available - DB metablock available
Diffstat (limited to 'src/server')
-rw-r--r--src/server/rz_kernel.py31
1 files changed, 30 insertions, 1 deletions
diff --git a/src/server/rz_kernel.py b/src/server/rz_kernel.py
index ba27ebd9..5e4a336f 100644
--- a/src/server/rz_kernel.py
+++ b/src/server/rz_kernel.py
@@ -73,6 +73,24 @@ def deco__exception_log(kernel_f):
return f_decorated
+def deco__DB_status_check(kernel_f):
+ """
+ Check DB status:
+ - connection available
+ - DB metablock available
+ """
+
+ @wraps(kernel_f)
+ def f_decorated(self, *args, **kwargs):
+ if False == self.db_conn_avail:
+ raise RZKernel_Exception__DB_conn_unavailable()
+ if self.db_metablock is None:
+ raise RZKernel_Exception__DB_metablock_unavailable()
+
+ return kernel_f(self, *args, **kwargs)
+
+ return f_decorated
+
def for_all_public_functions(decorator):
def cls_decorated(cls):
@@ -218,6 +236,10 @@ class RZ_Kernel(object):
self.cache__rzdoc_name_to_rzdoc[rzdoc_name] = rz_doc
return rz_doc
+ def is_DB_status__ok(self):
+ return self.db_conn_avail and self.db_metablock is not None
+
+ @deco__DB_status_check
def diff_commit__topo(self, topo_diff, ctx):
"""
commit a graph topology diff - this is a common pathway for:
@@ -238,6 +260,7 @@ class RZ_Kernel(object):
op_ret['meta'] = topo_diff.meta
return topo_diff, op_ret
+ @deco__DB_status_check
def diff_commit__attr(self, attr_diff, ctx):
"""
commit a graph attribute diff - this is a common pathway for:
@@ -257,10 +280,12 @@ class RZ_Kernel(object):
attr_diff.meta['ts_created'] = ts_created
return attr_diff, op_ret
+ @deco__DB_status_check
def load_node_set_by_id_attr(self, id_set, ctx=None):
op = DBO_match_node_set_by_id_attribute(id_set=id_set)
self.db_ctl.exec_op(op)
+ @deco__DB_status_check
def rzdoc__clone(self, rzdoc, ctx=None):
"""
Clone entire rzdoc
@@ -273,6 +298,7 @@ class RZ_Kernel(object):
topo_diff = self.db_ctl.exec_op(op)
return topo_diff
+ @deco__DB_status_check
def rzdoc__commit_log(self, rzdoc, limit):
"""
return commit log
@@ -283,6 +309,7 @@ class RZ_Kernel(object):
commit_log = self.db_ctl.exec_op(op)
return commit_log
+ @deco__DB_status_check
def rzdoc__create(self, rzdoc_name, ctx=None):
"""
Create & persist new RZDoc - may fail on unique name/id constraint violation
@@ -305,6 +332,7 @@ class RZ_Kernel(object):
self.db_ctl.exec_op(op__block_chain__init)
return rzdoc
+ @deco__DB_status_check
def rzdoc__delete(self, rzdoc, ctx=None):
"""
Delete RZDoc
@@ -323,6 +351,7 @@ class RZ_Kernel(object):
# FIXME:
# - broadcast delete event
+ @deco__DB_status_check
def rzdoc__lookup_by_name(self, rzdoc_name, ctx=None):
"""
@param ctx: may be None
@@ -331,7 +360,6 @@ class RZ_Kernel(object):
"""
op = DBO_rzdoc__lookup_by_name(rzdoc_name)
-
rzdoc = self.db_ctl.exec_op(op)
return rzdoc # may be None
@@ -392,6 +420,7 @@ class RZ_Kernel(object):
op_ret = self.db_ctl.exec_op(op)
return op_ret
+ @deco__DB_status_check
def rzdoc__rename(self, cur_name, new_name):
op = DBO_rzdoc__rename(cur_name, new_name)