Skip to content

[WIP] feat: add ev-reth spans#3106

Closed
chatton wants to merge 2 commits intocian/experiment-with-granularspansfrom
cian/update-ev-reth-spans
Closed

[WIP] feat: add ev-reth spans#3106
chatton wants to merge 2 commits intocian/experiment-with-granularspansfrom
cian/update-ev-reth-spans

Conversation

@chatton
Copy link
Contributor

@chatton chatton commented Feb 25, 2026

Overview

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Feb 25, 2026

Important

Review skipped

Draft detected.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch cian/update-ev-reth-spans

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link
Contributor

The latest Buf updates on your PR. Results from workflow CI / buf-check (pull_request).

BuildFormatLintBreakingUpdated (UTC)
✅ passed⏩ skipped✅ passed✅ passedFeb 25, 2026, 9:22 AM

@claude
Copy link
Contributor

claude bot commented Feb 25, 2026

Claude finished @chatton's task in 1m 35s —— View job


Code Review: ev-reth Spans

  • Gather context and analyze PR
  • Review changed files
  • Provide comprehensive feedback

This PR extends TestSpamoorSmoke to assert specific ev-reth span names are exported to Jaeger, combining ev-reth benchmark data with ev-node data, and pins the reth image to pr-140. The change is small but there are a few issues worth addressing before removing the WIP label.


Issues

1. Hardcoded pr-140 tag (blocking before merge)

// test/e2e/evm_spamoor_smoke_test.go:41
b.WithTag("pr-140").WithEnv(

This pins the reth image to an unreleased PR tag. This is clearly intentional for WIP, but needs to be resolved to a real release tag (or removed so it uses the default) before this PR can be promoted. Consider using a constant or making it configurable via env var so the CI pipeline doesn't depend on a transient image.

Fix this →


2. OTEL_EXPORTER_OTLP_ENDPOINT has the wrong format

// test/e2e/evm_spamoor_smoke_test.go:44
"OTEL_EXPORTER_OTLP_ENDPOINT="+jg.Internal.IngestHTTPEndpoint()+"/v1/traces",

Per the OpenTelemetry spec, OTEL_EXPORTER_OTLP_ENDPOINT is the base URL — the SDK automatically appends the signal-specific path (/v1/traces, /v1/metrics, etc.). Appending /v1/traces manually will result in the SDK posting to .../v1/traces/v1/traces, which will fail silently.

The signal-specific variable OTEL_EXPORTER_OTLP_TRACES_ENDPOINT (line 45) does expect the full path, so that one is correct. The fix is to strip the /v1/traces suffix from the base endpoint env var:

"OTEL_EXPORTER_OTLP_ENDPOINT="+jg.Internal.IngestHTTPEndpoint(),
"OTEL_EXPORTER_OTLP_TRACES_ENDPOINT="+jg.Internal.IngestHTTPEndpoint()+"/v1/traces",

Fix this →


3. Brittle span name assertions for ev-reth

// test/e2e/evm_spamoor_smoke_test.go:205-210
expectedEvRethSpans := []string{
    "build_payload",
    "execute_tx",
    "try_build",
    "validate_transaction",
}

These are internal Rust span names that can change with any ev-reth refactor. The old comment in the base branch explicitly said:

"ev-reth span names are internal to the Rust OTLP exporter and may change across versions, so we only assert that spans were collected at all."

The new assertions are valuable for catching regressions, but consider adding a short comment documenting which ev-reth version introduced these spans and where they are defined (e.g., a link to the relevant source file in ev-reth). This will make future breakage easier to diagnose.


4. RUST_LOG=debug is overly verbose for E2E tests

// test/e2e/evm_spamoor_smoke_test.go:48
"RUST_LOG=debug",

This was changed from info. debug-level Rust logging generates a large volume of output that can obscure test failures and slow down the test. Unless the debug logs are needed to diagnose a specific class of failure, this should stay at info.


Minor Notes

append in benchmark collection (line 174): This is safe — toTraceSpans allocates a new slice, so the append is correct and won't alias the source slices.

allSpans := append(toTraceSpans(evNodeSpans), toTraceSpans(evRethSpans)...)

Variable rename from expectedSpans/opNames to expectedEvNodeSpans/evNodeOpNames: Good improvement — the names are now unambiguous.

Closure capture fix (line 133–135): The existing idToDelete := id pattern correctly avoids the loop-variable capture bug in cleanup closures.


Summary

Severity Issue
Blocking Hardcoded pr-140 tag must be replaced before merge
Bug OTEL_EXPORTER_OTLP_ENDPOINT should not include /v1/traces path
Suggestion Document ev-reth span source locations for maintainability
Suggestion Revert RUST_LOG to info unless debug is required

@chatton chatton closed this Feb 25, 2026
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