rda-python-dsquasar 3.0.25__tar.gz → 3.0.27__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.
Files changed (20) hide show
  1. {rda_python_dsquasar-3.0.25/src/rda_python_dsquasar.egg-info → rda_python_dsquasar-3.0.27}/PKG-INFO +1 -1
  2. {rda_python_dsquasar-3.0.25 → rda_python_dsquasar-3.0.27}/pyproject.toml +1 -1
  3. {rda_python_dsquasar-3.0.25 → rda_python_dsquasar-3.0.27}/src/rda_python_dsquasar/dsquasar.py +20 -0
  4. {rda_python_dsquasar-3.0.25 → rda_python_dsquasar-3.0.27/src/rda_python_dsquasar.egg-info}/PKG-INFO +1 -1
  5. {rda_python_dsquasar-3.0.25 → rda_python_dsquasar-3.0.27}/LICENSE +0 -0
  6. {rda_python_dsquasar-3.0.25 → rda_python_dsquasar-3.0.27}/MANIFEST.in +0 -0
  7. {rda_python_dsquasar-3.0.25 → rda_python_dsquasar-3.0.27}/README.md +0 -0
  8. {rda_python_dsquasar-3.0.25 → rda_python_dsquasar-3.0.27}/setup.cfg +0 -0
  9. {rda_python_dsquasar-3.0.25 → rda_python_dsquasar-3.0.27}/src/rda_python_dsquasar/__init__.py +0 -0
  10. {rda_python_dsquasar-3.0.25 → rda_python_dsquasar-3.0.27}/src/rda_python_dsquasar/ds_quasar.py +0 -0
  11. {rda_python_dsquasar-3.0.25 → rda_python_dsquasar-3.0.27}/src/rda_python_dsquasar/dsquasar.usg +0 -0
  12. {rda_python_dsquasar-3.0.25 → rda_python_dsquasar-3.0.27}/src/rda_python_dsquasar/dstacc.py +0 -0
  13. {rda_python_dsquasar-3.0.25 → rda_python_dsquasar-3.0.27}/src/rda_python_dsquasar/taccrec.py +0 -0
  14. {rda_python_dsquasar-3.0.25 → rda_python_dsquasar-3.0.27}/src/rda_python_dsquasar/tacctar.py +0 -0
  15. {rda_python_dsquasar-3.0.25 → rda_python_dsquasar-3.0.27}/src/rda_python_dsquasar.egg-info/SOURCES.txt +0 -0
  16. {rda_python_dsquasar-3.0.25 → rda_python_dsquasar-3.0.27}/src/rda_python_dsquasar.egg-info/dependency_links.txt +0 -0
  17. {rda_python_dsquasar-3.0.25 → rda_python_dsquasar-3.0.27}/src/rda_python_dsquasar.egg-info/entry_points.txt +0 -0
  18. {rda_python_dsquasar-3.0.25 → rda_python_dsquasar-3.0.27}/src/rda_python_dsquasar.egg-info/requires.txt +0 -0
  19. {rda_python_dsquasar-3.0.25 → rda_python_dsquasar-3.0.27}/src/rda_python_dsquasar.egg-info/top_level.txt +0 -0
  20. {rda_python_dsquasar-3.0.25 → rda_python_dsquasar-3.0.27}/test/test_dsquasar.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rda_python_dsquasar
3
- Version: 3.0.25
3
+ Version: 3.0.27
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
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "rda_python_dsquasar"
7
- version = "3.0.25"
7
+ version = "3.0.27"
8
8
  authors = [
9
9
  { name="Zaihua Ji", email="zji@ucar.edu" },
10
10
  ]
@@ -504,6 +504,10 @@ class DsQuasar(PgCMD, PgSplit):
504
504
  # the done fraction dcount/fcount is used instead of a raw count because dcount counts
505
505
  # GDEX files for -A 3 but tar files for -A 2/-A 4. a job that is not locked, not started
506
506
  # yet, or whose process is gone is not stalled: init_dscheck already restarts a dead one.
507
+ # not started yet means status 'R': the dscheck daemon sets pid to the PBS job id and
508
+ # stttime to the submit time already at qsub, and rdaps lists a queued job as alive, so
509
+ # a job waiting in the PBS queue would otherwise read as one running with nothing done.
510
+ # init_dscheck sets status 'R' and resets stttime once the batch job really starts.
507
511
  # WALLTIME is the 24 hours asked for at submit time, since only the submitting process
508
512
  # runs this and set_walltime_deadline reads the granted walltime back in the batch job.
509
513
  # when the daemon caps it to a shorter queue limit the projection is optimistic, which
@@ -516,6 +520,7 @@ class DsQuasar(PgCMD, PgSplit):
516
520
  # only be added by a cron submit, every 4 hours: a 6 hour grace kept it out of the first
517
521
  # 6 to 10 hours of every attempt.
518
522
  def worker_progress_stalled(self, pgrec):
523
+ if pgrec['status'] != 'R': return False # queued, held or finished: not running
519
524
  if not (pgrec['pid'] and pgrec['stttime']): return False
520
525
  if self.check_host_pid(pgrec['lockhost'], pgrec['pid']) <= 0: return False
521
526
  elapsed = tm() - pgrec['stttime']
@@ -1335,6 +1340,21 @@ class DsQuasar(PgCMD, PgSplit):
1335
1340
  s = 's' if mcnt > 1 else ''
1336
1341
  ftype = 'Saved' if fcate == 's' else 'Web'
1337
1342
  self.pglog("{}: {} of {} {} file{} missing from storage, not backed up".format(dsid, mcnt, fcnt, ftype, s), self.LOGACT)
1343
+ if self.PGBACK['pstep']: self.drop_dscheck_files(mcnt)
1344
+
1345
+ # take files found missing from storage out of the dscheck file count. they are counted
1346
+ # in at start, before any file is checked, but are never tarred and so never reach
1347
+ # dcount: left in, they cap the done fraction below 100% (8,308 of 21,620 files once,
1348
+ # 38%), understate the progress report and make the stall test add a worker the run
1349
+ # does not need. with an upload action every file was counted twice, once to tar and
1350
+ # once to upload, so twice as many come out
1351
+ def drop_dscheck_files(self, mcnt):
1352
+ fcnt = self.DSCHK['fcount'] if 'fcount' in self.DSCHK else 0
1353
+ if not fcnt: return
1354
+ if self.PGBACK['action']&self.BCKACT: mcnt *= 2
1355
+ fcnt -= mcnt
1356
+ if fcnt < self.PGBACK['dcnt']: fcnt = self.PGBACK['dcnt']
1357
+ self.set_dscheck_fcount(fcnt, self.LGEREX)
1338
1358
 
1339
1359
  # initialize dataset backup dict structure
1340
1360
  @staticmethod
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rda_python_dsquasar
3
- Version: 3.0.25
3
+ Version: 3.0.27
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