From cd7efe1d11e0172aa3a1cee022dfccebfc7625e2 Mon Sep 17 00:00:00 2001 From: Dave Borowitz Date: Fri, 24 May 2019 10:52:43 -0700 Subject: [PATCH] Error Prone: Enable and fix NarrowingCompoundAssignment I'm not going to pretend I understand the code in IdGenerator; the replacement was exactly what was suggested by Error Prone, and based on the documentation[1], this construction is just making explicit the way that Java was already interpreting it. [1] https://github.com/google/error-prone/blob/master/docs/bugpattern/NarrowingCompoundAssignment.md Change-Id: I2437b71e774b607871916c4386ee9e42e75554cd --- .../server/index/change/AllChangesIndexer.java | 17 ++++++++++------- .../google/gerrit/server/util/IdGenerator.java | 8 ++++---- tools/BUILD | 2 +- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/java/com/google/gerrit/server/index/change/AllChangesIndexer.java b/java/com/google/gerrit/server/index/change/AllChangesIndexer.java index 577c255086..301518747b 100644 --- a/java/com/google/gerrit/server/index/change/AllChangesIndexer.java +++ b/java/com/google/gerrit/server/index/change/AllChangesIndexer.java @@ -23,6 +23,7 @@ import static com.google.gerrit.server.git.QueueProvider.QueueType.BATCH; import com.google.common.base.Stopwatch; import com.google.common.collect.ComparisonChain; import com.google.common.flogger.FluentLogger; +import com.google.common.primitives.Ints; import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.ListeningExecutorService; import com.google.gerrit.index.SiteIndexer; @@ -108,7 +109,7 @@ public class AllChangesIndexer extends SiteIndexer Change.Id.fromRef(r.getName())) - .filter(Objects::nonNull) - .distinct() - .count(); + long size = + repo.getRefDatabase().getRefsByPrefix(RefNames.REFS_CHANGES).stream() + .map(r -> Change.Id.fromRef(r.getName())) + .filter(Objects::nonNull) + .distinct() + .count(); + return Ints.saturatedCast(size); } private SiteIndexer.Result indexAll(ChangeIndex index, SortedSet projects) { diff --git a/java/com/google/gerrit/server/util/IdGenerator.java b/java/com/google/gerrit/server/util/IdGenerator.java index 276df06d66..d4c2dc4855 100644 --- a/java/com/google/gerrit/server/util/IdGenerator.java +++ b/java/com/google/gerrit/server/util/IdGenerator.java @@ -45,8 +45,8 @@ public class IdGenerator { public static int mix(int salt, int in) { short v0 = hi16(in); short v1 = lo16(in); - v0 += ((v1 << 2) + 0 ^ v1) + (salt ^ (v1 >>> 3)) + 1; - v1 += ((v0 << 2) + 2 ^ v0) + (salt ^ (v0 >>> 3)) + 3; + v0 += (short) (((v1 << 2) + 0 ^ v1) + (salt ^ (v1 >>> 3)) + 1); + v1 += (short) (((v0 << 2) + 2 ^ v0) + (salt ^ (v0 >>> 3)) + 3); return result(v0, v1); } @@ -54,8 +54,8 @@ public class IdGenerator { static int unmix(int in) { short v0 = hi16(in); short v1 = lo16(in); - v1 -= ((v0 << 2) + 2 ^ v0) + (salt ^ (v0 >>> 3)) + 3; - v0 -= ((v1 << 2) + 0 ^ v1) + (salt ^ (v1 >>> 3)) + 1; + v1 -= (short) (((v0 << 2) + 2 ^ v0) + (salt ^ (v0 >>> 3)) + 3); + v0 -= (short) (((v1 << 2) + 0 ^ v1) + (salt ^ (v1 >>> 3)) + 1); return result(v0, v1); } diff --git a/tools/BUILD b/tools/BUILD index 3772498a18..0a2c7aed39 100644 --- a/tools/BUILD +++ b/tools/BUILD @@ -74,7 +74,7 @@ java_package_configuration( "-Xep:MissingFail:ERROR", "-Xep:MissingOverride:ERROR", "-Xep:MutableConstantField:ERROR", - #"-Xep:NarrowingCompoundAssignment:ERROR", + "-Xep:NarrowingCompoundAssignment:ERROR", "-Xep:StringEquality:ERROR", "-Xep:MissingCasesInEnumSwitch:ERROR", "-Xep:WildcardImport:ERROR",