-
Notifications
You must be signed in to change notification settings - Fork 471
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Algod: Replace logic.DebuggerHook
with logic.EvalTracer
interface
#4438
Merged
Conversation
This file contains 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
Dynamic budget checks in the evaluator complicate the gatekeeping. This functionality will be easier to add in the future after the `DebuggerHook` interface has been extended.
This test confirms an error spotted by @jannotti where `errors.As(…)` was always true. algorand#4322 (comment)
jasonpaulos
reviewed
Dec 15, 2022
jannotti
reviewed
Dec 16, 2022
jasonpaulos
changed the title
Algod: Extend debugger hooks interface
Algod: Replace Jan 17, 2023
logic.DebuggerHook
with logic.EvalTracer
interface
jannotti
approved these changes
Jan 19, 2023
This was referenced Jan 24, 2023
This was referenced Jan 30, 2023
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.
Summary
This PR upgrades the existing
logic.DebuggerHook
interface to be more powerful & lightweight. To be specific:logic.EvalTracer
interface and rename existinglogic.DebuggerHook
interface tologic.Debugger
to be more intuitive.EvalTracer
hooks are introduced for before/after transaction groups, before/after transactions, and after TEAL opcodes.EvalContext.refreshDebugState
function which used to be called before every TEAL op has been removed. This function copied and base64 encoded the entire stack and scratch space every time it was invoked, which is potentially expensive and not needed for the eventual simulation trace.A new
logic.MakeEvalTracerDebuggerAdaptor
adaptor function has been created so that existinglogic.Debugger
implementors (e.g. tealdbg and the dryrun endpoint) can be ran aslogic.EvalTracer
with the same behavior.What's Next
By itself this PR doesn't activate any new behavior. Instead, it defines the tracer hooks that will be necessary for the following:
Test Plan
logic.MakeEvalTracerDebuggerAdaptor
BlockEvaluator.TransactionGroup
calls tracer hooks correctlyverify.TxnGroupWithDebugger
calls tracer hooks correctly