From a01568c77f13d7df2de8fe02dd5403be4543193b Mon Sep 17 00:00:00 2001 From: Mateusz Czeladka Date: Fri, 7 Mar 2025 21:10:24 +0100 Subject: [PATCH] feat: simple performance / scalability fixes. --- .../account/service/AccountServiceImpl.java | 4 ++-- .../api/block/service/BlockServiceImpl.java | 7 +++++-- .../network/service/NetworkServiceImpl.java | 1 + .../resources/config/application-online.yaml | 18 ++++++++++-------- 4 files changed, 18 insertions(+), 12 deletions(-) diff --git a/api/src/main/java/org/cardanofoundation/rosetta/api/account/service/AccountServiceImpl.java b/api/src/main/java/org/cardanofoundation/rosetta/api/account/service/AccountServiceImpl.java index bfad1b3f9..33b8f4981 100644 --- a/api/src/main/java/org/cardanofoundation/rosetta/api/account/service/AccountServiceImpl.java +++ b/api/src/main/java/org/cardanofoundation/rosetta/api/account/service/AccountServiceImpl.java @@ -53,7 +53,7 @@ public AccountBalanceResponse getAccountBalance(AccountBalanceRequest accountBal CardanoAddressUtils.verifyAddress(accountAddress); PartialBlockIdentifier blockIdentifier = accountBalanceRequest.getBlockIdentifier(); - log.info("[accountBalance] Looking for block: {} || latest}", blockIdentifier); + log.debug("[accountBalance] Looking for block: {} || latest}", blockIdentifier); if (Objects.nonNull(blockIdentifier)) { index = blockIdentifier.getIndex(); @@ -92,7 +92,7 @@ private AccountBalanceResponse findBalanceDataByAddressAndBlock(String address, return findBlockOrLast(number, hash) .map(blockDto -> { - log.info("Looking for utxos for address {} and block {}", + log.debug("Looking for utxos for address {} and block {}", address, blockDto.getHash() ); diff --git a/api/src/main/java/org/cardanofoundation/rosetta/api/block/service/BlockServiceImpl.java b/api/src/main/java/org/cardanofoundation/rosetta/api/block/service/BlockServiceImpl.java index d9fefda85..ee4545f63 100644 --- a/api/src/main/java/org/cardanofoundation/rosetta/api/block/service/BlockServiceImpl.java +++ b/api/src/main/java/org/cardanofoundation/rosetta/api/block/service/BlockServiceImpl.java @@ -24,13 +24,16 @@ public class BlockServiceImpl implements BlockService { @Override public Block findBlock(Long index, String hash) { - log.info("[block] Looking for block: hash={}, index={}", hash, index); + log.debug("[block] Looking for block: hash={}, index={}", hash, index); + Optional blockOpt = ledgerBlockService.findBlock(index, hash); if (blockOpt.isPresent()) { var block = blockOpt.get(); - log.info("Block was found, hash={}", block.getHash()); + log.debug("Block was found, hash={}", block.getHash()); + block.setPoolDeposit(String.valueOf(protocolParamService.findProtocolParameters().getPoolDeposit())); log.debug("full data {}", block); + return block; } log.error("Block was not found"); diff --git a/api/src/main/java/org/cardanofoundation/rosetta/api/network/service/NetworkServiceImpl.java b/api/src/main/java/org/cardanofoundation/rosetta/api/network/service/NetworkServiceImpl.java index 4d0aaf46d..ece488950 100644 --- a/api/src/main/java/org/cardanofoundation/rosetta/api/network/service/NetworkServiceImpl.java +++ b/api/src/main/java/org/cardanofoundation/rosetta/api/network/service/NetworkServiceImpl.java @@ -151,6 +151,7 @@ public Network getSupportedNetwork() { private NetworkStatus networkStatus() { log.info("[networkStatus] Looking for latest block"); + BlockIdentifierExtended latestBlock = ledgerBlockService.findLatestBlockIdentifier(); log.debug("[networkStatus] Latest block found {}", latestBlock); diff --git a/api/src/main/resources/config/application-online.yaml b/api/src/main/resources/config/application-online.yaml index da91255ff..4e6a6bf64 100644 --- a/api/src/main/resources/config/application-online.yaml +++ b/api/src/main/resources/config/application-online.yaml @@ -4,20 +4,22 @@ spring: password: ${DB_SECRET:weakpwd#123_d} url: jdbc:postgresql://${DB_HOST:localhost}:${DB_PORT:5433}/${DB_NAME:test}?currentSchema=${DB_SCHEMA:preprod} hikari: -# default connection-timeout is 30 seconds - connectionTimeout: 100000 -# default pool size is 10 -# connections = ((core_count * 2) + effective_spindle_count) - maximumPoolSize: 12 -# for developing purposes + connectionTimeout: 100000 #default connection-timeout is 30 seconds + minimumIdle: 2 + connections: 48 # ((core_count * 2) + effective_spindle_count), 48 for 16 cores, NVMe Storage, spindle count 16 + + keepaliveTime: 60000 # Sends a keep-alive query every 60s to prevent connection closure + + maximumPoolSize: 20 # default pool size is 10 leakDetectionThreshold: 60000 + jpa: properties: hibernate: format_sql: true hibernate: ddl-auto: none - show-sql: true + show-sql: false mvc: log-resolved-exception: true output: @@ -29,4 +31,4 @@ cardano: OFFLINE_MODE: false YACI_HTTP_BASE_URL: ${YACI_HTTP_BASE_URL:http://localhost:9095} HTTP_CONNECT_TIMEOUT_SECONDS: ${HTTP_CONNECT_TIMEOUT_SECONDS:5} - HTTP_REQUEST_TIMEOUT_SECONDS: ${HTTP_REQUEST_TIMEOUT_SECONDS:5} \ No newline at end of file + HTTP_REQUEST_TIMEOUT_SECONDS: ${HTTP_REQUEST_TIMEOUT_SECONDS:5}