Merge pull request #5335 from mvdbeek/no_check_data

Work around (temporarily) wrong getsize() output
This commit is contained in:
Nicola Soranzo
2018-01-19 08:58:26 +00:00
committed by GitHub
2 changed files with 12 additions and 4 deletions
+2 -2
View File
@@ -1251,7 +1251,7 @@ class JobWrapper(object, HasResourceParameters):
if job.states.ERROR == final_job_state:
dataset.blurb = "error"
dataset.mark_unhidden()
elif not purged and dataset.has_data():
elif not purged:
# If the tool was expected to set the extension, attempt to retrieve it
if dataset.ext == 'auto':
dataset.extension = context.get('ext', 'data')
@@ -1299,7 +1299,7 @@ class JobWrapper(object, HasResourceParameters):
except Exception:
dataset.set_peek()
else:
# Handle an empty dataset.
# Handle purged datasets.
dataset.blurb = "empty"
if dataset.ext == 'auto':
dataset.extension = context.get('ext', 'txt')
+10 -2
View File
@@ -10,6 +10,7 @@ import os
import random
import shutil
import threading
import time
from xml.etree import ElementTree
try:
@@ -358,7 +359,7 @@ class DiskObjectStore(ObjectStore):
def empty(self, obj, **kwargs):
"""Override `ObjectStore`'s stub by checking file size on disk."""
return os.path.getsize(self.get_filename(obj, **kwargs)) == 0
return self.size(obj, **kwargs) == 0
def size(self, obj, **kwargs):
"""Override `ObjectStore`'s stub by return file size on disk.
@@ -367,7 +368,14 @@ class DiskObjectStore(ObjectStore):
"""
if self.exists(obj, **kwargs):
try:
return os.path.getsize(self.get_filename(obj, **kwargs))
filepath = self.get_filename(obj, **kwargs)
for _ in range(0, 2):
size = os.path.getsize(filepath)
if size != 0:
break
# May be legitimately 0, or there may be an issue with the FS / kernel, so we try again
time.sleep(0.01)
return size
except OSError:
return 0
else: