Skip to content

Commit

Permalink
Update migrations list command to show migrations that no longer exis…
Browse files Browse the repository at this point in the history
…t in the codebase
  • Loading branch information
davidtsuk committed Sep 12, 2024
1 parent bdfe450 commit e256e2c
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 4 deletions.
8 changes: 6 additions & 2 deletions snuba/cli/migrations.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ def list() -> None:
for group, group_migrations in runner.show_all():
readiness_state = get_group_readiness_state(group)
click.echo(f"{group.value} (readiness_state: {readiness_state.value})")
for migration_id, status, blocking in group_migrations:
for migration_id, status, blocking, existing in group_migrations:
symbol = {
Status.COMPLETED: "X",
Status.NOT_STARTED: " ",
Expand All @@ -53,7 +53,11 @@ def list() -> None:
if status != Status.COMPLETED and blocking:
blocking_text = " (blocking)"

click.echo(f"[{symbol}] {migration_id}{in_progress_text}{blocking_text}")
existing_text = "" if existing else " (this migration no longer exists)"

click.echo(
f"[{symbol}] {migration_id}{in_progress_text}{blocking_text}{existing_text}"
)

click.echo()

Expand Down
23 changes: 21 additions & 2 deletions snuba/migrations/runner.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,7 @@ class MigrationDetails(NamedTuple):
migration_id: str
status: Status
blocking: bool
exists: bool


class Runner:
Expand Down Expand Up @@ -148,6 +149,9 @@ def show_all(
migration_groups = get_active_migration_groups()

migration_status = self._get_migration_status(migration_groups)
clickhouse_group_migrations = {}
for group, migration_id in migration_status.keys():
clickhouse_group_migrations.setdefault(group, []).append(migration_id)

def get_status(migration_key: MigrationKey) -> Status:
return migration_status.get(migration_key, Status.NOT_STARTED)
Expand All @@ -156,12 +160,27 @@ def get_status(migration_key: MigrationKey) -> Status:
group_migrations: List[MigrationDetails] = []
group_loader = get_group_loader(group)

for migration_id in group_loader.get_migrations():
migration_ids = group_loader.get_migrations()
for migration_id in migration_ids:
migration_key = MigrationKey(group, migration_id)
migration = group_loader.load_migration(migration_id)
group_migrations.append(
MigrationDetails(
migration_id, get_status(migration_key), migration.blocking
migration_id,
get_status(migration_key),
migration.blocking,
True,
)
)

non_existing_migrations = set(
clickhouse_group_migrations.get(group, [])
).difference(set(migration_ids))
for migration_id in non_existing_migrations:
migration_key = MigrationKey(group, migration_id)
group_migrations.append(
MigrationDetails(
migration_id, get_status(migration_key), False, False
)
)

Expand Down

0 comments on commit e256e2c

Please sign in to comment.