Releases: cardano-foundation/cardano-rosetta-java
1.2.6
Highlights 🔦
- Hardware Profiles: introduced entry_level and mid_level hardware profiles / configurations to ease scaling software and best tune software towards certain physical / virtual hardware specs
- Bug Fixes: addressed a couple of stability and correctness issues across the system.
- Cardano Node Upgrade: bumped to version 10.1.4 for compatibility and performance improvements.
- Scalability Testing Framework: Initial version to create, evaluate, and tune additional hardware profiles
- Rosetta documentation: initial version of new rosetta documentation https://cardano-foundation.github.io/cardano-rosetta-java/ with ability to invoke Rosetta endpoints
- Small Performance / Scalability Tweaks: connection pooling for Http connections (HTTP2) on api to yaci-indexer communication, using structured concurrency for better resilience against resource starvation issues
- Testing: added more unit tests / regression and flow tests
Breaking changes ⚠️
- you are now required to specify hardware profile upon starting cardano rosetta platform / stack.
e.g. example for "mid_level" profile:
docker-compose --env-file .env.docker-compose --env-file .env.docker-compose-profile-mid-level -f docker-compose.yaml up -d
List of hardware profile names can be access at: https://github.com/cardano-foundation/cardano-rosetta-java/wiki/9.-Hardware-Profiles, we will be adding more profiles in futher versions, it is an elementary list to get started.
What's Changed
- feat: implement stability testing with ApacheBench by @linconvidal in #360
- refactor: fail faster and less code complexity due to structured concurrency. by @matiwinnetou in #363
- feat: 10.1.4 by default also for a single docker image. by @matiwinnetou in #356
- feat: ability to externalise some of db pool and postgres db tunning parameters by @matiwinnetou in #353
- fix: payload endpoint must use original rosetta fee calculation. by @matiwinnetou in #361
- feat: initialize documentation structure and deployment workflow by @linconvidal in #366
- Add e2e test for fixed fee scenario by @linconvidal in #365
- feat: connection pooling for http connections. by @matiwinnetou in #371
- feat: enhance stability testing framework with CLI options, delays, and expanded test cases by @linconvidal in #376
- fix: rosetta tests are now called mesh. by @matiwinnetou in #382
- fix: make sure to serialize governance operations as part of embedded operations inside of CBOR. by @matiwinnetou in #381
- fix: upsert for postgres single docker image params by @matiwinnetou in #384
- moved below parameters from environment files to hardware profile files in #367)
(Values for the parameters are taken from the mid-level profile)
- API_DB_POOL_MIN_COUNT=150
- API_DB_POOL_MAX_COUNT=150
- added below parameters to hardware profile files in #367:
(Values for the parameters are taken from the mid-level profile)
DB_POSTGRES_MAX_CONNECTIONS=300
DB_POSTGRES_SHARED_BUFFERS=4GB
DB_POSTGRES_EFFECTIVE_CACHE_SIZE=8GB # ~50% of available memory for cache.
DB_POSTGRES_WORK_MEM=64MB
DB_POSTGRES_MAINTENANCE_WORK_MEM=512MB
DB_POSTGRES_WAL_BUFFERS=512MB
DB_POSTGRES_CHECKPOINT_COMPLETION_TARGET=0.7
DB_POSTGRES_RANDOM_PAGE_COST=1.3
DB_POSTGRES_EFFECTIVE_IO_CONCURRENCY=2
DB_POSTGRES_PARALLEL_TUPLE_COST=0.05
DB_POSTGRES_PARALLEL_SETUP_COST=500
DB_POSTGRES_MAX_PARALLEL_WORKERS_PER_GATHER=4
DB_POSTGRES_MAX_PARALLEL_WORKERS=8
DB_POSTGRES_SEQ_PAGE_COST=1.0
DB_POSTGRES_JIT=off
DB_POSTGRES_BGWRITER_LRU_MAXPAGES=100
DB_POSTGRES_BGWRITER_DELAY=200ms
Known issues ⚠️
- our scalability shows a slightly worse scalability numbers for mid_level hardware profile for "a single docker image" deployment option contrary to a "docker compose" way of running a project, the exact numbers will be published soon on our documentation pages: https://cardano-foundation.github.io/cardano-rosetta-java/
Full Changelog: 1.2.5...1.2.6
1.2.5
What's Changed
- feat: add end-to-end testing framework for Cardano Rosetta API by @linconvidal in #351
- refactor: common executor services defined once and re-used.
- chore: dependencies update.
- fix: we apply application specific index via flyweel for both single docker image and docker compose.
- refactor: do not use cpu bound thread pool, context switching between threads is not cheap.
- feat: add explicit db properties.
- fix: always use API prefix for Rosetta API DB pool
- added below parameters to environment files in #348:
- API_DB_POOL_MIN_COUNT=10
- API_DB_POOL_MAX_COUNT=10
- API_DB_POOL_MAX_LIFETIME_MS=2000000
- API_DB_POOL_CONNECTION_TIMEOUT_MS=100000
- API_DB_KEEP_ALIVE_MS=60000
- API_DB_LEAK_CONNECTIONS_WARNING_MS=60000
- API_DB_MONITOR_PERFORMANCE=false
- API_DB_SHOW_SQL=false
Full Changelog: 1.2.4...1.2.5
1.2.4
What's Changed
- fix: avoid NPE when transaction is not found by @matiwinnetou in #313
- feat: simple performance / scalability fixes. by @matiwinnetou in #316
- feat: Add Rosetta stability test configuration and sample data for mainnet and preprod by @linconvidal in #317
- fix: missing txhash filtering on /block/transaction by @matiwinnetou in #323
- feat: exposing configuration variables for yaci-store prunning inside of rosetta yaci indexer by @matiwinnetou in #321
- feat: small scalability improvements for a typical exchange setup. by @matiwinnetou in #330
- feat: dRep vote delegation support (transaction construction) by @matiwinnetou in #307
- added below parameters to environment files in #321:
- PRUNING_SAFE_BLOCKS=2160
- PRUNING_INTERVAL=600
⚠️ Known Issue
- #327: Transactions may become imbalanced when implicit fees differ from
/construction/metadata. More details
ℹ️ Important Notice about CIP-129 Hash Prefix
CIP-129 hashes include a 1-byte prefix, resulting in a total length of 29 bytes. However, the rosetta-java API currently expects only a raw 28-byte hash for DRep keys and script hashes. When submitting transactions involving DRep keys or script hashes, ensure you’re using the correct 28-byte raw hash (remove the CIP-129 tag prefix byte) to avoid ledger validation errors.
Full Changelog: 1.2.3...1.2.4
1.2.3
What's Changed
- feat: propagation supports is not recommended without open db transaction and can lead to connection leak issues. by @matiwinnetou in #309
- chore: prepare 1.2.3 by @matiwinnetou in #310
⚠️ Known Issue
- #327: Transactions may become imbalanced when implicit fees differ from
/construction/metadata. More details
Full Changelog: 1.2.2...1.2.3
1.2.2
What's Changed
- fix: fixed incorrect tx size and tx fee calculations by @matiwinnetou in #292
⚠️ Known Issue
- Unbalanced transactions when using fixed fees different than suggested fee (#327)
This version introduced an issue where the/construction/payloadsendpoint may generate an imbalanced transaction when the implicit fee (calculated as the difference between inputs and outputs provided by the user) does not match the exact fee suggested by the/construction/metadataendpoint. This mainly affects use cases where transactions rely on manually-defined fixed fees rather than dynamically calculated fees returned by/metadata.
Full Changelog: 1.2.1...1.2.2
1.2.1
What's Changed
- feat: upgrade to the latest Cardano Client Lib, 0.6.3 which is Conway… by @matiwinnetou in #289
- chore: docker standard env fixes. by @matiwinnetou in #291
- added below parameters to environment files in #291 :
- YACI_HTTP_BASE_URL=http://yaci-indexer:9095/api/v1
- YACI_INDEXER_PORT=9095
- HTTP_CONNECT_TIMEOUT_SECONDS=5
- HTTP_REQUEST_TIMEOUT_SECONDS=5
Full Changelog: 1.2.0...1.2.1
1.2.0
What's Changed
- docs: add env var examples for performance tuning by @linconvidal in #280
- chore: add workflow dispatch by @matiwinnetou in #274
- feat: withdrawable rewards should be available on Rosetta's account/balance endpoint for a given stake address. by @matiwinnetou in #276
- chore: commons-io upgrade by @matiwinnetou in #279
New Contributors
- @linconvidal made their first contribution in #280
- @matiwinnetou made their first contribution in #274
Full Changelog: 1.1.5...1.2.0
1.1.5
1.1.4
What's Changed
- update mithril to fix certificate hash unmatch error by @Kartiiyer12 in #266
- Fix/indexer stopped due to wrong redeemer data by @Kammerlo in #267
Full Changelog: 1.1.3...1.1.4