Making progress on transitioning our database to CitusDB, this release adds a new v2
schema with initial support for CitusDB. Automated testing against CitusDB was added to our CI pipeline so that it runs concurrently with the v1
PostgreSQL-based schema. The transaction payer account ID was added to transfer related tables. This will be used as a distribution column for database partitioning across a dimension that is not time-based. This allows the mirror node to scale reads and writes as more transaction payers use the system.
The rest of the release is mainly focused around performance improvements. We no longer persist minimal entity information for every entity ID encountered in a transaction. This was a performance drag but also caused problems with our plans to track entity history in an upcoming release. A few of our reference tables were removed in favor of using an application enum instead to map protobuf values to descriptive strings.
On the REST API, retrieval of accounts by public key was optimized to improve its performance. If your application does not require balance information, you can see additional performance gains by setting the new balance
parameter to false
for account API calls. The code was optimized to replace Array.concat
with Array.push
and to cache entity ID construction. The biggest change is probably the potentially breaking change to the limit
parameter.
Breaking Changes
The maximum number of rows the REST API can return was changed from 500 to 100. Likewise the default number of rows the REST API returns if the limit
parameter is unspecified was changed from 500 to 25. If a request is sent requesting more than 100 it won't fail. Instead, it will transparently use the smaller of the two values. As a result, this should not be a breaking change unless your application makes assumptions about the exact number of results being returned. We may tweak these values in the future for performance reasons so it's good practice to update your application to handle arbitrary limits and results.
Enhancements
- Remove minimal entity creation #2781
- Replace Array.concat with Array.push #2768
- Remove transaction results #2767
- Optimize REST transactions API #2763
- Remove NullableStringSerializer #2761
- Optimize accounts by publickey query #2760
- Convert v2 flyway migration to use CItus #2758
- Rename EntityTypeEnum to EntityType in importer #2757
- Bump versions for v0.44.0-SNAPSHOT #2746
- Add transaction payer to transfer tables #2730
- Remove t_entity_types table #2727
- Optimize get transactions by account ID API #2718
- Add payer_account_id column to transfer related tables #2713
- Citus: Convert v2 flyway migrations #2679
- Stop inserting minimal entities #2634
Bug Fixes
- Fix obtainer ID not being set on contract deletion (0.44) #2806
- Port account contract performance regression fix #2799
- Fix JS monitor single transaction query check #2798
- JS monitor reports false negative when checking a scheduled transaction #2795
- Port fix entity query in accounts and balances REST apis #2782
- Fix historical contracts migration #2766
- Disable validate-maintainers check in chart linting #2765
- Add missing TOKENPAUSE/UNPAUSE to OpenApi spec #2762
- Update OpenAPI max_automatic_token_associations type to int32 #2755
Dependency Upgrades
- Bump gorm.io/driver/postgres from 1.1.2 to 1.2.1 in /hedera-mirror-rosetta #2779
- Bump gorm.io/gorm from 1.21.16 to 1.22.2 in /hedera-mirror-rosetta #2778
- Bump long from 4.0.0 to 5.1.0 in /hedera-mirror-rest #2777
- Bump aws-sdk from 2.1010.0 to 2.1018.0 in /hedera-mirror-rest #2776
- Bump protobuf-java from 3.19.0 to 3.19.1 #2775
- Bump software.amazon.awssdk:bom from 2.17.67 to 2.17.71 #2774
- Bump vertx-pg-client from 4.1.5 to 4.2.0 #2773
- Bump s3proxy from 1.8.0 to 1.9.0 #2772
- Bump ansi-regex from 5.0.0 to 5.0.1 in /hedera-mirror-rest/monitoring/monitor_apis #2753
- Bump spring-cloud-gcp-dependencies from 2.0.4 to 2.0.5 #2752
- Bump nodemon from 2.0.13 to 2.0.14 in /hedera-mirror-rest #2751
- Bump axios from 0.23.0 to 0.24.0 in /hedera-mirror-rest #2750
- Bump junit-jupiter from 1.16.0 to 1.16.2 #2749
- Bump software.amazon.awssdk:bom from 2.17.61 to 2.17.67 #2748
- Bump spring-boot-starter-parent from 2.5.5 to 2.5.6 #2747
- Bump github.com/hashgraph/hedera-sdk-go/v2 from 2.2.0 to 2.3.0 in /hedera-mirror-rosetta #2744
- Bump
@awaitjs
/express from 0.8.0 to 0.9.0 in /hedera-mirror-rest #2743 - Bump jest from 27.3.0 to 27.3.1 in /hedera-mirror-rest/check-state-proof #2742
- Bump jest from 27.3.0 to 27.3.1 in /hedera-mirror-rest #2741
- Bump husky from 7.0.2 to 7.0.4 in /hedera-mirror-rest #2740
- Bump jest-circus from 27.3.0 to 27.3.1 in /hedera-mirror-rest #2739
- Bump jest from 27.3.0 to 27.3.1 in /hedera-mirror-rest/monitoring/monitor_apis #2738
- Bump eslint-plugin-import from 2.24.2 to 2.25.2 in /hedera-mirror-rest #2737
- Bump hibernate-types-52 from 2.13.0 to 2.14.0 #2736
- Bump nodemon from 2.0.13 to 2.0.14 in /hedera-mirror-rest/monitoring/monitor_apis #2735
- Bump protobuf-java from 3.18.1 to 3.19.0 #2734
- Bump springdoc-openapi-webflux-ui from 1.5.11 to 1.5.12 #2733
- Bump openapi-generator-maven-plugin from 5.2.1 to 5.3.0 #2731
Contributors
We'd like to thank all the contributors who worked on this release!