From 9be22da1c34627200f6c64e88d8b980ad78c369a Mon Sep 17 00:00:00 2001 From: zaihuaji Date: Fri, 29 Aug 2025 16:45:35 -0500 Subject: [PATCH 1/2] option to change status in record_dscheck_error() --- pyproject.toml | 2 +- src/rda_python_common/PgDBI.py | 13 +++++++------ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index ccc85cb..52dfd3c 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "rda_python_common" -version = "1.0.30" +version = "1.0.31" authors = [ { name="Zaihua Ji", email="zji@ucar.edu" }, ] diff --git a/src/rda_python_common/PgDBI.py b/src/rda_python_common/PgDBI.py index c28817a..48bcdc1 100644 --- a/src/rda_python_common/PgDBI.py +++ b/src/rda_python_common/PgDBI.py @@ -315,13 +315,13 @@ def aborttran(autocommit = True): # # record error message to dscheck record and clean the lock # -def record_dscheck_error(errmsg): +def record_dscheck_error(errmsg, logact = PGDBI['ERRLOG']): cnd = PgLOG.PGLOG['DSCHECK']['chkcnd'] if PgLOG.PGLOG['NOQUIT']: PgLOG.PGLOG['NOQUIT'] = 0 dflags = PgLOG.PGLOG['DSCHECK']['dflags'] - pgrec = pgget("dscheck", "mcount, tcount, lockhost, pid", cnd, PgLOG.LGEREX) + pgrec = pgget("dscheck", "mcount, tcount, lockhost, pid", cnd, logact) if not pgrec: return 0 if not pgrec['pid'] and not pgrec['lockhost']: return 0 (chost, cpid) = PgLOG.current_process_info() @@ -330,8 +330,9 @@ def record_dscheck_error(errmsg): # update dscheck record only if it is still locked by the current process record = {} record['chktime'] = int(time.time()) - record['status'] = "E" - record['pid'] = 0 # release lock + if logact&PgLOG.EXITLG: + record['status'] = "E" + record['pid'] = 0 # release lock if dflags: record['dflags'] = dflags record['mcount'] = pgrec['mcount'] + 1 @@ -343,7 +344,7 @@ def record_dscheck_error(errmsg): if pgrec['tcount'] > 1: errmsg = "Try {}: {}".format(pgrec['tcount'], errmsg) record['errmsg'] = errmsg - return pgupdt("dscheck", record, cnd, PGDBI['ERRLOG']) + return pgupdt("dscheck", record, cnd, logact) # # local function to log query error @@ -367,7 +368,7 @@ def qelog(dberror, sleep, sqlstr, vals, pgcnt, logact = PGDBI['ERRLOG']): if vals: sqlstr += " with values: " + str(vals) if dberror: sqlstr = "{}\n{}".format(dberror, sqlstr) - if logact&PgLOG.EXITLG and PgLOG.PGLOG['DSCHECK']: record_dscheck_error(sqlstr) + if logact&PgLOG.EXITLG and PgLOG.PGLOG['DSCHECK']: record_dscheck_error(sqlstr, logact) PgLOG.pglog(sqlstr, logact) if sleep: time.sleep(sleep) From c9e0b60413b4694c24ae167e83255568ed938267 Mon Sep 17 00:00:00 2001 From: zaihuaji Date: Sun, 31 Aug 2025 08:43:30 -0500 Subject: [PATCH 2/2] pass logact to PgDBI.record_dscheck_error() --- pyproject.toml | 2 +- src/rda_python_common/PgDBI.py | 2 +- src/rda_python_common/PgFile.py | 2 +- src/rda_python_common/PgOPT.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 52dfd3c..4917bac 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta" [project] name = "rda_python_common" -version = "1.0.31" +version = "1.0.32" authors = [ { name="Zaihua Ji", email="zji@ucar.edu" }, ] diff --git a/src/rda_python_common/PgDBI.py b/src/rda_python_common/PgDBI.py index 48bcdc1..cf65ba7 100644 --- a/src/rda_python_common/PgDBI.py +++ b/src/rda_python_common/PgDBI.py @@ -315,7 +315,7 @@ def aborttran(autocommit = True): # # record error message to dscheck record and clean the lock # -def record_dscheck_error(errmsg, logact = PGDBI['ERRLOG']): +def record_dscheck_error(errmsg, logact = PGDBI['EXITLG']): cnd = PgLOG.PGLOG['DSCHECK']['chkcnd'] if PgLOG.PGLOG['NOQUIT']: PgLOG.PGLOG['NOQUIT'] = 0 diff --git a/src/rda_python_common/PgFile.py b/src/rda_python_common/PgFile.py index eeca0ee..3669d67 100644 --- a/src/rda_python_common/PgFile.py +++ b/src/rda_python_common/PgFile.py @@ -145,7 +145,7 @@ def errlog(msg, etype, retry = 0, logact = 0): logact |= PgLOG.EXITLG ECNTS[etype] = 0 - if PgLOG.PGLOG['DSCHECK'] and logact&PgLOG.EXITLG: PgDBI.record_dscheck_error(msg) + if PgLOG.PGLOG['DSCHECK'] and logact&PgLOG.EXITLG: PgDBI.record_dscheck_error(msg, logact) PgLOG.pglog(msg, logact) PgLOG.PGLOG['BCKGRND'] = bckgrnd if not retry: time.sleep(PgSIG.PGSIG['ETIME']) diff --git a/src/rda_python_common/PgOPT.py b/src/rda_python_common/PgOPT.py index 6d3801f..cb81b38 100644 --- a/src/rda_python_common/PgOPT.py +++ b/src/rda_python_common/PgOPT.py @@ -985,7 +985,7 @@ def action_error(errmsg, cact = None): msg += " of " + params['DS'][0] msg += ": " + errmsg - if PgLOG.PGLOG['DSCHECK']: PgDBI.record_dscheck_error(msg) + if PgLOG.PGLOG['DSCHECK']: PgDBI.record_dscheck_error(msg, PGOPT['extlog']) PgLOG.pglog(msg, PGOPT['extlog']) #