v0.75.0
Release Notes
Features
- Remove unused/duplicate reconnect code #25320 by @akugal
- cleanup/improve MerkelDB tests #25452 by @akugal
- 25370 Add continuity check to
apply-blockscommand #25448 by @imalygin - 25301 Added support for the rate limiter to
apply-blockscommand #25363 by @imalygin - 25222: HalfDiskHashMap to write object key buckets in parallel on multiple threads #25281 by @artemananiev
- Refactor batch transaction rollback handling #25174 by @lukasz-hashgraph
- Align record files with signed states #25234 by @derektriley
- migrate protobuf parsing to parseStrict and add test coverage #25273 by @viniciusjssouza
- 25299 : Relax state validator to accept
VirtualMapStatesnapshots #25300 by @imalygin - extract root node exchange from reconnect tasks #25242 by @akugal
- 24999: improve lifecycle in swirlds-benchmarks #25038 by @thenswan
- Execute block stream cutover logic #24227 by @mhess-swl
- Replace validation slack_report.json with validation_errors.txt #23355
- Tighten jumpstart migration conditions #24986 by @mhess-swl
- HAPI tests and DSL verbs for WRB streaming #24958 by @aderevets
- Change tipset algorithm to use event sequence number instead of NGen #24991 by @abies
- Async delete leaves out of range during reconnect #25123 by @akugal
- route wrapped record block items through GrpcBlockItemWriter #24889 by @aderevets
- 24875 Compaction - consolidation tasks to decrease small file count #25071 by @imalygin
- 23294: re-enable async snapshot optimization #24202 by @thenswan
- Extract reconnect logic from VirtualMap. #24662 by @akugal
- New Ad hoc Solo Tests Workflow and WRB migration test #24904 by @derektriley
- 25043: Remove redundant Main class from swirlds-benchmarks #25044 by @thenswan
- Standalone Fee Calculator improvements #24791 by @joshmarinacci
- Add event sequence number managed in orphan buffer #24937 by @abies
- Add support for remote SSH network for Sloth testing #24834 by @timo0
Bug Fixes
- [0.75 CP 02/12] cherry-pick (0.75): Refactor access list encoding #26379 by @aderevets
- [0.75 CP 01/12] cherry-pick (0.75): signSchedule(address,bytes) signatureMap size limit #26387 by @aderevets
- cherry-pick: Add
BlockRecordManager.LifecycleforstreamMode=RECORDS#25755 by @derektriley - cherry-pick: Allow multiple WRB Jumpstarts #25752 by @derektriley
- cherry-pick: WRB BlockHeader.blockTimestamp incorrectly set to blockCreationTime instead of first consensus timestamp #25750 by @derektriley
- NPE on null chainId #25279 #25466 by @0x-ds, @gkozyryatskyy
- handle
happyPathWithoutReuseForAtomicBatchflake #25440 by @Grigorov-Georgi - silence JVM warnings in Solo Latitude JAVA_OPTS #25456 by @aderevets
- use parse not parseStrict for block nodes config #25455 by @aderevets
- 25445: LongListDisk temp directories are not cleaned up #25446 by @thenswan
- 25374: Reduce object allocations in VirtualHasher by not serializing leaf values #25411 by @artemananiev
- 25239 silence-jvm-warnings-in-consensus-node #25287 by @aderevets
- generate signing key for :app:run so node boots past key loading #25342 by @aderevets
- 25417: CryptoBench reports stray running threads, deletes its data directory unconditionally #25438 by @thenswan
- delete snapshot dir on detach #25409 by @akugal
- 25163 surface precheck status when yahcli sysfile upload fails #25209 by @aderevets
- 25365 Added missing
PathsConfig#25366 by @imalygin - propagate transactionOffsetNanos through platform-sdk consensus timestamp chain #25250 by @Jeffrey-morgan34
- 25327 Filter
compactionInProgressfiles in coordinator phase 1 filtering #25329 by @imalygin - Make sure to restore connectivity after starting the otter node #25260 by @abies
- restore log output by bundling a dedicated log4j2 config #25131 by @Chinnmay
- 25277: LongListDisk is not thread safe #25280 by @artemananiev
- Resolve Failing BN XTS regression panel #24879 by @Nana-EC
- Simultaneous merge #25252 by @tinker-michaelj
- 25171: Async snapshot intermittent failures #25189 by @thenswan
- 25225 Fix race condition in EntityIdUniquenessValidator #25226 by @imalygin
- 25204 Fix race condition in file assignment and reduce consolidation aggressiveness #25216 by @imalygin
- 25162 silence yahcli JDK 25 warnings from protobuf and netty #25199 by @aderevets
- 25177: PBJ version update to 0.15.2 #25178 by @artemananiev
- do not increment the wanted block when BlockNodeStatus#latestBlockAvailable is -1 #25185 by @timfn-hg
- 25020 Registered missing ModulesConfig #25021 by @imalygin
- disable state.saveStateAsync for restart/reconnect HAPI tests #25153 by @AlexKehayov
- Improve conditional for charging custom fees surcharge in Token Create #25017 by @joshmarinacci
- stabilize node reward HAPI tests by forcing block boundaries before state mutations #24971 by @viniciusjssouza
- signature requirements and other improvements (HIP-1299 and HIP-869) #25061 by @petreze
- streamsAreValid flake from incomplete next-block lookup #25097 by @AlexKehayov
- raise platform.wiring.healthLogThreshold to 5s for hapiTestRestart #25105 by @AlexKehayov
- override HAPI Restart maximumPermissibleUnhealthySeconds, broaden CI log globs #25085 by @AlexKehayov
- CannotDeleteSystemEntitiesSuite silent failures and hardcoded shard/realm #24739 by @JivkoKelchev
- set Atomic Batch CI runner to XL to avoid resource exhaustion #25079 by @AlexKehayov
- stabilize GetScheduledInfoTest non-existent schedule tests by using virtual time #25073 by @AlexKehayov
- use lenient stubs for race-dependent watchKey mocks in testConfigWatcher_randomError #25072 by @AlexKehayov
- prevent hollow account fuzzing test to fail due to stale account registry entries #25056 by @Evdokia-Georgieva
- isolate HAPI subtask logs into per-task subdirectories, regroup subtasks in sets of <30mins (#24888, #24880) by @AlexKehayov
- stabilize blck001...004ReturnsCorrectBlockProperties by not deferring first call's status #25031 by @AlexKehayov
- ensure xfersScenario transfers reach consensus before record assertion #25057 by @AlexKehayov
- 25065 Decrease log level for CompactionV3 log statements #25066 by @imalygin
- ignore recoverable WRAPS signing retry warning in log validator #25063 by @Evdokia-Georgieva
- failing transactionOpsDurationMetricsAreRecordedAndRetrieved test #25055 by @Grigorov-Georgi
- stabilize failToUpdateNFTsMetadataWithEmptySerialNumbers by using virtual time #25058 by @AlexKehayov
- skip previous txn ids in
ValidContractIdsAssertion#25030 by @petreze - stabilize irreversiblePrecedingItemsAsExpected by flushing stream before watcher registers #25027 by @Evdokia-Georgieva
- Reduce noisy logs in the connection monitor when the detected changes are unchanged #25036 by @timfn-hg
- charge NFT rate if amount == 0 AND metadata is not empty. #25014 by @joshmarinacci
- Fix flaky OS Entropy Check Test by increasing timeout #25037 by @poulok
- Stabilize fridayThe13thSpec by deferring expiry to execution time #25026 by @Evdokia-Georgieva
- increase expiry offset to deal with the timing issue under load #24993 by @Grigorov-Georgi
Other Changes
Build System
- bump org.assertj:assertj-core from 3.27.3 to 3.27.7 in /hiero-dependency-versions #23910 by @dependabot[bot]
- bump com.github.spotbugs:spotbugs-annotations from 4.9.3 to 4.9.8 in /hiero-dependency-versions #23793 by @dependabot[bot]
- add -PrunUntilFailure= to check tests for flakiness #25257 by @jjohannes
Chores
- Apply changes from #26072 to release/0.75 #26078 by @rbarker-dev
- previewnet jumpstart application.properties #25882 by @derektriley
- Testnet jumpstart application properties and remove previewnet #25792 by @derektriley
- Update BlockRecordStreamConfig writeWrappedRecordFileBlockHashesToDisk #25737 by @derektriley
- previewnet jumpstart properties #25708 by @derektriley
- cherry-pick: fix of SDLT Latency metrics NLG 0.14.3 #25624 by @derektriley
- cherry-pick: Enable WRB Streaming in MATS and Update Block Node version #25564 by @derektriley
- (0.75) Update Mainnet throttles for CryptoGetAccountBalanceQuery #25586 by @derektriley
- Create v0.75.0 BlockRecordSchema with migration #25507 #25534 by @derektriley
- (0.75) Wait for proofs + ACKs for pending blocks in freeze
onSealConsensusRound()#25537 by @tinker-michaelj - Only log when a slow or stalled BN connection is detected #25488 #25563 by @timfn-hg
- Adopt TSS lib
3.8.1#25392 by @tinker-michaelj - Reduce block timestamp selection to first event or round timestamps #25217 by @mhess-swl
- Disable hooks by default #25406 by @tinker-michaelj
- Cleanup consensus-pces-impl dependencies #25362 by @poulok
- bump grpc from 1.73.0 to 1.81.0 in /hiero-dependency-versions #23888 by @dependabot[bot]
- Update ingest parse metrics #25262 by @derektriley
- ThrottleAccumulator ContractID getAssociationCount #25418 by @derektriley
- Keep creating events when
FREEZINGuntil all blocks are signed #25268 by @tinker-michaelj - Add record file running hash validator #25368 by @derektriley
- bump gradle-wrapper from 9.3.1 to 9.5.0 #25278 by @dependabot[bot]
- Remove blockStream.enableStateProofs config #25364 by @derektriley
- fix codeowners expression for 'HAPI Build Files' #25387 by @jjohannes
- Clean up remaining swirlds-common dependencies #25286 by @netopyr
- Add test coverage for new transaction offset #25338 by @poulok
- Clean up dependencies of hashgraph-impl tests #25285 by @netopyr
- Replace
LegacyTemporaryFileBuilderwithFileSystemManager#25292 by @poulok - add dashboard for Node Rewards monitoring #25303 by @viniciusjssouza
- clean up test dependencies of gossip-impl #25274 by @netopyr
- Update max size for sending messages to the block node to be 125 MB #25275 by @timfn-hg
- Move unit tests to their respective modules #25259 by @netopyr
- 25136: Adjust run config in swirlds-benchmarks #25149 by @thenswan
- fix test dependencies in event stream module #25231 by @netopyr
- List-of-RSA-signatures for WRBs #25179 by @tinker-michaelj
- remove internal package in consensus-concurrent module #25238 by @netopyr
- Increase VirtualLeafBytes parse max size #24951 by @derektriley
- 25223: A typo in DataFileReader when allocating local read buffers #25224 by @artemananiev
- Various quality of life changes around CN <-> BN communication #25203 by @timfn-hg
- extract event stream writer #25187 by @netopyr
- Update test constructor invocation to fix compile error #25198 by @mhess-swl
- Update HederaEvmTransaction mapping #25145 by @lukasz-hashgraph
- Fix
(AccountID, TokenID)field order in block streamStateChanges#25172 by @tinker-michaelj - Write consensus snapshot to disk in saved state directory #25068 by @poulok
- move swirlds common unit tests #25173 by @netopyr
- Minor Version Roll to 0.75.0-SNAPSHOT
- Enhance BN connection observability and block selection on start #25092 by @timfn-hg
- 25110 Added reference doc for the signed snapshot format #25120 by @imalygin
- cleanup consensus state dependencies #25165 by @netopyr
- Move MockAppender #25166 by @netopyr
- Move Mnemonics to crypto module #25158 by @netopyr
- move crypto functionality to crypto module #25137 by @netopyr
- Add
BinaryStateChangesValidator#24982 by @tinker-michaelj - Make
FeeAccumulatordefensive, clamp hook gas limits #25022 by @tinker-michaelj - Remove unused Chart class #25125 by @poulok
- Add swirlds log validation to HAPI tests #25034 by @poulok
- Be noisy if WRAPS enabled but artifact unavailable #24379 by @tinker-michaelj
Continuous Integration
- explictly declare java 25.0.2 #25529 by @andrewb1269
- update cancelled HAPI test processing in MATS #25401 by @andrewb1269
- consolidate find commit author slack into a script #25324 by @joshmarinacci
- revert flaky test rerun, processing, issue creation #25271 by @andrewb1269
- update trigger on unapprove PR workflow #25265 by @andrewb1269
- switch PR title check to step-security/action-semantic-pull-request #25220 by @nathanklick
- Fix typo in SDLT #25206 by @rbarker-dev
- Update MQPT for chewie json response #25099 by @rbarker-dev
- Update step-security and initialize-github-job #25127 by @rbarker-dev
- remove empty parens on xts cancelled slack message #25103 by @andrewb1269
- Add read chewie response logic to sdlt #25091 by @rbarker-dev
- Update adhoc SDPT to use the chewie values #25086 by @rbarker-dev
- update docs to reflect compile and spotless job #25050 by @andrewb1269
- combine compile and spotless into a single job #25035 by @andrewb1269
- Update language on slack reports and categories to use environment #25029 by @rbarker-dev
Documentation Updates
- document runUntilFailure parameter for flaky test investigation #25321 by @viniciusjssouza
- Add PCES snapshot coordination ADR doc #25304 by @poulok
- Initial draft of consensus knowledge base #25310 by @netopyr
- forbid AI origin/attribution markers in repo content #25221 by @nathanklick
Performance Improvements
- getCode() without a copy. #24981 by @cliffclick
Refactoring
- Move recycle bin to
consensus-utility#25341 by @poulok - Move
FileSystemManager, simplify configuration #25218 by @poulok - 25249 Refactor
BlockStreamRecoveryWorkflowto useBinaryState#25256 by @imalygin - 25243 Refactor
BinaryStateChangesValidatorto useBinaryState#25244 by @imalygin - Move
FileUtils#25213 by @poulok - Extract gui module #25062 by @poulok
Tests
- cherry-pick: update CITR to Solo 0.76 #25714 #25719 #25881 by @alex-kuzmin-hg
- cherry-picked 25128 to 0.75: reapply latency metrics in nlg (25128) #25190 #25653 by @alex-kuzmin-hg
- update NLG to 0.14.1 (25407) #25410 by @alex-kuzmin-hg
- fix TPS EMA in CryptoBench #25372 by @OlegMazurov
- Use pre-cutover state changes in binary replay #25311 by @mhess-swl
- Add Github workflow for WRB streaming tests with solo #25138 by @ibankov
- to fix missed mc utility (25181) #25182 by @alex-kuzmin-hg
- fix flaky com.hedera.services.bdd.suites.blocknode.BlockNodeBackPressureSuite#backPressureAllNodesCheckingScenario tes #25104 by @aderevets
- use max K8S CPUs for perf tests (25024) #25069 by @alex-kuzmin-hg