Skip to content

Releases: graphprotocol/graph-node

v0.39.1

03 Jun 16:55
20fda1c
Compare
Choose a tag to compare

v0.39.1

Critical Fix

Event Transaction Log Index

  • Reverted transaction log index behavior: Fixed a regression introduced in v0.38.0 where event.transactionLogIndex was inadvertently changed to return the actual transaction log index instead of the log index (#6042)

    Impact: This change in v0.38.0 caused subgraph failures with duplicate ID errors for subgraphs using event.transactionLogIndex for entity ID generation. It could also lead to POI divergence between indexers running different versions.

    Note: While this restores the previous behavior, event.transactionLogIndex continues to return the same value as event.logIndex (not the actual transaction log index). Subgraph developers should use event.logIndex for unique log identification.


Upgrade Notes

Indexers running v0.38.0 who have synced subgraphs that use event.transactionLogIndex should:

  1. Upgrade to v0.39.1
  2. Rewind affected subgraphs to before they were synced with v0.38.0
  3. Resync to ensure POI convergence with the network

Contributors

Thanks to @lutter for the quick fix and the indexer community for identifying and helping diagnose this issue.


Full changelog: v0.39.0...v0.39.1

v0.39.0

29 May 01:49
a52bba6
Compare
Choose a tag to compare

v0.39.0

Breaking Changes

Database Schema Changes

  • Major schema migration: The subgraphs.subgraph_deployment table has been split into two tables: (#6003)

    • subgraphs.head - stores frequently changing metadata (block hash, block number, entity count, firehose cursor)
    • subgraphs.deployment - stores less frequently changing data

    Note: This migration will run automatically but may take time on large databases; anything beyond a minute or two will most likely be due to long-running queries blocking the migration. While it is possible to apply this migration with rolling updates to all graph-node processes, it is recommended to shut down all graph-node processes first and them start them up again.

    Note: External processes accessing the subgraph_deployment table, such as dashboards, will not work after the migration. Queries that these tools run will need to be updated. Joining the head and deployment table on id will yield the same data that used to live in the subgraph_deployment table, though a few columns were also renamed. See the documentation for details.

Removed Features

  • Arweave blockchain support removed - Arweave subgraphs are no longer supported (Arweave file data sources remain unaffected) (#5951)
  • graphman drop command removed - To remove a deployment, run graphman remove <name> for each name the deployment has (see graphman info), then run graphman unused record && graphman unused remove (#5974)

Behavior Changes

  • Failed subgraphs are now paused instead of unassigned - This prevents unwanted side effects like canceling active copy operations (#5971)
  • Various store errors are now classified as deterministic - May affect error handling in your monitoring (#5943)

New Features

Enhanced Pruning Management

  • Pruning status tracking: New database tables track pruning progress per deployment (#5949)
  • Pruning timeout protection: Long-running prune operations can be killed and retried if they exceed GRAPH_STORE_BATCH_TIMEOUT (#6002)
  • Better pruning estimates: Uses PostgreSQL statistics for more accurate predictions (requires PostgreSQL 17+ for full functionality) (#6012)
  • New graphman commands: (#5949)
    • graphman prune status - View status of prune operations
    • graphman prune run - Manually trigger pruning
    • graphman prune set - Configure pruning parameters

Block Ingestion Tools

  • graphman chain ingest <chain_name> <block_number> - Manually ingest specific blocks into the block cache (#5945)

IPFS Improvements

  • Configurable retry limits: Set max retry attempts with GRAPH_IPFS_MAX_ATTEMPTS (default: 100,000) (#5998)
  • Configurable timeouts: (e1d9876)
    • GRAPH_IPFS_REQUEST_TIMEOUT - Request timeout (default: 60s release, 1s debug)
    • Max retry delay increased to 60 seconds (#5995)

Improvements

Error Handling

  • Store errors now properly classified as deterministic vs non-deterministic (#5943)
  • Pruning errors no longer cause subgraph failure - they're logged and retried later (#5972)
  • Better error messages for:
    • Source subgraph manifest resolution (#5950)
    • Store write failures
    • Unique constraint violations (#5943)

Performance

  • Optimized GraphQL result caching (#6006)
  • Reduced code duplication in subgraph processing (#5952)

Operational

  • Pruning status history limited to last 5 runs per deployment (configurable via GRAPH_STORE_HISTORY_KEEP_STATUS) (#5949)
  • Deployments being pruned are properly handled during concurrent operations
  • Subgraph reassignment now shows the current node assignment (be6c9402)
  • CLI accepts bare numeric deployment IDs in all graphman commands (#5954)
  • Removed Ganache-specific chain handling - cleans up obsolete code (#5975)

Bug Fixes

  • Fixed VID sequence naming to comply with PostgreSQL 63-character limit (a322a634)
  • Fixed pruning of tables with VID sequences using CASCADE drops (#5968)
  • PostgreSQL unique constraint violations now lead to deterministic subgraph failures (#5943)
  • Fixed various edge cases in error classification (#5943)
  • Fixed numerical precision issues with large VID values (#5970)

Configuration Changes

New Environment Variables

  • GRAPH_IPFS_MAX_ATTEMPTS - Maximum IPFS retry attempts (default: 100,000)
  • GRAPH_IPFS_REQUEST_TIMEOUT - IPFS request timeout in seconds
  • GRAPH_STORE_BATCH_TIMEOUT - Timeout for batch operations like pruning
  • GRAPH_STORE_HISTORY_KEEP_STATUS - Number of pruning status records to keep (default: 5)
  • GRAPH_STORE_PRUNE_DISABLE_RANGE_BOUND_ESTIMATION - Disable new pruning estimation method (temporary compatibility flag)
  • GRAPH_STORE_ERRORS_ARE_NON_DETERMINISTIC - Revert to treating all errors as non-deterministic (temporary compatibility flag)

Contributors

Thanks to @lutter, @incrypto32, @zorancv, @shiyasmohd, @encalypto, @dwerner, @rotarur, and all other contributors for their work on this release.


Full changelog: v0.38.0...v0.39.0

v0.38.0

23 Apr 03:47
2342702
Compare
Choose a tag to compare

v0.38.0

Breaking changes

  • Removal of GraphQL subscriptions – the WebSocket server and every Subscription‑related code path were deleted. Applications that need live updates must switch to polling or an external event system. (#5836)
  • Removal of Cosmos support – all Cosmos chain and runtime code was removed. (#5833)
  • GRAPH_STORE_LAST_ROLLUP_FROM_POI deleted – this setting is no longer needed and will be ignored. (#5936)
  • No dependency on pg_stat_statements – Graph Node no longer executes pg_stat_statements_reset() after running database migrations and therefore is agnostic to whether that extension is installed or not (#5926)

New features & improvements

  1. Faster grafting and copying

    • A single graft/copy operation can now copy multiple tables in parallel. The number of parallel operations per graft/copy can be configured by setting GRAPH_STORE_BATCH_WORKERS, which defaults to 1. The total number of parallel operations is also limited by the fdw_pool_size which defaults to 5 and can be set in graph-node.toml
    • A large number of parallel grafts/copies might get blocked by the size of tokio's blocking thread pool. To avoid that block, the size of that pool can now be configured with GRAPH_MAX_BLOCKING_THREADS. It defaults to 512 (tokio's default) but setting this to a large number like 2048 should be safe. (#5948)
  2. Better control of graft/copy batches

    • To avoid table bloat, especially in subgraphs.subgraph_deployment, graft/copy splits the work up into smaller batches which should take GRAPH_STORE_BATCH_TARGET_DURATION each. Sometimes, the estimation for how long a batch will take goes horribly wrong. To guard against that, the new setting GRAPH_STORE_BATCH_TIMEOUT sets a timeout, which is unlimited by default. When set, batches that take longer than this are aborted and restarted with a much smaller size. (3c183731)
    • The number of rows that are fetched from the source shard for cross-shard grafts/copies in a single operation can be controlled through GRAPH_STORE_FDW_FETCH_SIZE. Its default has been lowered from 10 000 to 1 000, as larger sizes have shown to not be effective and actually cause the graft/copy to slow down in some cases (#5924)
    • Deployments being copied are excluded from pruning. (#5893)
    • Failed deployments can now be copied. (#5893)
  3. Composable subgraphs

    • Mutable entities are no longer allowed in composed subgraphs. (#5909)
    • Graft chains are validated for incompatible spec versions. (#5911)
    • New env‑var GRAPH_ETHEREUM_FORCE_RPC_FOR_BLOCK_PTRS prefers RPC over Firehose. (#5876)
  4. Aggregations

    • Aggregate entities can be ordered by any field, not only timestamp / id. (#5829)
  5. Start‑up hardening

    • Database setup now uses a single lock on the primary to prevent race conditions when multiple nodes start together. (#5926)
    • Shards with pool size 0 are filtered out at boot. (#5926)
  6. Graphman quality‑of‑life

    • Load management disabled while running graphman commands. (c765ce7a)
    • graphman copy create errors include the source deployment ID. (701f77d2)
  7. Combined views of sharded tables in the primary

    • The primary now has a namespace sharded that contains views that combines sharded tables such as subgraph_deployment into one view across shards. (#5820)

Fixes (selected)

  • Aggregate indexes were sometimes created twice when postponed. (4be64c16)
  • Duplicate remove operations in a write batch no longer cause failures. (17360f56)
  • Incorrect hashing when grafting from subgraphs with specVersion < 0.0.6 fixed. (#5917)
  • Firehose TLS configuration corrected. (36ad6a24)
  • Numerous small fixes in estimation of graft/copy batch size, namespace mapping, copy status display, and error messages.

Contributors

@lutter, @zorancv, @incrypto32, @filipeazevedo, @encalypto, @shiyasmohd, and many others – thank you for your work on this release.


Full changelog: v0.37.0...v0.38.0

v0.37.0

05 Mar 18:33
6bbd0d2
Compare
Choose a tag to compare

v0.37.0

What's new

  • Composable Subgraphs: A feature that enables subgraphs to use other subgraphs as data sources. This introduces modularity in subgraph development by allowing developers to create source subgraphs that can be referenced by dependent subgraphs. The feature supports up to 5 subgraph datasources.

    Note for Indexers: To deploy a dependent subgraph, the source subgraph(s) must already be deployed and available on your infrastructure.

  • YAML Parsing in Subgraph Mappings: Added YAML parsing support to subgraph mappings through new host functions, enabling subgraphs to parse YAML documents (including subgraph manifests) directly in their mappings

Improvements

  • Added new deployment metrics:
    • deployment_status: Tracks deployment lifecycle (starting, running, stopped, failed)
    • deployment_synced: Indicates if deployment has reached chain head
  • Optimized copy, graft, and prune operations for unevenly distributed rows
  • Improved error handling for substreams-powered subgraphs
  • Enhanced error handling when restarting paused subgraphs
  • Improved Firehose block request handling with retries and block cache
  • Fixed issue with metrics not reporting updated values

Graphman

  • Added unassign/reassign commands to GraphQL API

Breaking changes

  • The deployment_failed metric has been removed in favor of the new deployment_status metric

Contributors

Thanks to @zorancv, @shiyasmohd, @isum, @DaMandal0rian, @incrypto32, @King-witcher, and @lutter for contributing to this release.

Full Changelog: v0.36.1...v0.37.0

v0.36.1

28 Jan 18:20
Compare
Choose a tag to compare

v0.36.1

Note for indexers upgrading from a manually-downgraded version

This release requires Postgres schema migrations to be run. If your database was manually downgraded by running down.sql scripts, you need to take care to remove the related entries from the __diesel_schema_migrations table. For example; if you downgraded from v0.36.0 to v0.35.1, you likely ran the following migrations manually:

store/postgres/migrations/2024-06-11-084227_track-more-features-in-subgraph-features/down.sql
store/postgres/migrations/2024-07-22-140930_track_synced_date/down.sql                       
store/postgres/migrations/2024-08-14-205601_store_synced_at_block/down.sql                   
store/postgres/migrations/2024-10-01-100427_create_graphman_command_executions_table/down.sql

As such, you'll need to execute the following query in all shards before upgrading again:

DELETE FROM __diesel_schema_migrations
WHERE version IN (
    '20241001100427',
    '20240814205601',
    '20240722140930',
    '20240611084227'
)

If you ran down scripts for only some of these migrations, you need to only remove those from the __diesel_schema_migrations table.

This will ensure that migrations will automatically be re-run on upgrade to v0.36.1, restoring the database to a sane state.

Improvements

This release addresses several issues found in v0.36.0, notably:

  • Remove confusing IPFS warning messages (#5723)
  • Better concurrent IPFS client selection (#5723)
  • Bug with handling of enum arrays that can cause subgraphs to fail (#5372)

Additionally, this release has been tested for an extended period on the Upgrade Indexer, ensuring
issues in v0.36.0 related to IPFS, block ingestion, and migrations work as intended.

Additional changes:

  • Add subcommand description to graphman deploy (#5744)
  • Display log message argument when calling log.critical (#5744)

Thanks to @lutter, @shiyasmohd, and @isum for contributing to this release.

Full Changelog: v0.36.0...v0.36.1

v0.36.0

26 Nov 15:37
Compare
Choose a tag to compare

v0.36.0

Note on Firehose Extended Block Details

By default, all Firehose providers are required to support extended block details, as this is the safest option for a graph-node operator. Firehose providers that do not support extended block details for enabled chains are considered invalid and will not be used.

To disable checks for one or more chains, simply specify their names
in GRAPH_NODE_FIREHOSE_DISABLE_EXTENDED_BLOCKS_FOR_CHAINS as a comma separated list of chain names. Graph Node defaults to an empty list, which means that this feature is enabled for all chains.

What's new

  • Add support for substreams using 'index modules', 'block filters', 'store:sum_set'. (#5463)
  • Implement new IPFS client (#5600)
  • Add timestamp support to substreams. (#5641)
  • Add graph-indexed header to query responses. (#5710)
  • Use the new Firehose info endpoint. (#5672)
  • Store synced_at_block_number when a deployment syncs. (#5610)
  • Create nightly docker builds from master branch. (#5400)
  • Make sure transact_block_operations does not go backwards. (#5419)
  • Improve error message when store write fails. (#5420)
  • Allow generating map of section nesting in debug builds. (#5279)
  • Ensure substream module name is valid. (#5424)
  • Improve error message when resolving references. (#5385)
  • Check if subgraph head exists before trying to unfail. (#5409)
  • Check for EIP 1898 support when checking block receipts support. (#5406)
  • Use latest block hash for check_block_receipts. (#5427)
  • Handle null blocks from Lotus. (#5294)
  • Increase firehose grpc max decode size. (#5483)
  • Improve Environment variable docs, rename GRAPH_ETHEREUM_BLOCK_RECEIPTS_TIMEOUT to GRAPH_ETHEREUM_BLOCK_RECEIPTS_CHECK_TIMEOUT. (#5468)
  • Remove provider checks at startup. (#5337)
  • Track more features in subgraph features table. (#5479)
  • Implement is_duplicate_of for substreams. (#5482)
  • Add docs for GRAPH_POSTPONE_ATTRIBUTE_INDEX_CREATION. (#5515)
  • Improve error message for missing template during grafting. (#5464)
  • Enable "hard-coded" values in declarative eth_calls. (#5498)
  • Respect causality region in derived fields. (#5488)
  • Improve net_identifiers call with timeout. (#5549)
  • Add arbitrum-sepolia chain ID to GRAPH_ETH_CALL_NO_GAS default value. (#5504)
  • Disable genesis validation by default. (#5565)
  • Timeout when trying to get net_identifiers at startup. (#5568)
  • Only start substreams if no other block investor is available. (#5569)
  • Allow running a single test case for integration tests. (#5577)
  • Store timestamp when marking subgraph as synced. (#5566)
  • Document missing env vars. (#5580)
  • Return more features in status API. (#5582)
  • Respect substreams datasource startBlock. (#5617)
  • Update flagged dependencies. (#5659)
  • Add more debug logs when subgraph is marked unhealthy. (#5662)
  • Add config option for cache stores. (#5716)

Bug fixes

  • Add safety check when rewinding. (#5423)
  • Fix rewind for deployments with multiple names. (#5502)
  • Improve graphman copy performance (#5425)
  • Fix retrieving chain info with graphman for some edge cases. (#5516)
  • Improve graphman restart to handle multiple subgraph names for a deployment. (#5674)
  • Improve adapter startup. (#5503)
  • Detect Nethermind eth_call reverts. (#5533)
  • Fix genesis block fetching for substreams. (#5548)
  • Fix subgraph_resume being mislabelled as pause. (#5588)
  • Make SubgraphIndexingStatus.paused nullable. (#5551)
  • Fix a count aggregation bug. (#5639)
  • Fix prost generated file. (#5450)
  • Fix deployment_head metrics not progressing for substreams. (#5522)
  • Enable graft validation checks in debug builds. (#5584)
  • Use correct store when loading indexes for graft base. (#5616)
  • Sanitise columns in SQL. (#5578)
  • Truncate subgraph_features table before migrating. (#5505)
  • Consistently apply max decode size. (#5520)
  • Various docker packaging improvements (#5709) (#5711) (#5712) (#5620) (#5621)
  • Retry IPFS requests on Cloudflare 521 Web Server Down. (#5687)
  • Optimize IPFS retries. (#5698)
  • Exclude full-text search columns from entity queries. (#5693)
  • Do not allow multiple active runners for a subgraph. (#5715)
  • Stop subgraphs passing max endBlock. (#5583)
  • Do not repeat a rollup after restart in some corner cases. (#5675)

Graphman

  • Add command to update genesis block for a chain and to check genesis information against all providers. (#5517)
  • Create GraphQL API to execute commands (#5554)
  • Add graphman create/remove commands to GraphQL API. (#5685)

Contributors

Thanks to all contributors for this release: @dwerner, @encalypto, @incrypto32, @isum, @leoyvens, @lutter, @mangas, @sduchesneau, @shiyasmohd, @shuaibbapputty, @YaroShkvorets, @ziyadonji, @zorancv

Full Changelog: v0.35.1...v0.36.0

v0.35.1

20 Jun 15:20
Compare
Choose a tag to compare

New subgraph features

  • Declarative Eth calls - support executing Eth calls ahead of time and in parallel. Using this feature, the time for all calls goes from the sum of the time the calls take to the max. #5264
  • Support for differentiating EOA from smart contract accounts - ethereum.getCode can be used in mappings to check whether smart contract code is present at a given address. #5272
  • Support additional event filters - allow filtering on Indexed arguments. #5254
  • Aggregations now use Timestamp type for the timestamp attribute. #5321

Optimizations

  • Fetch block receipts in bulk - use eth_getBlockReceipts on supported providers to fetch receipts in bulk. #5341
  • Improve indices created to support aggregations. #5286
  • Use 'select by specific attributes' by default. #5311
  • Select only the needed specific attributes for query_window_one_entity. #5357
  • Check interface uniqueness in bulk. #5293
  • Stop using the IPFS stat API in favor of the more efficient cat API. #5284
  • Derive macros for CheapClone and CacheWeight. #5326
  • Periodically remove entries from the LayoutCache. #5324
  • Centralize and clarify our use of futures. #5345
  • Optimize subgraph ptr update. #5317

Graphman

  • Refactor manual index creation & add ddl tests. #5292
  • Refactor graphman rewind to use pause and resume logic. #5213

Firehose & Substreams

  • Add deployment id to Firehose connection headers. #5319
  • Improve the Ethereum Firehose codec. #5314
  • Fix static filters restart behaviour when using threshold. #5328
  • Try to be more consistent in Firehose parsing to address. #5360
  • Include 'provider' in various firehose log messages. #5384
  • Do not send all Firehose headers when its init triggers only. #5373

Robustness

  • Add a test for number_gte block constraints. #5383
  • Add zkSync fingerprint to the TOO_MANY_LOGS_FINGERPRINTS. #5307
  • Add exceptional case for transaction less event in zksync-era. #5338
  • Improve tests by moving subgraph param to TestContext. #5342

Notable dependency upgrades

  • Upgrade clap. #5174
  • Update syn to 2.0. #5339
  • Update tokio-tungstenite. #5344

Bug fixes

  • Avoid 'too many bind params' error in FindDerivedEntityQuery. #5318
  • Fix check for deterministic error. #5332
  • Fix incorrect comparison of transaction hash. #5374
  • Fix clap. #5389

Contributors

For readability not all commits and changes were noted here. To see a complete list head to the full changelog at v0.35.0...v0.35.1

v0.35.0

10 Apr 17:10
Compare
Choose a tag to compare

What's new

  • Aggregations - Declarative aggregations defined in the subgraph schema allow the developer to aggregate values on specific intervals using flexible aggregation functions. (#5082) (#5184) (#5209) (#5242) (#5208)
  • Add pause and resume to admin JSON-RPC API - Adds support for explicit pausing and resuming of subgraph deployments with a field tracking the paused state in indexerStatuses. (#5190)
  • Support eth_getBalance calls in subgraph mappings - Enables fetching the Eth balance of an address from the mappings using ethereum.getBalance(address). (#5202)
  • Add parentHash to _meta query - Particularly useful when polling for data each block to verify the sequence of blocks. (#5232)
  • Parallel execution of all top-level queries in a single query body (#5273)
  • The ElasticSearch index to which graph-node logs can now be configured with the GRAPH_ELASTIC_SEARCH_INDEX environment variable which defaults to subgraph. (#5210)
  • Some small prefetch simplifications. (#5132)
  • Migration changing the type of health column to text. (#5077)
  • Disable eth_call_execution_time metric by default. (#5164)
  • Call revert_state_to whenever blockstream is restarted. (#5187)
  • Pruning performance improvement: only analyze when rebuilding. (#5186)
  • Disallow grafts within the reorg threshold. (#5135)
  • Optimize subgraph synced check-less. (#5198)
  • Improve error log. (#5217)
  • Update provider docs. (#5216)
  • Downgrade 'Entity cache statistics' log to trace. (#5241)
  • Do not clone MappingEventHandlers in match_and_decode. (#5244)
  • Make batching conditional on caught-up status. (#5252)
  • Remove hack in chain_head_listener. (#5240)
  • Increase sleep time in write queue processing. (#5266)
  • Memoize Batch.indirect_weight. (#5276)
  • Optionally track detailed indexing gas metrics in csv. (#5215)
  • Do not use prefix comparisons for primary keys. (#5289)

Graphman

  • Add ability to list removed unused deployment by id. (#5152)
  • Add command to change block cache shard. (#5169)

Firehose and Substreams

  • Add key-based authentication for Firehose/Substreams providers. (#5259)
  • Increase blockstream buffer size for substreams. (#5182)
  • Improve substreams error handling. (#5160)
  • Reset substreams/firehose block ingestor backoff. (#5047)

Bug Fixes

  • Fix graphiql issue when querying subgraph names with multiple path segments. (#5136)
  • Fix change_health_column migration for sharded setup. (#5183)
  • Fix conversion of BlockTime for NEAR. (#5206)
  • Call revert_state_to to last good block instead of current block. (#5195)
  • Fix Action::block_finished. (#5218)
  • Fix runtime timeouts. (#5236)
  • Remove panic from rewind and truncate. (#5233)
  • Fix version stats for huge number of versions. (#5261)
  • Fix _meta query failure due to incorrect selection set use. (#5265)

Major dependency upgrades

Contributors

Thank you to all the contributors! @incrypto32, @mangas, @lutter, @leoyvens, @zorancv, @YaroShkvorets, @seem-less

Full Changelog: v0.34.1...v0.35.0

v0.34.1

08 Feb 21:23
Compare
Choose a tag to compare
$ docker pull graphprotocol/graph-node:v0.34.1

This a patch release that addresses a few issues

  • Fixes an issue that caused an increase in data size of /metrics endpoint of graph-node. (#5161). Indexers are advised to skip v0.34.0 and use v0.34.1
  • Fixes an issue that caused subgraphs with file data sources to skip non-deterministic errors that occurred in a file data source mapping handler.

v0.34.0

23 Jan 17:09
Compare
Choose a tag to compare
$ docker pull graphprotocol/graph-node:v0.34.0

What's New

  • Substreams as Source of Triggers for Subgraphs - This update significantly enhances subgraph functionality by enabling substreams to act as a source of triggers for running subgraph mappings. Developers can now directly run subgraph mappings on the data output from substreams, facilitating a more integrated and efficient workflow.(#4887) (#4916)
  • indexerHints in Manifest for Automated Pruning - This update introduces the ability for subgraph authors to specify indexerHints with a field prune in their manifest, indicating the desired extent of historical block data retention. This feature enables graph-node to automatically prune subgraphs when the stored history exceeds the specified limit, significantly improving query performance. This automated process eliminates the need for manual action by indexers for each subgraph. Indexers can also override user-set historyBlocks with the environment variable GRAPH_HISTORY_BLOCKS_OVERRIDE (#5032 (#5117)
  • Initial Starknet Support - Introducing initial Starknet support for graph-node, expanding indexing capabilities to the Starknet ecosystem. The current integration is in its early stages, with notable areas for development including the implementation of trigger filters and data source template support. Future updates will also bring substream support. (#4895)
  • endBlock Feature in Data Sources - This update adds the endBlock field for dataSources in subgraph manifest. By setting an endBlock, subgraph authors can define the exact block at which a data source will cease processing, ensuring no further triggers are processed beyond this point. (#4787
  • Autogenerated Int8 IDs in graph-node - Introduced support for using Int8 as the ID type for entities, with the added capability to auto-generate these IDs, enhancing flexibility and functionality in entity management. (#5029)
  • GraphiQL V2 Update - Updated GraphiQL query interface of graph-node to version 2. (#4677)
  • Sharding Guide for Graph-Node - A new guide has been added to graph-node documentation, explaining how to scale graph-node installations using sharding with multiple Postgres instances. Sharding Guide
  • Per-chain polling interval configuration for RPC Block Ingestors (#5066)
  • Metrics Enhancements(#5055) (#4937)
  • graph-node now avoids creating GIN indexes on array attributes to enhance database write performance, addressing the issue of expensive updates and underutilization in queries. (#4933)
  • The subgraphFeatures endpoint in graph-node has been updated to load features from subgraphs prior to their deployment. (#4864)
  • Improved log filtering performance in blockstream. (#5015)
  • Enhanced GraphQL error reporting by including __schema and __type fields in the results during indexing errors (#4968)

Bug fixes

  • Addressed a bug in the deduplication logic for Cosmos events, ensuring all distinct events are properly indexed and handled, especially when similar but not identical events occur within the same block. (#5112)
  • Fixed compatibility issues with ElasticSearch 8.X, ensuring proper log functionality. (#5013)
  • Resolved an issue when rewinding data sources across multiple blocks. In rare cases, when a subgraph had been rewound by multiple blocks, data sources 'from the future' could have been left behind. This release adds a database migration that fixes that. With very unlucky timing this migration might miss some subgraphs, which will later lead to an error assertion failed: self.hosts.last().and_then(|h| h.creation_block_number()) <= data_source.creation_block(). Should that happen, the migration script should be rerun against the affected shard. (#5083)
  • Increased the base backoff time for RPC, enhancing stability and reliability under load. (#4984)
  • Resolved an issue related to spawning offchain data sources from existing offchain data source mappings. (#5051)(#5092)
  • Resolved an issue where eth-call results for reverted calls were being cached in call cache. (#4879)
  • Fixed a bug in graphman's index creation to ensure entire String and Bytes columns are indexed rather than just their prefixes, resulting in optimized query performance and accuracy. (#4995)
  • Adjusted SubstreamsBlockIngestor to initiate at the chain's head block instead of starting at block zero when no cursor exists. (#4951)
  • Fixed a bug that caused incorrect progress reporting when copying subgraphs, ensuring accurate status updates. (#5075)

Graphman

  • Graphman Deploy Command - A new graphman deploy command has been introduced, simplifying the process of deploying subgraphs to graph-node. (#4930)

Complete changelog: v0.33.0...v0.34.0