diff --git a/ReleaseNotes/ReleaseNotes-2.13.1.txt b/ReleaseNotes/ReleaseNotes-2.13.1.txt new file mode 100644 index 0000000000..958e72610a --- /dev/null +++ b/ReleaseNotes/ReleaseNotes-2.13.1.txt @@ -0,0 +1,21 @@ += Release notes for Gerrit 2.13.1 + +Gerrit 2.13.1 is now available: + +link:https://gerrit-releases.storage.googleapis.com/gerrit-2.13.1.war[ +https://gerrit-releases.storage.googleapis.com/gerrit-2.13.1.war] + +== Schema Upgrade + +There are no schema changes from link:ReleaseNotes-2.13.html[2.13]. + +== Bug Fixes + +* link:https://bugs.chromium.org/p/gerrit/issues/detail?id=4618[Issue 4618]: +Fix internal server error after online reindexing completed. + +* Fix internal server error when cloning from slaves and not all refs are +visible. + +* Fix JSON deserialization error causing stream event client to no longer receive +events. diff --git a/ReleaseNotes/index.txt b/ReleaseNotes/index.txt index 0fc495f4e8..2938c1c615 100644 --- a/ReleaseNotes/index.txt +++ b/ReleaseNotes/index.txt @@ -2,6 +2,7 @@ [[s2_13]] == Version 2.13.x +* link:ReleaseNotes-2.13.1.html[2.13.1] * link:ReleaseNotes-2.13.html[2.13] [[s2_12]] diff --git a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/StreamEvents.java b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/StreamEvents.java index 0cfe4a72c7..f8070747b4 100644 --- a/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/StreamEvents.java +++ b/gerrit-sshd/src/main/java/com/google/gerrit/sshd/commands/StreamEvents.java @@ -40,6 +40,8 @@ import com.google.inject.Inject; import org.apache.sshd.server.Environment; import org.kohsuke.args4j.Option; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; import java.io.IOException; import java.io.PrintWriter; @@ -51,6 +53,9 @@ import java.util.concurrent.LinkedBlockingQueue; @RequiresCapability(GlobalCapability.STREAM_EVENTS) @CommandMetaData(name = "stream-events", description = "Monitor events occurring in real time") final class StreamEvents extends BaseCommand { + private static final Logger log = + LoggerFactory.getLogger(StreamEvents.class); + /** Maximum number of events that may be queued up for each connection. */ private static final int MAX_EVENTS = 128; @@ -262,9 +267,16 @@ final class StreamEvents extends BaseCommand { } private void write(final Object message) { - final String msg = gson.toJson(message) + "\n"; - synchronized (stdout) { - stdout.print(msg); + String msg = null; + try { + msg = gson.toJson(message) + "\n"; + } catch (Exception e) { + log.warn("Could not deserialize the msg: ", e); + } + if (msg != null) { + synchronized (stdout) { + stdout.print(msg); + } } }