[ARVADOS] created: ef328d9143c65c72c37194272f90fabc3ec45e0a
Git user
git at public.curoverse.com
Fri Feb 3 14:31:56 EST 2017
at ef328d9143c65c72c37194272f90fabc3ec45e0a (commit)
commit ef328d9143c65c72c37194272f90fabc3ec45e0a
Author: Lucas Di Pentima <lucas at curoverse.com>
Date: Fri Feb 3 16:21:24 2017 -0300
10968: Added a notification when uploading at least one directory, just to let know the user that the expected bytes count can take some time when trying to upload lots of files.
diff --git a/sdk/python/arvados/commands/put.py b/sdk/python/arvados/commands/put.py
index efb808b..9590f9d 100644
--- a/sdk/python/arvados/commands/put.py
+++ b/sdk/python/arvados/commands/put.py
@@ -445,7 +445,7 @@ class ArvPutUploadJob(object):
# report initial progress.
self._update()
# Actual file upload
- self._upload_started = True
+ self._upload_started = True # Used by the update thread to start checkpointing
self._upload_files()
finally:
if not self.dry_run:
@@ -824,6 +824,7 @@ def main(arguments=None, stdout=sys.stdout, stderr=sys.stderr):
global api_client
logger = logging.getLogger('arvados.arv_put')
+ logger.setLevel(logging.INFO)
args = parse_arguments(arguments)
status = 0
if api_client is None:
@@ -863,6 +864,10 @@ def main(arguments=None, stdout=sys.stdout, stderr=sys.stderr):
else:
reporter = None
+ # If this is used by a human, and there's at least one directory to be
+ # uploaded, the expected bytes calculation can take a moment.
+ if args.progress and any([os.path.isdir(f) for f in args.paths]):
+ logger.info("Calculating upload size, this could take some time...")
bytes_expected = expected_bytes_for(args.paths)
try:
commit 211884f495248bbaf2ab74ff8d5ae2ed54b97bf2
Author: Lucas Di Pentima <lucas at curoverse.com>
Date: Fri Feb 3 14:52:16 2017 -0300
10968: Changed the periodic update thread to run every 1 second while arv-put is checking which files to skip, only notifying the user via the progress indicator.
When starts uploading the rest of the files, the update thread returns to the previous behaviour, running once every minute and checkpointing to the cache.
diff --git a/sdk/python/arvados/commands/put.py b/sdk/python/arvados/commands/put.py
index 24cb987..efb808b 100644
--- a/sdk/python/arvados/commands/put.py
+++ b/sdk/python/arvados/commands/put.py
@@ -388,6 +388,7 @@ class ArvPutUploadJob(object):
self._checkpointer.daemon = True
self._update_task_time = update_time # How many seconds wait between update runs
self._files_to_upload = FileUploadList(dry_run=dry_run)
+ self._upload_started = False
self.logger = logger
self.dry_run = dry_run
@@ -444,6 +445,7 @@ class ArvPutUploadJob(object):
# report initial progress.
self._update()
# Actual file upload
+ self._upload_started = True
self._upload_files()
finally:
if not self.dry_run:
@@ -506,28 +508,31 @@ class ArvPutUploadJob(object):
Periodically called support task. File uploading is
asynchronous so we poll status from the collection.
"""
- while not self._stop_checkpointer.wait(self._update_task_time):
+ while not self._stop_checkpointer.wait(1 if not self._upload_started else self._update_task_time):
self._update()
def _update(self, final=False):
"""
Update cached manifest text and report progress.
"""
- with self._collection_lock:
- self.bytes_written = self._collection_size(self._local_collection)
+ if self._upload_started:
+ with self._collection_lock:
+ self.bytes_written = self._collection_size(self._local_collection)
+ if self.use_cache:
+ if final:
+ manifest = self._local_collection.manifest_text()
+ else:
+ # Get the manifest text without comitting pending blocks
+ manifest = self._local_collection.manifest_text(strip=False,
+ normalize=False,
+ only_committed=True)
+ # Update cache
+ with self._state_lock:
+ self._state['manifest'] = manifest
if self.use_cache:
- if final:
- manifest = self._local_collection.manifest_text()
- else:
- # Get the manifest text without comitting pending blocks
- manifest = self._local_collection.manifest_text(strip=False,
- normalize=False,
- only_committed=True)
- # Update cache
- with self._state_lock:
- self._state['manifest'] = manifest
- if self.use_cache:
- self._save_state()
+ self._save_state()
+ else:
+ self.bytes_written = self.bytes_skipped
# Call the reporter, if any
self.report_progress()
-----------------------------------------------------------------------
hooks/post-receive
--
More information about the arvados-commits
mailing list