Details
Description
Issue Summary
During mirror startup if a new repository fails to sync for any reason and it has a forked repository, mirror remains in Synchronising status although other repositories were synced successfully. Following are steps to reproduce using idle timeout failure, but repository can fail syncing for other reasons too.
Steps to Reproduce
- Create a project P1 and a huge repository R1.
- Create another project P2 and a repository R21.
- Add a mirror on primary server.
- Add project on mirror and let sync process finish.
- Shutdown the mirror.
- Fork R1 in P2 and name it as R1-fork.
- Start mirror with system property plugin.mirroring.remote.command.timeout.idle set to a value which is not enough for R1.
Expected Results
Mirror is set to "Synchronized" status with R21 and R1-fork pending sync
Actual Results
Mirror remains in "Synchronizing" status. Following log message is noticed repeatedly forever -
c.a.b.i.m.m.f.s.InitialSyncHelper Repository [P2/R21]#3 has a parent that has not yet been synced adding it back onto the queue
Workaround
Remove fork repo or move it to some non-mirrored project, wait for mirror to be "Synchronized" and then add it back.