This is an automated email from the ASF dual-hosted git repository.
toulmean pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-tuweni.git
The following commit(s) were added to refs/heads/main by this push:
new 193b037 respond with an error if the backend is unavailable
new a55a18f Merge pull request #327 from atoulme/respond_with_an_error
193b037 is described below
commit 193b037ce4921257a6359aeac15a943539d99fb0
Author: Antoine Toulme <[email protected]>
AuthorDate: Fri Jul 30 20:29:31 2021 -0700
respond with an error if the backend is unavailable
---
.../org/apache/tuweni/jsonrpc/app/JSONRPCApp.kt | 8 +++++-
.../org/apache/tuweni/jsonrpc/JSONRPCClient.kt | 29 +++++++---------------
2 files changed, 16 insertions(+), 21 deletions(-)
diff --git
a/jsonrpc-app/src/main/kotlin/org/apache/tuweni/jsonrpc/app/JSONRPCApp.kt
b/jsonrpc-app/src/main/kotlin/org/apache/tuweni/jsonrpc/app/JSONRPCApp.kt
index fc4748c..c835a9e 100644
--- a/jsonrpc-app/src/main/kotlin/org/apache/tuweni/jsonrpc/app/JSONRPCApp.kt
+++ b/jsonrpc-app/src/main/kotlin/org/apache/tuweni/jsonrpc/app/JSONRPCApp.kt
@@ -21,6 +21,7 @@ import io.vertx.core.VertxOptions
import io.vertx.tracing.opentelemetry.OpenTelemetryOptions
import kotlinx.coroutines.asCoroutineDispatcher
import kotlinx.coroutines.runBlocking
+import org.apache.tuweni.eth.internalError
import org.apache.tuweni.jsonrpc.JSONRPCClient
import org.apache.tuweni.jsonrpc.JSONRPCServer
import org.apache.tuweni.jsonrpc.methods.MeteredHandler
@@ -79,7 +80,12 @@ class JSONRPCApplication(
val allowListHandler = MethodAllowListHandler(config.allowedMethods()) {
req ->
runBlocking {
- client.sendRequest(req).await()
+ try {
+ client.sendRequest(req).await()
+ } catch (e: Exception) {
+ logger.error("Error sending JSON-RPC request", e)
+ internalError.copy(id = req.id)
+ }
}
}
diff --git a/jsonrpc/src/main/kotlin/org/apache/tuweni/jsonrpc/JSONRPCClient.kt
b/jsonrpc/src/main/kotlin/org/apache/tuweni/jsonrpc/JSONRPCClient.kt
index 25ece27..045f28d 100644
--- a/jsonrpc/src/main/kotlin/org/apache/tuweni/jsonrpc/JSONRPCClient.kt
+++ b/jsonrpc/src/main/kotlin/org/apache/tuweni/jsonrpc/JSONRPCClient.kt
@@ -91,26 +91,15 @@ class JSONRPCClient(
* @throws ConnectException if it cannot dial the remote client
*/
suspend fun getBalance_latest(address: Address): UInt256 {
- val body = mapOf(
- Pair("jsonrpc", "2.0"),
- Pair("method", "eth_getBalance"),
- Pair("id", 1),
- Pair("params", listOf(address.toHexString(), "latest"))
- )
- val deferred = CompletableDeferred<UInt256>()
-
- client.post(serverPort, serverHost, "/")
- .putHeader("Content-Type", "application/json")
- .sendBuffer(Buffer.buffer(mapper.writeValueAsBytes(body))) { response ->
- if (response.failed()) {
- deferred.completeExceptionally(response.cause())
- } else {
- val jsonResponse = response.result().bodyAsJsonObject()
-
deferred.complete(UInt256.fromHexString(jsonResponse.getString("result")))
- }
- }
-
- return deferred.await()
+ val body = JSONRPCRequest(nextId(), "eth_getBalance",
arrayOf(address.toHexString(), "latest"))
+ val jsonResponse = sendRequest(body).await()
+ val err = jsonResponse.error
+ if (err != null) {
+ val errorMessage = "Code ${err.code}: ${err.message}"
+ throw ClientRequestException(errorMessage)
+ } else {
+ return UInt256.fromHexString(jsonResponse.result.toString())
+ }
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]