diff --git a/Cargo.lock b/Cargo.lock index db21e89c461..906d13cdc85 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3809,7 +3809,7 @@ dependencies = [ [[package]] name = "gnd" -version = "0.42.1" +version = "0.43.0" dependencies = [ "Inflector", "anyhow", @@ -3855,7 +3855,7 @@ dependencies = [ [[package]] name = "graph" -version = "0.42.1" +version = "0.43.0" dependencies = [ "Inflector", "ahash", @@ -3947,7 +3947,7 @@ dependencies = [ [[package]] name = "graph-chain-common" -version = "0.42.1" +version = "0.43.0" dependencies = [ "anyhow", "heck 0.5.0", @@ -3957,11 +3957,11 @@ dependencies = [ [[package]] name = "graph-chain-ethereum" -version = "0.42.1" +version = "0.43.0" dependencies = [ "anyhow", "async-trait", - "base64 0.22.1", + "base64 0.21.7", "envconfig", "futures 0.3.31", "graph", @@ -3984,7 +3984,7 @@ dependencies = [ [[package]] name = "graph-chain-near" -version = "0.42.1" +version = "0.43.0" dependencies = [ "anyhow", "async-trait", @@ -4001,7 +4001,7 @@ dependencies = [ [[package]] name = "graph-core" -version = "0.42.1" +version = "0.43.0" dependencies = [ "alloy", "anyhow", @@ -4032,7 +4032,7 @@ dependencies = [ [[package]] name = "graph-graphql" -version = "0.42.1" +version = "0.43.0" dependencies = [ "anyhow", "async-recursion", @@ -4048,7 +4048,7 @@ dependencies = [ [[package]] name = "graph-node" -version = "0.42.1" +version = "0.43.0" dependencies = [ "anyhow", "clap", @@ -4084,7 +4084,7 @@ dependencies = [ [[package]] name = "graph-runtime-derive" -version = "0.42.1" +version = "0.43.0" dependencies = [ "quote", "syn 2.0.117", @@ -4092,7 +4092,7 @@ dependencies = [ [[package]] name = "graph-runtime-test" -version = "0.42.1" +version = "0.43.0" dependencies = [ "async-trait", "graph", @@ -4106,7 +4106,7 @@ dependencies = [ [[package]] name = "graph-runtime-wasm" -version = "0.42.1" +version = "0.43.0" dependencies = [ "anyhow", "async-trait", @@ -4124,7 +4124,7 @@ dependencies = [ [[package]] name = "graph-server-http" -version = "0.42.1" +version = "0.43.0" dependencies = [ "async-trait", "graph", @@ -4135,7 +4135,7 @@ dependencies = [ [[package]] name = "graph-server-index-node" -version = "0.42.1" +version = "0.43.0" dependencies = [ "async-trait", "blake3 1.8.4", @@ -4148,7 +4148,7 @@ dependencies = [ [[package]] name = "graph-server-json-rpc" -version = "0.42.1" +version = "0.43.0" dependencies = [ "axum", "graph", @@ -4161,14 +4161,14 @@ dependencies = [ [[package]] name = "graph-server-metrics" -version = "0.42.1" +version = "0.43.0" dependencies = [ "graph", ] [[package]] name = "graph-store-postgres" -version = "0.42.1" +version = "0.43.0" dependencies = [ "Inflector", "anyhow", @@ -4211,7 +4211,7 @@ dependencies = [ [[package]] name = "graph-tests" -version = "0.42.1" +version = "0.43.0" dependencies = [ "anyhow", "assert-json-diff", @@ -4237,7 +4237,7 @@ dependencies = [ [[package]] name = "graph_derive" -version = "0.42.1" +version = "0.43.0" dependencies = [ "proc-macro-utils", "proc-macro2", @@ -4247,7 +4247,7 @@ dependencies = [ [[package]] name = "graphman" -version = "0.42.1" +version = "0.43.0" dependencies = [ "anyhow", "diesel", @@ -4262,7 +4262,7 @@ dependencies = [ [[package]] name = "graphman-server" -version = "0.42.1" +version = "0.43.0" dependencies = [ "anyhow", "async-graphql", @@ -4288,7 +4288,7 @@ dependencies = [ [[package]] name = "graphman-store" -version = "0.42.1" +version = "0.43.0" dependencies = [ "anyhow", "async-trait", @@ -8151,7 +8151,7 @@ dependencies = [ [[package]] name = "test-store" -version = "0.42.1" +version = "0.43.0" dependencies = [ "async-trait", "diesel", diff --git a/Cargo.toml b/Cargo.toml index 63831cb1ee5..f9dd2c68c74 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -26,7 +26,7 @@ members = [ ] [workspace.package] -version = "0.42.1" +version = "0.43.0" edition = "2024" authors = ["The Graph core developers & contributors"] readme = "README.md" diff --git a/NEWS.md b/NEWS.md index 1c8682503af..2a4fa2f7d6a 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,43 @@ # NEWS +## v0.43.0 + +### What's New + +- **`skipDuplicates` for immutable entities.** A new `skipDuplicates` parameter on the `@entity` directive (`@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](https://github.com/graphprotocol/graph-node/pull/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 in `config.toml` instead of relying on global environment variables. Fully backwards compatible — env vars remain the fallback. ([#6459](https://github.com/graphprotocol/graph-node/pull/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](https://github.com/graphprotocol/graph-node/pull/6430)) +- Warn on startup when running a debug build, with `[DEBUG-BUILD]` prefix on all log lines. ([#6488](https://github.com/graphprotocol/graph-node/pull/6488)) + +### Improvements + +- **Call cache eviction rewrite.** Replaced the old per-contract iteration approach with ctid-based join deletes against the `call_meta` table, significantly faster on large `call_cache` tables. The old `--ttl-max-contracts` flag 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](https://github.com/graphprotocol/graph-node/pull/6476)) ([#6477](https://github.com/graphprotocol/graph-node/pull/6477)) +- Reduced unnecessary `eth_getBlockByHash` and `eth_getBlockByNumber` RPC calls by checking the block cache first in `block_pointer_from_number` and `fetch_full_block_with_rpc`. ([#6491](https://github.com/graphprotocol/graph-node/pull/6491), partially reverted by [#6537](https://github.com/graphprotocol/graph-node/pull/6537)) +- Header-only `ChainStore` query methods (`ancestor_block_ptr`, `block_parent_ptr`) skip deserializing the full block `data` JSONB column when only hash/number/parent are needed. ([#6456](https://github.com/graphprotocol/graph-node/pull/6456)) +- Batch checking for update attempts on immutable entities, reducing per-entity overhead. +- Node name is now used as the PostgreSQL `application_name` when `PGAPPNAME` is not set, making it easier to identify graph-node connections in `pg_stat_activity`. + +### Bug Fixes + +- Fixed dropped block trigger when `once` and `polling` filters match the same block — only one trigger type was firing. ([#6530](https://github.com/graphprotocol/graph-node/pull/6530)) +- Fixed block stream ignoring configured `endBlock` in two cases: the block-skip optimization bypassing the `max_end_block` check, and `max_end_block` being set to `None` when multiple data sources share the same `endBlock`. ([#6474](https://github.com/graphprotocol/graph-node/pull/6474)) +- Fixed GraphQL introspection not returning `isDeprecated: false` for `__InputValue`, which caused some client libraries to fail. ([#6475](https://github.com/graphprotocol/graph-node/pull/6475)) +- Fixed IPC provider connections failing when configured with `ipc://` or `file://` URLs — the URL was passed directly to the transport instead of extracting the file path. ([#6443](https://github.com/graphprotocol/graph-node/pull/6443)) +- Fixed `graphman config pools` not working due to hardcoded pool size override. ([#6444](https://github.com/graphprotocol/graph-node/pull/6444)) +- Fixed unfail retry mechanism stopping after the first attempt when the deployment head was still behind the error block. ([#6529](https://github.com/graphprotocol/graph-node/pull/6529)) + +### gnd (Graph Node Dev) + +- `gnd indexer` command that delegates to `graph-indexer`, allowing indexer management (allocations, rules, cost models, status) directly through gnd. ([#6492](https://github.com/graphprotocol/graph-node/pull/6492)) +- `gnd deploy` now prompts for `--version-label` in interactive mode and requires it in non-interactive mode. ([#6532](https://github.com/graphprotocol/graph-node/pull/6532)) +- Test framework improvements: partial receipt.logs support, mock IPFS/Arweave clients for file data source testing. ([#6442](https://github.com/graphprotocol/graph-node/pull/6442)) + +### Contributors + +Thanks to all contributors for this release: @aayushbaluni, @dimitrovmaksim, @incrypto32, @isum, @lutter, @suntzu + +**Full Changelog**: https://github.com/graphprotocol/graph-node/compare/v0.42.1...v0.43.0 + ## v0.42.1 ### Bug Fixes