Skip to content

[da-vinci] Add integration test: DVC reads survive SIT failure#2735

Open
sixpluszero wants to merge 2 commits intolinkedin:mainfrom
sixpluszero:jlliu/dvc-read-survives-sit-failure
Open

[da-vinci] Add integration test: DVC reads survive SIT failure#2735
sixpluszero wants to merge 2 commits intolinkedin:mainfrom
sixpluszero:jlliu/dvc-read-survives-sit-failure

Conversation

@sixpluszero
Copy link
Copy Markdown
Contributor

Summary

  • Add testReadsFromLiveVersionSurviveSITFailure to DaVinciClientDiskFullTest to validate that Da Vinci client reads are not affected when a StoreIngestionTask fails on the currently serving version.
  • The test pushes data via VPJ, verifies reads work, then injects a task-level exception via setLastStoreIngestionException(). It confirms all records remain readable because VersionBackend partition futures are already completed successfully, making completePartitionExceptionally() a no-op.

Test plan

  • DaVinciClientDiskFullTest.testReadsFromLiveVersionSurviveSITFailure passes
  • Existing DaVinciClientDiskFullTest.testDaVinciDiskFullFailure still passes (no regression)

🤖 Generated with Claude Code

…e version

Add testReadsFromLiveVersionSurviveSITFailure to DaVinciClientDiskFullTest
to validate that Da Vinci client reads continue working after a
StoreIngestionTask failure on the currently serving version.

The test injects a task-level exception via setLastStoreIngestionException()
after successful ingestion, then verifies all records remain readable.
This works because VersionBackend partition futures are already completed
successfully, so completePartitionExceptionally() is a no-op.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings April 14, 2026 18:57
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Adds a new Da Vinci client integration test to ensure read availability is preserved even if the StoreIngestionTask for the currently serving version encounters a task-level failure after ingestion has already completed.

Changes:

  • Introduce testReadsFromLiveVersionSurviveSITFailure to validate reads remain successful after injecting a StoreIngestionTask exception on the live version.
  • Add supporting imports to access DaVinci backend internals (DaVinciBackend, VersionBackend, StoreIngestionTask, ReferenceCounted).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

- Assert sit.isRunning() before injecting the exception
- Wait for !sit.isRunning() after injection to confirm the error path
  was fully exercised before checking reads
- Add null guard on AvroGenericDaVinciClient.getBackend()
- Move read assertions out of waitForNonDeterministicAssertion since
  they should pass deterministically after SIT stops

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
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