Remove error correction, use new errorCode (#347)

This commit is contained in:
KirillPamPam
2023-11-22 15:27:28 +04:00
committed by GitHub
parent 09c6b231b7
commit a7f74bb71a
5 changed files with 6 additions and 144 deletions

View File

@@ -1,43 +0,0 @@
package io.emeraldpay.dshackle.rpc
import org.springframework.stereotype.Component
interface ErrorProcessor {
fun matches(result: NativeCall.CallResult): Boolean
fun errorProcess(error: NativeCall.CallError): NativeCall.CallError
}
@Component
open class ErrorCorrector(
private val processors: List<ErrorProcessor>,
) {
fun correctError(result: NativeCall.CallResult): NativeCall.CallError {
if (!result.isError()) {
throw IllegalStateException("No error to correct")
}
return processors
.firstOrNull { it.matches(result) }
?.errorProcess(result.error!!)
?: result.error!!
}
}
@Component
class NethermindEthCallRevertedErrorProcessor : ErrorProcessor {
override fun matches(result: NativeCall.CallResult): Boolean {
return result.ctx?.payload?.method == "eth_call" && (result.error?.data?.startsWith("Reverted") ?: false)
}
override fun errorProcess(error: NativeCall.CallError): NativeCall.CallError {
return NativeCall.CallError(
3,
error.message,
error.upstreamError,
error.data?.removePrefix("Reverted "),
error.upstreamId,
)
}
}

View File

@@ -65,7 +65,6 @@ open class NativeCall(
private val signer: ResponseSigner,
config: MainConfig,
private val tracer: Tracer,
private val errorCorrector: ErrorCorrector,
) {
private val log = LoggerFactory.getLogger(NativeCall::class.java)
@@ -174,12 +173,11 @@ open class NativeCall(
.setSucceed(!it.isError())
.setId(it.id)
if (it.isError()) {
it.error?.let { _ ->
val fixedError = errorCorrector.correctError(it)
result.setErrorMessage(fixedError.message)
.setErrorCode(fixedError.id)
it.error?.let { error ->
result.setErrorMessage(error.message)
.setItemErrorCode(error.id)
fixedError.data?.let { data ->
error.data?.let { data ->
result.setErrorData(data)
}
}