Revision 3d6c5566
b/lib/errors.py | ||
---|---|---|
184 | 184 |
""" |
185 | 185 |
|
186 | 186 |
|
187 |
class JobFileCorrupted(GenericError): |
|
188 |
"""Job file could not be properly decoded/restored. |
|
189 |
|
|
190 |
""" |
|
191 |
|
|
192 |
|
|
187 | 193 |
class ResolverError(GenericError): |
188 | 194 |
"""Host name cannot be resolved. |
189 | 195 |
|
b/lib/jqueue.py | ||
---|---|---|
985 | 985 |
logging.debug("Found job %s in memcache", job_id) |
986 | 986 |
return job |
987 | 987 |
|
988 |
job = self._LoadJobFromDisk(job_id) |
|
988 |
try: |
|
989 |
job = self._LoadJobFromDisk(job_id) |
|
990 |
except errors.JobFileCorrupted: |
|
991 |
old_path = self._GetJobPath(job_id) |
|
992 |
new_path = self._GetArchivedJobPath(job_id) |
|
993 |
if old_path == new_path: |
|
994 |
# job already archived (future case) |
|
995 |
logging.exception("Can't parse job %s", job_id) |
|
996 |
else: |
|
997 |
# non-archived case |
|
998 |
logging.exception("Can't parse job %s, will archive.", job_id) |
|
999 |
self._RenameFilesUnlocked([(old_path, new_path)]) |
|
1000 |
return None |
|
989 | 1001 |
|
990 | 1002 |
self._memcache[job_id] = job |
991 | 1003 |
logging.debug("Added job %s to the cache", job_id) |
... | ... | |
1015 | 1027 |
data = serializer.LoadJson(raw_data) |
1016 | 1028 |
job = _QueuedJob.Restore(self, data) |
1017 | 1029 |
except Exception, err: # pylint: disable-msg=W0703 |
1018 |
new_path = self._GetArchivedJobPath(job_id) |
|
1019 |
if filepath == new_path: |
|
1020 |
# job already archived (future case) |
|
1021 |
logging.exception("Can't parse job %s", job_id) |
|
1022 |
else: |
|
1023 |
# non-archived case |
|
1024 |
logging.exception("Can't parse job %s, will archive.", job_id) |
|
1025 |
self._RenameFilesUnlocked([(filepath, new_path)]) |
|
1026 |
return None |
|
1030 |
raise errors.JobFileCorrupted(err) |
|
1027 | 1031 |
|
1028 | 1032 |
return job |
1029 | 1033 |
|
Also available in: Unified diff