Retry pipeline creation on transient "Commit not found"
What does this MR do and why?
When a push (or merge commit) creates a pipeline, a transient Gitaly
"Commit not found" during pipeline creation caused the pipeline to be
silently dropped: no pipeline object, no user-facing error, and no Sidekiq
retry. The sibling "Reference not found" path already self-heals via Sidekiq
retry: 3, so the same underlying transient miss non-deterministically dropped
or healed depending on which Gitaly lookup tripped the read-after-write window.
This MR makes "Commit not found" retryable the same way. The retry is
scoped to the transient signature: execution only reaches the sha check
after the earlier ref-exists guard has passed, so a nil sha here means the
branch pointer resolves but the just-written commit it points at is not yet
readable on the node serving the read. This is almost always a transient
read-after-write miss, so genuinely-missing commits are not retried.
The change is gated behind the
ci_create_pipeline_worker_retry_on_commit_not_found feature flag
(default_enabled: false). #611223