StarredChangesUtil: Fix NPE when ref to be deleted doesn't exist

When deleting star refs on a change deletion the star refs are computed
from the index which may be stale. If the ref that we want to delete
doesn't exist that's fine and we can just skip it.

This NPE was observed when a change deletion failed with LOCK_FAILURE
and then the request was automatically retried.

Signed-off-by: Edwin Kempin <ekempin@google.com>
Change-Id: Icb73fdfd5bf6141176b733a25809c59e7f4d5c22
This commit is contained in:
Edwin Kempin
2019-08-21 14:13:12 +02:00
committed by David Pursehouse
parent 7911c2caba
commit aefd1d5c27

View File

@@ -248,7 +248,9 @@ public class StarredChangesUtil {
for (Account.Id accountId : byChangeFromIndex(changeId).keySet()) {
String refName = RefNames.refsStarredChanges(changeId, accountId);
Ref ref = repo.getRefDatabase().getRef(refName);
batchUpdate.addCommand(new ReceiveCommand(ref.getObjectId(), ObjectId.zeroId(), refName));
if (ref != null) {
batchUpdate.addCommand(new ReceiveCommand(ref.getObjectId(), ObjectId.zeroId(), refName));
}
}
batchUpdate.execute(rw, NullProgressMonitor.INSTANCE);
for (ReceiveCommand command : batchUpdate.getCommands()) {