rda-python-dsquasar 3.0.15__tar.gz → 3.0.17__tar.gz
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_dsquasar-3.0.15/src/rda_python_dsquasar.egg-info → rda_python_dsquasar-3.0.17}/PKG-INFO +1 -1
- {rda_python_dsquasar-3.0.15 → rda_python_dsquasar-3.0.17}/pyproject.toml +1 -1
- {rda_python_dsquasar-3.0.15 → rda_python_dsquasar-3.0.17}/src/rda_python_dsquasar/dsquasar.py +28 -4
- {rda_python_dsquasar-3.0.15 → rda_python_dsquasar-3.0.17/src/rda_python_dsquasar.egg-info}/PKG-INFO +1 -1
- {rda_python_dsquasar-3.0.15 → rda_python_dsquasar-3.0.17}/LICENSE +0 -0
- {rda_python_dsquasar-3.0.15 → rda_python_dsquasar-3.0.17}/MANIFEST.in +0 -0
- {rda_python_dsquasar-3.0.15 → rda_python_dsquasar-3.0.17}/README.md +0 -0
- {rda_python_dsquasar-3.0.15 → rda_python_dsquasar-3.0.17}/setup.cfg +0 -0
- {rda_python_dsquasar-3.0.15 → rda_python_dsquasar-3.0.17}/src/rda_python_dsquasar/__init__.py +0 -0
- {rda_python_dsquasar-3.0.15 → rda_python_dsquasar-3.0.17}/src/rda_python_dsquasar/ds_quasar.py +0 -0
- {rda_python_dsquasar-3.0.15 → rda_python_dsquasar-3.0.17}/src/rda_python_dsquasar/dsquasar.usg +0 -0
- {rda_python_dsquasar-3.0.15 → rda_python_dsquasar-3.0.17}/src/rda_python_dsquasar/dstacc.py +0 -0
- {rda_python_dsquasar-3.0.15 → rda_python_dsquasar-3.0.17}/src/rda_python_dsquasar/taccrec.py +0 -0
- {rda_python_dsquasar-3.0.15 → rda_python_dsquasar-3.0.17}/src/rda_python_dsquasar/tacctar.py +0 -0
- {rda_python_dsquasar-3.0.15 → rda_python_dsquasar-3.0.17}/src/rda_python_dsquasar.egg-info/SOURCES.txt +0 -0
- {rda_python_dsquasar-3.0.15 → rda_python_dsquasar-3.0.17}/src/rda_python_dsquasar.egg-info/dependency_links.txt +0 -0
- {rda_python_dsquasar-3.0.15 → rda_python_dsquasar-3.0.17}/src/rda_python_dsquasar.egg-info/entry_points.txt +0 -0
- {rda_python_dsquasar-3.0.15 → rda_python_dsquasar-3.0.17}/src/rda_python_dsquasar.egg-info/requires.txt +0 -0
- {rda_python_dsquasar-3.0.15 → rda_python_dsquasar-3.0.17}/src/rda_python_dsquasar.egg-info/top_level.txt +0 -0
- {rda_python_dsquasar-3.0.15 → rda_python_dsquasar-3.0.17}/test/test_dsquasar.py +0 -0
{rda_python_dsquasar-3.0.15/src/rda_python_dsquasar.egg-info → rda_python_dsquasar-3.0.17}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rda_python_dsquasar
|
|
3
|
-
Version: 3.0.
|
|
3
|
+
Version: 3.0.17
|
|
4
4
|
Summary: RDA Python package to backup and recover RDA data archives to and from GLOBUS Quasar backup server
|
|
5
5
|
Author-email: Zaihua Ji <zji@ucar.edu>
|
|
6
6
|
Project-URL: Homepage, https://github.com/NCAR/rda-python-dsquasar
|
{rda_python_dsquasar-3.0.15 → rda_python_dsquasar-3.0.17}/src/rda_python_dsquasar/dsquasar.py
RENAMED
|
@@ -611,7 +611,7 @@ class DsQuasar(PgCMD, PgSplit):
|
|
|
611
611
|
qinfo['dslocks'].remove(dsid)
|
|
612
612
|
qinfo['dsids'] = []
|
|
613
613
|
if self.PGBACK['mproc'] > 1:
|
|
614
|
-
self.
|
|
614
|
+
self.wait_all_children() # wait all child processes done
|
|
615
615
|
self.confirm_quasar_counts(qinfo, qinfo['abids'], "status = 'T'") # recount confirmed backups from RDADB
|
|
616
616
|
if qinfo['dslocks']:
|
|
617
617
|
for dsid in qinfo['dslocks']:
|
|
@@ -728,7 +728,7 @@ class DsQuasar(PgCMD, PgSplit):
|
|
|
728
728
|
self.unlock_backup_datasets(qinfo, dslocks)
|
|
729
729
|
if self.PGBACK['dolock']: self.unlock_backup_datasets(qinfo, [dsid])
|
|
730
730
|
if self.PGBACK['mproc'] > 1:
|
|
731
|
-
self.
|
|
731
|
+
self.wait_all_children() # wait all child processes done
|
|
732
732
|
self.confirm_quasar_counts(qinfo, qinfo['abids'], "status = 'T'") # recount confirmed backups from RDADB
|
|
733
733
|
qcnt = qinfo['qcnt']
|
|
734
734
|
if qcnt > 0:
|
|
@@ -769,7 +769,7 @@ class DsQuasar(PgCMD, PgSplit):
|
|
|
769
769
|
self.transfer_quasar_tarfiles(qinfo)
|
|
770
770
|
if qinfo['size'] > 0: self.transfer_quasar_tarfiles(qinfo)
|
|
771
771
|
if self.PGBACK['mproc'] > 1:
|
|
772
|
-
self.
|
|
772
|
+
self.wait_all_children() # wait all child processes done
|
|
773
773
|
self.confirm_quasar_counts(qinfo, list(bfiles), "status = 'A'") # recount confirmed backups from RDADB
|
|
774
774
|
qcnt = qinfo['qcnt']
|
|
775
775
|
if qcnt > 0:
|
|
@@ -906,6 +906,20 @@ class DsQuasar(PgCMD, PgSplit):
|
|
|
906
906
|
self.report_dscheck_email(title, 1)
|
|
907
907
|
self.PGLOG.update(saved)
|
|
908
908
|
|
|
909
|
+
# wait for every child process to finish, checking the walltime deadline between polls.
|
|
910
|
+
# check_child(..., 1) does the waiting inside its own loop, so a phase that ends with the
|
|
911
|
+
# last tar children still running would sit there for the rest of the run without ever
|
|
912
|
+
# reaching a deadline check - the parent has no per-item loop left to guard. polling with
|
|
913
|
+
# dowait 0 and sleeping here keeps the same cadence and wait message as check_child does.
|
|
914
|
+
def wait_all_children(self):
|
|
915
|
+
if self.PGBACK['mproc'] < 2: return
|
|
916
|
+
i = 0
|
|
917
|
+
while True:
|
|
918
|
+
self.check_batch_deadline()
|
|
919
|
+
if self.check_child(None, 0, self.LOGWRN, 0) < 1: break
|
|
920
|
+
self.show_wait_message(i, "{}: wait child processes".format(self.PGSIG['DSTR']), self.LOGWRN, 1)
|
|
921
|
+
i += 1
|
|
922
|
+
|
|
909
923
|
# recompute the confirmed backup counts from RDADB after all child processes
|
|
910
924
|
# finished, so a multi-process summary reflects succeeded (not just started) work
|
|
911
925
|
def confirm_quasar_counts(self, qinfo, bids, dcnd):
|
|
@@ -1389,8 +1403,16 @@ class DsQuasar(PgCMD, PgSplit):
|
|
|
1389
1403
|
dcnt = len(mrecs['dsid']) if mrecs else 0
|
|
1390
1404
|
pgrecs = [self.onerecord(mrecs, i) for i in range(dcnt)]
|
|
1391
1405
|
for pgrec in pgrecs:
|
|
1406
|
+
# a gather is not free: it queries every dataset, and each one another worker holds
|
|
1407
|
+
# costs an rdaps call to check that worker's pid. a run under dscheck does two of
|
|
1408
|
+
# them before any work, and -A 3 does a third one before tarring
|
|
1409
|
+
self.check_batch_deadline()
|
|
1392
1410
|
dsid = pgrec['dsid']
|
|
1393
|
-
|
|
1411
|
+
# a changed-file run takes records that are already backed up (bid > 0) while the
|
|
1412
|
+
# main runs take new files (bid = 0), so it shares no record with the worker holding
|
|
1413
|
+
# the lock and must not skip the dataset for it
|
|
1414
|
+
if unlock and pgrec['pid'] and not self.PGBACK['chgdays']:
|
|
1415
|
+
if self.lock_dataset(dsid, 0, self.LOGACT) < 1: continue
|
|
1394
1416
|
fcnt += self.get_dataset_files(dsid, dsfiles, pgrec['backflag'], logact, sizes)
|
|
1395
1417
|
if dsfiles:
|
|
1396
1418
|
s = 's' if fcnt > 1 else ''
|
|
@@ -1413,6 +1435,7 @@ class DsQuasar(PgCMD, PgSplit):
|
|
|
1413
1435
|
pgrecs = self.pgmget("bfile", flds, dcnd, self.LGWNEX)
|
|
1414
1436
|
bcnt = len(pgrecs['bid']) if pgrecs else 0
|
|
1415
1437
|
for i in range(bcnt):
|
|
1438
|
+
self.check_batch_deadline()
|
|
1416
1439
|
cnt = self.get_backup_infile(dsfiles, self.onerecord(pgrecs, i))
|
|
1417
1440
|
if cnt:
|
|
1418
1441
|
icnt += 1
|
|
@@ -1438,6 +1461,7 @@ class DsQuasar(PgCMD, PgSplit):
|
|
|
1438
1461
|
pgrecs = self.pgmget("bfile", flds, dcnd, self.LGWNEX)
|
|
1439
1462
|
bcnt = len(pgrecs['bid']) if pgrecs else 0
|
|
1440
1463
|
for i in range(bcnt):
|
|
1464
|
+
self.check_batch_deadline()
|
|
1441
1465
|
cnt = self.get_backup_tarfile(dsfiles, self.onerecord(pgrecs, i))
|
|
1442
1466
|
if cnt:
|
|
1443
1467
|
tcnt += 1
|
{rda_python_dsquasar-3.0.15 → rda_python_dsquasar-3.0.17/src/rda_python_dsquasar.egg-info}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rda_python_dsquasar
|
|
3
|
-
Version: 3.0.
|
|
3
|
+
Version: 3.0.17
|
|
4
4
|
Summary: RDA Python package to backup and recover RDA data archives to and from GLOBUS Quasar backup server
|
|
5
5
|
Author-email: Zaihua Ji <zji@ucar.edu>
|
|
6
6
|
Project-URL: Homepage, https://github.com/NCAR/rda-python-dsquasar
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{rda_python_dsquasar-3.0.15 → rda_python_dsquasar-3.0.17}/src/rda_python_dsquasar/__init__.py
RENAMED
|
File without changes
|
{rda_python_dsquasar-3.0.15 → rda_python_dsquasar-3.0.17}/src/rda_python_dsquasar/ds_quasar.py
RENAMED
|
File without changes
|
{rda_python_dsquasar-3.0.15 → rda_python_dsquasar-3.0.17}/src/rda_python_dsquasar/dsquasar.usg
RENAMED
|
File without changes
|
|
File without changes
|
{rda_python_dsquasar-3.0.15 → rda_python_dsquasar-3.0.17}/src/rda_python_dsquasar/taccrec.py
RENAMED
|
File without changes
|
{rda_python_dsquasar-3.0.15 → rda_python_dsquasar-3.0.17}/src/rda_python_dsquasar/tacctar.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|