refactor(cmd/evm,eth/tracers): refactor structlogger and make it streaming #30806 #33227#2286
refactor(cmd/evm,eth/tracers): refactor structlogger and make it streaming #30806 #33227#2286gzliudan wants to merge 1 commit intoXinFinOrg:dev-upgradefrom
Conversation
|
Important Review skippedAuto reviews are disabled on base/target branches other than the default branch. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
There was a problem hiding this comment.
Pull request overview
Refactors StructLogger to support either buffering legacy RPC trace results or streaming formatted opcode traces directly to CLI output.
Changes:
- Added streaming mode to
StructLoggerand switched buffered mode to store pre-encoded legacystructLogsJSON entries ([]json.RawMessage). - Updated
cmd/evm run --debugto use the streaming struct logger path and moved VM log pretty-printing intocmd/evm. - Updated tracer benchmark and tests to align with the new logger lifecycle and the raw JSON
structLogsrepresentation.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
eth/tracers/logger/logger.go |
Implements streaming vs buffered struct logging; changes structLogs buffering format and limit semantics. |
cmd/evm/runner.go |
Switches CLI debug tracing to streaming output; adds local helper for printing EVM logs. |
eth/tracers/tracers_test.go |
Updates tracer benchmark to new hook lifecycle / tracer attachment approach. |
eth/tracers/api_test.go |
Updates expected ExecutionResult.StructLogs type to []json.RawMessage. |
core/vm/runtime/runtime_test.go |
Reworks opcode-cost assertion test to use a minimal OnOpcode hook instead of StructLogs(). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
…aming ethereum#30806 ethereum#33227 Refactor StructLogger so it can either buffer legacy trace results for RPC responses or stream formatted output directly to the CLI. Switch cmd/evm debug tracing to the streaming path and keep debug.traceCall on the buffered path so it can still return structured trace results. Update the tracer benchmark and related tests to match the new hook-based logger lifecycle and the raw JSON structLogs representation. Treat the struct logger limit as a response-size bound in bytes instead of counting collected trace entries.
ea97aa0 to
57ba943
Compare
Proposed changes
Refactor StructLogger so it can either buffer legacy trace results for RPC responses or stream formatted output directly to the CLI.
Switch cmd/evm debug tracing to the streaming path and keep debug.traceCall on the buffered path so it can still return structured trace results.
Update the tracer benchmark and related tests to match the new hook-based logger lifecycle and the raw JSON structLogs representation.
Treat the struct logger limit as a response-size bound in bytes instead of counting collected trace entries.
Ref:
Types of changes
What types of changes does your code introduce to XDC network?
Put an
✅in the boxes that applyImpacted Components
Which parts of the codebase does this PR touch?
Put an
✅in the boxes that applyChecklist
Put an
✅in the boxes once you have confirmed below actions (or provide reasons on not doing so) that