diff options
| author | LV-426 <lv-426@taproot.org.il> | 2015-05-04 21:39:43 +0300 |
|---|---|---|
| committer | LV-426 <lv-426@taproot.org.il> | 2015-05-05 19:28:08 +0300 |
| commit | fb5279c841a053d28374ab4550e7ec9141f6d4dd (patch) | |
| tree | 881747054b4f2fd6c6a34a9f75ada35805f0a189 /src/server | |
| parent | ca87abd58ab42e4fc11cf3f5189af4e6d725dd43 (diff) | |
rz_kernel: manage DB session, initialization
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/rz_kernel.py | 41 | ||||
| -rw-r--r-- | src/server/rz_server.py | 28 |
2 files changed, 36 insertions, 33 deletions
diff --git a/src/server/rz_kernel.py b/src/server/rz_kernel.py index 7b99c357..f331ac5c 100644 --- a/src/server/rz_kernel.py +++ b/src/server/rz_kernel.py @@ -8,9 +8,12 @@ import logging import time import traceback +from db_controller import DB_Controller from db_op import (DBO_diff_commit__attr, DBO_block_chain__commit, DBO_rzdoc__create, DBO_rzdoc__lookup_by_name, DBO_rzdoc__clone, DBO_rzdoc__delete, DBO_rzdoc__list, - DBO_block_chain__init, DBO_rzdoc__rename, DBO_nop) + DBO_block_chain__init, DBO_rzdoc__rename, DBO_nop, + DBO_match_node_set_by_id_attribute, DBO_rzdb__fetch_DB_metablock, + DBO_rzdb__init_DB) from db_op import DBO_diff_commit__topo from model.graph import Topo_Diff from model.model import RZDoc @@ -86,13 +89,36 @@ class RZ_Kernel(object): - all public methods decorated with deco__exception_log """ - def __init__(self): - self.db_ctl = None - self.rzdoc_reader_assoc_map = defaultdict(list) + def __init__(self, cfg): + self.cfg = cfg self.cache__rzdoc_name_to_rzdoc = {} - self.should_stop = False self.heartbeat_period_sec = 0.5 + self.db_ctl = DB_Controller(cfg) self.period__db_conn_check = 60 + self.rzdoc_reader_assoc_map = defaultdict(list) + + self.should_stop = False + self.db_initialized = False + + def _init_DB(self): + op_probe = DBO_rzdb__fetch_DB_metablock() + + try: + dbmb = self.db_ctl.exec_op(op_probe) + if dbmb is None: + log.warning('detected uninitialized DB, initializing') + op_init = DBO_rzdb__init_DB(self.cfg) + self.db_ctl.exec_op(op_init) + op_probe = DBO_rzdb__fetch_DB_metablock(self.cfg) # reprobe for metablock + dbmb = self.db_ctl.exec_op(op_probe) + log.info('DB initialized, schema-version: %s' % (dbmb['schema_version'])) + else: + log.info('DB connection established, schema-version: %s' % (dbmb['schema_version'])) + except Exception as e: + log.exception('failed to init DB') + raise e + + return self.db_ctl def start(self): @@ -106,10 +132,15 @@ class RZ_Kernel(object): while False == self.should_stop: t_0 = time.time() + if t_0 - t__last_db_conn_check > self.period__db_conn_check: try: op = DBO_nop() self.db_ctl.exec_op(op) + + if not self.db_initialized: + self._init_DB() + except Exception: log.info('rz_kernel: unable to establish DB connection') finally: diff --git a/src/server/rz_server.py b/src/server/rz_server.py index e5958d37..dc7d8f74 100644 --- a/src/server/rz_server.py +++ b/src/server/rz_server.py @@ -13,7 +13,6 @@ import signal import traceback import types -import db_controller as dbc from db_op import DBO_rzdb__fetch_DB_metablock, DBO_rzdb__init_DB import rz_api import rz_api_rest @@ -434,27 +433,6 @@ def init_config(cfg_dir): cfg = Config.init_from_file(cfg_path) return cfg -def init_DB(cfg): - db_ctl = dbc.DB_Controller(cfg) - op_probe = DBO_rzdb__fetch_DB_metablock(cfg) - - try: - dbmb = db_ctl.exec_op(op_probe) - if dbmb is None: - log.warning('detected uninitialized DB, initializing') - op_init = DBO_rzdb__init_DB(cfg) - db_ctl.exec_op(op_init) - op_probe = DBO_rzdb__fetch_DB_metablock(cfg) # reprobe for metablock - dbmb = db_ctl.exec_op(op_probe) - log.info('DB initialized, schema-version: %s' % (dbmb['schema_version'])) - else: - log.info('DB connection established, schema-version: %s' % (dbmb['schema_version'])) - except Exception as e: - log.exception('failed to init DB') - raise e - - return db_ctl - def init_user_db(cfg): global user_db @@ -533,12 +511,6 @@ if __name__ == "__main__": kernel = RZ_Kernel() # - # init DB controller - # - - kernel.db_ctl = init_DB(cfg) - - # # init webapp # webapp = init_webapp(cfg, kernel) |
