Details
Description
In Bitbucket Server 4.x and earlier, when commits are streamed for indexing, the indexer relied on an implicit behavior in the Git SCM that automatically set --ignore-missing while building the git rev-list command. If multiple commits were provided to include, or if any commits were provided to exclude, --ignore-missing would be set.
That behavior was deprecated in Bitbucket Server 4.6, which allowed specifying whether to ignore missing commits explicitly, and it was fully removed in 5.0. However, the indexing code was not updated at that time to explicitly enable ignoring missing commits. As a result, where indexing in 4.x and earlier ignored missing commits and continued indexing, 5.0 and newer now fail with an error similar to this:
2017-11-09 21:51:31,503 ERROR [commit-indexing:thread-3] c.a.s.internal.idx.HierarchyIndexer [PROJECT/repo[4]] Indexing failed com.atlassian.bitbucket.commit.NoSuchCommitException: Commit '0498b0ed416966766c2141c5666c83c0f6bd327c' does not exist in repository 'repo'. at com.atlassian.bitbucket.scm.git.command.GitCommandExitHandler.newNoSuchCommitException(GitCommandExitHandler.java:167) at com.atlassian.bitbucket.scm.git.command.GitCommandExitHandler.evaluateStdErr(GitCommandExitHandler.java:70) at com.atlassian.bitbucket.scm.git.command.GitCommandExitHandler.onError(GitCommandExitHandler.java:197) at com.atlassian.stash.internal.scm.git.command.revlist.RevCoreExitHandler.onError(RevCoreExitHandler.java:52) at com.atlassian.bitbucket.scm.DefaultCommandExitHandler.onExit(DefaultCommandExitHandler.java:31) at com.atlassian.bitbucket.scm.BaseCommand.callExitHandler(BaseCommand.java:146) at com.atlassian.bitbucket.scm.BaseCommand$CommandFuture.internalGet(BaseCommand.java:280) at com.atlassian.bitbucket.scm.BaseCommand$CommandFuture.get(BaseCommand.java:257) at com.atlassian.stash.internal.idx.DefaultCommitIndexingService$IndexOperation.wrapUpCommand(DefaultCommitIndexingService.java:498) at com.atlassian.stash.internal.idx.DefaultCommitIndexingService$IndexOperation.indexCommits(DefaultCommitIndexingService.java:471) at com.atlassian.stash.internal.idx.DefaultCommitIndexingService$IndexOperation.index(DefaultCommitIndexingService.java:387) at com.atlassian.stash.internal.idx.DefaultCommitIndexingService$IndexOperation.perform(DefaultCommitIndexingService.java:290) at com.atlassian.stash.internal.idx.DefaultCommitIndexingService.indexRepository(DefaultCommitIndexingService.java:146) at com.atlassian.stash.internal.idx.HierarchyIndexer$1.perform(HierarchyIndexer.java:57) at com.atlassian.stash.internal.idx.HierarchyIndexer$1.perform(HierarchyIndexer.java:38) at com.atlassian.stash.internal.user.DefaultEscalatedSecurityContext.call(DefaultEscalatedSecurityContext.java:58) at com.atlassian.stash.internal.idx.HierarchyIndexer.process(HierarchyIndexer.java:38) at com.atlassian.stash.internal.concurrent.HazelcastBucketedExecutor$BucketProcessingBootstrapper.run(HazelcastBucketedExecutor.java:138) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.lang.Thread.run(Thread.java:745)