Skip to content

feat(logs): max template size limit + json_as_raw raw bypass#49552

Draft
DDuongNguyen wants to merge 2 commits intojsaf/evict-correctlyfrom
yoon/max-template-raw-bypass
Draft

feat(logs): max template size limit + json_as_raw raw bypass#49552
DDuongNguyen wants to merge 2 commits intojsaf/evict-correctlyfrom
yoon/max-template-raw-bypass

Conversation

@DDuongNguyen
Copy link
Copy Markdown
Contributor

What does this PR do?

Motivation

Describe how you validated your changes

Additional Notes

Copy link
Copy Markdown
Contributor Author

DDuongNguyen commented Apr 17, 2026

@agent-platform-auto-pr
Copy link
Copy Markdown
Contributor

agent-platform-auto-pr Bot commented Apr 17, 2026

Go Package Import Differences

Baseline: a903409
Comparison: 0bb9291

binaryosarchchange
agentlinuxamd64
+11, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust/flatbuffers/patterns
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
+github.com/google/flatbuffers/go
agentlinuxarm64
+11, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust/flatbuffers/patterns
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
+github.com/google/flatbuffers/go
agentwindowsamd64
+11, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust/flatbuffers/patterns
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
+github.com/google/flatbuffers/go
agentdarwinamd64
+11, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust/flatbuffers/patterns
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
+github.com/google/flatbuffers/go
agentdarwinarm64
+11, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust/flatbuffers/patterns
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
+github.com/google/flatbuffers/go
iot-agentlinuxamd64
+9, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
iot-agentlinuxarm64
+9, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
heroku-agentlinuxamd64
+11, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust/flatbuffers/patterns
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
+github.com/google/flatbuffers/go
cluster-agentlinuxamd64
+9, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
cluster-agentlinuxarm64
+9, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
cluster-agent-cloudfoundrylinuxamd64
+1, -0
+github.com/DataDog/agent-payload/v5/statefulpb
cluster-agent-cloudfoundrylinuxarm64
+1, -0
+github.com/DataDog/agent-payload/v5/statefulpb
dogstatsdlinuxamd64
+1, -0
+github.com/DataDog/agent-payload/v5/statefulpb
dogstatsdlinuxarm64
+1, -0
+github.com/DataDog/agent-payload/v5/statefulpb
process-agentlinuxamd64
+1, -0
+github.com/DataDog/agent-payload/v5/statefulpb
process-agentlinuxarm64
+1, -0
+github.com/DataDog/agent-payload/v5/statefulpb
process-agentwindowsamd64
+1, -0
+github.com/DataDog/agent-payload/v5/statefulpb
process-agentdarwinamd64
+1, -0
+github.com/DataDog/agent-payload/v5/statefulpb
process-agentdarwinarm64
+1, -0
+github.com/DataDog/agent-payload/v5/statefulpb
heroku-process-agentlinuxamd64
+1, -0
+github.com/DataDog/agent-payload/v5/statefulpb
security-agentlinuxamd64
+10, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
+github.com/DataDog/datadog-agent/pkg/trace/log
security-agentlinuxarm64
+10, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
+github.com/DataDog/datadog-agent/pkg/trace/log
security-agentwindowsamd64
+10, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
+github.com/DataDog/datadog-agent/pkg/trace/log
system-probelinuxamd64
+10, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
+github.com/DataDog/datadog-agent/pkg/trace/log
system-probelinuxarm64
+10, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
+github.com/DataDog/datadog-agent/pkg/trace/log
system-probewindowsamd64
+10, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
+github.com/DataDog/datadog-agent/pkg/trace/log
system-probedarwinamd64
+10, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
+github.com/DataDog/datadog-agent/pkg/trace/log
system-probedarwinarm64
+10, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
+github.com/DataDog/datadog-agent/pkg/trace/log
otel-agentlinuxamd64
+9, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
otel-agentlinuxarm64
+9, -0
+github.com/DataDog/agent-payload/v5/statefulpb
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering
+github.com/DataDog/datadog-agent/pkg/logs/patterns/clustering/merging
+github.com/DataDog/datadog-agent/pkg/logs/patterns/eviction
+github.com/DataDog/datadog-agent/pkg/logs/patterns/processor
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tags
+github.com/DataDog/datadog-agent/pkg/logs/patterns/token
+github.com/DataDog/datadog-agent/pkg/logs/patterns/tokenizer/rust
+github.com/DataDog/datadog-agent/pkg/logs/sender/grpc
privateactionrunnerlinuxamd64
+1, -0
+github.com/DataDog/agent-payload/v5/statefulpb
privateactionrunnerlinuxarm64
+1, -0
+github.com/DataDog/agent-payload/v5/statefulpb
privateactionrunnerwindowsamd64
+1, -0
+github.com/DataDog/agent-payload/v5/statefulpb
privateactionrunnerdarwinamd64
+1, -0
+github.com/DataDog/agent-payload/v5/statefulpb
privateactionrunnerdarwinarm64
+1, -0
+github.com/DataDog/agent-payload/v5/statefulpb

@agent-platform-auto-pr
Copy link
Copy Markdown
Contributor

agent-platform-auto-pr Bot commented Apr 17, 2026

Files inventory check summary

File checks results against ancestor a9034095:

Results for datadog-agent_7.79.0~devel.git.459.3865993.pipeline.108330740-1_amd64.deb:

Detected file changes:

1 Added files:

  • opt/datadog-agent/embedded/lib/libpatterns.so (1.62 MiB)

Two safety valves that prevent stateful encoding state bloat:

**logs_config.patterns.max_template_bytes (default: 1024)**
Rejects logs whose raw token content exceeds this byte threshold,
sending them as RawLog datums instead of creating pattern state.
Fixes snapshot bloat from huge one-off logs (e.g. AWS instance metadata
dumps ~900KB each → ~8MB snapshot overhead from 9 patterns).
Returns PatternTooLarge from ClusterManager.Add so the caller never
dereferences a nil pattern.

**logs_config.patterns.json_as_raw (default: false)**
When true, JSON logs bypass stateful encoding entirely (no preprocessing,
no tokenization, no clustering) and are sent as RawLog datums. Eliminates
PreprocessJSON + tokenization + clustering cost for JSON-heavy workloads.
Trade-off: no pattern compression; transport-level compression still applies.
Useful for A/B testing CPU vs wire efficiency in staging.

Both features route to the existing sendRawLog path in both the batch
pipeline (processBatch) and single-message path (processMessage).

Co-Authored-By: Claude Sonnet 4.6 (1M context) <noreply@anthropic.com>
@DDuongNguyen DDuongNguyen force-pushed the yoon/max-template-raw-bypass branch from f825ba6 to 3865993 Compare April 17, 2026 20:23
This was referenced Apr 20, 2026
UseNumber in json.Unmarshal so numbers stay as json.Number (string)
instead of float64. Without this, integers larger than 2^53 (trace IDs,
span IDs, snowflake IDs) silently lose precision through the
unmarshal/marshal round-trip — e.g. 9999999999999999 becomes
10000000000000000.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant