Geo: Retries of Git repo sync failures is not using exponential backoff
Problem
If a sync fails, then the registry row has state: 3 (failed), retry_count: 1. When RepositoryRegistrySyncWorker enqueues a retry of that row, it marks the row state: 0 (pending), retry_count: 0 before syncing. If it fails again, then the row returns to state: 3 (failed), retry_count: 1.
Then, it will be retried again very quickly, without exponential backoff, over and over.
I suspect this was introduced in SSF for Git repos in 15.9 with !111653 (merged). This did not affect Project Git repos at least until those were migrated to SSF in 16.3.
Blobs are not affected because pending is only set if the thing is mutable.
Proposal
When RegistrySyncWorker or RepositoryRegistrySyncWorker enqueues a sync of that row, the sync should not mark the row state: 0 (pending), retry_count: 0, especially if the row is in state: 3 (failed).
Note that we do need "Update events" to mark the registry row pending, in order to avoid a race condition (see !111653 (merged) for context).