Skip to content

Commit 7aae6a2

Browse files
Merge #4130
4130: Clean up script query executor delta usage r=pattyshack a=pattyshack Co-authored-by: Patrick Lee <[email protected]>
2 parents a540a1b + 4a248f5 commit 7aae6a2

File tree

2 files changed

+49
-49
lines changed

2 files changed

+49
-49
lines changed

engine/execution/computation/manager_test.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -551,7 +551,9 @@ func (l *LongRunningVM) RunV2(
551551
time.Sleep(l.duration)
552552

553553
snapshot := &state.ExecutionSnapshot{}
554-
output := fvm.ProcedureOutput{}
554+
output := fvm.ProcedureOutput{
555+
Value: cadence.NewVoid(),
556+
}
555557
return snapshot, output, nil
556558
}
557559

engine/execution/computation/query/executor.go

Lines changed: 46 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import (
1212
jsoncdc "github.com/onflow/cadence/encoding/json"
1313
"github.com/rs/zerolog"
1414

15-
"github.com/onflow/flow-go/engine/execution/state/delta"
1615
"github.com/onflow/flow-go/fvm"
1716
"github.com/onflow/flow-go/fvm/derived"
1817
"github.com/onflow/flow-go/fvm/state"
@@ -105,7 +104,10 @@ func (e *QueryExecutor) ExecuteScript(
105104
blockHeader *flow.Header,
106105
derivedBlockData *derived.DerivedBlockData,
107106
snapshot state.StorageSnapshot,
108-
) ([]byte, error) {
107+
) (
108+
encodedValue []byte,
109+
err error,
110+
) {
109111

110112
startedAt := time.Now()
111113
memAllocBefore := debug.GetHeapAllocsBytes()
@@ -128,67 +130,64 @@ func (e *QueryExecutor) ExecuteScript(
128130
requestCtx, cancel := context.WithTimeout(ctx, e.config.ExecutionTimeLimit)
129131
defer cancel()
130132

131-
scriptInContext := fvm.NewScriptWithContextAndArgs(script, requestCtx, arguments...)
132-
blockCtx := fvm.NewContextFromParent(
133-
e.vmCtx,
134-
fvm.WithBlockHeader(blockHeader),
135-
fvm.WithDerivedBlockData(derivedBlockData))
136-
137-
err := func() (err error) {
138-
139-
start := time.Now()
140-
141-
defer func() {
142-
143-
prepareLog := func() *zerolog.Event {
144-
145-
args := make([]string, 0, len(arguments))
146-
for _, a := range arguments {
147-
args = append(args, hex.EncodeToString(a))
148-
}
149-
return e.logger.Error().
150-
Hex("script_hex", script).
151-
Str("args", strings.Join(args, ","))
152-
}
153-
154-
elapsed := time.Since(start)
155-
156-
if r := recover(); r != nil {
157-
prepareLog().
158-
Interface("recovered", r).
159-
Msg("script execution caused runtime panic")
160-
161-
err = fmt.Errorf("cadence runtime error: %s", r)
162-
return
133+
defer func() {
134+
prepareLog := func() *zerolog.Event {
135+
args := make([]string, 0, len(arguments))
136+
for _, a := range arguments {
137+
args = append(args, hex.EncodeToString(a))
163138
}
164-
if elapsed >= e.config.LogTimeThreshold {
165-
prepareLog().
166-
Dur("duration", elapsed).
167-
Msg("script execution exceeded threshold")
168-
}
169-
}()
170-
171-
view := delta.NewDeltaView(snapshot)
172-
return e.vm.Run(blockCtx, scriptInContext, view)
139+
return e.logger.Error().
140+
Hex("script_hex", script).
141+
Str("args", strings.Join(args, ","))
142+
}
143+
144+
elapsed := time.Since(startedAt)
145+
146+
if r := recover(); r != nil {
147+
prepareLog().
148+
Interface("recovered", r).
149+
Msg("script execution caused runtime panic")
150+
151+
err = fmt.Errorf("cadence runtime error: %s", r)
152+
return
153+
}
154+
if elapsed >= e.config.LogTimeThreshold {
155+
prepareLog().
156+
Dur("duration", elapsed).
157+
Msg("script execution exceeded threshold")
158+
}
173159
}()
160+
161+
var output fvm.ProcedureOutput
162+
_, output, err = e.vm.RunV2(
163+
fvm.NewContextFromParent(
164+
e.vmCtx,
165+
fvm.WithBlockHeader(blockHeader),
166+
fvm.WithDerivedBlockData(derivedBlockData)),
167+
fvm.NewScriptWithContextAndArgs(script, requestCtx, arguments...),
168+
snapshot)
174169
if err != nil {
175170
return nil, fmt.Errorf("failed to execute script (internal error): %w", err)
176171
}
177172

178-
if scriptInContext.Err != nil {
173+
if output.Err != nil {
179174
return nil, fmt.Errorf("failed to execute script at block (%s): %s",
180175
blockHeader.ID(),
181-
summarizeLog(scriptInContext.Err.Error(),
176+
summarizeLog(output.Err.Error(),
182177
e.config.MaxErrorMessageSize))
183178
}
184179

185-
encodedValue, err := jsoncdc.Encode(scriptInContext.Value)
180+
encodedValue, err = jsoncdc.Encode(output.Value)
186181
if err != nil {
187182
return nil, fmt.Errorf("failed to encode runtime value: %w", err)
188183
}
189184

190185
memAllocAfter := debug.GetHeapAllocsBytes()
191-
e.metrics.ExecutionScriptExecuted(time.Since(startedAt), scriptInContext.GasUsed, memAllocAfter-memAllocBefore, scriptInContext.MemoryEstimate)
186+
e.metrics.ExecutionScriptExecuted(
187+
time.Since(startedAt),
188+
output.ComputationUsed,
189+
memAllocAfter-memAllocBefore,
190+
output.MemoryEstimate)
192191

193192
return encodedValue, nil
194193
}
@@ -221,7 +220,6 @@ func (e *QueryExecutor) GetAccount(
221220
fvm.WithDerivedBlockData(
222221
e.derivedChainData.NewDerivedBlockDataForScript(blockHeader.ID())))
223222

224-
delta.NewDeltaView(snapshot)
225223
account, err := e.vm.GetAccount(
226224
blockCtx,
227225
address,

0 commit comments

Comments
 (0)