rda-python-common 3.0.18__py3-none-any.whl → 3.0.19__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- rda_python_common/__init__.py +1 -1
- rda_python_common/pg_cmd.py +8 -0
- rda_python_common/pg_file.py +21 -5
- {rda_python_common-3.0.18.dist-info → rda_python_common-3.0.19.dist-info}/METADATA +2 -2
- {rda_python_common-3.0.18.dist-info → rda_python_common-3.0.19.dist-info}/RECORD +9 -9
- {rda_python_common-3.0.18.dist-info → rda_python_common-3.0.19.dist-info}/WHEEL +0 -0
- {rda_python_common-3.0.18.dist-info → rda_python_common-3.0.19.dist-info}/entry_points.txt +0 -0
- {rda_python_common-3.0.18.dist-info → rda_python_common-3.0.19.dist-info}/licenses/LICENSE +0 -0
- {rda_python_common-3.0.18.dist-info → rda_python_common-3.0.19.dist-info}/top_level.txt +0 -0
rda_python_common/__init__.py
CHANGED
rda_python_common/pg_cmd.py
CHANGED
|
@@ -207,6 +207,14 @@ class PgCMD(PgLock):
|
|
|
207
207
|
self.pglog(cmsg + "is Running, No restart", self.LOGWRN)
|
|
208
208
|
sys.exit(0)
|
|
209
209
|
if cidx > 0:
|
|
210
|
+
# a report parked in einfo by the previous run is only mailed by the dscheck
|
|
211
|
+
# daemon, which skips any record that is already running. restarting the record
|
|
212
|
+
# here would strand that report until the next run overwrites it, so leave the
|
|
213
|
+
# record alone and let the daemon mail it first - it clears einfo when it does
|
|
214
|
+
if pgrec['einfo']:
|
|
215
|
+
self.pglog(cmsg + "has a report to email, No restart", self.LOGWRN)
|
|
216
|
+
self.lock_dscheck(cidx, 0, logact)
|
|
217
|
+
sys.exit(0)
|
|
210
218
|
if not hosts and pgrec['hostname']:
|
|
211
219
|
hosts = pgrec['hostname']
|
|
212
220
|
self.set_one_boption('hostname', hosts, 0)
|
rda_python_common/pg_file.py
CHANGED
|
@@ -105,7 +105,8 @@ class PgFile(PgUtil, PgSIG):
|
|
|
105
105
|
}
|
|
106
106
|
self.TARSTR = '|'.join(self.PGTARS)
|
|
107
107
|
self.DELDIRS = {}
|
|
108
|
-
self.TASKIDS = {} # cache unfinished
|
|
108
|
+
self.TASKIDS = {} # cache unfinished
|
|
109
|
+
self.QCANCEL = {} # taskid -> why a task got cancelled, reported by the waiting caller
|
|
109
110
|
self.LHOST = "localhost"
|
|
110
111
|
self.OHOST = self.PGLOG['OBJCTSTR']
|
|
111
112
|
self.BHOST = self.PGLOG['BACKUPNM']
|
|
@@ -532,7 +533,11 @@ class PgFile(PgUtil, PgSIG):
|
|
|
532
533
|
time.sleep(self.PGSIG['ETIME'])
|
|
533
534
|
lp += 1
|
|
534
535
|
if task['stat'] == 'S' or task['stat'] == 'A': break
|
|
535
|
-
if task['stat'] == 'F' and not syserr:
|
|
536
|
+
if task['stat'] == 'F' and not syserr:
|
|
537
|
+
# nothing waits on this task, so report the cancellation here instead
|
|
538
|
+
if task['id'] in self.QCANCEL:
|
|
539
|
+
self.errlog("{}: Cancel Task due to {}".format(task['id'], self.QCANCEL.pop(task['id'])), 'B', 1, logact)
|
|
540
|
+
break
|
|
536
541
|
errmsg = "Error Execute: " + cmd
|
|
537
542
|
if qstr: errmsg += " with stdin:\n" + qstr
|
|
538
543
|
if syserr:
|
|
@@ -581,8 +586,16 @@ class PgFile(PgUtil, PgSIG):
|
|
|
581
586
|
detail = ms.group(1)
|
|
582
587
|
if detail not in astats:
|
|
583
588
|
if logact&self.NOWAIT:
|
|
584
|
-
|
|
585
|
-
|
|
589
|
+
# record why, and let the caller waiting on this task report it as a
|
|
590
|
+
# single error naming the file; dumping the whole get-task output here
|
|
591
|
+
# doubled every failure into two error entries, the first 17 lines long
|
|
592
|
+
reason = detail
|
|
593
|
+
ms = re.search(r'Bytes Transferred:\s+(\d+)', buf)
|
|
594
|
+
if ms: reason += " after " + self.format_float_value(ms.group(1))
|
|
595
|
+
ms = re.search(r'Files:\s+(\d+)', buf)
|
|
596
|
+
if ms: reason += " of {} file(s)".format(ms.group(1))
|
|
597
|
+
self.QCANCEL[taskid] = reason
|
|
598
|
+
self.pglog("{}: Cancel Task due to {}".format(taskid, reason), self.LOGWRN)
|
|
586
599
|
ccmd = f"{bcmd} cancel-task {taskid}"
|
|
587
600
|
self.pgsystem(ccmd, logact, 7)
|
|
588
601
|
else:
|
|
@@ -640,7 +653,10 @@ class PgFile(PgUtil, PgSIG):
|
|
|
640
653
|
del self.TASKIDS[ckey]
|
|
641
654
|
else:
|
|
642
655
|
status = self.QSTATS[stat] if stat in self.QSTATS else 'UNKNOWN'
|
|
643
|
-
|
|
656
|
+
errmsg = "{}: Status '{}' for Task {}".format(ckey, status, taskid)
|
|
657
|
+
if taskid in self.QCANCEL:
|
|
658
|
+
errmsg += " - " + self.QCANCEL.pop(taskid)
|
|
659
|
+
self.errlog(errmsg, 'B', 1, logact)
|
|
644
660
|
ret = self.FAILURE
|
|
645
661
|
break
|
|
646
662
|
return ret
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rda_python_common
|
|
3
|
-
Version: 3.0.
|
|
3
|
+
Version: 3.0.19
|
|
4
4
|
Summary: RDA Python common library codes shared by other RDA python packages
|
|
5
5
|
Author-email: Zaihua Ji <zji@ucar.edu>
|
|
6
6
|
Project-URL: Homepage, https://github.com/NCAR/rda-python-common
|
|
@@ -189,7 +189,7 @@ PgLOG.pglog("hello", PgLOG.LOGWRN)
|
|
|
189
189
|
python -c "import rda_python_common; print(rda_python_common.__version__)"
|
|
190
190
|
```
|
|
191
191
|
|
|
192
|
-
You should see the installed version (currently `3.0.
|
|
192
|
+
You should see the installed version (currently `3.0.19`). If the import
|
|
193
193
|
fails, double-check that the active Python environment is the one where you
|
|
194
194
|
ran `pip install`.
|
|
195
195
|
|
|
@@ -7,10 +7,10 @@ rda_python_common/PgOPT.py,sha256=0nQPF19N-1VWwrjFHEeruVSwVDwvFKd4uowPc8dK7e4,56
|
|
|
7
7
|
rda_python_common/PgSIG.py,sha256=0MJPH0fTtSshIsvUXkzQjReHPyCWdzHYOY5LbFSh7-A,34318
|
|
8
8
|
rda_python_common/PgSplit.py,sha256=En7xcdkE4YNRcMX88qXnrUgUOnQU3Kqh8uxRIdlJhEA,9156
|
|
9
9
|
rda_python_common/PgUtil.py,sha256=7hXAznAI8tYh-nJRKBIXejNe2ROQ2Wxn28OAndeg0Iw,48433
|
|
10
|
-
rda_python_common/__init__.py,sha256=
|
|
11
|
-
rda_python_common/pg_cmd.py,sha256=
|
|
10
|
+
rda_python_common/__init__.py,sha256=jidxhZMM_M89QglpwcOZYTxyUTXwqL_ZGt3nbSREt5o,995
|
|
11
|
+
rda_python_common/pg_cmd.py,sha256=MYldUuM8mSUIT34yKQyUd0i4NL4zdSB8C6Jcc28NRxA,33809
|
|
12
12
|
rda_python_common/pg_dbi.py,sha256=h1snZ8fJwHeBQJmNjsjJoDKkfT4FW9avMvdHgcIc-cA,122328
|
|
13
|
-
rda_python_common/pg_file.py,sha256=
|
|
13
|
+
rda_python_common/pg_file.py,sha256=IzWNhWloqX2iKYibUhcQNOJsrzkkgiDBrhNrFhd4DdI,168253
|
|
14
14
|
rda_python_common/pg_lock.py,sha256=31EaVDjCkcx3-n8-KnzG18R8Pz7Z6KyFsEqcml6Iq5c,32702
|
|
15
15
|
rda_python_common/pg_log.py,sha256=fN6dcAlcd6nHf21r_CfraCAMgwkrqrDCMSdMtXUa62A,82686
|
|
16
16
|
rda_python_common/pg_opt.py,sha256=LxVAf47wi2STkVGSXMvV3IZphEJcoO8bvYXy6kQ5ox4,82403
|
|
@@ -20,9 +20,9 @@ rda_python_common/pg_split.py,sha256=aAWKUZPmZ-LQ_fJ3DSKzPKxJw0fMDJ2fgP8ZT629M30
|
|
|
20
20
|
rda_python_common/pg_util.py,sha256=JL9NoW-VoQvsjXsUr09oBUWYJJNltU4GyQIfWlpkf90,86084
|
|
21
21
|
rda_python_common/pgpassword.py,sha256=aTQaO59QokWrv2EKom4TvKhNW2Mr6aFMMBVG4DCbcKI,5023
|
|
22
22
|
rda_python_common/pgpassword.usg,sha256=Wrle6A8sdlMGx3ZEAmE6TNDPOlG84Whe0T3rCNFzPfY,2013
|
|
23
|
-
rda_python_common-3.0.
|
|
24
|
-
rda_python_common-3.0.
|
|
25
|
-
rda_python_common-3.0.
|
|
26
|
-
rda_python_common-3.0.
|
|
27
|
-
rda_python_common-3.0.
|
|
28
|
-
rda_python_common-3.0.
|
|
23
|
+
rda_python_common-3.0.19.dist-info/licenses/LICENSE,sha256=1dck4EAQwv8QweDWCXDx-4Or0S8YwiCstaso_H57Pno,1097
|
|
24
|
+
rda_python_common-3.0.19.dist-info/METADATA,sha256=SW-mapQDupPHDBgrKls6HjtoYRxXRU5XM0ZLti-V5bo,14530
|
|
25
|
+
rda_python_common-3.0.19.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
|
|
26
|
+
rda_python_common-3.0.19.dist-info/entry_points.txt,sha256=pZgVNWspcK-F1TbPav7C3C9NdeHDZMm_25fW9weix00,65
|
|
27
|
+
rda_python_common-3.0.19.dist-info/top_level.txt,sha256=KVQmx7D3DD-jsiheqL8HdTrRE14hpRnZY5_ioMArA5k,18
|
|
28
|
+
rda_python_common-3.0.19.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|