Skip to content

fix: Improve fallback behavior when using custom data system configuration#407

Open
devin-ai-integration[bot] wants to merge 1 commit intomainfrom
devin/1771344892-fix-recovery-condition
Open

fix: Improve fallback behavior when using custom data system configuration#407
devin-ai-integration[bot] wants to merge 1 commit intomainfrom
devin/1771344892-fix-recovery-condition

Conversation

@devin-ai-integration
Copy link
Contributor

@devin-ai-integration devin-ai-integration bot commented Feb 17, 2026

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

Related issues

Ports the same fix from the Go SDK: launchdarkly/go-server-sdk#348

Describe the solution you've provided

Removes the interrupted_at_runtime and cannot_initialize conditions from _recovery_condition in the FDv2 data system. Recovery (jumping back to the first/preferred synchronizer) now only triggers when the current non-primary synchronizer has been VALID for more than 5 minutes.

The removed conditions could cause premature recovery attempts that interfere with data system configurations using more than two synchronizers. The _fallback_condition (which moves forward through synchronizers) is unchanged and still uses both interrupted_at_runtime and cannot_initialize.

Human review checklist

  • Verify that only the recovery condition should be changed, and that the fallback condition (_fallback_condition at line 632) is intentionally left as-is
  • Confirm alignment with the Go SDK fix
  • Assess whether existing test coverage for recovery behavior is sufficient

Additional context

Link to Devin run | Requested by @keelerm84


Note

Medium Risk
Changes FDv2 synchronizer switching logic, which can affect availability and how multi-synchronizer configurations behave during outages. Risk is moderate due to potential impact on failover/recovery timing, though the change is small and localized.

Overview
FDv2’s recovery behavior when running on a non-primary synchronizer is tightened so it only switches back to the preferred (index 0) synchronizer after the current one has been VALID for more than 5 minutes.

This removes recovery triggers based on being INTERRUPTED for 1 minute or stuck INITIALIZING for 10 seconds, reducing premature “jump back” behavior in configurations with multiple synchronizers; the forward fallback logic in _fallback_condition remains unchanged.

Written by Cursor Bugbot for commit 82cd8e6. This will update automatically on new commits. Configure here.

…ation

Co-Authored-By: mkeeler@launchdarkly.com <keelerm84@gmail.com>
@devin-ai-integration
Copy link
Contributor Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment and CI monitoring

@keelerm84 keelerm84 marked this pull request as ready for review February 17, 2026 17:03
@keelerm84 keelerm84 requested a review from a team as a code owner February 17, 2026 17:03
@keelerm84 keelerm84 changed the title fix: improve fallback behavior when using custom data system configuration fix: Improve fallback behavior when using custom data system configuration Feb 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

Comments