Skip to content

Fix: forward aggregate report_type to TriggerReconAggregateService#2423

Open
moomindani wants to merge 7 commits into
mainfrom
fix/recon-aggregate-dispatch-in-trigger-recon
Open

Fix: forward aggregate report_type to TriggerReconAggregateService#2423
moomindani wants to merge 7 commits into
mainfrom
fix/recon-aggregate-dispatch-in-trigger-recon

Conversation

@moomindani
Copy link
Copy Markdown
Contributor

Changes

What does this PR do?

Forwards report_type=="aggregate" from TriggerReconService.trigger_recon to TriggerReconAggregateService.trigger_recon_aggregates so programmatic callers that pass an aggregate report type get the actual aggregate comparison instead of a silent no-op.

Relevant implementation details

TriggerReconService.trigger_recon validates report_type against _RECON_REPORT_TYPES = {"schema","data","row","all","aggregate"}, so "aggregate" is accepted at entry. However, _do_recon_one only branches on {"schema","all"} and {"data","row","all"}. The aggregate case falls through, no comparison runs, and recon_capture.start() records the run with status=true. Callers see a successful reconciliation even when source and target differ.

The CLI dispatch in execute.py already routes AGG_RECONCILE_OPERATION_NAME to TriggerReconAggregateService.trigger_recon_aggregates, but programmatic users of the public Reconcile API (notebooks, integrations) hit the silent no-op without this change.

This PR adds an early dispatch at the top of trigger_recon. The import is deferred because trigger_recon_aggregate_service already imports trigger_recon_service and a top-level import would be circular.

Caveats/things to watch out for when reviewing:

  • Deferred import inside the function — done to avoid the circular import; behavior identical to execute.py's existing dispatch
  • All existing report types (schema, data, row, all) keep the original path

Linked issues

None

Functionality

  • added relevant user documentation
  • added new CLI command
  • modified existing command: programmatic API of TriggerReconService.trigger_recon

Tests

  • manually tested
  • added unit tests
  • added integration tests

Manual end-to-end on Databricks Serverless with two tables of different row counts:

  • Before: aggregate=None, status=true, no rows in recon.aggregate_*
  • After: aggregate=False, mismatch=1, rows present in recon.aggregate_metrics

Unit tests added in tests/unit/reconcile/test_verify_reconcile.py:

  • test_trigger_recon_dispatches_aggregate_to_aggregate_service: forwarding works and the data-path setup is skipped
  • test_trigger_recon_does_not_dispatch_non_aggregate: schema / data / row / all keep the original path

Reopened from #2401 on an upstream branch to bypass the fork-PR OIDC restriction on JFrog auth (CI cannot run on fork PRs). All review comments and history are preserved on the original PR.

moomindani added 3 commits May 1, 2026 11:27
TriggerReconService.trigger_recon validates that report_type is in
{"schema","data","row","all","aggregate"} via _RECON_REPORT_TYPES, so
"aggregate" is accepted at the entry point. However, _do_recon_one only
branches on {"schema","all"} and {"data","row","all"}; the "aggregate"
case falls through, no comparison is performed, and recon_capture.start()
records the run with status=true. Callers see a successful reconciliation
even when source and target differ.

The aggregate path lives in TriggerReconAggregateService.
trigger_recon_aggregates. CLI dispatch in execute.py already routes the
AGG_RECONCILE_OPERATION_NAME to that service, but programmatic callers
of TriggerReconService.trigger_recon (e.g. notebooks built around the
public Reconcile API) hit the silent no-op.

Forward report_type=="aggregate" to TriggerReconAggregateService at the
top of trigger_recon. The import is deferred because
trigger_recon_aggregate_service already imports trigger_recon_service.

Co-authored-by: Isaac
Cover the routing introduced in this branch:
- report_type='aggregate' is forwarded to
  TriggerReconAggregateService.trigger_recon_aggregates without going
  through create_recon_dependencies of the data path
- The aggregate-specific kwargs (table_recon, reconcile_config,
  local_test_run) are passed through unchanged
- All other report_types ('schema', 'data', 'row', 'all') keep the
  existing path and never call the aggregate service

Without the dispatch, the existing _do_recon_one short-circuits silently
for report_type='aggregate' and the run is recorded as successful. The
first test reproduces the original behavior (no aggregate forward) and
fails on origin/main.

Co-authored-by: Isaac
…ispatch-in-trigger-recon

# Conflicts:
#	src/databricks/labs/lakebridge/reconcile/trigger_recon_service.py
@codecov
Copy link
Copy Markdown

codecov Bot commented May 8, 2026

Codecov Report

❌ Patch coverage is 71.01449% with 20 lines in your changes missing coverage. Please review.
✅ Project coverage is 64.89%. Comparing base (ae2c29b) to head (c5a750a).
⚠️ Report is 2 commits behind head on main.

Files with missing lines Patch % Lines
...labs/lakebridge/reconcile/recon_service_helpers.py 72.22% 15 Missing ⚠️
...ridge/reconcile/trigger_recon_aggregate_service.py 20.00% 4 Missing ⚠️
...labs/lakebridge/reconcile/trigger_recon_service.py 90.00% 1 Missing ⚠️
Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2423      +/-   ##
==========================================
- Coverage   65.78%   64.89%   -0.90%     
==========================================
  Files          98      104       +6     
  Lines        9237     9418     +181     
  Branches      992      993       +1     
==========================================
+ Hits         6077     6112      +35     
- Misses       2984     3129     +145     
- Partials      176      177       +1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 8, 2026

❌ 141/148 passed, 7 failed, 5 skipped, 26m1s total

❌ test_schema_recon_with_data_source_exception: AttributeError: does not have the attribute 'uuid4' (12.52s)
... (skipped 3717 bytes)
ANAGED_CATALOG: 'MANAGED_CATALOG'>, comment=None, connection_name=None, created_at=1778500985427, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', effective_predictive_optimization_flag=EffectivePredictiveOptimizationFlag(value=<EnablePredictiveOptimization.DISABLE: 'DISABLE'>, inherited_from_name='primary', inherited_from_type=None), enable_predictive_optimization=<EnablePredictiveOptimization.INHERIT: 'INHERIT'>, full_name='dummy_cuz0tgmf5', isolation_mode=<CatalogIsolationMode.OPEN: 'OPEN'>, metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_cuz0tgmf5', options=None, owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', properties={'RemoveAfter': '2026051114'}, provider_name=None, provisioning_info=None, securable_type=<SecurableType.CATALOG: 'CATALOG'>, share_name=None, storage_location=None, storage_root=None, updated_at=1778500985427, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e')
12:03 INFO [tests.integration.reconcile.conftest] Created catalog dummy_cuz0tgmf5 for recon tests
12:03 INFO [databricks.labs.pytester.fixtures.baseline] Created dummy_cuz0tgmf5.dummy_sxgj0alhv schema: https://DATABRICKS_HOST/#explore/data/dummy_cuz0tgmf5/dummy_sxgj0alhv
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] added schema fixture: SchemaInfo(browse_only=None, catalog_name='dummy_cuz0tgmf5', catalog_type=None, comment=None, created_at=None, created_by=None, effective_predictive_optimization_flag=None, enable_predictive_optimization=None, full_name='dummy_cuz0tgmf5.dummy_sxgj0alhv', metastore_id=None, name='dummy_sxgj0alhv', owner=None, properties=None, schema_id=None, storage_location=None, storage_root=None, updated_at=None, updated_by=None)
12:03 INFO [tests.integration.reconcile.conftest] Created schema dummy_sxgj0alhv in catalog dummy_cuz0tgmf5 for recon tests
12:03 INFO [databricks.labs.pytester.fixtures.baseline] Created dummy_sxgj0alhv volume: https://DATABRICKS_HOST/#explore/data/dummy_cuz0tgmf5/dummy_sxgj0alhv/dummy_sxgj0alhv
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] added volume fixture: VolumeInfo(access_point=None, browse_only=None, catalog_name='dummy_cuz0tgmf5', comment=None, created_at=1778500995091, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', encryption_details=None, full_name='dummy_cuz0tgmf5.dummy_sxgj0alhv.dummy_sxgj0alhv', metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_sxgj0alhv', owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', schema_name='dummy_sxgj0alhv', storage_location='abfss://labs-CLOUD_ENV-TEST_CATALOG-container@databrickslabsstorage.dfs.core.windows.net/8952c1e3-b265-4adf-98c3-6f755e2e1453/volumes/951b31dc-b0fa-4040-b5c8-dc909e607732', updated_at=1778500995091, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', volume_id='951b31dc-b0fa-4040-b5c8-dc909e607732', volume_type=<VolumeType.MANAGED: 'MANAGED'>)
12:03 INFO [databricks.labs.pytester.fixtures.baseline] Created dummy_cuz0tgmf5 catalog: https://DATABRICKS_HOST/#explore/data/dummy_cuz0tgmf5
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] added catalog fixture: CatalogInfo(browse_only=False, catalog_type=<CatalogType.MANAGED_CATALOG: 'MANAGED_CATALOG'>, comment=None, connection_name=None, created_at=1778500985427, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', effective_predictive_optimization_flag=EffectivePredictiveOptimizationFlag(value=<EnablePredictiveOptimization.DISABLE: 'DISABLE'>, inherited_from_name='primary', inherited_from_type=None), enable_predictive_optimization=<EnablePredictiveOptimization.INHERIT: 'INHERIT'>, full_name='dummy_cuz0tgmf5', isolation_mode=<CatalogIsolationMode.OPEN: 'OPEN'>, metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_cuz0tgmf5', options=None, owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', properties={'RemoveAfter': '2026051114'}, provider_name=None, provisioning_info=None, securable_type=<SecurableType.CATALOG: 'CATALOG'>, share_name=None, storage_location=None, storage_root=None, updated_at=1778500985427, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e')
12:03 INFO [tests.integration.reconcile.conftest] Created catalog dummy_cuz0tgmf5 for recon tests
12:03 INFO [databricks.labs.pytester.fixtures.baseline] Created dummy_cuz0tgmf5.dummy_sxgj0alhv schema: https://DATABRICKS_HOST/#explore/data/dummy_cuz0tgmf5/dummy_sxgj0alhv
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] added schema fixture: SchemaInfo(browse_only=None, catalog_name='dummy_cuz0tgmf5', catalog_type=None, comment=None, created_at=None, created_by=None, effective_predictive_optimization_flag=None, enable_predictive_optimization=None, full_name='dummy_cuz0tgmf5.dummy_sxgj0alhv', metastore_id=None, name='dummy_sxgj0alhv', owner=None, properties=None, schema_id=None, storage_location=None, storage_root=None, updated_at=None, updated_by=None)
12:03 INFO [tests.integration.reconcile.conftest] Created schema dummy_sxgj0alhv in catalog dummy_cuz0tgmf5 for recon tests
12:03 INFO [databricks.labs.pytester.fixtures.baseline] Created dummy_sxgj0alhv volume: https://DATABRICKS_HOST/#explore/data/dummy_cuz0tgmf5/dummy_sxgj0alhv/dummy_sxgj0alhv
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] added volume fixture: VolumeInfo(access_point=None, browse_only=None, catalog_name='dummy_cuz0tgmf5', comment=None, created_at=1778500995091, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', encryption_details=None, full_name='dummy_cuz0tgmf5.dummy_sxgj0alhv.dummy_sxgj0alhv', metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_sxgj0alhv', owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', schema_name='dummy_sxgj0alhv', storage_location='abfss://labs-CLOUD_ENV-TEST_CATALOG-container@databrickslabsstorage.dfs.core.windows.net/8952c1e3-b265-4adf-98c3-6f755e2e1453/volumes/951b31dc-b0fa-4040-b5c8-dc909e607732', updated_at=1778500995091, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', volume_id='951b31dc-b0fa-4040-b5c8-dc909e607732', volume_type=<VolumeType.MANAGED: 'MANAGED'>)
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] clearing 1 volume fixtures
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] removing volume fixture: VolumeInfo(access_point=None, browse_only=None, catalog_name='dummy_cuz0tgmf5', comment=None, created_at=1778500995091, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', encryption_details=None, full_name='dummy_cuz0tgmf5.dummy_sxgj0alhv.dummy_sxgj0alhv', metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_sxgj0alhv', owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', schema_name='dummy_sxgj0alhv', storage_location='abfss://labs-CLOUD_ENV-TEST_CATALOG-container@databrickslabsstorage.dfs.core.windows.net/8952c1e3-b265-4adf-98c3-6f755e2e1453/volumes/951b31dc-b0fa-4040-b5c8-dc909e607732', updated_at=1778500995091, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', volume_id='951b31dc-b0fa-4040-b5c8-dc909e607732', volume_type=<VolumeType.MANAGED: 'MANAGED'>)
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] clearing 1 schema fixtures
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] removing schema fixture: SchemaInfo(browse_only=None, catalog_name='dummy_cuz0tgmf5', catalog_type=None, comment=None, created_at=None, created_by=None, effective_predictive_optimization_flag=None, enable_predictive_optimization=None, full_name='dummy_cuz0tgmf5.dummy_sxgj0alhv', metastore_id=None, name='dummy_sxgj0alhv', owner=None, properties=None, schema_id=None, storage_location=None, storage_root=None, updated_at=None, updated_by=None)
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] clearing 1 catalog fixtures
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] removing catalog fixture: CatalogInfo(browse_only=False, catalog_type=<CatalogType.MANAGED_CATALOG: 'MANAGED_CATALOG'>, comment=None, connection_name=None, created_at=1778500985427, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', effective_predictive_optimization_flag=EffectivePredictiveOptimizationFlag(value=<EnablePredictiveOptimization.DISABLE: 'DISABLE'>, inherited_from_name='primary', inherited_from_type=None), enable_predictive_optimization=<EnablePredictiveOptimization.INHERIT: 'INHERIT'>, full_name='dummy_cuz0tgmf5', isolation_mode=<CatalogIsolationMode.OPEN: 'OPEN'>, metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_cuz0tgmf5', options=None, owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', properties={'RemoveAfter': '2026051114'}, provider_name=None, provisioning_info=None, securable_type=<SecurableType.CATALOG: 'CATALOG'>, share_name=None, storage_location=None, storage_root=None, updated_at=1778500985427, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e')
[gw6] linux -- Python 3.10.20 /home/runner/work/lakebridge/lakebridge/.venv/bin/python
❌ test_recon_for_wrong_report_type: AttributeError: does not have the attribute 'uuid4' (10.098s)
... (skipped 3717 bytes)
ANAGED_CATALOG: 'MANAGED_CATALOG'>, comment=None, connection_name=None, created_at=1778500994016, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', effective_predictive_optimization_flag=EffectivePredictiveOptimizationFlag(value=<EnablePredictiveOptimization.DISABLE: 'DISABLE'>, inherited_from_name='primary', inherited_from_type=None), enable_predictive_optimization=<EnablePredictiveOptimization.INHERIT: 'INHERIT'>, full_name='dummy_cdq84fo0x', isolation_mode=<CatalogIsolationMode.OPEN: 'OPEN'>, metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_cdq84fo0x', options=None, owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', properties={'RemoveAfter': '2026051114'}, provider_name=None, provisioning_info=None, securable_type=<SecurableType.CATALOG: 'CATALOG'>, share_name=None, storage_location=None, storage_root=None, updated_at=1778500994016, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e')
12:03 INFO [tests.integration.reconcile.conftest] Created catalog dummy_cdq84fo0x for recon tests
12:03 INFO [databricks.labs.pytester.fixtures.baseline] Created dummy_cdq84fo0x.dummy_s9jdgxdp2 schema: https://DATABRICKS_HOST/#explore/data/dummy_cdq84fo0x/dummy_s9jdgxdp2
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] added schema fixture: SchemaInfo(browse_only=None, catalog_name='dummy_cdq84fo0x', catalog_type=None, comment=None, created_at=None, created_by=None, effective_predictive_optimization_flag=None, enable_predictive_optimization=None, full_name='dummy_cdq84fo0x.dummy_s9jdgxdp2', metastore_id=None, name='dummy_s9jdgxdp2', owner=None, properties=None, schema_id=None, storage_location=None, storage_root=None, updated_at=None, updated_by=None)
12:03 INFO [tests.integration.reconcile.conftest] Created schema dummy_s9jdgxdp2 in catalog dummy_cdq84fo0x for recon tests
12:03 INFO [databricks.labs.pytester.fixtures.baseline] Created dummy_s9jdgxdp2 volume: https://DATABRICKS_HOST/#explore/data/dummy_cdq84fo0x/dummy_s9jdgxdp2/dummy_s9jdgxdp2
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] added volume fixture: VolumeInfo(access_point=None, browse_only=None, catalog_name='dummy_cdq84fo0x', comment=None, created_at=1778501000849, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', encryption_details=None, full_name='dummy_cdq84fo0x.dummy_s9jdgxdp2.dummy_s9jdgxdp2', metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_s9jdgxdp2', owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', schema_name='dummy_s9jdgxdp2', storage_location='abfss://labs-CLOUD_ENV-TEST_CATALOG-container@databrickslabsstorage.dfs.core.windows.net/8952c1e3-b265-4adf-98c3-6f755e2e1453/volumes/fe5d3cbd-ba57-4844-9e3c-cebe4a45d0ca', updated_at=1778501000849, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', volume_id='fe5d3cbd-ba57-4844-9e3c-cebe4a45d0ca', volume_type=<VolumeType.MANAGED: 'MANAGED'>)
12:03 INFO [databricks.labs.pytester.fixtures.baseline] Created dummy_cdq84fo0x catalog: https://DATABRICKS_HOST/#explore/data/dummy_cdq84fo0x
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] added catalog fixture: CatalogInfo(browse_only=False, catalog_type=<CatalogType.MANAGED_CATALOG: 'MANAGED_CATALOG'>, comment=None, connection_name=None, created_at=1778500994016, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', effective_predictive_optimization_flag=EffectivePredictiveOptimizationFlag(value=<EnablePredictiveOptimization.DISABLE: 'DISABLE'>, inherited_from_name='primary', inherited_from_type=None), enable_predictive_optimization=<EnablePredictiveOptimization.INHERIT: 'INHERIT'>, full_name='dummy_cdq84fo0x', isolation_mode=<CatalogIsolationMode.OPEN: 'OPEN'>, metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_cdq84fo0x', options=None, owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', properties={'RemoveAfter': '2026051114'}, provider_name=None, provisioning_info=None, securable_type=<SecurableType.CATALOG: 'CATALOG'>, share_name=None, storage_location=None, storage_root=None, updated_at=1778500994016, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e')
12:03 INFO [tests.integration.reconcile.conftest] Created catalog dummy_cdq84fo0x for recon tests
12:03 INFO [databricks.labs.pytester.fixtures.baseline] Created dummy_cdq84fo0x.dummy_s9jdgxdp2 schema: https://DATABRICKS_HOST/#explore/data/dummy_cdq84fo0x/dummy_s9jdgxdp2
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] added schema fixture: SchemaInfo(browse_only=None, catalog_name='dummy_cdq84fo0x', catalog_type=None, comment=None, created_at=None, created_by=None, effective_predictive_optimization_flag=None, enable_predictive_optimization=None, full_name='dummy_cdq84fo0x.dummy_s9jdgxdp2', metastore_id=None, name='dummy_s9jdgxdp2', owner=None, properties=None, schema_id=None, storage_location=None, storage_root=None, updated_at=None, updated_by=None)
12:03 INFO [tests.integration.reconcile.conftest] Created schema dummy_s9jdgxdp2 in catalog dummy_cdq84fo0x for recon tests
12:03 INFO [databricks.labs.pytester.fixtures.baseline] Created dummy_s9jdgxdp2 volume: https://DATABRICKS_HOST/#explore/data/dummy_cdq84fo0x/dummy_s9jdgxdp2/dummy_s9jdgxdp2
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] added volume fixture: VolumeInfo(access_point=None, browse_only=None, catalog_name='dummy_cdq84fo0x', comment=None, created_at=1778501000849, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', encryption_details=None, full_name='dummy_cdq84fo0x.dummy_s9jdgxdp2.dummy_s9jdgxdp2', metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_s9jdgxdp2', owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', schema_name='dummy_s9jdgxdp2', storage_location='abfss://labs-CLOUD_ENV-TEST_CATALOG-container@databrickslabsstorage.dfs.core.windows.net/8952c1e3-b265-4adf-98c3-6f755e2e1453/volumes/fe5d3cbd-ba57-4844-9e3c-cebe4a45d0ca', updated_at=1778501000849, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', volume_id='fe5d3cbd-ba57-4844-9e3c-cebe4a45d0ca', volume_type=<VolumeType.MANAGED: 'MANAGED'>)
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] clearing 1 volume fixtures
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] removing volume fixture: VolumeInfo(access_point=None, browse_only=None, catalog_name='dummy_cdq84fo0x', comment=None, created_at=1778501000849, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', encryption_details=None, full_name='dummy_cdq84fo0x.dummy_s9jdgxdp2.dummy_s9jdgxdp2', metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_s9jdgxdp2', owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', schema_name='dummy_s9jdgxdp2', storage_location='abfss://labs-CLOUD_ENV-TEST_CATALOG-container@databrickslabsstorage.dfs.core.windows.net/8952c1e3-b265-4adf-98c3-6f755e2e1453/volumes/fe5d3cbd-ba57-4844-9e3c-cebe4a45d0ca', updated_at=1778501000849, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', volume_id='fe5d3cbd-ba57-4844-9e3c-cebe4a45d0ca', volume_type=<VolumeType.MANAGED: 'MANAGED'>)
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] clearing 1 schema fixtures
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] removing schema fixture: SchemaInfo(browse_only=None, catalog_name='dummy_cdq84fo0x', catalog_type=None, comment=None, created_at=None, created_by=None, effective_predictive_optimization_flag=None, enable_predictive_optimization=None, full_name='dummy_cdq84fo0x.dummy_s9jdgxdp2', metastore_id=None, name='dummy_s9jdgxdp2', owner=None, properties=None, schema_id=None, storage_location=None, storage_root=None, updated_at=None, updated_by=None)
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] clearing 1 catalog fixtures
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] removing catalog fixture: CatalogInfo(browse_only=False, catalog_type=<CatalogType.MANAGED_CATALOG: 'MANAGED_CATALOG'>, comment=None, connection_name=None, created_at=1778500994016, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', effective_predictive_optimization_flag=EffectivePredictiveOptimizationFlag(value=<EnablePredictiveOptimization.DISABLE: 'DISABLE'>, inherited_from_name='primary', inherited_from_type=None), enable_predictive_optimization=<EnablePredictiveOptimization.INHERIT: 'INHERIT'>, full_name='dummy_cdq84fo0x', isolation_mode=<CatalogIsolationMode.OPEN: 'OPEN'>, metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_cdq84fo0x', options=None, owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', properties={'RemoveAfter': '2026051114'}, provider_name=None, provisioning_info=None, securable_type=<SecurableType.CATALOG: 'CATALOG'>, share_name=None, storage_location=None, storage_root=None, updated_at=1778500994016, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e')
[gw8] linux -- Python 3.10.20 /home/runner/work/lakebridge/lakebridge/.venv/bin/python
❌ test_schema_recon_with_general_exception: AttributeError: does not have the attribute 'uuid4' (12.063s)
... (skipped 3717 bytes)
ANAGED_CATALOG: 'MANAGED_CATALOG'>, comment=None, connection_name=None, created_at=1778500997984, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', effective_predictive_optimization_flag=EffectivePredictiveOptimizationFlag(value=<EnablePredictiveOptimization.DISABLE: 'DISABLE'>, inherited_from_name='primary', inherited_from_type=None), enable_predictive_optimization=<EnablePredictiveOptimization.INHERIT: 'INHERIT'>, full_name='dummy_cek6lwrhn', isolation_mode=<CatalogIsolationMode.OPEN: 'OPEN'>, metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_cek6lwrhn', options=None, owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', properties={'RemoveAfter': '2026051114'}, provider_name=None, provisioning_info=None, securable_type=<SecurableType.CATALOG: 'CATALOG'>, share_name=None, storage_location=None, storage_root=None, updated_at=1778500997984, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e')
12:03 INFO [tests.integration.reconcile.conftest] Created catalog dummy_cek6lwrhn for recon tests
12:03 INFO [databricks.labs.pytester.fixtures.baseline] Created dummy_cek6lwrhn.dummy_sqxyix3fq schema: https://DATABRICKS_HOST/#explore/data/dummy_cek6lwrhn/dummy_sqxyix3fq
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] added schema fixture: SchemaInfo(browse_only=None, catalog_name='dummy_cek6lwrhn', catalog_type=None, comment=None, created_at=None, created_by=None, effective_predictive_optimization_flag=None, enable_predictive_optimization=None, full_name='dummy_cek6lwrhn.dummy_sqxyix3fq', metastore_id=None, name='dummy_sqxyix3fq', owner=None, properties=None, schema_id=None, storage_location=None, storage_root=None, updated_at=None, updated_by=None)
12:03 INFO [tests.integration.reconcile.conftest] Created schema dummy_sqxyix3fq in catalog dummy_cek6lwrhn for recon tests
12:03 INFO [databricks.labs.pytester.fixtures.baseline] Created dummy_sqxyix3fq volume: https://DATABRICKS_HOST/#explore/data/dummy_cek6lwrhn/dummy_sqxyix3fq/dummy_sqxyix3fq
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] added volume fixture: VolumeInfo(access_point=None, browse_only=None, catalog_name='dummy_cek6lwrhn', comment=None, created_at=1778501005686, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', encryption_details=None, full_name='dummy_cek6lwrhn.dummy_sqxyix3fq.dummy_sqxyix3fq', metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_sqxyix3fq', owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', schema_name='dummy_sqxyix3fq', storage_location='abfss://labs-CLOUD_ENV-TEST_CATALOG-container@databrickslabsstorage.dfs.core.windows.net/8952c1e3-b265-4adf-98c3-6f755e2e1453/volumes/9c8249fa-66e1-46fa-bd40-a97a8ca95eb1', updated_at=1778501005686, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', volume_id='9c8249fa-66e1-46fa-bd40-a97a8ca95eb1', volume_type=<VolumeType.MANAGED: 'MANAGED'>)
12:03 INFO [databricks.labs.pytester.fixtures.baseline] Created dummy_cek6lwrhn catalog: https://DATABRICKS_HOST/#explore/data/dummy_cek6lwrhn
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] added catalog fixture: CatalogInfo(browse_only=False, catalog_type=<CatalogType.MANAGED_CATALOG: 'MANAGED_CATALOG'>, comment=None, connection_name=None, created_at=1778500997984, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', effective_predictive_optimization_flag=EffectivePredictiveOptimizationFlag(value=<EnablePredictiveOptimization.DISABLE: 'DISABLE'>, inherited_from_name='primary', inherited_from_type=None), enable_predictive_optimization=<EnablePredictiveOptimization.INHERIT: 'INHERIT'>, full_name='dummy_cek6lwrhn', isolation_mode=<CatalogIsolationMode.OPEN: 'OPEN'>, metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_cek6lwrhn', options=None, owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', properties={'RemoveAfter': '2026051114'}, provider_name=None, provisioning_info=None, securable_type=<SecurableType.CATALOG: 'CATALOG'>, share_name=None, storage_location=None, storage_root=None, updated_at=1778500997984, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e')
12:03 INFO [tests.integration.reconcile.conftest] Created catalog dummy_cek6lwrhn for recon tests
12:03 INFO [databricks.labs.pytester.fixtures.baseline] Created dummy_cek6lwrhn.dummy_sqxyix3fq schema: https://DATABRICKS_HOST/#explore/data/dummy_cek6lwrhn/dummy_sqxyix3fq
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] added schema fixture: SchemaInfo(browse_only=None, catalog_name='dummy_cek6lwrhn', catalog_type=None, comment=None, created_at=None, created_by=None, effective_predictive_optimization_flag=None, enable_predictive_optimization=None, full_name='dummy_cek6lwrhn.dummy_sqxyix3fq', metastore_id=None, name='dummy_sqxyix3fq', owner=None, properties=None, schema_id=None, storage_location=None, storage_root=None, updated_at=None, updated_by=None)
12:03 INFO [tests.integration.reconcile.conftest] Created schema dummy_sqxyix3fq in catalog dummy_cek6lwrhn for recon tests
12:03 INFO [databricks.labs.pytester.fixtures.baseline] Created dummy_sqxyix3fq volume: https://DATABRICKS_HOST/#explore/data/dummy_cek6lwrhn/dummy_sqxyix3fq/dummy_sqxyix3fq
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] added volume fixture: VolumeInfo(access_point=None, browse_only=None, catalog_name='dummy_cek6lwrhn', comment=None, created_at=1778501005686, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', encryption_details=None, full_name='dummy_cek6lwrhn.dummy_sqxyix3fq.dummy_sqxyix3fq', metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_sqxyix3fq', owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', schema_name='dummy_sqxyix3fq', storage_location='abfss://labs-CLOUD_ENV-TEST_CATALOG-container@databrickslabsstorage.dfs.core.windows.net/8952c1e3-b265-4adf-98c3-6f755e2e1453/volumes/9c8249fa-66e1-46fa-bd40-a97a8ca95eb1', updated_at=1778501005686, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', volume_id='9c8249fa-66e1-46fa-bd40-a97a8ca95eb1', volume_type=<VolumeType.MANAGED: 'MANAGED'>)
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] clearing 1 volume fixtures
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] removing volume fixture: VolumeInfo(access_point=None, browse_only=None, catalog_name='dummy_cek6lwrhn', comment=None, created_at=1778501005686, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', encryption_details=None, full_name='dummy_cek6lwrhn.dummy_sqxyix3fq.dummy_sqxyix3fq', metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_sqxyix3fq', owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', schema_name='dummy_sqxyix3fq', storage_location='abfss://labs-CLOUD_ENV-TEST_CATALOG-container@databrickslabsstorage.dfs.core.windows.net/8952c1e3-b265-4adf-98c3-6f755e2e1453/volumes/9c8249fa-66e1-46fa-bd40-a97a8ca95eb1', updated_at=1778501005686, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', volume_id='9c8249fa-66e1-46fa-bd40-a97a8ca95eb1', volume_type=<VolumeType.MANAGED: 'MANAGED'>)
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] clearing 1 schema fixtures
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] removing schema fixture: SchemaInfo(browse_only=None, catalog_name='dummy_cek6lwrhn', catalog_type=None, comment=None, created_at=None, created_by=None, effective_predictive_optimization_flag=None, enable_predictive_optimization=None, full_name='dummy_cek6lwrhn.dummy_sqxyix3fq', metastore_id=None, name='dummy_sqxyix3fq', owner=None, properties=None, schema_id=None, storage_location=None, storage_root=None, updated_at=None, updated_by=None)
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] clearing 1 catalog fixtures
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] removing catalog fixture: CatalogInfo(browse_only=False, catalog_type=<CatalogType.MANAGED_CATALOG: 'MANAGED_CATALOG'>, comment=None, connection_name=None, created_at=1778500997984, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', effective_predictive_optimization_flag=EffectivePredictiveOptimizationFlag(value=<EnablePredictiveOptimization.DISABLE: 'DISABLE'>, inherited_from_name='primary', inherited_from_type=None), enable_predictive_optimization=<EnablePredictiveOptimization.INHERIT: 'INHERIT'>, full_name='dummy_cek6lwrhn', isolation_mode=<CatalogIsolationMode.OPEN: 'OPEN'>, metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_cek6lwrhn', options=None, owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', properties={'RemoveAfter': '2026051114'}, provider_name=None, provisioning_info=None, securable_type=<SecurableType.CATALOG: 'CATALOG'>, share_name=None, storage_location=None, storage_root=None, updated_at=1778500997984, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e')
[gw6] linux -- Python 3.10.20 /home/runner/work/lakebridge/lakebridge/.venv/bin/python
❌ test_recon_for_report_type_is_data: AttributeError: does not have the attribute 'uuid4' (10.982s)
... (skipped 3717 bytes)
ANAGED_CATALOG: 'MANAGED_CATALOG'>, comment=None, connection_name=None, created_at=1778501004086, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', effective_predictive_optimization_flag=EffectivePredictiveOptimizationFlag(value=<EnablePredictiveOptimization.DISABLE: 'DISABLE'>, inherited_from_name='primary', inherited_from_type=None), enable_predictive_optimization=<EnablePredictiveOptimization.INHERIT: 'INHERIT'>, full_name='dummy_c14exhwrt', isolation_mode=<CatalogIsolationMode.OPEN: 'OPEN'>, metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_c14exhwrt', options=None, owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', properties={'RemoveAfter': '2026051114'}, provider_name=None, provisioning_info=None, securable_type=<SecurableType.CATALOG: 'CATALOG'>, share_name=None, storage_location=None, storage_root=None, updated_at=1778501004086, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e')
12:03 INFO [tests.integration.reconcile.conftest] Created catalog dummy_c14exhwrt for recon tests
12:03 INFO [databricks.labs.pytester.fixtures.baseline] Created dummy_c14exhwrt.dummy_souworjal schema: https://DATABRICKS_HOST/#explore/data/dummy_c14exhwrt/dummy_souworjal
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] added schema fixture: SchemaInfo(browse_only=None, catalog_name='dummy_c14exhwrt', catalog_type=None, comment=None, created_at=None, created_by=None, effective_predictive_optimization_flag=None, enable_predictive_optimization=None, full_name='dummy_c14exhwrt.dummy_souworjal', metastore_id=None, name='dummy_souworjal', owner=None, properties=None, schema_id=None, storage_location=None, storage_root=None, updated_at=None, updated_by=None)
12:03 INFO [tests.integration.reconcile.conftest] Created schema dummy_souworjal in catalog dummy_c14exhwrt for recon tests
12:03 INFO [databricks.labs.pytester.fixtures.baseline] Created dummy_souworjal volume: https://DATABRICKS_HOST/#explore/data/dummy_c14exhwrt/dummy_souworjal/dummy_souworjal
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] added volume fixture: VolumeInfo(access_point=None, browse_only=None, catalog_name='dummy_c14exhwrt', comment=None, created_at=1778501011179, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', encryption_details=None, full_name='dummy_c14exhwrt.dummy_souworjal.dummy_souworjal', metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_souworjal', owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', schema_name='dummy_souworjal', storage_location='abfss://labs-CLOUD_ENV-TEST_CATALOG-container@databrickslabsstorage.dfs.core.windows.net/8952c1e3-b265-4adf-98c3-6f755e2e1453/volumes/1e448fc7-bc74-4f69-a975-4b73401b89ea', updated_at=1778501011179, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', volume_id='1e448fc7-bc74-4f69-a975-4b73401b89ea', volume_type=<VolumeType.MANAGED: 'MANAGED'>)
12:03 INFO [databricks.labs.pytester.fixtures.baseline] Created dummy_c14exhwrt catalog: https://DATABRICKS_HOST/#explore/data/dummy_c14exhwrt
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] added catalog fixture: CatalogInfo(browse_only=False, catalog_type=<CatalogType.MANAGED_CATALOG: 'MANAGED_CATALOG'>, comment=None, connection_name=None, created_at=1778501004086, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', effective_predictive_optimization_flag=EffectivePredictiveOptimizationFlag(value=<EnablePredictiveOptimization.DISABLE: 'DISABLE'>, inherited_from_name='primary', inherited_from_type=None), enable_predictive_optimization=<EnablePredictiveOptimization.INHERIT: 'INHERIT'>, full_name='dummy_c14exhwrt', isolation_mode=<CatalogIsolationMode.OPEN: 'OPEN'>, metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_c14exhwrt', options=None, owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', properties={'RemoveAfter': '2026051114'}, provider_name=None, provisioning_info=None, securable_type=<SecurableType.CATALOG: 'CATALOG'>, share_name=None, storage_location=None, storage_root=None, updated_at=1778501004086, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e')
12:03 INFO [tests.integration.reconcile.conftest] Created catalog dummy_c14exhwrt for recon tests
12:03 INFO [databricks.labs.pytester.fixtures.baseline] Created dummy_c14exhwrt.dummy_souworjal schema: https://DATABRICKS_HOST/#explore/data/dummy_c14exhwrt/dummy_souworjal
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] added schema fixture: SchemaInfo(browse_only=None, catalog_name='dummy_c14exhwrt', catalog_type=None, comment=None, created_at=None, created_by=None, effective_predictive_optimization_flag=None, enable_predictive_optimization=None, full_name='dummy_c14exhwrt.dummy_souworjal', metastore_id=None, name='dummy_souworjal', owner=None, properties=None, schema_id=None, storage_location=None, storage_root=None, updated_at=None, updated_by=None)
12:03 INFO [tests.integration.reconcile.conftest] Created schema dummy_souworjal in catalog dummy_c14exhwrt for recon tests
12:03 INFO [databricks.labs.pytester.fixtures.baseline] Created dummy_souworjal volume: https://DATABRICKS_HOST/#explore/data/dummy_c14exhwrt/dummy_souworjal/dummy_souworjal
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] added volume fixture: VolumeInfo(access_point=None, browse_only=None, catalog_name='dummy_c14exhwrt', comment=None, created_at=1778501011179, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', encryption_details=None, full_name='dummy_c14exhwrt.dummy_souworjal.dummy_souworjal', metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_souworjal', owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', schema_name='dummy_souworjal', storage_location='abfss://labs-CLOUD_ENV-TEST_CATALOG-container@databrickslabsstorage.dfs.core.windows.net/8952c1e3-b265-4adf-98c3-6f755e2e1453/volumes/1e448fc7-bc74-4f69-a975-4b73401b89ea', updated_at=1778501011179, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', volume_id='1e448fc7-bc74-4f69-a975-4b73401b89ea', volume_type=<VolumeType.MANAGED: 'MANAGED'>)
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] clearing 1 volume fixtures
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] removing volume fixture: VolumeInfo(access_point=None, browse_only=None, catalog_name='dummy_c14exhwrt', comment=None, created_at=1778501011179, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', encryption_details=None, full_name='dummy_c14exhwrt.dummy_souworjal.dummy_souworjal', metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_souworjal', owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', schema_name='dummy_souworjal', storage_location='abfss://labs-CLOUD_ENV-TEST_CATALOG-container@databrickslabsstorage.dfs.core.windows.net/8952c1e3-b265-4adf-98c3-6f755e2e1453/volumes/1e448fc7-bc74-4f69-a975-4b73401b89ea', updated_at=1778501011179, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', volume_id='1e448fc7-bc74-4f69-a975-4b73401b89ea', volume_type=<VolumeType.MANAGED: 'MANAGED'>)
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] clearing 1 schema fixtures
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] removing schema fixture: SchemaInfo(browse_only=None, catalog_name='dummy_c14exhwrt', catalog_type=None, comment=None, created_at=None, created_by=None, effective_predictive_optimization_flag=None, enable_predictive_optimization=None, full_name='dummy_c14exhwrt.dummy_souworjal', metastore_id=None, name='dummy_souworjal', owner=None, properties=None, schema_id=None, storage_location=None, storage_root=None, updated_at=None, updated_by=None)
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] clearing 1 catalog fixtures
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] removing catalog fixture: CatalogInfo(browse_only=False, catalog_type=<CatalogType.MANAGED_CATALOG: 'MANAGED_CATALOG'>, comment=None, connection_name=None, created_at=1778501004086, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', effective_predictive_optimization_flag=EffectivePredictiveOptimizationFlag(value=<EnablePredictiveOptimization.DISABLE: 'DISABLE'>, inherited_from_name='primary', inherited_from_type=None), enable_predictive_optimization=<EnablePredictiveOptimization.INHERIT: 'INHERIT'>, full_name='dummy_c14exhwrt', isolation_mode=<CatalogIsolationMode.OPEN: 'OPEN'>, metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_c14exhwrt', options=None, owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', properties={'RemoveAfter': '2026051114'}, provider_name=None, provisioning_info=None, securable_type=<SecurableType.CATALOG: 'CATALOG'>, share_name=None, storage_location=None, storage_root=None, updated_at=1778501004086, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e')
[gw5] linux -- Python 3.10.20 /home/runner/work/lakebridge/lakebridge/.venv/bin/python
❌ test_data_recon_with_general_exception: AttributeError: does not have the attribute 'uuid4' (30.556s)
... (skipped 3717 bytes)
ANAGED_CATALOG: 'MANAGED_CATALOG'>, comment=None, connection_name=None, created_at=1778501010056, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', effective_predictive_optimization_flag=EffectivePredictiveOptimizationFlag(value=<EnablePredictiveOptimization.DISABLE: 'DISABLE'>, inherited_from_name='primary', inherited_from_type=None), enable_predictive_optimization=<EnablePredictiveOptimization.INHERIT: 'INHERIT'>, full_name='dummy_cqxekmgcf', isolation_mode=<CatalogIsolationMode.OPEN: 'OPEN'>, metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_cqxekmgcf', options=None, owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', properties={'RemoveAfter': '2026051114'}, provider_name=None, provisioning_info=None, securable_type=<SecurableType.CATALOG: 'CATALOG'>, share_name=None, storage_location=None, storage_root=None, updated_at=1778501010056, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e')
12:03 INFO [tests.integration.reconcile.conftest] Created catalog dummy_cqxekmgcf for recon tests
12:03 INFO [databricks.labs.pytester.fixtures.baseline] Created dummy_cqxekmgcf.dummy_shvvdpcds schema: https://DATABRICKS_HOST/#explore/data/dummy_cqxekmgcf/dummy_shvvdpcds
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] added schema fixture: SchemaInfo(browse_only=None, catalog_name='dummy_cqxekmgcf', catalog_type=None, comment=None, created_at=None, created_by=None, effective_predictive_optimization_flag=None, enable_predictive_optimization=None, full_name='dummy_cqxekmgcf.dummy_shvvdpcds', metastore_id=None, name='dummy_shvvdpcds', owner=None, properties=None, schema_id=None, storage_location=None, storage_root=None, updated_at=None, updated_by=None)
12:03 INFO [tests.integration.reconcile.conftest] Created schema dummy_shvvdpcds in catalog dummy_cqxekmgcf for recon tests
12:03 INFO [databricks.labs.pytester.fixtures.baseline] Created dummy_shvvdpcds volume: https://DATABRICKS_HOST/#explore/data/dummy_cqxekmgcf/dummy_shvvdpcds/dummy_shvvdpcds
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] added volume fixture: VolumeInfo(access_point=None, browse_only=None, catalog_name='dummy_cqxekmgcf', comment=None, created_at=1778501036836, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', encryption_details=None, full_name='dummy_cqxekmgcf.dummy_shvvdpcds.dummy_shvvdpcds', metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_shvvdpcds', owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', schema_name='dummy_shvvdpcds', storage_location='abfss://labs-CLOUD_ENV-TEST_CATALOG-container@databrickslabsstorage.dfs.core.windows.net/8952c1e3-b265-4adf-98c3-6f755e2e1453/volumes/abd8f21b-2189-451d-8390-a03d73a5a5f4', updated_at=1778501036836, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', volume_id='abd8f21b-2189-451d-8390-a03d73a5a5f4', volume_type=<VolumeType.MANAGED: 'MANAGED'>)
12:03 INFO [databricks.labs.pytester.fixtures.baseline] Created dummy_cqxekmgcf catalog: https://DATABRICKS_HOST/#explore/data/dummy_cqxekmgcf
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] added catalog fixture: CatalogInfo(browse_only=False, catalog_type=<CatalogType.MANAGED_CATALOG: 'MANAGED_CATALOG'>, comment=None, connection_name=None, created_at=1778501010056, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', effective_predictive_optimization_flag=EffectivePredictiveOptimizationFlag(value=<EnablePredictiveOptimization.DISABLE: 'DISABLE'>, inherited_from_name='primary', inherited_from_type=None), enable_predictive_optimization=<EnablePredictiveOptimization.INHERIT: 'INHERIT'>, full_name='dummy_cqxekmgcf', isolation_mode=<CatalogIsolationMode.OPEN: 'OPEN'>, metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_cqxekmgcf', options=None, owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', properties={'RemoveAfter': '2026051114'}, provider_name=None, provisioning_info=None, securable_type=<SecurableType.CATALOG: 'CATALOG'>, share_name=None, storage_location=None, storage_root=None, updated_at=1778501010056, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e')
12:03 INFO [tests.integration.reconcile.conftest] Created catalog dummy_cqxekmgcf for recon tests
12:03 INFO [databricks.labs.pytester.fixtures.baseline] Created dummy_cqxekmgcf.dummy_shvvdpcds schema: https://DATABRICKS_HOST/#explore/data/dummy_cqxekmgcf/dummy_shvvdpcds
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] added schema fixture: SchemaInfo(browse_only=None, catalog_name='dummy_cqxekmgcf', catalog_type=None, comment=None, created_at=None, created_by=None, effective_predictive_optimization_flag=None, enable_predictive_optimization=None, full_name='dummy_cqxekmgcf.dummy_shvvdpcds', metastore_id=None, name='dummy_shvvdpcds', owner=None, properties=None, schema_id=None, storage_location=None, storage_root=None, updated_at=None, updated_by=None)
12:03 INFO [tests.integration.reconcile.conftest] Created schema dummy_shvvdpcds in catalog dummy_cqxekmgcf for recon tests
12:03 INFO [databricks.labs.pytester.fixtures.baseline] Created dummy_shvvdpcds volume: https://DATABRICKS_HOST/#explore/data/dummy_cqxekmgcf/dummy_shvvdpcds/dummy_shvvdpcds
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] added volume fixture: VolumeInfo(access_point=None, browse_only=None, catalog_name='dummy_cqxekmgcf', comment=None, created_at=1778501036836, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', encryption_details=None, full_name='dummy_cqxekmgcf.dummy_shvvdpcds.dummy_shvvdpcds', metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_shvvdpcds', owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', schema_name='dummy_shvvdpcds', storage_location='abfss://labs-CLOUD_ENV-TEST_CATALOG-container@databrickslabsstorage.dfs.core.windows.net/8952c1e3-b265-4adf-98c3-6f755e2e1453/volumes/abd8f21b-2189-451d-8390-a03d73a5a5f4', updated_at=1778501036836, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', volume_id='abd8f21b-2189-451d-8390-a03d73a5a5f4', volume_type=<VolumeType.MANAGED: 'MANAGED'>)
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] clearing 1 volume fixtures
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] removing volume fixture: VolumeInfo(access_point=None, browse_only=None, catalog_name='dummy_cqxekmgcf', comment=None, created_at=1778501036836, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', encryption_details=None, full_name='dummy_cqxekmgcf.dummy_shvvdpcds.dummy_shvvdpcds', metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_shvvdpcds', owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', schema_name='dummy_shvvdpcds', storage_location='abfss://labs-CLOUD_ENV-TEST_CATALOG-container@databrickslabsstorage.dfs.core.windows.net/8952c1e3-b265-4adf-98c3-6f755e2e1453/volumes/abd8f21b-2189-451d-8390-a03d73a5a5f4', updated_at=1778501036836, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', volume_id='abd8f21b-2189-451d-8390-a03d73a5a5f4', volume_type=<VolumeType.MANAGED: 'MANAGED'>)
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] clearing 1 schema fixtures
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] removing schema fixture: SchemaInfo(browse_only=None, catalog_name='dummy_cqxekmgcf', catalog_type=None, comment=None, created_at=None, created_by=None, effective_predictive_optimization_flag=None, enable_predictive_optimization=None, full_name='dummy_cqxekmgcf.dummy_shvvdpcds', metastore_id=None, name='dummy_shvvdpcds', owner=None, properties=None, schema_id=None, storage_location=None, storage_root=None, updated_at=None, updated_by=None)
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] clearing 1 catalog fixtures
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] removing catalog fixture: CatalogInfo(browse_only=False, catalog_type=<CatalogType.MANAGED_CATALOG: 'MANAGED_CATALOG'>, comment=None, connection_name=None, created_at=1778501010056, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', effective_predictive_optimization_flag=EffectivePredictiveOptimizationFlag(value=<EnablePredictiveOptimization.DISABLE: 'DISABLE'>, inherited_from_name='primary', inherited_from_type=None), enable_predictive_optimization=<EnablePredictiveOptimization.INHERIT: 'INHERIT'>, full_name='dummy_cqxekmgcf', isolation_mode=<CatalogIsolationMode.OPEN: 'OPEN'>, metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_cqxekmgcf', options=None, owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', properties={'RemoveAfter': '2026051114'}, provider_name=None, provisioning_info=None, securable_type=<SecurableType.CATALOG: 'CATALOG'>, share_name=None, storage_location=None, storage_root=None, updated_at=1778501010056, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e')
[gw6] linux -- Python 3.10.20 /home/runner/work/lakebridge/lakebridge/.venv/bin/python
❌ test_recon_for_report_type_schema: AttributeError: does not have the attribute 'uuid4' (29.576s)
... (skipped 3717 bytes)
ANAGED_CATALOG: 'MANAGED_CATALOG'>, comment=None, connection_name=None, created_at=1778501015240, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', effective_predictive_optimization_flag=EffectivePredictiveOptimizationFlag(value=<EnablePredictiveOptimization.DISABLE: 'DISABLE'>, inherited_from_name='primary', inherited_from_type=None), enable_predictive_optimization=<EnablePredictiveOptimization.INHERIT: 'INHERIT'>, full_name='dummy_ckffuvw9y', isolation_mode=<CatalogIsolationMode.OPEN: 'OPEN'>, metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_ckffuvw9y', options=None, owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', properties={'RemoveAfter': '2026051114'}, provider_name=None, provisioning_info=None, securable_type=<SecurableType.CATALOG: 'CATALOG'>, share_name=None, storage_location=None, storage_root=None, updated_at=1778501015240, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e')
12:03 INFO [tests.integration.reconcile.conftest] Created catalog dummy_ckffuvw9y for recon tests
12:03 INFO [databricks.labs.pytester.fixtures.baseline] Created dummy_ckffuvw9y.dummy_sk2xarwbs schema: https://DATABRICKS_HOST/#explore/data/dummy_ckffuvw9y/dummy_sk2xarwbs
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] added schema fixture: SchemaInfo(browse_only=None, catalog_name='dummy_ckffuvw9y', catalog_type=None, comment=None, created_at=None, created_by=None, effective_predictive_optimization_flag=None, enable_predictive_optimization=None, full_name='dummy_ckffuvw9y.dummy_sk2xarwbs', metastore_id=None, name='dummy_sk2xarwbs', owner=None, properties=None, schema_id=None, storage_location=None, storage_root=None, updated_at=None, updated_by=None)
12:03 INFO [tests.integration.reconcile.conftest] Created schema dummy_sk2xarwbs in catalog dummy_ckffuvw9y for recon tests
12:04 INFO [databricks.labs.pytester.fixtures.baseline] Created dummy_sk2xarwbs volume: https://DATABRICKS_HOST/#explore/data/dummy_ckffuvw9y/dummy_sk2xarwbs/dummy_sk2xarwbs
12:04 DEBUG [databricks.labs.pytester.fixtures.baseline] added volume fixture: VolumeInfo(access_point=None, browse_only=None, catalog_name='dummy_ckffuvw9y', comment=None, created_at=1778501040838, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', encryption_details=None, full_name='dummy_ckffuvw9y.dummy_sk2xarwbs.dummy_sk2xarwbs', metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_sk2xarwbs', owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', schema_name='dummy_sk2xarwbs', storage_location='abfss://labs-CLOUD_ENV-TEST_CATALOG-container@databrickslabsstorage.dfs.core.windows.net/8952c1e3-b265-4adf-98c3-6f755e2e1453/volumes/ed983ef0-3f67-4506-930e-bf5d5e8ad195', updated_at=1778501040838, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', volume_id='ed983ef0-3f67-4506-930e-bf5d5e8ad195', volume_type=<VolumeType.MANAGED: 'MANAGED'>)
12:03 INFO [databricks.labs.pytester.fixtures.baseline] Created dummy_ckffuvw9y catalog: https://DATABRICKS_HOST/#explore/data/dummy_ckffuvw9y
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] added catalog fixture: CatalogInfo(browse_only=False, catalog_type=<CatalogType.MANAGED_CATALOG: 'MANAGED_CATALOG'>, comment=None, connection_name=None, created_at=1778501015240, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', effective_predictive_optimization_flag=EffectivePredictiveOptimizationFlag(value=<EnablePredictiveOptimization.DISABLE: 'DISABLE'>, inherited_from_name='primary', inherited_from_type=None), enable_predictive_optimization=<EnablePredictiveOptimization.INHERIT: 'INHERIT'>, full_name='dummy_ckffuvw9y', isolation_mode=<CatalogIsolationMode.OPEN: 'OPEN'>, metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_ckffuvw9y', options=None, owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', properties={'RemoveAfter': '2026051114'}, provider_name=None, provisioning_info=None, securable_type=<SecurableType.CATALOG: 'CATALOG'>, share_name=None, storage_location=None, storage_root=None, updated_at=1778501015240, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e')
12:03 INFO [tests.integration.reconcile.conftest] Created catalog dummy_ckffuvw9y for recon tests
12:03 INFO [databricks.labs.pytester.fixtures.baseline] Created dummy_ckffuvw9y.dummy_sk2xarwbs schema: https://DATABRICKS_HOST/#explore/data/dummy_ckffuvw9y/dummy_sk2xarwbs
12:03 DEBUG [databricks.labs.pytester.fixtures.baseline] added schema fixture: SchemaInfo(browse_only=None, catalog_name='dummy_ckffuvw9y', catalog_type=None, comment=None, created_at=None, created_by=None, effective_predictive_optimization_flag=None, enable_predictive_optimization=None, full_name='dummy_ckffuvw9y.dummy_sk2xarwbs', metastore_id=None, name='dummy_sk2xarwbs', owner=None, properties=None, schema_id=None, storage_location=None, storage_root=None, updated_at=None, updated_by=None)
12:03 INFO [tests.integration.reconcile.conftest] Created schema dummy_sk2xarwbs in catalog dummy_ckffuvw9y for recon tests
12:04 INFO [databricks.labs.pytester.fixtures.baseline] Created dummy_sk2xarwbs volume: https://DATABRICKS_HOST/#explore/data/dummy_ckffuvw9y/dummy_sk2xarwbs/dummy_sk2xarwbs
12:04 DEBUG [databricks.labs.pytester.fixtures.baseline] added volume fixture: VolumeInfo(access_point=None, browse_only=None, catalog_name='dummy_ckffuvw9y', comment=None, created_at=1778501040838, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', encryption_details=None, full_name='dummy_ckffuvw9y.dummy_sk2xarwbs.dummy_sk2xarwbs', metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_sk2xarwbs', owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', schema_name='dummy_sk2xarwbs', storage_location='abfss://labs-CLOUD_ENV-TEST_CATALOG-container@databrickslabsstorage.dfs.core.windows.net/8952c1e3-b265-4adf-98c3-6f755e2e1453/volumes/ed983ef0-3f67-4506-930e-bf5d5e8ad195', updated_at=1778501040838, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', volume_id='ed983ef0-3f67-4506-930e-bf5d5e8ad195', volume_type=<VolumeType.MANAGED: 'MANAGED'>)
12:04 DEBUG [databricks.labs.pytester.fixtures.baseline] clearing 1 volume fixtures
12:04 DEBUG [databricks.labs.pytester.fixtures.baseline] removing volume fixture: VolumeInfo(access_point=None, browse_only=None, catalog_name='dummy_ckffuvw9y', comment=None, created_at=1778501040838, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', encryption_details=None, full_name='dummy_ckffuvw9y.dummy_sk2xarwbs.dummy_sk2xarwbs', metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_sk2xarwbs', owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', schema_name='dummy_sk2xarwbs', storage_location='abfss://labs-CLOUD_ENV-TEST_CATALOG-container@databrickslabsstorage.dfs.core.windows.net/8952c1e3-b265-4adf-98c3-6f755e2e1453/volumes/ed983ef0-3f67-4506-930e-bf5d5e8ad195', updated_at=1778501040838, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', volume_id='ed983ef0-3f67-4506-930e-bf5d5e8ad195', volume_type=<VolumeType.MANAGED: 'MANAGED'>)
12:04 DEBUG [databricks.labs.pytester.fixtures.baseline] clearing 1 schema fixtures
12:04 DEBUG [databricks.labs.pytester.fixtures.baseline] removing schema fixture: SchemaInfo(browse_only=None, catalog_name='dummy_ckffuvw9y', catalog_type=None, comment=None, created_at=None, created_by=None, effective_predictive_optimization_flag=None, enable_predictive_optimization=None, full_name='dummy_ckffuvw9y.dummy_sk2xarwbs', metastore_id=None, name='dummy_sk2xarwbs', owner=None, properties=None, schema_id=None, storage_location=None, storage_root=None, updated_at=None, updated_by=None)
12:04 DEBUG [databricks.labs.pytester.fixtures.baseline] clearing 1 catalog fixtures
12:04 DEBUG [databricks.labs.pytester.fixtures.baseline] removing catalog fixture: CatalogInfo(browse_only=False, catalog_type=<CatalogType.MANAGED_CATALOG: 'MANAGED_CATALOG'>, comment=None, connection_name=None, created_at=1778501015240, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', effective_predictive_optimization_flag=EffectivePredictiveOptimizationFlag(value=<EnablePredictiveOptimization.DISABLE: 'DISABLE'>, inherited_from_name='primary', inherited_from_type=None), enable_predictive_optimization=<EnablePredictiveOptimization.INHERIT: 'INHERIT'>, full_name='dummy_ckffuvw9y', isolation_mode=<CatalogIsolationMode.OPEN: 'OPEN'>, metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_ckffuvw9y', options=None, owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', properties={'RemoveAfter': '2026051114'}, provider_name=None, provisioning_info=None, securable_type=<SecurableType.CATALOG: 'CATALOG'>, share_name=None, storage_location=None, storage_root=None, updated_at=1778501015240, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e')
[gw5] linux -- Python 3.10.20 /home/runner/work/lakebridge/lakebridge/.venv/bin/python
❌ test_data_recon_with_source_exception: AttributeError: does not have the attribute 'uuid4' (13.126s)
... (skipped 3717 bytes)
ANAGED_CATALOG: 'MANAGED_CATALOG'>, comment=None, connection_name=None, created_at=1778501040980, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', effective_predictive_optimization_flag=EffectivePredictiveOptimizationFlag(value=<EnablePredictiveOptimization.DISABLE: 'DISABLE'>, inherited_from_name='primary', inherited_from_type=None), enable_predictive_optimization=<EnablePredictiveOptimization.INHERIT: 'INHERIT'>, full_name='dummy_cz1exzplm', isolation_mode=<CatalogIsolationMode.OPEN: 'OPEN'>, metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_cz1exzplm', options=None, owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', properties={'RemoveAfter': '2026051114'}, provider_name=None, provisioning_info=None, securable_type=<SecurableType.CATALOG: 'CATALOG'>, share_name=None, storage_location=None, storage_root=None, updated_at=1778501040980, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e')
12:04 INFO [tests.integration.reconcile.conftest] Created catalog dummy_cz1exzplm for recon tests
12:04 INFO [databricks.labs.pytester.fixtures.baseline] Created dummy_cz1exzplm.dummy_s3iqoa0uu schema: https://DATABRICKS_HOST/#explore/data/dummy_cz1exzplm/dummy_s3iqoa0uu
12:04 DEBUG [databricks.labs.pytester.fixtures.baseline] added schema fixture: SchemaInfo(browse_only=None, catalog_name='dummy_cz1exzplm', catalog_type=None, comment=None, created_at=None, created_by=None, effective_predictive_optimization_flag=None, enable_predictive_optimization=None, full_name='dummy_cz1exzplm.dummy_s3iqoa0uu', metastore_id=None, name='dummy_s3iqoa0uu', owner=None, properties=None, schema_id=None, storage_location=None, storage_root=None, updated_at=None, updated_by=None)
12:04 INFO [tests.integration.reconcile.conftest] Created schema dummy_s3iqoa0uu in catalog dummy_cz1exzplm for recon tests
12:04 INFO [databricks.labs.pytester.fixtures.baseline] Created dummy_s3iqoa0uu volume: https://DATABRICKS_HOST/#explore/data/dummy_cz1exzplm/dummy_s3iqoa0uu/dummy_s3iqoa0uu
12:04 DEBUG [databricks.labs.pytester.fixtures.baseline] added volume fixture: VolumeInfo(access_point=None, browse_only=None, catalog_name='dummy_cz1exzplm', comment=None, created_at=1778501048995, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', encryption_details=None, full_name='dummy_cz1exzplm.dummy_s3iqoa0uu.dummy_s3iqoa0uu', metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_s3iqoa0uu', owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', schema_name='dummy_s3iqoa0uu', storage_location='abfss://labs-CLOUD_ENV-TEST_CATALOG-container@databrickslabsstorage.dfs.core.windows.net/8952c1e3-b265-4adf-98c3-6f755e2e1453/volumes/c0caa46a-dd1a-405c-bc39-3731ec6d4279', updated_at=1778501048995, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', volume_id='c0caa46a-dd1a-405c-bc39-3731ec6d4279', volume_type=<VolumeType.MANAGED: 'MANAGED'>)
12:04 INFO [databricks.labs.pytester.fixtures.baseline] Created dummy_cz1exzplm catalog: https://DATABRICKS_HOST/#explore/data/dummy_cz1exzplm
12:04 DEBUG [databricks.labs.pytester.fixtures.baseline] added catalog fixture: CatalogInfo(browse_only=False, catalog_type=<CatalogType.MANAGED_CATALOG: 'MANAGED_CATALOG'>, comment=None, connection_name=None, created_at=1778501040980, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', effective_predictive_optimization_flag=EffectivePredictiveOptimizationFlag(value=<EnablePredictiveOptimization.DISABLE: 'DISABLE'>, inherited_from_name='primary', inherited_from_type=None), enable_predictive_optimization=<EnablePredictiveOptimization.INHERIT: 'INHERIT'>, full_name='dummy_cz1exzplm', isolation_mode=<CatalogIsolationMode.OPEN: 'OPEN'>, metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_cz1exzplm', options=None, owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', properties={'RemoveAfter': '2026051114'}, provider_name=None, provisioning_info=None, securable_type=<SecurableType.CATALOG: 'CATALOG'>, share_name=None, storage_location=None, storage_root=None, updated_at=1778501040980, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e')
12:04 INFO [tests.integration.reconcile.conftest] Created catalog dummy_cz1exzplm for recon tests
12:04 INFO [databricks.labs.pytester.fixtures.baseline] Created dummy_cz1exzplm.dummy_s3iqoa0uu schema: https://DATABRICKS_HOST/#explore/data/dummy_cz1exzplm/dummy_s3iqoa0uu
12:04 DEBUG [databricks.labs.pytester.fixtures.baseline] added schema fixture: SchemaInfo(browse_only=None, catalog_name='dummy_cz1exzplm', catalog_type=None, comment=None, created_at=None, created_by=None, effective_predictive_optimization_flag=None, enable_predictive_optimization=None, full_name='dummy_cz1exzplm.dummy_s3iqoa0uu', metastore_id=None, name='dummy_s3iqoa0uu', owner=None, properties=None, schema_id=None, storage_location=None, storage_root=None, updated_at=None, updated_by=None)
12:04 INFO [tests.integration.reconcile.conftest] Created schema dummy_s3iqoa0uu in catalog dummy_cz1exzplm for recon tests
12:04 INFO [databricks.labs.pytester.fixtures.baseline] Created dummy_s3iqoa0uu volume: https://DATABRICKS_HOST/#explore/data/dummy_cz1exzplm/dummy_s3iqoa0uu/dummy_s3iqoa0uu
12:04 DEBUG [databricks.labs.pytester.fixtures.baseline] added volume fixture: VolumeInfo(access_point=None, browse_only=None, catalog_name='dummy_cz1exzplm', comment=None, created_at=1778501048995, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', encryption_details=None, full_name='dummy_cz1exzplm.dummy_s3iqoa0uu.dummy_s3iqoa0uu', metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_s3iqoa0uu', owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', schema_name='dummy_s3iqoa0uu', storage_location='abfss://labs-CLOUD_ENV-TEST_CATALOG-container@databrickslabsstorage.dfs.core.windows.net/8952c1e3-b265-4adf-98c3-6f755e2e1453/volumes/c0caa46a-dd1a-405c-bc39-3731ec6d4279', updated_at=1778501048995, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', volume_id='c0caa46a-dd1a-405c-bc39-3731ec6d4279', volume_type=<VolumeType.MANAGED: 'MANAGED'>)
12:04 DEBUG [databricks.labs.pytester.fixtures.baseline] clearing 1 volume fixtures
12:04 DEBUG [databricks.labs.pytester.fixtures.baseline] removing volume fixture: VolumeInfo(access_point=None, browse_only=None, catalog_name='dummy_cz1exzplm', comment=None, created_at=1778501048995, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', encryption_details=None, full_name='dummy_cz1exzplm.dummy_s3iqoa0uu.dummy_s3iqoa0uu', metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_s3iqoa0uu', owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', schema_name='dummy_s3iqoa0uu', storage_location='abfss://labs-CLOUD_ENV-TEST_CATALOG-container@databrickslabsstorage.dfs.core.windows.net/8952c1e3-b265-4adf-98c3-6f755e2e1453/volumes/c0caa46a-dd1a-405c-bc39-3731ec6d4279', updated_at=1778501048995, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', volume_id='c0caa46a-dd1a-405c-bc39-3731ec6d4279', volume_type=<VolumeType.MANAGED: 'MANAGED'>)
12:04 DEBUG [databricks.labs.pytester.fixtures.baseline] clearing 1 schema fixtures
12:04 DEBUG [databricks.labs.pytester.fixtures.baseline] removing schema fixture: SchemaInfo(browse_only=None, catalog_name='dummy_cz1exzplm', catalog_type=None, comment=None, created_at=None, created_by=None, effective_predictive_optimization_flag=None, enable_predictive_optimization=None, full_name='dummy_cz1exzplm.dummy_s3iqoa0uu', metastore_id=None, name='dummy_s3iqoa0uu', owner=None, properties=None, schema_id=None, storage_location=None, storage_root=None, updated_at=None, updated_by=None)
12:04 DEBUG [databricks.labs.pytester.fixtures.baseline] clearing 1 catalog fixtures
12:04 DEBUG [databricks.labs.pytester.fixtures.baseline] removing catalog fixture: CatalogInfo(browse_only=False, catalog_type=<CatalogType.MANAGED_CATALOG: 'MANAGED_CATALOG'>, comment=None, connection_name=None, created_at=1778501040980, created_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', effective_predictive_optimization_flag=EffectivePredictiveOptimizationFlag(value=<EnablePredictiveOptimization.DISABLE: 'DISABLE'>, inherited_from_name='primary', inherited_from_type=None), enable_predictive_optimization=<EnablePredictiveOptimization.INHERIT: 'INHERIT'>, full_name='dummy_cz1exzplm', isolation_mode=<CatalogIsolationMode.OPEN: 'OPEN'>, metastore_id='8952c1e3-b265-4adf-98c3-6f755e2e1453', name='dummy_cz1exzplm', options=None, owner='3fe685a1-96cc-4fec-8cdb-6944f5c9787e', properties={'RemoveAfter': '2026051114'}, provider_name=None, provisioning_info=None, securable_type=<SecurableType.CATALOG: 'CATALOG'>, share_name=None, storage_location=None, storage_root=None, updated_at=1778501040980, updated_by='3fe685a1-96cc-4fec-8cdb-6944f5c9787e')
[gw6] linux -- Python 3.10.20 /home/runner/work/lakebridge/lakebridge/.venv/bin/python

Running from acceptance #4337

black prefers parenthesised multi-context manager syntax over backslash-style.

Co-authored-by: Isaac
The deferred import of TriggerReconAggregateService is intentional to break
the module-load cycle (trigger_recon_aggregate_service already imports
trigger_recon_service). pylint still flags it as a code smell.

The cyclic-import + import-outside-toplevel pair is whitelisted by
tests/unit/no_cheat.py for exactly this case.

Co-authored-by: Isaac
Copy link
Copy Markdown
Contributor

@m-abulazm m-abulazm left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we do not support this behavior. users can run aggregate reconcile using cli databricks labs lakebridge aggregates_reconcile or the service directly if using python

@m-abulazm m-abulazm closed this May 11, 2026
Per review feedback, the deferred import workaround in trigger_recon_service.py
introduced a real cyclic dependency between TriggerReconService and
TriggerReconAggregateService.

Extract the three helpers (create_recon_dependencies,
verify_successful_reconciliation, get_schemas) plus a new
cleanup_intermediate_persist helper into a new module
reconcile/recon_service_helpers.py. Both services now import from the helpers
module instead of from each other, and trigger_recon_service.py can safely
import TriggerReconAggregateService at module load time for the aggregate
dispatch.

cleanup_intermediate_persist also dedupes the dbfs cleanup block that was
otherwise flagged by pylint's similarity checker.

Co-authored-by: Isaac
@moomindani moomindani reopened this May 11, 2026
@moomindani
Copy link
Copy Markdown
Contributor Author

moomindani commented May 11, 2026

Reopening after addressing the cyclic-dependency concern we discussed.

The previous version used a deferred import inside trigger_recon to avoid the module-load cycle but kept the semantic dependency in both directions. Per the design feedback, that is not the right shape.

This revision breaks the cycle by extracting the shared helpers (create_recon_dependencies, verify_successful_reconciliation, get_schemas, plus a new cleanup_intermediate_persist) into a new module reconcile/recon_service_helpers.py. Both TriggerReconService and TriggerReconAggregateService now depend only on the helpers module — they no longer import each other. trigger_recon_service.py can import TriggerReconAggregateService at module load time without any cycle, and the deferred-import / pylint disable is gone.

Dependency graph after the change:

  • recon_service_helpers.py — no service-level imports.
  • trigger_recon_aggregate_service.pyrecon_service_helpers.py only.
  • trigger_recon_service.pyrecon_service_helpers.py + trigger_recon_aggregate_service.py (one-way).

Behavior is unchanged: report_type="aggregate" on the public TriggerReconService.trigger_recon dispatches to TriggerReconAggregateService.trigger_recon_aggregates. Tests cover both dispatch and the non-aggregate path. Full unit suite passes (1160), pylint 10.00/10.


The diff is larger than the actual new logic — most of it is mechanical. Breakdown:

File Change What's in it
recon_service_helpers.py (new) +150 3 helpers moved verbatim from TriggerReconService; only cleanup_intermediate_persist (5 lines) is new
trigger_recon_service.py -158 net 3 helpers removed (moved out). New logic: 5-line aggregate dispatch + 1-line cleanup call
trigger_recon_aggregate_service.py +18 TriggerReconService.X(...) → bare X(...) (helper imports); no behavior change
test_verify_reconcile.py +87 2 new dispatch tests; existing tests just drop the TriggerReconService. prefix

The actual new behavior is: (1) the 5-line aggregate dispatch in trigger_recon, (2) the 5-line cleanup_intermediate_persist helper that dedupes the dbfs cleanup block (and resolves a pylint similarity warning), and (3) the 2 new dispatch tests. Everything else is moves and call-site renames.

@moomindani moomindani force-pushed the fix/recon-aggregate-dispatch-in-trigger-recon branch from 749aba7 to 2eb5f36 Compare May 11, 2026 11:57
@moomindani moomindani force-pushed the fix/recon-aggregate-dispatch-in-trigger-recon branch from 2eb5f36 to c5a750a Compare May 11, 2026 12:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants