Conversation
5 tasks done
3 tasks
|
✅ All CI checks and tests passed. 🎉 All green!🧪 All tests passed 🔗 Commit SHA: 2633f58 | Docs | View more details | Give us feedback! |
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 does this PR do?
Adds benchmark-only flags experiments for FFL-3347, supporting the mobile offline initialization and dynamic-context RFC.
Companion native prototypes: iOS #3239 and Android #3931.
Uses published
@datadog/flagging-core@3.1.1, the SwiftProtobuf 1.38.1 prototype, and the Kotlin/protobuf-java 3.25.5 prototype. Synthetic configurations contain 10, 100, and 1,000 flags. Four hot boolean flags exercise static, membership, compound numeric, and MD5-split evaluation. Values, metadata, context A -> B -> A, and configuration replacement are correctness gates.Both platforms include:
DdFlags.trackEvaluationbridge. Test no tracking, disabled loggers, exposures, evaluations, and both, with repeated/changing contexts and uninterrupted/yielding bursts.Motivation
The RFC needs evidence for parsing, evaluation, configuration ownership, and tracking delivery. Baseline measurements cover setup, first read, repeated reads, throughput, and controls. Follow-ups cover saved configuration and native tracking without customer data or external intake.
Setup starts with bytes in memory and excludes loading, networking, storage, and fixture generation. The saved-configuration experiment measures file access separately. Crossed placements use one ProtoJSON handoff, not the fastest possible JSI or shared-memory implementation.
Evidence and Interpretation
Main evidence compares matching Release/Hermes experiments on the iOS simulator and Android emulator. Compare alternatives within each platform, not absolute iOS-versus-Android times. The iPhone run is supplementary; it ended at serious thermal state.
trackEvaluationcall per evaluation, including the mode with both loggers enabled. It does not measure independently registered hooks, which could make separate calls. Repeat measurements with the final public API.The RFC proposes local JS evaluation for RN-only use, shared native ownership when RN and native readers need one configuration, and optional native tracking. It favors native tracking for reuse and maintenance, not a measured speed or reliability advantage over JS logging.
Detailed results and limits: iOS, Android, and batching.
Additional Notes
DD_FLAGS_PROTOTYPE_PATHandDD_FLAGS_KOTLIN_PROTOTYPE_PATH. The baseline bypasses Datadog initialization. Tracking runs use synthetic data, loopback intake, disabled RUM, small/frequent uploads, and a one-second aggregation interval. These are benchmark settings, not SDK defaults.Validation
git diff --checkpass.Environment key "jest/globals" is unknown; targeted TypeScript/Prettier and repository CI are separate checks.Review checklist (to be filled by reviewers)