Skip to content
Browse files

upload: Catch and cleanly report connectivity errors

Instead of giving a Python backtrace when there is a connectivity
problem during repo upload, report that we cannot access the host,
and why, with a halfway decent error message.

Bug: REPO-45
Change-Id: I9a45b387e86e48073a2d99bd6d594c1a7d6d99d4
Signed-off-by: Shawn O. Pearce <sop@google.com>
  • Loading branch information...
1 parent 4719901 commit d2dfac81ad6a060179b4b2289060af2dc7a5cdfd @spearce spearce committed Aug 22, 2009
Showing with 14 additions and 6 deletions.
  1. +7 −3 git_config.py
  2. +7 −3 subcmds/upload.py
View
10 git_config.py
@@ -19,6 +19,8 @@
import subprocess
import sys
import time
+import urllib2
+
from signal import SIGTERM
from urllib2 import urlopen, HTTPError
from error import GitError, UploadError
@@ -487,23 +489,25 @@ def ReviewProtocol(self):
try:
info = urlopen(u).read()
if info == 'NOT_AVAILABLE':
- raise UploadError('Upload over ssh unavailable')
+ raise UploadError('%s: SSH disabled' % self.review)
if '<' in info:
# Assume the server gave us some sort of HTML
# response back, like maybe a login page.
#
- raise UploadError('Cannot read %s:\n%s' % (u, info))
+ raise UploadError('%s: Cannot parse response' % u)
self._review_protocol = 'ssh'
self._review_host = info.split(" ")[0]
self._review_port = info.split(" ")[1]
+ except urllib2.URLError, e:
+ raise UploadError('%s: %s' % (self.review, e.reason[1]))
except HTTPError, e:
if e.code == 404:
self._review_protocol = 'http-post'
self._review_host = None
self._review_port = None
else:
- raise UploadError('Cannot guess Gerrit version')
+ raise UploadError('Upload over ssh unavailable')
REVIEW_CACHE[u] = (
self._review_protocol,
View
10 subcmds/upload.py
@@ -273,15 +273,19 @@ def _UploadAndReport(self, todo, people):
have_errors = True
print >>sys.stderr, ''
- print >>sys.stderr, '--------------------------------------------'
+ print >>sys.stderr, '----------------------------------------------------------------------'
if have_errors:
for branch in todo:
if not branch.uploaded:
- print >>sys.stderr, '[FAILED] %-15s %-15s (%s)' % (
+ if len(str(branch.error)) <= 30:
+ fmt = ' (%s)'
+ else:
+ fmt = '\n (%s)'
+ print >>sys.stderr, ('[FAILED] %-15s %-15s' + fmt) % (
branch.project.relpath + '/', \
branch.name, \
- branch.error)
+ str(branch.error))
print >>sys.stderr, ''
for branch in todo:

0 comments on commit d2dfac8

Please sign in to comment.
Something went wrong with that request. Please try again.