Skip to content

test: Advertise the persistent-data-store-recovery contract test capability - #531

Closed
joker23 wants to merge 1 commit into
mainfrom
devin/1790620966-persistent-store-recovery-capability
Closed

joker23 wants to merge 1 commit into
mainfrom
devin/1790620966-persistent-store-recovery-capability

Conversation

@joker23

@joker23 joker23 commented Sep 28, 2026

Copy link
Copy Markdown
Contributor

Advertises the new persistent-data-store-recovery contract-test capability (added in launchdarkly/sdk-test-harness#464) from the sync and async contract-test services.

Requirements

  • I have added test coverage for new or changed functionality
  • I have followed the repository's pull request submission guidelines
  • I have validated my changes against all supported platform versions
  • Sync/async parity: matching changes made to async_* siblings (or N/A)

Related issues

launchdarkly/sdk-test-harness#464

Describe the solution you've provided

  • Adds persistent-data-store-recovery to contract-tests/service.py and contract-tests/async_service.py.
  • No-op until a harness release containing the recovery suite is picked up by CI.
  • The SDK currently fails the new suite (see below) — this should not merge until the SDK fix lands or the failing tests are suppressed.

Describe alternatives you've considered

Suppressing the failing tests in this PR; left out so the failures are visible for review.

Additional context

Local results and root cause

Ran harness PR #464 locally with -enable-persistence-tests -run "persistent data store/.*/store recovery" against Redis (the only store the Python contract service exposes for recovery here).

Sync and async both: 9 ran, 5 failed:

  • no cache / infinite cache / ttl cache - writes back full state on recovery
  • retries write back after another failure
  • recovers from repeated outages

serves updates from memory during outage passes.

Root cause: Store.commit() (ldclient/impl/datasystem/store.py) builds the write-back payload with self._memory_store.all(...), which filters out deleted items. The persistent store is then inited without the tombstone for the deleted flag, while the harness expects the deleted flag to be persisted as a tombstone at the new version. A local experiment that wrote back the memory store's raw items (including tombstones) passed all 9 Redis recovery tests.

Link to Devin session: https://app.devin.ai/sessions/0771b1fabf2b46e093700f45c02dcfff
Open in Devin Desktop: https://app.devin.ai/desktop/session/0771b1fabf2b46e093700f45c02dcfff?variant=devin
Requested by: @joker23

…bility

Co-Authored-By: Steven Zhang <szhang@launchdarkly.com>
@devin-ai-integration

Copy link
Copy Markdown
Contributor

I'll fix CI failures and address comments from users with write access. I'll skip comments containing "(aside)".

  • Disable automatic comment, CI, and merge conflict monitoring

@devin-ai-integration
devin-ai-integration Bot deleted the devin/1790620966-persistent-store-recovery-capability branch September 28, 2026 19:08
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.

1 participant