Allow importers to be easily stopped
Most of our importers lack a mechanism that enables the administrator to abort a migration in case of an incident. For example, during the recent https://gitlab.com/gitlab-com/gl-infra/production/-/issues/17054 incident, it was suggested that a JOB detected as a problem be terminated. However, this approach is not ideal because importers usually queue thousands of workers, making it impossible to kill all of them. The best approach in such a situation is to abort the migration responsible for the problem. Unfortunately, not all importers currently provide a simple mechanism that allows the administrator to stop the migration. Furthermore, I have detected another problem: not everyone is aware that importers can be disabled via the UI, which is a required short-term solution in case a bug is discovered in one of the importers. ### Current | Importer | Current situation | Corrective action | | ------ | ------ | ------ | | FogBugz | :white_check_mark: Because the migration uses a single Job, killing the Job will interrupt the migration | | | Gitea | :white_check_mark: Because the migration uses a single Job, killing the Job will interrupt the migration | | | GitLab Export | :white_check_mark: Because the migration uses a single Job, killing the Job will interrupt the migration | | | Giteat | :white_check_mark: Because the migration uses a single Job, killing the Job will interrupt the migration | | | GitHub | :white_check_mark: It's possible to abort by changing the migration state to `failed` or `canceled` | | | BitBucket Server | :red_circle: Not possible to interrupt a migration | Update all workers to check the project import state. This way the migration can be interrupted by just changing the state to `failed` | | BitBucketCloud | :red_circle: Not possible to interrupt a migration | Update all workers to check the project import state. This way the migration can be interrupted by just changing the state to `failed` | | Direct Transfer | :large_orange_diamond: Multiple commands need to be executed to interrupt a migration | Update all workers to check the BulkImport state before executing any task, this way the migration can be interrupted by just changing the state to `failed` | ### Proposed actions - Implement a mechanism to stop the migration in all importers - Document in the runbook how to do that. Also, include in the runbook that importers can be disabled via UI
epic