The sync algorithm used by CloudVoyager seems very inefficient making the sync extremely long.
It seems that currently CloudVoyager iterates on all the target issues to find a matching source issue, and if there is a match and that the source issue has manual changes to sync, these changes are applied.
This algorithm is very inefficient because it iterates on all issues although, statistically, very few issues have manual changes.
Currently the sync runs at a pace of roughly 6 to 8 issues/s. For projects with 100K issues, that's about 4 hours to sync all issues!
So a better algorithm would be to look at all the issues in the source (SQS) that have manual changes. This should be a very small fraction of the issues (maybe 1 or 2% max) and then search a matching issue in the target, and if a match is found, to sync the changes.
This way the algorithm is likely to be 50 to 100x faster
An issue that needs to be synchronized in an issue in the source SQS platform:
- That has a changelog, excepted the technical changelogs, or
- That has manual comments (except technical comments)
- That has custom tags added (the built-in tags should not be considered)
This algorithm has already been implemented in the sonar-findings-sync tool, please refer to https://github.com/okorach/sonar-tools/blob/0be16b23d1eb9a374fc3cbbcb1c10242df0631a3/sonar/syncer.py#L564
The sync algorithm used by CloudVoyager seems very inefficient making the sync extremely long.
It seems that currently CloudVoyager iterates on all the target issues to find a matching source issue, and if there is a match and that the source issue has manual changes to sync, these changes are applied.
This algorithm is very inefficient because it iterates on all issues although, statistically, very few issues have manual changes.
Currently the sync runs at a pace of roughly 6 to 8 issues/s. For projects with 100K issues, that's about 4 hours to sync all issues!
So a better algorithm would be to look at all the issues in the source (SQS) that have manual changes. This should be a very small fraction of the issues (maybe 1 or 2% max) and then search a matching issue in the target, and if a match is found, to sync the changes.
This way the algorithm is likely to be 50 to 100x faster
An issue that needs to be synchronized in an issue in the source SQS platform:
This algorithm has already been implemented in the
sonar-findings-synctool, please refer to https://github.com/okorach/sonar-tools/blob/0be16b23d1eb9a374fc3cbbcb1c10242df0631a3/sonar/syncer.py#L564