RUMM-36 Base Logger implementation#1
Merged
Conversation
xgouchet
force-pushed
the
xgouchet/RUMM-36_logger
branch
from
November 12, 2019 08:48
1260d63 to
1905b2c
Compare
alai97
added a commit
that referenced
this pull request
Jan 4, 2022
Co-authored-by: cswatt <[email protected]>
3 tasks
typotter
added a commit
that referenced
this pull request
Jan 22, 2026
Implements the core aggregation logic for evaluation logging (EVALLOG). Aggregates flag evaluations by key before flushing to reduce network overhead. Key components: - EvaluationEventsProcessor: Aggregates evaluations with time/size-based flushing - Time-based: Configurable interval (default 10s, range 1-60s) - Size-based: Auto-flush at 1000 unique aggregations - Shutdown: Final flush on processor.stop() - AggregationKey: Composite key for grouping evaluations - Groups by: flag, variant, allocation, targeting key, error code - EVALLOG.8: Omits variant/allocation for DEFAULT/ERROR reasons - AggregationStats: Tracks aggregated statistics per key - Count, first/last timestamps, last error message - Thread-safe with @volatile fields and synchronized blocks - EvaluationEventWriter: Interface for persisting FlagEvaluation events - Abstraction allows testing without storage implementation Test infrastructure: - FlagEvaluationAssert: Custom assertions for validation - FlagEvaluationForgeryFactory: Test data generator - EvaluationContextForgeryFactory: Context data generator Uses BatchedFlagEvaluations.FlagEvaluation from PR #1 schema. No runtime integration - isolated business logic only. EVALLOG compliance: 2, 3, 4, 5, 8, 10, 11, 13
3 tasks
typotter
added a commit
that referenced
this pull request
Jan 22, 2026
Implements persistence and network transport for evaluation events. Storage layer (EvaluationEventRecordWriter): - Implements EvaluationEventWriter interface from PR #2 - Serializes FlagEvaluation events to JSON - Persists to SDK Core storage as RawBatchEvent - Thread-safe with synchronized writes Network layer (EvaluationsRequestFactory): - Creates HTTP requests to /api/v2/flagevaluations endpoint - Builds BatchedFlagEvaluations payload per EVALLOG.1 specification - Wraps individual FlagEvaluation events with top-level context: - Service metadata (service, version, env) - Device info (name, type, brand, model) - OS info (name, version) - RUM context (application.id, view.url) - Handles malformed events gracefully (skip and log) - Standard EVP headers (API key, origin, origin version, request ID) EVALLOG.1 compliance: - Endpoint: /api/v2/flagevaluations - Content-Type: application/json - Payload: {"context": {...}, "flagEvaluations": [...]} Depends on BatchedFlagEvaluations model from PR #1. Uses EvaluationEventWriter interface from PR #2.
This was referenced Jan 22, 2026
typotter
added a commit
that referenced
this pull request
Jan 22, 2026
Implements persistence and network transport for evaluation events. Storage layer (EvaluationEventRecordWriter): - Implements EvaluationEventWriter interface from PR #2 - Serializes FlagEvaluation events to JSON - Persists to SDK Core storage as RawBatchEvent - Thread-safe with synchronized writes Network layer (EvaluationsRequestFactory): - Creates HTTP requests to /api/v2/flagevaluations endpoint - Builds BatchedFlagEvaluations payload per EVALLOG.1 specification - Wraps individual FlagEvaluation events with top-level context: - Service metadata (service, version, env) - Device info (name, type, brand, model) - OS info (name, version) - RUM context (application.id, view.url) - Handles malformed events gracefully (skip and log) - Standard EVP headers (API key, origin, origin version, request ID) EVALLOG.1 compliance: - Endpoint: /api/v2/flagevaluations - Content-Type: application/json - Payload: {"context": {...}, "flagEvaluations": [...]} Depends on BatchedFlagEvaluations model from PR #1. Uses EvaluationEventWriter interface from PR #2.
typotter
added a commit
that referenced
this pull request
Jan 27, 2026
Implements the core aggregation logic for evaluation logging (EVALLOG). Aggregates flag evaluations by key before flushing to reduce network overhead. Key components: - EvaluationEventsProcessor: Aggregates evaluations with time/size-based flushing - Time-based: Configurable interval (default 10s, range 1-60s) - Size-based: Auto-flush at 1000 unique aggregations - Shutdown: Final flush on processor.stop() - AggregationKey: Composite key for grouping evaluations - Groups by: flag, variant, allocation, targeting key, error code - EVALLOG.8: Omits variant/allocation for DEFAULT/ERROR reasons - AggregationStats: Tracks aggregated statistics per key - Count, first/last timestamps, last error message - Thread-safe with @volatile fields and synchronized blocks - EvaluationEventWriter: Interface for persisting FlagEvaluation events - Abstraction allows testing without storage implementation Test infrastructure: - FlagEvaluationAssert: Custom assertions for validation - FlagEvaluationForgeryFactory: Test data generator - EvaluationContextForgeryFactory: Context data generator Uses BatchedFlagEvaluations.FlagEvaluation from PR #1 schema. No runtime integration - isolated business logic only. EVALLOG compliance: 2, 3, 4, 5, 8, 10, 11, 13
typotter
added a commit
that referenced
this pull request
Jan 28, 2026
Implements the core aggregation logic for evaluation logging (EVALLOG). Aggregates flag evaluations by key before flushing to reduce network overhead. Key components: - EvaluationEventsProcessor: Aggregates evaluations with time/size-based flushing - Time-based: Configurable interval (default 10s, range 1-60s) - Size-based: Auto-flush at 1000 unique aggregations - Shutdown: Final flush on processor.stop() - AggregationKey: Composite key for grouping evaluations - Groups by: flag, variant, allocation, targeting key, error code - EVALLOG.8: Omits variant/allocation for DEFAULT/ERROR reasons - AggregationStats: Tracks aggregated statistics per key - Count, first/last timestamps, last error message - Thread-safe with @volatile fields and synchronized blocks - EvaluationEventWriter: Interface for persisting FlagEvaluation events - Abstraction allows testing without storage implementation Test infrastructure: - FlagEvaluationAssert: Custom assertions for validation - FlagEvaluationForgeryFactory: Test data generator - EvaluationContextForgeryFactory: Context data generator Uses BatchedFlagEvaluations.FlagEvaluation from PR #1 schema. No runtime integration - isolated business logic only. EVALLOG compliance: 2, 3, 4, 5, 8, 10, 11, 13
typotter
added a commit
that referenced
this pull request
Jan 28, 2026
Implements the core aggregation logic for evaluation logging (EVALLOG). Aggregates flag evaluations by key before flushing to reduce network overhead. Key components: - EvaluationEventsProcessor: Aggregates evaluations with time/size-based flushing - Time-based: Configurable interval (default 10s, range 1-60s) - Size-based: Auto-flush at 1000 unique aggregations - Shutdown: Final flush on processor.stop() - AggregationKey: Composite key for grouping evaluations - Groups by: flag, variant, allocation, targeting key, error code - EVALLOG.8: Omits variant/allocation for DEFAULT/ERROR reasons - AggregationStats: Tracks aggregated statistics per key - Count, first/last timestamps, last error message - Thread-safe with @volatile fields and synchronized blocks - EvaluationEventWriter: Interface for persisting FlagEvaluation events - Abstraction allows testing without storage implementation Test infrastructure: - FlagEvaluationAssert: Custom assertions for validation - FlagEvaluationForgeryFactory: Test data generator - EvaluationContextForgeryFactory: Context data generator Uses BatchedFlagEvaluations.FlagEvaluation from PR #1 schema. No runtime integration - isolated business logic only. EVALLOG compliance: 2, 3, 4, 5, 8, 10, 11, 13
typotter
added a commit
that referenced
this pull request
Jan 28, 2026
Implements the core aggregation logic for evaluation logging (EVALLOG). Aggregates flag evaluations by key before flushing to reduce network overhead. Key components: - EvaluationEventsProcessor: Aggregates evaluations with time/size-based flushing - Time-based: Configurable interval (default 10s, range 1-60s) - Size-based: Auto-flush at 1000 unique aggregations - Shutdown: Final flush on processor.stop() - AggregationKey: Composite key for grouping evaluations - Groups by: flag, variant, allocation, targeting key, error code - EVALLOG.8: Omits variant/allocation for DEFAULT/ERROR reasons - AggregationStats: Tracks aggregated statistics per key - Count, first/last timestamps, last error message - Thread-safe with @volatile fields and synchronized blocks - EvaluationEventWriter: Interface for persisting FlagEvaluation events - Abstraction allows testing without storage implementation Test infrastructure: - FlagEvaluationAssert: Custom assertions for validation - FlagEvaluationForgeryFactory: Test data generator - EvaluationContextForgeryFactory: Context data generator Uses BatchedFlagEvaluations.FlagEvaluation from PR #1 schema. No runtime integration - isolated business logic only. EVALLOG compliance: 2, 3, 4, 5, 8, 10, 11, 13
typotter
added a commit
that referenced
this pull request
Jan 28, 2026
Implements the core aggregation logic for evaluation logging (EVALLOG). Aggregates flag evaluations by key before flushing to reduce network overhead. Key components: - EvaluationEventsProcessor: Aggregates evaluations with time/size-based flushing - Time-based: Configurable interval (default 10s, range 1-60s) - Size-based: Auto-flush at 1000 unique aggregations - Shutdown: Final flush on processor.stop() - AggregationKey: Composite key for grouping evaluations - Groups by: flag, variant, allocation, targeting key, error code - EVALLOG.8: Omits variant/allocation for DEFAULT/ERROR reasons - AggregationStats: Tracks aggregated statistics per key - Count, first/last timestamps, last error message - Thread-safe with @volatile fields and synchronized blocks - EvaluationEventWriter: Interface for persisting FlagEvaluation events - Abstraction allows testing without storage implementation Test infrastructure: - FlagEvaluationAssert: Custom assertions for validation - FlagEvaluationForgeryFactory: Test data generator - EvaluationContextForgeryFactory: Context data generator Uses BatchedFlagEvaluations.FlagEvaluation from PR #1 schema. No runtime integration - isolated business logic only. EVALLOG compliance: 2, 3, 4, 5, 8, 10, 11, 13
typotter
added a commit
that referenced
this pull request
Jan 28, 2026
Implements the core aggregation logic for evaluation logging (EVALLOG). Aggregates flag evaluations by key before flushing to reduce network overhead. Key components: - EvaluationEventsProcessor: Aggregates evaluations with time/size-based flushing - Time-based: Configurable interval (default 10s, range 1-60s) - Size-based: Auto-flush at 1000 unique aggregations - Shutdown: Final flush on processor.stop() - AggregationKey: Composite key for grouping evaluations - Groups by: flag, variant, allocation, targeting key, error code - EVALLOG.8: Omits variant/allocation for DEFAULT/ERROR reasons - AggregationStats: Tracks aggregated statistics per key - Count, first/last timestamps, last error message - Thread-safe with @volatile fields and synchronized blocks - EvaluationEventWriter: Interface for persisting FlagEvaluation events - Abstraction allows testing without storage implementation Test infrastructure: - FlagEvaluationAssert: Custom assertions for validation - FlagEvaluationForgeryFactory: Test data generator - EvaluationContextForgeryFactory: Context data generator Uses BatchedFlagEvaluations.FlagEvaluation from PR #1 schema. No runtime integration - isolated business logic only. EVALLOG compliance: 2, 3, 4, 5, 8, 10, 11, 13
typotter
added a commit
that referenced
this pull request
Jan 30, 2026
Implements the core aggregation logic for evaluation logging (EVALLOG). Aggregates flag evaluations by key before flushing to reduce network overhead. Key components: - EvaluationEventsProcessor: Aggregates evaluations with time/size-based flushing - Time-based: Configurable interval (default 10s, range 1-60s) - Size-based: Auto-flush at 1000 unique aggregations - Shutdown: Final flush on processor.stop() - AggregationKey: Composite key for grouping evaluations - Groups by: flag, variant, allocation, targeting key, error code - EVALLOG.8: Omits variant/allocation for DEFAULT/ERROR reasons - AggregationStats: Tracks aggregated statistics per key - Count, first/last timestamps, last error message - Thread-safe with @volatile fields and synchronized blocks - EvaluationEventWriter: Interface for persisting FlagEvaluation events - Abstraction allows testing without storage implementation Test infrastructure: - FlagEvaluationAssert: Custom assertions for validation - FlagEvaluationForgeryFactory: Test data generator - EvaluationContextForgeryFactory: Context data generator Uses BatchedFlagEvaluations.FlagEvaluation from PR #1 schema. No runtime integration - isolated business logic only. EVALLOG compliance: 2, 3, 4, 5, 8, 10, 11, 13
typotter
added a commit
that referenced
this pull request
Feb 2, 2026
Implements the core aggregation logic for evaluation logging (EVALLOG). Aggregates flag evaluations by key before flushing to reduce network overhead. Key components: - EvaluationEventsProcessor: Aggregates evaluations with time/size-based flushing - Time-based: Configurable interval (default 10s, range 1-60s) - Size-based: Auto-flush at 1000 unique aggregations - Shutdown: Final flush on processor.stop() - AggregationKey: Composite key for grouping evaluations - Groups by: flag, variant, allocation, targeting key, error code - EVALLOG.8: Omits variant/allocation for DEFAULT/ERROR reasons - AggregationStats: Tracks aggregated statistics per key - Count, first/last timestamps, last error message - Thread-safe with @volatile fields and synchronized blocks - EvaluationEventWriter: Interface for persisting FlagEvaluation events - Abstraction allows testing without storage implementation Test infrastructure: - FlagEvaluationAssert: Custom assertions for validation - FlagEvaluationForgeryFactory: Test data generator - EvaluationContextForgeryFactory: Context data generator Uses BatchedFlagEvaluations.FlagEvaluation from PR #1 schema. No runtime integration - isolated business logic only. EVALLOG compliance: 2, 3, 4, 5, 8, 10, 11, 13
gh-worker-dd-mergequeue-cf854d Bot
pushed a commit
that referenced
this pull request
Feb 13, 2026
Implements the core aggregation logic for evaluation logging (EVALLOG). Aggregates flag evaluations by key before flushing to reduce network overhead. Key components: - EvaluationEventsProcessor: Aggregates evaluations with time/size-based flushing - Time-based: Configurable interval (default 10s, range 1-60s) - Size-based: Auto-flush at 1000 unique aggregations - Shutdown: Final flush on processor.stop() - AggregationKey: Composite key for grouping evaluations - Groups by: flag, variant, allocation, targeting key, error code - EVALLOG.8: Omits variant/allocation for DEFAULT/ERROR reasons - AggregationStats: Tracks aggregated statistics per key - Count, first/last timestamps, last error message - Thread-safe with @volatile fields and synchronized blocks - EvaluationEventWriter: Interface for persisting FlagEvaluation events - Abstraction allows testing without storage implementation Test infrastructure: - FlagEvaluationAssert: Custom assertions for validation - FlagEvaluationForgeryFactory: Test data generator - EvaluationContextForgeryFactory: Context data generator Uses BatchedFlagEvaluations.FlagEvaluation from PR #1 schema. No runtime integration - isolated business logic only. EVALLOG compliance: 2, 3, 4, 5, 8, 10, 11, 13
3 tasks
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.
Lots of stuff is still in TODO and will follow up in next PRs