Loading
Track Direct Transfer and Offline Transfer entity-level lifecycle events
What does this MR do and why?
Fires five internal events on BulkImports::Entity for the Direct Transfer / Offline Transfer entity lifecycle:
start_gitlab_migration_entityfinish_gitlab_migration_entityfail_gitlab_migration_entitycancel_gitlab_migration_entitytimeout_gitlab_migration_entity
All five fire from after_transition hooks in the entity's state machine, alongside the existing *_project_import / *_group_import calls.
How it differs from the project/group events
- Fires for both project and group entities.
- Can fire before a
ProjectorGrouprecord exists (e.g. an entity that fails during its very first pipeline) — identifiers are attached only when present. start_gitlab_migration_entityfires atentity.start!, before any pipeline runs — earlier thanstart_project_import/start_group_import, which wait for the loader to create the destination. That gap is the point: it counts every attempt, not just the ones that got far enough to create something.- Carries
parent_entity_idso top-level entities can be told apart from nested ones when measuring re-attempts.
label (gitlab_migration vs offline_transfer) and hashed property reuse the shared import_event_attributes helper introduced in !254680 (merged).
Scope
- Part of #617884.
- Closes #627876 (closed).
- Follows the pattern established in !253895 (merged), !253927 (merged), and !254680 (merged).
How to validate locally
- Enable Snowplow Micro:
gdk config set snowplow_micro.enabled true
gdk reconfigure
gdk restart- Monitor http://gdk.test:9091/micro/good.
- Trigger a Direct Transfer or Offline Transfer migration (group or project). Confirm the five entity events fire alongside the existing *_project_import / *_group_import events.
MR acceptance checklist
Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.
Related to #627876 (closed)
Edited by Carla Drago