Merge pull request #49 from DeBankDeFi/multicall

differentiate context cancell and fast fail error
This commit is contained in:
cifer76 2023-01-06 11:48:20 +08:00 committed by GitHub
commit 2545a28162
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -60,6 +60,11 @@ const (
errMessageExecuting = -40012 errMessageExecuting = -40012
errEVMCancelled = -40013 errEVMCancelled = -40013
errEVMReverted = -40014 errEVMReverted = -40014
errEVMFastFailed = -40015
// internal error
errUnderlyingDB = -40020
errLoadingState = -40021
) )
var ( var (
@ -253,7 +258,12 @@ func doOneCall(ctx context.Context, b Backend, state *state.StateDB, header *typ
// If the timer caused an abort, return an appropriate error message // If the timer caused an abort, return an appropriate error message
if evm.Cancelled() { if evm.Cancelled() {
result.Code = errEVMCancelled result.Code = errEVMCancelled
result.Err = fmt.Sprintf("execution cancelled, either fast failed or exceeding timeout(%v)", singleCallTimeout) result.Err = fmt.Sprintf("execution cancelled, timeout(%v)", singleCallTimeout)
// if execution time is close to timeout, not proper
if time.Since(start) < singleCallTimeout {
result.Code = errEVMFastFailed
result.Err = "fast failed"
}
return result, err return result, err
} }