Closed
Bug 486992
Opened 16 years ago
Closed 16 years ago
post_upload.py errors aren't caught
Categories
(Release Engineering :: General, defect, P2)
Tracking
(Not tracked)
RESOLVED
FIXED
People
(Reporter: nthomas, Assigned: bhearsum)
References
Details
(Keywords: fixed1.9.1)
Attachments
(1 file)
353 bytes,
patch
|
ted
:
review+
beltzner
:
approval1.9.1+
bhearsum
:
checked-in+
|
Details | Diff | Splinter Review |
Hit an issue today where I ran out of space on staging-stage and post_upload.py errored out:
/tools/python/bin/python ../../build/upload.py --base-path ../../dist "../../dist/linux-i686/fr/firefox-3.5rc1.tar.bz2" ../../dist/linux-i686/xpi/fr.xpi
Uploading /builds/moz2_debug_slave/linux_repack/build/mozilla-1.9.1/dist/linux-i686/fr/firefox-3.5rc1.tar.bz2
firefox-3.5rc1.tar.bz2 0% 0 0.0KB/s --:-- ETA
firefox-3.5rc1.tar.bz2 100% 9619KB 9.4MB/s 00:01
Uploading /builds/moz2_debug_slave/linux_repack/build/mozilla-1.9.1/dist/linux-i686/xpi/fr.xpi
fr.xpi 0% 0 0.0KB/s --:-- ETA
fr.xpi 100% 125KB 125.2KB/s 00:00
Running post-upload command: post_upload.py -p firefox -v 3.5rc1 -n 1 --release-to-candidates-dir
Traceback (most recent call last):
File "/usr/bin/post_upload.py", line 243, in ?
func(options, upload_dir, files)
File "/usr/bin/post_upload.py", line 129, in ReleaseToCandidatesDir
CopyFileToDir(f, upload_dir, realCandidatesPath, preserve_dirs=True)
File "/usr/bin/post_upload.py", line 34, in CopyFileToDir
os.makedirs(full_dest_dir, 0755)
File "/usr/lib/python2.3/os.py", line 154, in makedirs
mkdir(name, mode)
OSError: [Errno 28] No space left on device: '/home/ftp/pub/firefox/nightly/3.5rc1-candidates/build1/linux-i686/fr'
Encountered error while uploading
The exit code isn't caught, it goes on to try to upload a second file, and the buildbot step has exit status 0. At least for releases we need to handle this better. I think the culprit is no error handling in hg:build/tools/stage/post_upload.py.
Comment 1•16 years ago
|
||
Hm. Correct me if I'm wrong, but it looks like shutil.copyfile() doesn't do any sort of checking. We could potentially do a checksum of each file pair (old vs new) to CopyFileToDir(), but this will add time, especially if we checksum large files. A filesize comparison would be faster though less thorough.
Comment 2•16 years ago
|
||
I think the problem is in mozilla's build/upload.py, where it doesn't check the return from DoSSHCommand.
Comment 3•16 years ago
|
||
It does check the return (DoSSHCommand throws on non-zero exit):
http://mxr.mozilla.org/mozilla-central/source/build/upload.py#122
but upload.py doesn't exit with an error on exceptions:
http://mxr.mozilla.org/mozilla-central/source/build/upload.py#229
Assignee | ||
Comment 4•16 years ago
|
||
(In reply to comment #3)
> It does check the return (DoSSHCommand throws on non-zero exit):
> http://mxr.mozilla.org/mozilla-central/source/build/upload.py#122
> but upload.py doesn't exit with an error on exceptions:
> http://mxr.mozilla.org/mozilla-central/source/build/upload.py#229
So we just need to sys.exit(1) on the except's in the if __name__ == '__main__' block?
Comment 5•16 years ago
|
||
Looks like it, yes, assuming post_upload.py also exits with an error.
Assignee | ||
Comment 6•16 years ago
|
||
Judging from comment#0 where a Traceback is being printed, and post_upload.py not doing try/except when it calls the functions it looks like it exits non-zero. I just tested locally and indeed, when CopyFileToDir() raises an exception the exit code is non-zero. I'll get a patch for upload.py ready.
Assignee: nobody → bhearsum
Priority: -- → P2
Assignee | ||
Comment 7•16 years ago
|
||
Attachment #373340 -
Flags: review?(ted.mielczarek)
Updated•16 years ago
|
Attachment #373340 -
Flags: review?(ted.mielczarek) → review+
Assignee | ||
Updated•16 years ago
|
Attachment #373340 -
Flags: checked‑in+ checked‑in+
Assignee | ||
Comment 8•16 years ago
|
||
Comment on attachment 373340 [details] [diff] [review]
use sys.exit(non-zero) when exceptions are caught in upload.py
changeset: 27534:5ed2092ca3a4
Landed on mozilla-central.
Assignee | ||
Comment 9•16 years ago
|
||
Comment on attachment 373340 [details] [diff] [review]
use sys.exit(non-zero) when exceptions are caught in upload.py
The codepaths here aren't reached unless there's a failure to upload (eg. network problem). These are pretty rare, so they haven't been hit in a real build yet. It's a pretty trivial patch which will only improve error reporting, so I think this is ready to go on mozilla-1.9.1.
Technically, this is POTB, so I'm requesting approval.
Assignee | ||
Updated•16 years ago
|
Attachment #373340 -
Flags: approval1.9.1?
Comment 10•16 years ago
|
||
Comment on attachment 373340 [details] [diff] [review]
use sys.exit(non-zero) when exceptions are caught in upload.py
a191=beltzner
Attachment #373340 -
Flags: approval1.9.1? → approval1.9.1+
Assignee | ||
Comment 11•16 years ago
|
||
Comment on attachment 373340 [details] [diff] [review]
use sys.exit(non-zero) when exceptions are caught in upload.py
mozilla-1.9.1: changeset: 24948:376ea3c5e508
Assignee | ||
Comment 12•16 years ago
|
||
I just landed this on mozilla-1.9.1. Tracemonkey will pick this up next time they merge, so I'm going to consider this bug FIXED.
Status: NEW → RESOLVED
Closed: 16 years ago
Resolution: --- → FIXED
Updated•16 years ago
|
Keywords: fixed1.9.1
Updated•11 years ago
|
Product: mozilla.org → Release Engineering
You need to log in
before you can comment on or make changes to this bug.
Description
•