Skip to content

Commit 8ef0da0

Browse files
authored
Fix test failure: test_table_migration_job_refreshes_migration_status[regular-migrate-tables] (#2625)
## Changes Reuse the `force_refresh` flag on the `snapshot` introduced in #2566 to make sure the migration status is up-to-date. ### Linked issues Resolves #2621 Resolves #2537 ### Tests - [x] modified unit tests
1 parent ea85f24 commit 8ef0da0

File tree

3 files changed

+12
-14
lines changed

3 files changed

+12
-14
lines changed

src/databricks/labs/ucx/hive_metastore/table_migrate.py

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -52,21 +52,16 @@ def __init__(
5252
self._migrate_grants = migrate_grants
5353

5454
def get_remaining_tables(self) -> list[Table]:
55-
self.index_full_refresh()
55+
self.index(force_refresh=True)
5656
table_rows = []
5757
for crawled_table in self._tc.snapshot():
5858
if not self._is_migrated(crawled_table.database, crawled_table.name):
5959
table_rows.append(crawled_table)
6060
logger.warning(f"remained-hive-metastore-table: {crawled_table.key}")
6161
return table_rows
6262

63-
def index(self):
64-
return self._migration_status_refresher.index()
65-
66-
def index_full_refresh(self):
67-
# when we want the latest up-to-date status, e.g. to determine whether views dependencies have been migrated
68-
self._migration_status_refresher.reset()
69-
return self._migration_status_refresher.index()
63+
def index(self, *, force_refresh: bool = False):
64+
return self._migration_status_refresher.index(force_refresh=force_refresh)
7065

7166
def migrate_tables(
7267
self,
@@ -101,15 +96,17 @@ def _migrate_tables(self, what: What, mounts: list[Mount], hiveserde_in_place_mi
10196
def _migrate_views(self):
10297
tables_to_migrate = self._tm.get_tables_to_migrate(self._tc)
10398
all_tasks = []
104-
sequencer = ViewsMigrationSequencer(tables_to_migrate, migration_index=self.index_full_refresh())
99+
# Every batch of views to migrate needs an up-to-date table migration index
100+
# to determine if the dependencies have been migrated
101+
sequencer = ViewsMigrationSequencer(tables_to_migrate, migration_index=self.index(force_refresh=True))
105102
batches = sequencer.sequence_batches()
106103
for batch in batches:
107104
tasks = []
108105
for view in batch:
109106
tasks.append(partial(self._migrate_view, view))
110107
Threads.strict("migrate views", tasks)
111108
all_tasks.extend(tasks)
112-
self.index_full_refresh()
109+
self.index(force_refresh=True)
113110
return all_tasks
114111

115112
def _migrate_table(self, src_table: TableToMigrate, mounts: list[Mount], hiveserde_in_place_migrate: bool = False):

src/databricks/labs/ucx/hive_metastore/table_migration_status.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,8 @@ def __init__(self, ws: WorkspaceClient, sbe: SqlBackend, schema, table_crawler:
8080
self._ws = ws
8181
self._table_crawler = table_crawler
8282

83-
def index(self) -> TableMigrationIndex:
84-
return TableMigrationIndex(list(self.snapshot()))
83+
def index(self, *, force_refresh: bool = False) -> TableMigrationIndex:
84+
return TableMigrationIndex(list(self.snapshot(force_refresh=force_refresh)))
8585

8686
def get_seen_tables(self) -> dict[str, str]:
8787
seen_tables: dict[str, str] = {}

tests/unit/hive_metastore/test_workflows.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import pytest
2+
23
from databricks.labs.ucx.hive_metastore.workflows import (
34
TableMigration,
45
MigrateExternalTablesCTAS,
@@ -63,8 +64,8 @@ def test_migrate_ctas_views(run_workflow):
6364
MigrateTablesInMounts,
6465
],
6566
)
66-
def test_update_migration_status(run_workflow, workflow):
67+
def test_update_migration_status(run_workflow, workflow) -> None:
6768
"""Migration status is refreshed by deleting and showing new tables"""
6869
ctx = run_workflow(getattr(workflow, "update_migration_status"))
69-
assert "TRUNCATE TABLE `hive_metastore`.`ucx`.`migration_status`" in ctx.sql_backend.queries
70+
assert ctx.sql_backend.has_rows_written_for("hive_metastore.ucx.migration_status")
7071
assert "SHOW DATABASES" in ctx.sql_backend.queries

0 commit comments

Comments
 (0)