$ docker pull graphprotocol/graph-node:v0.43.0
What's New
skipDuplicatesfor immutable entities. A newskipDuplicatesparameter on the@entitydirective (@entity(immutable: true, skipDuplicates: true)) silently skips duplicate inserts instead of failing the subgraph. This unblocks subgraph composition on Amp-powered subgraphs where SQL queries can produce the same entities across block ranges. (#6458)- Per-chain RPC settings via TOML config. Chain-specific tuning parameters (
json_rpc_timeout,request_retries,max_block_range_size,polling_interval,block_batch_size, etc.) can now be set per chain inconfig.tomlinstead of relying on global environment variables. Fully backwards compatible — env vars remain the fallback. (#6459) - RPC provider failover for block ingestor. When the current RPC provider becomes unreachable during block ingestion polling, graph-node now automatically switches to a healthy alternative provider. (#6430)
- Warn on startup when running a debug build, with
[DEBUG-BUILD]prefix on all log lines. (#6488)
Improvements
- Call cache eviction rewrite. Replaced the old per-contract iteration approach with ctid-based join deletes against the
call_metatable, significantly faster on largecall_cachetables. The old--ttl-max-contractsflag has been replaced by--max-contracts, which computes an effective TTL cutoff instead of limiting per-invocation iteration. Eviction now also returns stats on the number of contracts and entries removed. (#6476) (#6477) - Reduced unnecessary
eth_getBlockByHashandeth_getBlockByNumberRPC calls by checking the block cache first inblock_pointer_from_numberandfetch_full_block_with_rpc. (#6491, partially reverted by #6537) - Header-only
ChainStorequery methods (ancestor_block_ptr,block_parent_ptr) skip deserializing the full blockdataJSONB column when only hash/number/parent are needed. (#6456) - Batch checking for update attempts on immutable entities, reducing per-entity overhead.
- Node name is now used as the PostgreSQL
application_namewhenPGAPPNAMEis not set, making it easier to identify graph-node connections inpg_stat_activity.
Bug Fixes
- Fixed dropped block trigger when
onceandpollingfilters match the same block — only one trigger type was firing. (#6530) - Fixed block stream ignoring configured
endBlockin two cases: the block-skip optimization bypassing themax_end_blockcheck, andmax_end_blockbeing set toNonewhen multiple data sources share the sameendBlock. (#6474) - Fixed GraphQL introspection not returning
isDeprecated: falsefor__InputValue, which caused some client libraries to fail. (#6475) - Fixed IPC provider connections failing when configured with
ipc://orfile://URLs — the URL was passed directly to the transport instead of extracting the file path. (#6443) - Fixed
graphman config poolsnot working due to hardcoded pool size override. (#6444) - Fixed unfail retry mechanism stopping after the first attempt when the deployment head was still behind the error block. (#6529)
gnd (Graph Node Dev)
gnd indexercommand that delegates tograph-indexer, allowing indexer management (allocations, rules, cost models, status) directly through gnd. (#6492)gnd deploynow prompts for--version-labelin interactive mode and requires it in non-interactive mode. (#6532)- Test framework improvements: partial receipt.logs support, mock IPFS/Arweave clients for file data source testing. (#6442)
Contributors
Thanks to all contributors for this release: @aayushbaluni, @dimitrovmaksim, @incrypto32, @isum, @lutter, @SunTzu
Full Changelog: v0.42.1...v0.43.0