Repository navigation
feat: adopt the event-delivery cooldown from java-sdk-internal 1.13.0 (SDK-3375) - #257
Draft
tanderson-ld wants to merge 1 commit into
Draft
tanderson-ld wants to merge 1 commit into
tanderson-ld wants to merge 1 commit into
Conversation
… (SDK-3375) Picks up the internal events module release in which an unexpected delivery failure opens a bounded, self-recovering cooldown window instead of permanently disabling event delivery. The public EventSender.Result.STOP javadoc now describes the cooldown contract instead of a permanent stop; the enum itself is unchanged, so custom senders compile and run unmodified. The internal wrapper moves off the deprecated internal Result constructor onto the new factories, with new unit coverage for all three mappings and their routing. The contract test service advertises event-delivery-cooldown, which activates the delivery cooldown tests; the 413 variant is suppressed in both suppression files with an in-file rationale, since the shared HTTP classifier still treats a 413 as an unexpected failure rather than a locally unrecoverable one, which is a pre-existing gap tracked separately.
This branch has not been deployed
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.
What
Adopts the event-delivery cooldown (EVTPROC Section 1.8, launchdarkly/sdk-specs#278) in the server SDK by picking up launchdarkly-java-sdk-internal 1.13.0, which replaces the permanent disable-on-unexpected-delivery-failure with bounded, self-recovering cooldown windows (see the internal module PR for the behavior itself).
launchdarklyJavaSdkInternalto 1.13.0.subsystems.EventSender.Result.STOPjavadoc: it now signals an unexpected failure that makes event delivery back off for a bounded cooldown window rather than permanently stopping. The doc describes the observable contract for implementers: no further analytics calls while a window is open, in-window analytics events are discarded rather than held, diagnostic calls are not suppressed, each additionalSTOPlengthens the next window up to a ceiling, and delivery resumes on its own once the window elapses. The window schedule itself (5 minutes doubling to a 1 hour ceiling) deliberately stays out of the interface doc, since it belongs to the separately versioned internal module; it is stated here and in the release notes instead. The enum shape is unchanged, so existing custom senders compile and run unmodified.EventSenderWrapperoff the deprecated internalResultconstructor onto the new factories (SUCCESS→success(null),FAILURE→failure(),STOP→unexpectedFailure()), and adds the previously missing unit coverage for that mapping (it was unreachable from the default configuration and untested at every level).event-delivery-cooldowncapability in the contract test service, activating the fourevents/delivery cooldowntests (the long-running window-resume test runs in the nightly suite, which already passes-enable-long-running-tests).events/delivery cooldown/413 is dropped without disabling deliveryin both suppression files, with an in-file rationale comment (the harness treats non-matching lines as inert, which was verified empirically): the shared classifier has no locally-unrecoverable classification for 413, so a 413 currently opens a cooldown window instead of dropping only the oversized payload. That pre-existing gap has its own Jira bug, which includes unsuppressing this test. Two notes: the suppression is coarser than the gap (the test's earlier no-retry assertion already passes), and the FDv2-suite entry is forward-looking, since the v3 harness has not yet ported the cooldown tests.Dependencies
Draft until two gates clear:
Verification
Verified locally end to end: the internal module from its PR branch was published to maven local as 1.13.0, the full server SDK suite is green against it, and the contract test service built from this branch passed the entire
events/suite against the sdk-test-harness #526 build with-enable-long-running-tests(441 total, 424 ran, all passed), with the 413 test skipped by the suppression file and the 5-minute window-resume test passing in real time. Two multi-agent review rounds ran on this diff before it was opened; the wrapper mapping was additionally proven byte-identical to the previous constructor calls for all three enum values.Release notes
EventSenderreturningSTOPnow causes the same bounded cooldown.