🍒 11535 - Handle gracefully malformed flag evaluations - #12176
Conversation
Skip malformed FFE flags during config parsing Use Instant for FFE allocation windows Log dropped malformed FFE flags Merge remote-tracking branch 'origin/master' into leo.romanovsky/ffl-2339-instant-allocation-windows # Conflicts: # products/feature-flagging/feature-flagging-lib/src/main/java/com/datadog/featureflag/RemoteConfigServiceImpl.java # products/feature-flagging/feature-flagging-lib/src/test/java/com/datadog/featureflag/RemoteConfigServiceImplTest.java Merge branch 'master' into leo.romanovsky/ffl-2339-instant-allocation-windows Clarify FFE instant parser test label Merge branch 'master' into leo.romanovsky/ffl-2339-instant-allocation-windows Merge remote-tracking branch 'origin/master' into leo.romanovsky/ffl-2339-instant-allocation-windows # Conflicts: # products/feature-flagging/feature-flagging-lib/src/test/java/com/datadog/featureflag/RemoteConfigServiceImplTest.java Address FFE Instant review feedback Merge remote-tracking branch 'origin/master' into leo.romanovsky/ffl-2339-instant-allocation-windows # Conflicts: # products/feature-flagging/feature-flagging-api/src/test/java/datadog/trace/api/openfeature/DDEvaluatorTest.java Preserve FFE allocation date compatibility Merge remote-tracking branch 'origin/master' into leo.romanovsky/ffl-2339-instant-allocation-windows # Conflicts: # products/feature-flagging/feature-flagging-api/src/test/java/datadog/trace/api/openfeature/DDEvaluatorTest.java # products/feature-flagging/feature-flagging-lib/src/main/java/com/datadog/featureflag/RemoteConfigServiceImpl.java # products/feature-flagging/feature-flagging-lib/src/test/java/com/datadog/featureflag/RemoteConfigServiceImplTest.java Preserve microsecond precision in FFE allocation windows Merge remote-tracking branch 'origin/master' into leo.romanovsky/ffl-2339-instant-allocation-windows Fix exposure context serialization Exercise null Instant adapter path Cover FFE allocation parser branches Exercise the allocation adapter factory, null, and read-only paths required by changed-code coverage, and remove an unreachable parser null guard. Environment: Datadog workspace Respect exposure logging conventions Exclude serialization failures from telemetry and log submission failures at debug level. Environment: Datadog workspace Co-authored-by: leo.romanovsky <leo.romanovsky@datadoghq.com> (cherry picked from commit 4f6a1ea)
|
🎯 Code Coverage (details) 🔗 Commit SHA: ee64a8d | Docs | Datadog PR Page | Give us feedback! |
🟢 Java Benchmark SLOs — All performance SLOs passed
PR vs. master results
Commit: Load and DaCapo benchmarks can be triggered manually in the GitLab pipeline. Results will appear in the Benchmarking Platform UI after completion. |
There was a problem hiding this comment.
The retained Date constructor now snapshots its mutable start/end arguments, so callers that adjust an allocation window after construction are evaluated against stale times. Remote-config allocations created through fromInstants retain the intended nanosecond precision.
📊 Validated against 12 scenarios · Open Bits AI session
🤖 Datadog Autotest · Commit 31d14c7 · What is Autotest? · @DataDog review to ask questions · Any feedback? Reach out in #autotest
| startAt == null ? null : startAt.toInstant(), | ||
| endAt == null ? null : endAt.toInstant()); |
There was a problem hiding this comment.
Preserve mutable Date constructor behavior
Programmatically constructed allocations whose Date window is adjusted after construction can activate or expire at the stale original time.
Assertion details
- Input: Construct an Allocation with startAt at 12:00, mutate that same Date to 13:00, then evaluate at 12:30.
- Expected:
Allocations created through the retained Date constructor should preserve the prior behavior of reading the public mutable Date fields, while fromInstants continues preserving nanosecond precision. - Actual:
The constructor stores the original Date-derived Instants in preciseStartAt/preciseEndAt. Mutating either supplied Date later leaves isAllocationActive evaluating the stale construction-time window.
| startAt == null ? null : startAt.toInstant(), | |
| endAt == null ? null : endAt.toInstant()); | |
| null, | |
| null); |
Was this helpful? React 👍 or 👎
🤖 Datadog Autotest · What is Autotest? · @DataDog review to ask questions · Any feedback? Reach out in #autotest
Kafka / producer-benchmarkParameters
See matching parameters
SummaryFound 0 performance improvements and 0 performance regressions! Performance is the same for 3 metrics, 0 unstable metrics. See unchanged results
|
Kafka / consumer-benchmarkParameters
See matching parameters
SummaryFound 0 performance improvements and 0 performance regressions! Performance is the same for 3 metrics, 0 unstable metrics. See unchanged results
|
Backport #11535 to release/v1.65.x