Skip to content

Commit 970486d

Browse files
committed
Track successful import table ownership before cleanup
1 parent db94767 commit 970486d

1 file changed

Lines changed: 14 additions & 5 deletions

File tree

‎src/openstatspec/sql/wide.py‎

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1797,6 +1797,14 @@ def _delete_normative_import_state(
17971797
))
17981798

17991799

1800+
def _create_operation_owned_data_table(
1801+
connection: Any, data_table: Table, state: dict[str, Any],
1802+
) -> None:
1803+
"""Mark ownership only after this operation successfully creates the table."""
1804+
data_table.create(connection)
1805+
state["data_table_created"] = True
1806+
1807+
18001808
def _cleanup_import_state(
18011809
connection: Any, *, dataset_id: str, operation_id: str, data_table: Table,
18021810
state: Mapping[str, Any], normative: Any, legacy: tuple[Table, ...],
@@ -1824,7 +1832,7 @@ def _cleanup_import_state(
18241832
fidelity_events.c.operation_id == operation_id
18251833
))
18261834
connection.execute(delete(operations).where(operations.c.operation_id == operation_id))
1827-
if state["data_table_creation_attempted"]:
1835+
if state["data_table_created"]:
18281836
data_table.drop(connection, checkfirst=True)
18291837

18301838

@@ -2028,7 +2036,7 @@ def _import_cleanup_guard(
20282036
snapshot_connection: Any, pre_dolt_state: dict[str, Any] | None,
20292037
) -> Iterable[dict[str, Any]]:
20302038
state: dict[str, Any] = {
2031-
"data_table_creation_attempted": False,
2039+
"data_table_created": False,
20322040
"legacy_dataset_created": False,
20332041
"normative_dataset_creation_attempted": False,
20342042
"normative_dataset_id": None,
@@ -2377,7 +2385,7 @@ def create_wide_dataset(
23772385
normative.fidelity_event.name, normative.operation.name,
23782386
}
23792387
preflight_state = {
2380-
"data_table_creation_attempted": False,
2388+
"data_table_created": False,
23812389
"legacy_dataset_created": False,
23822390
"normative_dataset_creation_attempted": False,
23832391
"normative_dataset_id": None,
@@ -2554,8 +2562,9 @@ def create_wide_dataset(
25542562
raise ValueError(f"Dataset {dataset_id!r} already exists; imports never overwrite a dataset.")
25552563
if connection.execute(select(datasets.c.dataset_id).where(datasets.c.data_table == data_table.name)).first():
25562564
raise ValueError(f"Dataset ID {dataset_id!r} collides with an existing physical data-table name; import was not started.")
2557-
mutation["data_table_creation_attempted"] = True
2558-
data_table.create(connection)
2565+
_create_operation_owned_data_table(
2566+
connection, data_table, mutation,
2567+
)
25592568
materialized = [
25602569
{"__case_ordinal": ordinal, **row}
25612570
for ordinal, row in enumerate(source_rows, start=1)

0 commit comments

Comments
 (0)