Merge tag 'v2.4.1'
gerrit 2.4.1 * tag 'v2.4.1': Gerrit 2.4.1 ReleaseNotes Make logging events discardable, prevent NPE in AsyncAppender thread. Display proper error if file diff fails because content is too large Make async logging buffer size configurable. Make sure the "Object too large..." error is printed to the client Conflicts: gerrit-httpd/src/main/java/com/google/gerrit/httpd/rpc/patch/PatchScriptFactory.java Change-Id: Ifd6b7ba9d3b099576fab97d7d739beef7949d045 Signed-off-by: Sasa Zivkov <sasa.zivkov@sap.com>
This commit is contained in:
@@ -18,6 +18,7 @@ import com.google.gerrit.extensions.events.LifecycleListener;
|
||||
import com.google.gerrit.server.CurrentUser;
|
||||
import com.google.gerrit.server.IdentifiedUser;
|
||||
import com.google.gerrit.server.PeerDaemonUser;
|
||||
import com.google.gerrit.server.config.GerritServerConfig;
|
||||
import com.google.gerrit.server.config.SitePaths;
|
||||
import com.google.gerrit.server.util.IdGenerator;
|
||||
import com.google.gerrit.sshd.SshScope.Context;
|
||||
@@ -33,6 +34,7 @@ import org.apache.log4j.Level;
|
||||
import org.apache.log4j.Logger;
|
||||
import org.apache.log4j.spi.ErrorHandler;
|
||||
import org.apache.log4j.spi.LoggingEvent;
|
||||
import org.eclipse.jgit.lib.Config;
|
||||
import org.eclipse.jgit.util.QuotedString;
|
||||
|
||||
import java.io.File;
|
||||
@@ -59,7 +61,7 @@ class SshLog implements LifecycleListener {
|
||||
|
||||
@Inject
|
||||
SshLog(final Provider<SshSession> session, final Provider<Context> context,
|
||||
final SitePaths site) {
|
||||
final SitePaths site, @GerritServerConfig Config config) {
|
||||
this.session = session;
|
||||
this.context = context;
|
||||
|
||||
@@ -77,7 +79,7 @@ class SshLog implements LifecycleListener {
|
||||
|
||||
async = new AsyncAppender();
|
||||
async.setBlocking(true);
|
||||
async.setBufferSize(64);
|
||||
async.setBufferSize(config.getInt("core", "asyncLoggingBufferSize", 64));
|
||||
async.setLocationInfo(false);
|
||||
async.addAppender(dst);
|
||||
async.activateOptions();
|
||||
@@ -99,7 +101,7 @@ class SshLog implements LifecycleListener {
|
||||
void onAuthFail(final SshSession sd) {
|
||||
final LoggingEvent event = new LoggingEvent( //
|
||||
Logger.class.getName(), // fqnOfCategoryClass
|
||||
null, // logger (optional)
|
||||
log, // logger
|
||||
System.currentTimeMillis(), // when
|
||||
Level.INFO, // level
|
||||
"AUTH FAILURE FROM " + sd.getRemoteAddressAsString(), // message text
|
||||
@@ -168,7 +170,7 @@ class SshLog implements LifecycleListener {
|
||||
|
||||
final LoggingEvent event = new LoggingEvent( //
|
||||
Logger.class.getName(), // fqnOfCategoryClass
|
||||
null, // logger (optional)
|
||||
log, // logger
|
||||
System.currentTimeMillis(), // when
|
||||
Level.INFO, // level
|
||||
msg, // message text
|
||||
|
||||
@@ -24,6 +24,7 @@ import com.google.gerrit.server.git.VisibleRefFilter;
|
||||
import com.google.gerrit.sshd.AbstractGitCommand;
|
||||
import com.google.inject.Inject;
|
||||
|
||||
import org.eclipse.jgit.errors.TooLargeObjectInPackException;
|
||||
import org.eclipse.jgit.errors.UnpackException;
|
||||
import org.eclipse.jgit.lib.Ref;
|
||||
import org.eclipse.jgit.transport.AdvertiseRefsHook;
|
||||
@@ -31,6 +32,7 @@ import org.eclipse.jgit.transport.ReceivePack;
|
||||
import org.kohsuke.args4j.Option;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.PrintWriter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
@@ -92,6 +94,15 @@ final class Receive extends AbstractGitCommand {
|
||||
receive.advertiseHistory();
|
||||
rp.receive(in, out, err);
|
||||
} catch (UnpackException badStream) {
|
||||
// In case this was caused by the user pushing an object whose size
|
||||
// is larger than the receive.maxObjectSizeLimit gerrit.config parameter
|
||||
// we want to present this error to the user
|
||||
if (badStream.getCause() instanceof TooLargeObjectInPackException) {
|
||||
PrintWriter p = toPrintWriter(err);
|
||||
p.print("error: " + badStream.getCause().getMessage() + "\n");
|
||||
p.flush();
|
||||
}
|
||||
|
||||
// This may have been triggered by branch level access controls.
|
||||
// Log what the heck is going on, as detailed as we can.
|
||||
//
|
||||
|
||||
Reference in New Issue
Block a user