summaryrefslogtreecommitdiff
path: root/src/server
diff options
context:
space:
mode:
authorLV-426 <lv-426@taproot.org.il>2015-04-09 01:23:34 +0300
committerLV-426 <lv-426@taproot.org.il>2015-04-09 02:03:45 +0300
commit5a686ee16a539bf8a8f72751f18a604477d5da5e (patch)
tree2858660637a9851b30b50794932960484cff6ec8 /src/server
parentb69ac308a56dc1b38820db8c89865a41b05f75b5 (diff)
rz_kernel: host rzdoc lookup cache
Diffstat (limited to 'src/server')
-rw-r--r--src/server/rz_api_common.py23
-rw-r--r--src/server/rz_api_rest.py2
-rw-r--r--src/server/rz_kernel.py42
-rw-r--r--src/server/rz_server.py3
4 files changed, 35 insertions, 35 deletions
diff --git a/src/server/rz_api_common.py b/src/server/rz_api_common.py
index 7261ab2b..83d29b7c 100644
--- a/src/server/rz_api_common.py
+++ b/src/server/rz_api_common.py
@@ -55,9 +55,9 @@ def sanitize_input__rzdoc_name(rzdoc_name):
"""
sanitize rzdoc name raw input
"""
-
if None != rzdoc_name and len(rzdoc_name) > current_app.rz_config.rzdoc__name__max_length:
raise API_Exception__bad_request('rzdoc: open request: doc name exceeds max doc name limit: %s' % (rzdoc_name))
+
return rzdoc_name
def validate_obj__attr_diff(attr_diff):
@@ -67,24 +67,3 @@ def validate_obj__attr_diff(attr_diff):
if 'id' == attr_name:
raise Exception('validation error: Attr_Diff: forbidden attribute change: \'id\', n_id: ' + n_id)
-def cache_lookup__rzdoc(rzdoc_name):
- """
- lookup RZDoc by rzdoc_name, possibly triggering a DB query
-
- @raise RZDoc_Exception__not_found
- """
- # FIXME: impl cache cleansing logic
-
- cache_doc = current_app.cache__rzdoc_name_to_rzdoc.get(rzdoc_name)
- if None != cache_doc:
- return cache_doc
-
- kernel = current_app.kernel
- rz_doc = kernel.rzdoc__lookup_by_name(rzdoc_name)
-
- if None == rz_doc:
- raise RZDoc_Exception__not_found(rzdoc_name)
-
- current_app.cache__rzdoc_name_to_rzdoc[rzdoc_name] = rz_doc
- return rz_doc
-
diff --git a/src/server/rz_api_rest.py b/src/server/rz_api_rest.py
index b486d227..f12a6d91 100644
--- a/src/server/rz_api_rest.py
+++ b/src/server/rz_api_rest.py
@@ -58,7 +58,7 @@ def __context__common(rzdoc_name=None):
if None != rzdoc_name:
s_rzdoc_name = sanitize_input__rzdoc_name(rzdoc_name)
- ret.rzdoc = cache_lookup__rzdoc(s_rzdoc_name)
+ ret.rzdoc = current_app.kernel.cache_lookup__rzdoc(s_rzdoc_name)
return ret
def __load_node_set_by_id_attr_common(id_set):
diff --git a/src/server/rz_kernel.py b/src/server/rz_kernel.py
index 63131f6e..801f82b0 100644
--- a/src/server/rz_kernel.py
+++ b/src/server/rz_kernel.py
@@ -84,19 +84,28 @@ class RZ_Kernel(object):
def __init__(self):
self.db_ctl = None
+ self.rzdoc_reader_assoc_map = defaultdict(list)
+ self.cache__rzdoc_name_to_rzdoc = {}
- def exec_chain_commit_op(self, diff_obj, ctx):
+ def cache_lookup__rzdoc(self, rzdoc_name):
+ """
+ lookup RZDoc by rzdoc_name, possibly triggering a DB query
- # FIXME: clean
- if isinstance(diff_obj, Topo_Diff):
- commit_obj = diff_obj.to_json_dict()
- else:
- commit_obj = diff_obj
+ @raise RZDoc_Exception__not_found
+ """
+ # FIXME: impl cache cleansing logic
- rzdoc = ctx.rzdoc
- op = DBO_block_chain__commit(commit_obj, ctx)
- op = QT_RZDOC_Meta_NS_Filter(rzdoc)(op)
- self.db_ctl.exec_op(op)
+ cache_doc = self.cache__rzdoc_name_to_rzdoc.get(rzdoc_name)
+ if None != cache_doc:
+ return cache_doc
+
+ rz_doc = self.rzdoc__lookup_by_name(rzdoc_name)
+
+ if None == rz_doc:
+ raise RZDoc_Exception__not_found(rzdoc_name)
+
+ self.cache__rzdoc_name_to_rzdoc[rzdoc_name] = rz_doc
+ return rz_doc
def diff_commit__topo(self, topo_diff, ctx=None):
"""
@@ -132,6 +141,19 @@ class RZ_Kernel(object):
self.exec_chain_commit_op(attr_diff, ctx)
return attr_diff, op_ret
+ def exec_chain_commit_op(self, diff_obj, ctx):
+
+ # FIXME: clean
+ if isinstance(diff_obj, Topo_Diff):
+ commit_obj = diff_obj.to_json_dict()
+ else:
+ commit_obj = diff_obj
+
+ rzdoc = ctx.rzdoc
+ op = DBO_block_chain__commit(commit_obj, ctx)
+ op = QT_RZDOC_Meta_NS_Filter(rzdoc)(op)
+ self.db_ctl.exec_op(op)
+
def rzdoc__clone(self, rzdoc, ctx=None):
diff --git a/src/server/rz_server.py b/src/server/rz_server.py
index 23067895..3232b18e 100644
--- a/src/server/rz_server.py
+++ b/src/server/rz_server.py
@@ -295,8 +295,7 @@ def init_webapp(cfg, kernel, db_ctl=None):
webapp.rz_config = cfg
webapp.kernel = kernel
- webapp.cache__rzdoc_name_to_rzdoc = {}
-
+
init_rest_interface(cfg, webapp)
return webapp