summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHector Oswaldo Caballero <hector.caballero@ericsson.com>2017-10-19 00:24:15 -0400
committerHector Oswaldo Caballero <hector.caballero@ericsson.com>2017-10-19 00:47:39 -0400
commit1ac64e318f313822ae34d9742d765a16a0c5a10a (patch)
tree6a9a55f8b82eb484ecbfc87d8043a56b19a665e9
parent61610881aab587d19030f95a5fc5dde24bb83f58 (diff)
Avoid change find mismatch
In servers with a big number of changes the legacy-id can have 7 or more digits and the sha-1 regex will match and return change not found if there is not a commit in the project starting with the exact same sequence of digits, which is a remote possibility. Check first for legacy-id so sequences of digits are taken as legacy-id. Change-Id: Ibb87b22f2e8efeb025031fa61ebd27d8b5d90156
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/ChangeFinder.java10
1 files changed, 5 insertions, 5 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/ChangeFinder.java b/gerrit-server/src/main/java/com/google/gerrit/server/ChangeFinder.java
index b6222a40ad..33203ff744 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/ChangeFinder.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/ChangeFinder.java
@@ -54,11 +54,6 @@ public class ChangeFinder {
// to force rereading in case the index is stale.
InternalChangeQuery query = queryProvider.get().noFields();
- //Try commit hash
- if (id.matches("^([0-9a-fA-F]{" + RevId.ABBREV_LEN + "," + RevId.LEN + "})$")) {
- return asChangeControls(query.byCommit(id), user);
- }
-
// Try legacy id
if (!id.isEmpty() && id.charAt(0) != '0') {
Integer n = Ints.tryParse(id);
@@ -67,6 +62,11 @@ public class ChangeFinder {
}
}
+ // Try commit hash
+ if (id.matches("^([0-9a-fA-F]{" + RevId.ABBREV_LEN + "," + RevId.LEN + "})$")) {
+ return asChangeControls(query.byCommit(id), user);
+ }
+
// Try isolated changeId
if (!id.contains("~")) {
return asChangeControls(query.byKeyPrefix(id), user);