Instead of dumping a full stack trace when a client sends an invalid commit, record only a short line explaining the attempt: Cannot receive Invalid commit c0ff33...: invalid author into /tmp/jgit.git The text alone is sufficient to explain the problem and the stack trace does not lend any additional useful information. ObjectChecker is quite clear about its rejection cases. Change-Id: Ifc8cf06032489dc6431be1ba66101cf3d4299218tags/v4.0.0.201505191015-rc1
@@ -21,6 +21,7 @@ noResolverAvailable=No resolver available | |||
parameterNotSet=Parameter {0} not set | |||
pathForParamNotFound={0} (for {1}) not found | |||
pathNotSupported={0} not supported | |||
receivedCorruptObject=Cannot receive {0} into {1} | |||
repositoryAccessForbidden=Git access forbidden | |||
repositoryNotFound=Git repository not found | |||
servletAlreadyInitialized=Servlet already initialized |
@@ -76,6 +76,7 @@ public class HttpServerText extends TranslationBundle { | |||
/***/ public String parameterNotSet; | |||
/***/ public String pathForParamNotFound; | |||
/***/ public String pathNotSupported; | |||
/***/ public String receivedCorruptObject; | |||
/***/ public String repositoryAccessForbidden; | |||
/***/ public String repositoryNotFound; | |||
/***/ public String servletAlreadyInitialized; |
@@ -75,6 +75,7 @@ import javax.servlet.http.HttpServlet; | |||
import javax.servlet.http.HttpServletRequest; | |||
import javax.servlet.http.HttpServletResponse; | |||
import org.eclipse.jgit.errors.CorruptObjectException; | |||
import org.eclipse.jgit.errors.UnpackException; | |||
import org.eclipse.jgit.lib.Repository; | |||
import org.eclipse.jgit.transport.InternalHttpServerGlue; | |||
@@ -191,6 +192,15 @@ class ReceivePackServlet extends HttpServlet { | |||
rp.receive(getInputStream(req), out, null); | |||
out.close(); | |||
} catch (CorruptObjectException e ) { | |||
// This should be already reported to the client. | |||
getServletContext().log(MessageFormat.format( | |||
HttpServerText.get().receivedCorruptObject, | |||
e.getMessage(), | |||
ServletUtils.identify(rp.getRepository()))); | |||
consumeRequestBody(req); | |||
out.close(); | |||
} catch (UnpackException e) { | |||
// This should be already reported to the client. | |||
log(rp.getRepository(), e.getCause()); |