$ docker pull graphprotocol/graph-node:v0.42.0
Breaking Changes
- Substreams support removed. Substreams have been unsupported on the network for some time. All substreams-related code has been removed, simplifying the codebase significantly. Substreams-based subgraphs will no longer work. (#6261)
- Migrated from rust-web3 to alloy. The Ethereum RPC layer now uses the alloy crate instead of rust-web3. This should be transparent to most users, but chains that do not return EIP-2718 typed transaction fields may need the
no_eip2718provider feature flag. (#6063) (#6317)
What's New
- Amp-powered subgraphs (experimental). A new kind of subgraph powered by Amp, the blockchain native database. Amp-powered subgraphs index data directly from Amp servers instead of processing blocks individually, reducing indexing time from days/weeks to minutes/hours. See
docs/amp-powered-subgraphs.mdfor details. (#6218) (#6293) (#6369) - SQL query interface (experimental). A new experimental SQL query interface allows querying subgraph data using SQL syntax via GraphQL. Documentation in
docs/implementation/sql-interface.md. (#6172) - Async store. All store and database interactions are now fully async using
diesel_async, eliminating blocking database calls from tokio tasks. This improves throughput and reduces the risk of thread starvation under heavy load. (#6194) (#6185) - RPC request compression. Configurable compression for outgoing JSON-RPC requests to upstream providers, supporting gzip, brotli, and deflate. Configured via provider
featuresin the config file. (#6084) - Query the current (partially filled) aggregation bucket with
current: includein GraphQL requests. (#6293) - Extended
firstandlastaggregation support toString,Bytes, and entity reference types. (#6225) - Automated account-like table optimization — an optional background job that detects and marks tables with high entity update ratios as account-like. Enabled via
GRAPH_STORE_ACCOUNT_LIKE_SCAN_INTERVAL_HOURS,GRAPH_STORE_ACCOUNT_LIKE_MIN_VERSIONS_COUNT, andGRAPH_STORE_ACCOUNT_LIKE_MAX_UNIQUE_RATIO. (#6209) - Subgraph table sizes and row counts are now exposed in
SubgraphIndexingStatusvia the index-node API. (#6201) - Configurable database setup timeout via
GRAPH_STORE_SETUP_TIMEOUT. - Option to disable the store call cache via
GRAPH_STORE_DISABLE_CALL_CACHE, useful for indexers with locally hosted RPC nodes. (#6214) - Docker: added profiling support to the
graph-node-debugimage with frame pointers andlinux-perf. (#6418)
Improvements
- Optimized WASM trigger instantiation by caching linker and compilation artifacts, reducing per-trigger overhead. (#6364)
- Optimized log filter matching and trigger allocation, reducing CPU usage during block processing. (#6419)
- Reduced unnecessary entity clones during block processing. (#6362)
- Replaced
std::sync::RwLockwithparking_lot::RwLockacross multiple components for better performance under contention. - Deadlock prevention under heavy load, especially during index node startup — connection pool and store semaphore improvements. (#6224)
- Raw subgraph manifests are now loaded from the store cache during startup, reducing IPFS dependency. (#6223)
- Deployment hashes are now logged when removing a subgraph. (#6405)
Bug Fixes
- Fixed duplicate VID when multiple offchain triggers (file/IPFS data sources) fire in the same block, causing unique constraint violations. Also fixed in
ipfs.map()callbacks. (#6336) (#6416) - Fixed incorrect
nocasefilter generation for non-String types (e.g.,Bytes), which caused SQL errors likeoperator does not exist: bytea ~~* bytea. (#6351) - Fixed
can_copy_fromfailures not fully rolling back deployment creation, leaving orphaned records. (#6228) - Fixed multi-column index validation bug where column order mismatch caused valid indexes to be silently dropped during subgraph copy/graft. (#6341)
- Fixed grafting failure ("Unexpected null for non-null column") when source tables have too few rows for PostgreSQL to generate
histogram_boundsstatistics. (#6275) - Fixed panic when converting a negative number to
U256in the runtime — now returns an error instead. (#6219) - Fixed
graphman copycopying prunedearliest_block_numberfrom source, which could leave the destination deployment in an invalid state. (#6384) - Fixed calls returning
0xbeing incorrectly cached in the call cache, preventing stale empty results from persisting. (#6187)
Graphman
graphman dumpandgraphman restore(experimental). New commands for exporting and importing subgraph data in Parquet format, enabling backup and migration of deployment data across shards. Supports incremental dumps and progress reporting. Seedocs/dump.mdfor details. (#6397)graphman chain call-cache removenow supports--ttl-daysto remove stale call cache entries that haven't been accessed within a specified number of days. (#6186)
gnd (Graph Node Dev)
- [experimental] Major expansion of
gndas a drop-in replacement forgraph-cli:init,add,codegen,build,publish,deploy,create,remove,auth,clean, andtestcommands. (#6282)
Contributors
Thanks to all contributors for this release: @DaMandal0rian, @dimitrovmaksim, @fubhy, @hudsonhrh, @incrypto32, @isum, @lutter, @shiyasmohd
Full Changelog: v0.41.2...v0.42.0