-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: client init state should not regress when data source interrupted #441
Merged
Conversation
This file contains 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
cwaldren-ld
force-pushed
the
cw/sdk-727/wrong-initialized-condition
branch
from
September 30, 2024 21:42
2800445
to
8ae9541
Compare
cwaldren-ld
force-pushed
the
cw/sdk-727/wrong-initialized-condition
branch
from
September 30, 2024 21:59
8ae9541
to
9830df9
Compare
cwaldren-ld
changed the base branch from
main
to
cw/add-data-source-state-name
September 30, 2024 21:59
The existing handling for data source state transitions when receiving `sse` errors was incorrect. It was treating any error as a state transition to `kOff/kShutdown`, and logging at the `error` level. The correct behavior would be making that transition only if the error is unrecoverable. Additionally, recoverable errors should be logged at the debug level, in order to not overstate the impact of the issue. This bug did not actually affect the backoff behavior of the eventsource, but it did impact status listeners and any code that queried the existing status within the SDK.
cwaldren-ld
force-pushed
the
cw/sdk-727/wrong-initialized-condition
branch
from
September 30, 2024 22:00
9830df9
to
54a2a9c
Compare
cwaldren-ld
changed the title
fix: improve handling of streaming error state changes/logging (#439)
fix: client initialized state should not regress when data source interrupted
Sep 30, 2024
cwaldren-ld
changed the title
fix: client initialized state should not regress when data source interrupted
fix: client init state should not regress when data source interrupted
Sep 30, 2024
kinyoklion
approved these changes
Oct 1, 2024
Merged
cwaldren-ld
pushed a commit
that referenced
this pull request
Oct 1, 2024
🤖 I have created a release *beep* *boop* --- <details><summary>launchdarkly-cpp-client: 3.7.0</summary> ## [3.7.0](launchdarkly-cpp-client-v3.6.4...launchdarkly-cpp-client-v3.7.0) (2024-10-01) ### Features * add client-side C binding for fetching data source state ([#442](#442)) ([e8ca616](e8ca616)) ### Bug Fixes * client init state should not regress when data source interrupted ([#441](#441)) ([4a7f1f9](4a7f1f9)) * improve handling of streaming error state changes/logging ([#439](#439)) ([04e7e0e](04e7e0e)) ### Dependencies * The following workspace dependencies were updated * dependencies * launchdarkly-cpp-internal bumped from 0.8.2 to 0.8.3 * launchdarkly-cpp-sse-client bumped from 0.5.2 to 0.5.3 </details> <details><summary>launchdarkly-cpp-internal: 0.8.3</summary> ## [0.8.3](launchdarkly-cpp-internal-v0.8.2...launchdarkly-cpp-internal-v0.8.3) (2024-10-01) ### Bug Fixes * improve handling of streaming error state changes/logging ([#439](#439)) ([04e7e0e](04e7e0e)) </details> <details><summary>launchdarkly-cpp-server: 3.6.1</summary> ## [3.6.1](launchdarkly-cpp-server-v3.6.0...launchdarkly-cpp-server-v3.6.1) (2024-10-01) ### Bug Fixes * improve caching behavior of database integration ([#444](#444)) ([5f47864](5f47864)) * improve handling of streaming error state changes/logging ([#439](#439)) ([04e7e0e](04e7e0e)) ### Dependencies * The following workspace dependencies were updated * dependencies * launchdarkly-cpp-internal bumped from 0.8.2 to 0.8.3 * launchdarkly-cpp-sse-client bumped from 0.5.2 to 0.5.3 </details> <details><summary>launchdarkly-cpp-server-redis-source: 2.1.13</summary> ## [2.1.13](launchdarkly-cpp-server-redis-source-v2.1.12...launchdarkly-cpp-server-redis-source-v2.1.13) (2024-10-01) ### Dependencies * The following workspace dependencies were updated * dependencies * launchdarkly-cpp-server bumped from 3.6.0 to 3.6.1 </details> <details><summary>launchdarkly-cpp-sse-client: 0.5.3</summary> ## [0.5.3](launchdarkly-cpp-sse-client-v0.5.2...launchdarkly-cpp-sse-client-v0.5.3) (2024-10-01) ### Bug Fixes * improve handling of streaming error state changes/logging ([#439](#439)) ([04e7e0e](04e7e0e)) </details> --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
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.
The contract of
Initialized()
is that it's supposed to return true forever once the client has received some data from LaunchDarkly.This wasn't correct because
Initialized()
was delegating toIsInitializedSuccessfully()
. This function returned true only for theValid
andOffline
states. This is missingInterrupted
, which the SDK might be in after having once beenValid
.Besides causing an incorrect result for
Initialized()
when the SDK's data source was interrupted, this affected logging when calling an evaluation method, emitting an incorrect message :Although the action is correct (
returning cached value
), the reason (has not yet initialized
) is wrong. We don't need to log this message at all as an interrupted SDK is normal.To fix, I've deleted the confusing internal
IsInitialized
method, which was really a proxy for checkingstate != initializing
. I've modifiedIsInitializedSuccessfully
to return true forInterrupted
.