StalenessChecker: URLDecode project name before checking staleness

When change is retrieved from the Lucene index, the project
name is URLEncoded and needs to be decoded before checking
if the refs are stale or not.

Failing to decode the project name would result in an
infinite loop trying to check for project staleness.

Bug: Issue 9482
Change-Id: I422d3ecde1fa12d38ed508bed6982aef71c2330e
This commit is contained in:
Luca Milanesio 2018-07-25 08:43:53 -07:00 committed by David Pursehouse
parent aa21c11f2a
commit 3f8a1b72ec
1 changed files with 3 additions and 1 deletions

View File

@ -28,6 +28,7 @@ import com.google.common.collect.MultimapBuilder;
import com.google.common.collect.SetMultimap;
import com.google.common.collect.Sets;
import com.google.gerrit.common.Nullable;
import com.google.gerrit.extensions.restapi.Url;
import com.google.gerrit.reviewdb.client.Change;
import com.google.gerrit.reviewdb.client.Project;
import com.google.gerrit.reviewdb.server.ReviewDb;
@ -181,7 +182,8 @@ public class StalenessChecker {
String s = new String(b, UTF_8);
List<String> parts = Splitter.on(':').splitToList(s);
RefStatePattern.check(parts.size() == 2, s);
result.put(new Project.NameKey(parts.get(0)), RefStatePattern.create(parts.get(1)));
result.put(
new Project.NameKey(Url.decode(parts.get(0))), RefStatePattern.create(parts.get(1)));
}
return result;
}