This release saw the implementation of HIP-844 Handling and externalization improvements for account nonce updates. This HIP resolve issues where the consensus nodes and the mirror nodes are account nonces are out of sync. The consensus nodes now sends the mirror node the up-to-date account nonce instead of the mirror node attempting to increment the nonce based upon its prior state.
There were two important changes to the database that helped to reduce its size substantially. The topic_message
table primary key index was dropped in favor of relying upon a similar index on the transaction
table. This simple change shaved 800 GiB off the mainnet database. The staking reward calculation performance was improved to only write accounts that elected to receive rewards. This reduces the staking reward calculation runtime from 47 minutes down to less than 2 minutes. A migration also removes the existing staking rows that did not have a staking reward election, shrinking those tables by 155 GiB. Note that to realize these disks savings mirror node operators will need to manually perform a full vacuum on the entity_stake
and entity_stake_history
tables. So in total the size of the mirror node database was reduced by almost 1 TB this release!
There was quite a bit of technical debt paid down in this release. We've removed support for the event file format from the importer. This format was never fully implemented in the mirror node, didn't support the latest version, and no user interest in this data was expressed during its 4 years of existence. The acceptance tests were refactored to use the OpenAPI generated models, ensuring we dogfood our own API specification. The brittle MockPool
tests were removed in favor of additional coverage in other, easier to maintain tests. The REST API tests now uses the correct read only user and common database setup that the other modules use. Finally, the unused RestoreClientIntegrationTest
and associated test images were removed.
Our Citus deployment saw a number of improvements. Performance was optimized for hash insertions by reducing the shard count for hash tables. Entity upserts saw improvement by increasing the number of CPU resources to the database. Finally, the transactions list and accounts by ID endpoints saw their read performance improved for Citus.
Upgrading
There is a long running migration in this release to consider when deploying. The V1.93.0__update_entity_stake.sql
is expected to take 18 minutes against mainnet database with a complete transaction history. As noted previously, it's also recommended to run a full vacuum on the entity_stake
and entity_stake_history
tables after this migration.
Enhancements
- Expose the entrypoint command using an env var named ENTRYPOINT_COMMAND (#7704) #7729
- Add the absolute path to test image entrypoint #7665
- Remove mockpool based tests #7658
- Remove event file support #7652
- Update rest test docker image to include init.sql #7651
- Drop topic message primary index #7648
- Bump hedera-evm version to 0.46 and besu evm version to 23.10.2 #7645
- Update bucket for 2024-02 testnet reset #7637
- Update V2 Deployment for Performance Improvements #7622
- Add support for HIP-844 signer nonce #7617
- Enable direct calls to precompile addresses #7616
- Remove RestoreClientIntegrationTest #7606
- Cleanup acceptance tests asynchronously #7604
- Add OpenAPI model generation for NFT allowance API #7570
- Refactor acceptance tests to use OpenAPI generated models #7565
- Improve staking reward calculation performance #7554
- Improve transaction queries in v2 #7503
Bug Fixes
- Disable failing acceptance tests (0.98) #7730
- Fix node filter in pod USE dashboard #7662
- fix: Fix concurrency issue in message call processors #7650
- Fix failing equivalence acceptance tests #7646
- Fix HCS latency regression #7611
Dependency Upgrades
- Bump github.com/cucumber/godog from 0.13.0 to 0.14.0 in /hedera-mirror-rosetta #7683
- Bump peter-evans/create-pull-request from 5 to 6 #7682
- Bump io.hypersistence:hypersistence-utils-hibernate-63 from 3.7.0 to 3.7.1 #7681
- Bump software.amazon.awssdk:bom from 2.23.12 to 2.23.17 #7680
- Bump com.github.node-gradle:gradle-node-plugin from 7.0.1 to 7.0.2 #7678
- Bump io.grpc:grpc-bom from 1.61.0 to 1.61.1 #7677
- Bump com.hedera.evm:hedera-evm from 0.46.0 to 0.46.3 #7676
- Bump
@aws-sdk
/client-s3 from 3.501.0 to 3.504.0 in /hedera-mirror-rest #7675 - Bump mathjs from 12.3.0 to 12.3.1 in /hedera-mirror-rest #7674
- Change gradle-build-action to actions/setup-gradle #7667
- Bump Gradle from 8.5 to 8.6 #7666
- Bump github.com/opencontainers/runc from 1.1.5 to 1.1.12 in /hedera-mirror-rosetta #7653
- Bump vertx version from 4.5.1 to 4.5.2 #7649
- Bump express-openapi-validator from 5.1.2 to 5.1.3 in /hedera-mirror-rest #7635
- Bump
@aws-sdk
/client-s3 from 3.496.0 to 3.501.0 in /hedera-mirror-rest #7634 - Bump gorm.io/gorm from 1.25.5 to 1.25.6 in /hedera-mirror-rosetta #7632
- Bump github.com/ethereum/go-ethereum from 1.13.10 to 1.13.11 in /hedera-mirror-rosetta #7631
- Bump com.bucket4j:bucket4j-core from 8.7.0 to 8.7.1 #7630
- Bump software.amazon.awssdk:bom from 2.23.7 to 2.23.12 #7629
- Bump io.swagger:swagger-annotations from 1.6.12 to 1.6.13 #7628
- Bump com.google.cloud:spring-cloud-gcp-dependencies from 5.0.0 to 5.0.1 #7626
- Bump com.diffplug.spotless:spotless-plugin-gradle from 6.24.0 to 6.25.0 #7625
- Bump org.testcontainers:junit-jupiter from 1.19.3 to 1.19.4 #7624
- Bump com.playtika.testcontainers:embedded-google-pubsub from 3.1.2 to 3.1.4 #7623
- Bump versions for v0.98.0-SNAPSHOT #7601
- Bump com.hedera.hashgraph:hedera-protobuf-java-api from 0.45.3 to 0.46.0 #7581
Contributors
We'd like to thank all the contributors who worked on this release!