Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • coverity
  • master
  • sminskyprimu/blake3
  • sotk/consolidate-leases-and-jobs/p2-write-only-leases
  • sotk/consolidate-leases-and-jobs/p3-drop-leases-table
  • sotk/features/lease-audit-table
  • sotk/logstream-testing
  • zchen723/skip-scheduler-metrics
  • 0.0.10
  • 0.0.11
  • 0.0.12
  • 0.0.13
  • 0.0.14
  • 0.0.16
  • 0.0.17
  • 0.0.19
  • 0.0.2
  • 0.0.20
  • 0.0.21
  • 0.0.23
  • 0.0.25
  • 0.0.26
  • 0.0.27
  • 0.0.28
  • 0.0.29
  • 0.0.3
  • 0.0.30
  • 0.0.31
  • 0.0.32
  • 0.0.33
  • 0.0.34
  • 0.0.35
  • 0.0.36
  • 0.0.37
  • 0.0.38
  • 0.0.39
  • 0.0.4
  • 0.0.40
  • 0.0.41
  • 0.0.42
  • 0.0.43
  • 0.0.44
  • 0.0.45
  • 0.0.46
  • 0.0.47
  • 0.0.48
  • 0.0.49
  • 0.0.5
  • 0.0.50
  • 0.0.51
  • 0.0.52
  • 0.0.53
  • 0.0.54
  • 0.0.55
  • 0.0.56
  • 0.0.57
  • 0.0.58
  • 0.0.59
  • 0.0.6
  • 0.0.60
  • 0.0.61
  • 0.0.62
  • 0.0.63
  • 0.0.64
  • 0.0.65
  • 0.0.66
  • 0.0.67
  • 0.0.68
  • 0.0.69
  • 0.0.7
  • 0.0.70
  • 0.0.71
  • 0.0.72
  • 0.0.73
  • 0.0.74
  • 0.0.75
  • 0.0.76
  • 0.0.78
  • 0.0.79
  • 0.0.8
  • 0.0.80
  • 0.0.81
  • 0.0.82
  • 0.0.83
  • 0.0.84
  • 0.0.85
  • 0.0.86
  • 0.0.87
  • 0.0.88
  • 0.0.89
  • 0.0.9
  • 0.0.90
  • 0.0.91
  • 0.0.92
  • 0.0.93
  • 0.0.94
  • 0.0.95
  • 0.0.96
  • 0.0.97
  • 0.0.98
  • 0.1.0
  • 0.1.1
  • 0.1.10
  • 0.1.11
  • 0.1.12
  • 0.1.13
  • 0.1.14
  • 0.1.15
108 results

Target

Select target project
  • edbaunton/buildgrid
  • BuildGrid/buildgrid
  • bloomberg/buildgrid
  • devcurmudgeon/buildgrid
  • mhadjimichael/buildgrid
  • jmacarthur/buildgrid
  • rkothur/buildgrid
  • valentindavid/buildgrid
  • jjardon/buildgrid
  • RichKen/buildgrid
  • jbonney/buildgrid
  • onsha_alexander/buildgrid
  • santigl/buildgrid
  • mostynb/buildgrid
  • hoffbrinkle/buildgrid
  • Malinskiy/buildgrid
  • coldtom/buildgrid
  • azeemb_a/buildgrid
  • pointswaves/buildgrid
  • BenjaminSchubert/buildgrid
  • michaellee8/buildgrid
  • anil-anil/buildgrid
  • seanborg/buildgrid
  • jdelong12/buildgrid
  • jclay/buildgrid
  • bweston92/buildgrid
  • zchen723/buildgrid
  • cpratt34/buildgrid
  • armbiant/apache-buildgrid
  • armbiant/android-buildgrid
  • itsme300/buildgrid
  • sbairoliya/buildgrid
32 results
Select Git revision
  • coverity
  • master
  • sminskyprimu/blake3
  • sotk/consolidate-leases-and-jobs/p2-write-only-leases
  • sotk/consolidate-leases-and-jobs/p3-drop-leases-table
  • sotk/features/lease-audit-table
  • sotk/logstream-testing
  • zchen723/skip-scheduler-metrics
  • 0.0.10
  • 0.0.11
  • 0.0.12
  • 0.0.13
  • 0.0.14
  • 0.0.16
  • 0.0.17
  • 0.0.19
  • 0.0.2
  • 0.0.20
  • 0.0.21
  • 0.0.23
  • 0.0.25
  • 0.0.26
  • 0.0.27
  • 0.0.28
  • 0.0.29
  • 0.0.3
  • 0.0.30
  • 0.0.31
  • 0.0.32
  • 0.0.33
  • 0.0.34
  • 0.0.35
  • 0.0.36
  • 0.0.37
  • 0.0.38
  • 0.0.39
  • 0.0.4
  • 0.0.40
  • 0.0.41
  • 0.0.42
  • 0.0.43
  • 0.0.44
  • 0.0.45
  • 0.0.46
  • 0.0.47
  • 0.0.48
  • 0.0.49
  • 0.0.5
  • 0.0.50
  • 0.0.51
  • 0.0.52
  • 0.0.53
  • 0.0.54
  • 0.0.55
  • 0.0.56
  • 0.0.57
  • 0.0.58
  • 0.0.59
  • 0.0.6
  • 0.0.60
  • 0.0.61
  • 0.0.62
  • 0.0.63
  • 0.0.64
  • 0.0.65
  • 0.0.66
  • 0.0.67
  • 0.0.68
  • 0.0.69
  • 0.0.7
  • 0.0.70
  • 0.0.71
  • 0.0.72
  • 0.0.73
  • 0.0.74
  • 0.0.75
  • 0.0.76
  • 0.0.78
  • 0.0.79
  • 0.0.8
  • 0.0.80
  • 0.0.81
  • 0.0.82
  • 0.0.83
  • 0.0.84
  • 0.0.85
  • 0.0.86
  • 0.0.87
  • 0.0.88
  • 0.0.89
  • 0.0.9
  • 0.0.90
  • 0.0.91
  • 0.0.92
  • 0.0.93
  • 0.0.94
  • 0.0.95
  • 0.0.96
  • 0.0.97
  • 0.0.98
  • 0.1.0
  • 0.1.1
  • 0.1.10
  • 0.1.11
  • 0.1.12
  • 0.1.13
  • 0.1.14
  • 0.1.15
108 results
Show changes
Commits on Source (2)
......@@ -171,7 +171,7 @@ class Downloader:
return messages
def download_file(self, digest, file_path, queue=True):
def download_file(self, digest, file_path, is_executable=False, queue=True):
"""Retrieves a file from the remote CAS server.
If queuing is allowed (`queue=True`), the download request **may** be
......@@ -181,6 +181,7 @@ class Downloader:
Args:
digest (:obj:`Digest`): the file's digest to fetch.
file_path (str): absolute or relative path to the local file to write.
is_executable (bool): whether the file is executable or not.
queue (bool, optional): whether or not the download request may be
queued and submitted as part of a batch upload request. Defaults
to True.
......@@ -193,9 +194,9 @@ class Downloader:
file_path = os.path.abspath(file_path)
if not queue or digest.size_bytes > FILE_SIZE_THRESHOLD:
self._fetch_file(digest, file_path)
self._fetch_file(digest, file_path, is_executable=is_executable)
else:
self._queue_file(digest, file_path)
self._queue_file(digest, file_path, is_executable=is_executable)
def download_directory(self, digest, directory_path):
"""Retrieves a :obj:`Directory` from the remote CAS server.
......@@ -311,7 +312,7 @@ class Downloader:
return read_blobs
def _fetch_file(self, digest, file_path):
def _fetch_file(self, digest, file_path, is_executable=False):
"""Fetches a file using ByteStream.Read()"""
if self.instance_name:
resource_name = '/'.join([self.instance_name, 'blobs',
......@@ -332,7 +333,10 @@ class Downloader:
assert byte_file.tell() == digest.size_bytes
def _queue_file(self, digest, file_path):
if is_executable:
os.chmod(file_path, 0o755) # rwxr-xr-x / 755
def _queue_file(self, digest, file_path, is_executable=False):
"""Queues a file for later batch download"""
if self.__file_request_size + digest.ByteSize() > MAX_REQUEST_SIZE:
self.flush()
......@@ -341,22 +345,25 @@ class Downloader:
elif self.__file_request_count >= MAX_REQUEST_COUNT:
self.flush()
self.__file_requests[digest.hash] = (digest, file_path)
self.__file_requests[digest.hash] = (digest, file_path, is_executable)
self.__file_request_count += 1
self.__file_request_size += digest.ByteSize()
self.__file_response_size += digest.size_bytes
def _fetch_file_batch(self, batch):
"""Sends queued data using ContentAddressableStorage.BatchReadBlobs()"""
batch_digests = [digest for digest, _ in batch.values()]
batch_digests = [digest for digest, _, _ in batch.values()]
batch_blobs = self._fetch_blob_batch(batch_digests)
for (_, file_path), file_blob in zip(batch.values(), batch_blobs):
for (_, file_path, is_executable), file_blob in zip(batch.values(), batch_blobs):
os.makedirs(os.path.dirname(file_path), exist_ok=True)
with open(file_path, 'wb') as byte_file:
byte_file.write(file_blob)
if is_executable:
os.chmod(file_path, 0o755) # rwxr-xr-x / 755
def _fetch_directory(self, digest, directory_path):
"""Fetches a file using ByteStream.GetTree()"""
# Better fail early if the local root path cannot be created:
......@@ -414,7 +421,7 @@ class Downloader:
for file_node in root_directory.files:
file_path = os.path.join(root_path, file_node.name)
self._queue_file(file_node.digest, file_path)
self._queue_file(file_node.digest, file_path, is_executable=file_node.is_executable)
for directory_node in root_directory.directories:
directory_path = os.path.join(root_path, directory_node.name)
......
#!/bin/bash
echo "Hello, World!"