Repository navigation
Conversation
- Search links by source only. In SearchLinksRequest, source and target are a protobuf oneof, so setting both silently kept only the target. Every entity seen in the lineage events is now searched as a source. - Also search GCS objects at bucket level (gcs:bucket): Dataplex stores GCS link endpoints per bucket, so object FQNs return nothing. - Links are indexed asynchronously, 45-120s or more after ingestion. Validation now polls every 15s for up to 240s; dump mode waits 120s. - compare_by_start_time had an inverted condition: it returned no diffs whenever any matched candidate differed, and the (empty) first diff otherwise, so differences were never reported. Now a match succeeds if some candidate has no diff; otherwise the first diff is reported. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: tnazarew <tomasz.nazarewicz@getindata.com>
Dataplex collapses GCS object endpoints to the bucket, so object-level links are never returned. Rewrite the expected links at bucket level (5 distinct links) and drop the gcs:mock-bucket -> gcs:mock-bucket self-link, whose start time varies between runs. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Signed-off-by: tnazarew <tomasz.nazarewicz@getindata.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
The Dataplex consumer's link checks were unreliable in three ways, and a fourth bug hid every difference on matched entities:
SearchLinksRequesttakessourceortarget, which form a protobuf oneof. The validator set both, so onlytargetwas used and links were looked up by target only.gcs:mock-bucket). Searching by an object FQN (gcs:mock-bucket.`result.csv`) returns nothing, so object-level expected links could never match.compare_by_start_timehad an inverted condition ([] if any(e for e in d if len(e) > 0) else next(...)). It returned no diffs whenever a candidate differed, and an empty diff otherwise, so mismatches on matched lineage events and links were never reported.Change
validator.py:sourcefor each one.LINK_INDEXING_TIMEOUT_SECONDS). Dump mode waits 120s before dumping.scenarios/airflow/validation/links/links.json: expected links rewritten at bucket level (5 distinct links). Thegcs:mock-bucket -> gcs:mock-bucketself-link is dropped because its start time varies between runs.With the diff bug fixed, the full run against
projects/gcp-open-lineage-testing/locations/usreports real mismatches in fixtures that were never actually checked. All 3 scenarios fail:airflowlineage_eventexpected names are pinned to process1275f3986dc31d314011311e70aacf4a; Dataplex now creates different process IDsairflowsimple_run_eventspark_dataproc_simple_producer_testdbfs:FQNs, Dataplex returnshdfs:; expected 1 link, Dataplex returns 2The previous green results came from the hidden-diff bug, not from matching fixtures. Merging this as-is will turn the Dataplex consumer red until the fixtures are regenerated. I'll follow up in this PR or a separate one.
Note
clean_up()(unchanged) deletes all processes in the target location before and after each scenario, so validation and dumps must not run while CI is using the same location.🤖 Generated with Claude Code