From 64059f5f47bde5dcb65494b09b88b0e323110b9c Mon Sep 17 00:00:00 2001 From: Edwin Kempin Date: Thu, 31 Oct 2013 13:49:25 +0100 Subject: [PATCH 1/7] Document how plugins can listen to stream-events Change-Id: I7db0cab69eb0087ccac186b8ae258ad06eb37ac6 Signed-off-by: Edwin Kempin --- Documentation/cmd-stream-events.txt | 1 + Documentation/dev-plugins.txt | 6 ++++++ 2 files changed, 7 insertions(+) diff --git a/Documentation/cmd-stream-events.txt b/Documentation/cmd-stream-events.txt index 10689b6f47..2a3265e8bf 100644 --- a/Documentation/cmd-stream-events.txt +++ b/Documentation/cmd-stream-events.txt @@ -52,6 +52,7 @@ The currently supported message types are *patchset-created*, Note that any field may be missing in the JSON messages, so consumers of this JSON stream should deal with that appropriately. +[[events]] Events ~~~~~~ Patchset Created diff --git a/Documentation/dev-plugins.txt b/Documentation/dev-plugins.txt index 5e10a622d9..d0e361aded 100644 --- a/Documentation/dev-plugins.txt +++ b/Documentation/dev-plugins.txt @@ -323,6 +323,12 @@ Certain operations in Gerrit trigger events. Plugins may receive notifications of these events by implementing the corresponding listeners. +* `com.google.gerrit.common.ChangeListener`: ++ +Allows to listen to change events. These are the same +link:cmd-stream-events.html#events[events] that are also streamed by +the link:cmd-stream-events.html[gerrit stream-events] command. + * `com.google.gerrit.extensions.events.LifecycleListener`: + Gerrit server startup and shutdown From c9a6e0847be2de61563d66d8d06c998abaf53954 Mon Sep 17 00:00:00 2001 From: alex Date: Fri, 1 Nov 2013 21:06:59 +0400 Subject: [PATCH 2/7] Print error message to log when plugin loader fails to close JAR file Change-Id: Ic113b7759e094bd18c8c68767d85a25044400cb4 --- .../java/com/google/gerrit/server/plugins/CleanupHandle.java | 1 + 1 file changed, 1 insertion(+) diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/plugins/CleanupHandle.java b/gerrit-server/src/main/java/com/google/gerrit/server/plugins/CleanupHandle.java index b04f337d18..593f2c94b4 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/plugins/CleanupHandle.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/plugins/CleanupHandle.java @@ -32,6 +32,7 @@ class CleanupHandle { try { jarFile.close(); } catch (IOException err) { + PluginLoader.log.error("Cannot close " + jarFile.getName(), err); } if (!tmpFile.delete() && tmpFile.exists()) { PluginLoader.log.warn("Cannot delete " + tmpFile.getAbsolutePath() From 59ae7d743cd3e7bb0580cc73a9e4dfe4ca7a7c9e Mon Sep 17 00:00:00 2001 From: "alex.ryazantsev" Date: Sun, 3 Nov 2013 12:36:39 +0400 Subject: [PATCH 3/7] Remove unnecessary imports Change-Id: Iaa86c0d4d893a1eb6f114275c35ff830fb2b7fff --- .../jgit/internal/storage/file/WindowCacheStatAccessor.java | 2 -- .../src/main/java/com/google/gerrit/server/patch/PatchFile.java | 2 -- .../com/google/gerrit/server/ioutil/ColumnFormatterTest.java | 2 -- 3 files changed, 6 deletions(-) diff --git a/gerrit-patch-jgit/src/main/java/org/eclipse/jgit/internal/storage/file/WindowCacheStatAccessor.java b/gerrit-patch-jgit/src/main/java/org/eclipse/jgit/internal/storage/file/WindowCacheStatAccessor.java index f241daac64..1e94050ef5 100644 --- a/gerrit-patch-jgit/src/main/java/org/eclipse/jgit/internal/storage/file/WindowCacheStatAccessor.java +++ b/gerrit-patch-jgit/src/main/java/org/eclipse/jgit/internal/storage/file/WindowCacheStatAccessor.java @@ -14,8 +14,6 @@ package org.eclipse.jgit.internal.storage.file; -import org.eclipse.jgit.internal.storage.file.WindowCache; - // Hack to obtain visibility to package level methods only. // These aren't yet part of the public JGit API. diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/patch/PatchFile.java b/gerrit-server/src/main/java/com/google/gerrit/server/patch/PatchFile.java index 6fcf581fba..81f435201c 100644 --- a/gerrit-server/src/main/java/com/google/gerrit/server/patch/PatchFile.java +++ b/gerrit-server/src/main/java/com/google/gerrit/server/patch/PatchFile.java @@ -31,7 +31,6 @@ import org.eclipse.jgit.revwalk.RevWalk; import org.eclipse.jgit.treewalk.TreeWalk; import java.io.IOException; -import java.nio.charset.CharacterCodingException; /** State supporting processing of a single {@link Patch} instance. */ public class PatchFile { @@ -89,7 +88,6 @@ public class PatchFile { * @throws CorruptEntityException the patch cannot be read. * @throws IOException the patch or complete file content cannot be read. * @throws NoSuchEntityException - * @throws CharacterCodingException the file is not a known character set. */ public String getLine(final int file, final int line) throws CorruptEntityException, IOException, NoSuchEntityException { diff --git a/gerrit-server/src/test/java/com/google/gerrit/server/ioutil/ColumnFormatterTest.java b/gerrit-server/src/test/java/com/google/gerrit/server/ioutil/ColumnFormatterTest.java index 2d432e635f..3b4005c9c7 100644 --- a/gerrit-server/src/test/java/com/google/gerrit/server/ioutil/ColumnFormatterTest.java +++ b/gerrit-server/src/test/java/com/google/gerrit/server/ioutil/ColumnFormatterTest.java @@ -14,8 +14,6 @@ package com.google.gerrit.server.ioutil; -import com.google.gerrit.server.ioutil.ColumnFormatter; - import junit.framework.TestCase; import java.io.PrintWriter; From e399d81f2d982805ebe0d5a9a43b2349b9731c65 Mon Sep 17 00:00:00 2001 From: "alex.ryazantsev" Date: Sun, 3 Nov 2013 14:35:55 +0400 Subject: [PATCH 4/7] Fixing jdbc code: correct Statement closing Change-Id: Iebba6cc02c311b4649d93ddc4a1f224efa643ba4 --- .../google/gerrit/httpd/SiteInitializer.java | 27 ++++++++++--------- 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/gerrit-war/src/main/java/com/google/gerrit/httpd/SiteInitializer.java b/gerrit-war/src/main/java/com/google/gerrit/httpd/SiteInitializer.java index 0948c46a08..0a9386d8d8 100644 --- a/gerrit-war/src/main/java/com/google/gerrit/httpd/SiteInitializer.java +++ b/gerrit-war/src/main/java/com/google/gerrit/httpd/SiteInitializer.java @@ -23,13 +23,14 @@ import java.io.File; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; +import java.sql.Statement; public final class SiteInitializer { - private static final Logger log = LoggerFactory + private static final Logger LOG = LoggerFactory .getLogger(SiteInitializer.class); - final String sitePath; - final String initPath; + private final String sitePath; + private final String initPath; SiteInitializer(String sitePath, String initPath) { this.sitePath = sitePath; @@ -38,10 +39,9 @@ public final class SiteInitializer { public void init() { try { - if (sitePath != null) { File site = new File(sitePath); - log.info(String.format("Initializing site at %s", + LOG.info(String.format("Initializing site at %s", site.getAbsolutePath())); new BaseInit(site, false).run(); return; @@ -53,9 +53,8 @@ public final class SiteInitializer { if (site == null && initPath != null) { site = new File(initPath); } - if (site != null) { - log.info(String.format("Initializing site at %s", + LOG.info(String.format("Initializing site at %s", site.getAbsolutePath())); new BaseInit(site, new ReviewDbDataSourceProvider(), false).run(); } @@ -63,7 +62,7 @@ public final class SiteInitializer { conn.close(); } } catch (Exception e) { - log.error("Site init failed", e); + LOG.error("Site init failed", e); throw new RuntimeException(e); } } @@ -74,10 +73,14 @@ public final class SiteInitializer { private File getSiteFromReviewDb(Connection conn) { try { - ResultSet rs = conn.createStatement().executeQuery( - "select site_path from system_config"); - if (rs.next()) { - return new File(rs.getString(1)); + Statement stmt = conn.createStatement(); + try { + ResultSet rs = stmt.executeQuery("SELECT site_path FROM system_config"); + if (rs.next()) { + return new File(rs.getString(1)); + } + } finally { + stmt.close(); } return null; } catch (SQLException e) { From 8108a00038702a8ec2984c24f282b7e55cd6a93b Mon Sep 17 00:00:00 2001 From: David Pursehouse Date: Wed, 23 Oct 2013 14:16:21 +0900 Subject: [PATCH 5/7] Update jgit to 3.1.0.201310021548-r Change-Id: Ib1526cd97353933dee1b76de33239cbcb31107b0 --- lib/jgit/BUCK | 12 ++++++------ lib/maven.defs | 1 + tools/download_file.py | 1 + 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/lib/jgit/BUCK b/lib/jgit/BUCK index b8ff017923..9f8a5c9d82 100644 --- a/lib/jgit/BUCK +++ b/lib/jgit/BUCK @@ -1,13 +1,13 @@ include_defs('//lib/maven.defs') -REPO = GERRIT -VERS = '3.0.0.201306101825-r.41-g84d2738' +REPO = ECLIPSE +VERS = '3.1.0.201310021548-r' maven_jar( name = 'jgit', id = 'org.eclipse.jgit:org.eclipse.jgit:' + VERS, - bin_sha1 = 'fec8584e9e60ab3f43c3dd136f72662818e07766', - src_sha1 = '398e49984b281dbcd913b3894b8b9582c8b2cf9a', + bin_sha1 = 'df1410e5d1deaacfb70a2441b4766b61f2795bc3', + src_sha1 = 'b4e3d9c9c3da39b72acf72bd913ce9dbee88a9d4', license = 'jgit', repository = REPO, deps = [':ewah'], @@ -21,7 +21,7 @@ maven_jar( maven_jar( name = 'jgit-servlet', id = 'org.eclipse.jgit:org.eclipse.jgit.http.server:' + VERS, - sha1 = 'b20c36982aa90fc08180ef4a570bf28de5e1a0ab', + sha1 = 'bcac91120afac59c195230537bde07175578fe79', license = 'jgit', repository = REPO, deps = [':jgit'], @@ -34,7 +34,7 @@ maven_jar( maven_jar( name = 'junit', id = 'org.eclipse.jgit:org.eclipse.jgit.junit:' + VERS, - sha1 = 'ee899f2d96b51e400ae84cd9405330a7e8ce1cb9', + sha1 = 'a8b47bb41cec25b1d128f7d267badbc7dcf6d9aa', license = 'DO_NOT_DISTRIBUTE', repository = REPO, deps = [':jgit'], diff --git a/lib/maven.defs b/lib/maven.defs index 7049bfa0b4..d49fed6e12 100644 --- a/lib/maven.defs +++ b/lib/maven.defs @@ -13,6 +13,7 @@ # limitations under the License. GERRIT = 'GERRIT:' +ECLIPSE = 'ECLIPSE:' MAVEN_CENTRAL = 'MAVEN_CENTRAL:' MAVEN_LOCAL = 'MAVEN_LOCAL:' diff --git a/tools/download_file.py b/tools/download_file.py index 4c6e19fe29..2fcce3fbac 100755 --- a/tools/download_file.py +++ b/tools/download_file.py @@ -25,6 +25,7 @@ from zipfile import ZipFile, BadZipfile, LargeZipFile REPO_ROOTS = { 'GERRIT': 'http://gerrit-maven.storage.googleapis.com', + 'ECLIPSE': 'https://repo.eclipse.org/content/groups/releases', 'MAVEN_CENTRAL': 'http://repo1.maven.org/maven2', 'MAVEN_LOCAL': 'file://' + path.expanduser('~/.m2/repository'), } From 2dbda45deea67b7a44f9fe7021e3d06e5c7575e1 Mon Sep 17 00:00:00 2001 From: David Ostrovsky Date: Sat, 26 Oct 2013 09:55:15 +0200 Subject: [PATCH 6/7] Buck: extend the tool chain to support unsigning JARs After switching to Eclipse Maven repository for pulling JGit lib, we have the problem that according to Eclipse release train the JARs have to be signed. That collids with our jgit patch for diff deserialization. To rectify that, add `unsign` parameter to maven_jar() function. Change-Id: Ib7bfa5d16f980a64b887d61a4b4ec325e6ffb0a1 --- lib/jgit/BUCK | 1 + lib/maven.defs | 3 +++ tools/download_file.py | 22 +++++++++++++++++++--- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/lib/jgit/BUCK b/lib/jgit/BUCK index 9f8a5c9d82..3e481bfd3e 100644 --- a/lib/jgit/BUCK +++ b/lib/jgit/BUCK @@ -10,6 +10,7 @@ maven_jar( src_sha1 = 'b4e3d9c9c3da39b72acf72bd913ce9dbee88a9d4', license = 'jgit', repository = REPO, + unsign = True, deps = [':ewah'], exclude = [ 'META-INF/eclipse.inf', diff --git a/lib/maven.defs b/lib/maven.defs index d49fed6e12..54840e89ac 100644 --- a/lib/maven.defs +++ b/lib/maven.defs @@ -33,6 +33,7 @@ def maven_jar( license, exclude = [], exclude_java_sources = False, + unsign = False, deps = [], sha1 = '', bin_sha1 = '', src_sha1 = '', repository = MAVEN_CENTRAL, @@ -73,6 +74,8 @@ def maven_jar( cmd.extend(['-x', x]) if exclude_java_sources: cmd.append('--exclude_java_sources') + if unsign: + cmd.append('--unsign') genrule( name = name + '__download_bin', diff --git a/tools/download_file.py b/tools/download_file.py index 2fcce3fbac..8d76a40ea9 100755 --- a/tools/download_file.py +++ b/tools/download_file.py @@ -109,6 +109,7 @@ opts.add_option('-u', help='URL to download') opts.add_option('-v', help='expected content SHA-1') opts.add_option('-x', action='append', help='file to delete from ZIP') opts.add_option('--exclude_java_sources', action='store_true') +opts.add_option('--unsign', action='store_true') args, _ = opts.parse_args() root_dir = args.o @@ -166,7 +167,22 @@ if args.exclude_java_sources: finally: zf.close() except (BadZipfile, LargeZipFile) as err: - print("error opening %s: %s" % (cache_ent, err), file=stderr) + print('error opening %s: %s' % (cache_ent, err), file=stderr) + exit(1) + +if args.unsign: + try: + zf = ZipFile(cache_ent, 'r') + try: + for n in zf.namelist(): + if (n.endswith('.RSA') + or n.endswith('.SF') + or n.endswith('.LIST')): + exclude.append(n) + finally: + zf.close() + except (BadZipfile, LargeZipFile) as err: + print('error opening %s: %s' % (cache_ent, err), file=stderr) exit(1) safe_mkdirs(path.dirname(args.o)) @@ -174,7 +190,7 @@ if exclude: try: shutil.copyfile(cache_ent, args.o) except (shutil.Error, IOError) as err: - print("error copying to %s: %s" % (args.o, err), file=stderr) + print('error copying to %s: %s' % (args.o, err), file=stderr) exit(1) try: check_call(['zip', '-d', args.o] + exclude) @@ -188,5 +204,5 @@ else: try: shutil.copyfile(cache_ent, args.o) except (shutil.Error, IOError) as err: - print("error copying to %s: %s" % (args.o, err), file=stderr) + print('error copying to %s: %s' % (args.o, err), file=stderr) exit(1) From 70f660b4408a34f5c2e7b01621d23c60094fc934 Mon Sep 17 00:00:00 2001 From: David Ostrovsky Date: Mon, 4 Nov 2013 05:55:38 +0100 Subject: [PATCH 7/7] Update release notes with recently made changes Change-Id: I8b900dcb842c7acfb877deea8153457bc3d1dd1f --- ReleaseNotes/ReleaseNotes-2.8.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ReleaseNotes/ReleaseNotes-2.8.txt b/ReleaseNotes/ReleaseNotes-2.8.txt index 94299e1720..27ed297973 100644 --- a/ReleaseNotes/ReleaseNotes-2.8.txt +++ b/ReleaseNotes/ReleaseNotes-2.8.txt @@ -735,7 +735,7 @@ release notes. Upgrades -------- -* Update JGit to 3.0.0.201306101825-r.41-g84d2738 +* Update JGit to 3.1.0.201310021548-r * Update gwtorm to 1.7 * Update guice to 4.0-beta * Update guava to 15.0