Releases: graphprotocol/graph-node
v0.39.1
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 asevent.logIndex
(not the actual transaction log index). Subgraph developers should useevent.logIndex
for unique log identification.
Upgrade Notes
Indexers running v0.38.0 who have synced subgraphs that use event.transactionLogIndex
should:
- Upgrade to v0.39.1
- Rewind affected subgraphs to before they were synced with v0.38.0
- 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
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 thehead
anddeployment
table onid
will yield the same data that used to live in thesubgraph_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, rungraphman remove <name>
for each name the deployment has (seegraphman info
), then rungraphman 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 operationsgraphman prune run
- Manually trigger pruninggraphman 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:
Performance
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 secondsGRAPH_STORE_BATCH_TIMEOUT
- Timeout for batch operations like pruningGRAPH_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
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 executespg_stat_statements_reset()
after running database migrations and therefore is agnostic to whether that extension is installed or not (#5926)
New features & improvements
-
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 thefdw_pool_size
which defaults to 5 and can be set ingraph-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)
- 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
-
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 takeGRAPH_STORE_BATCH_TARGET_DURATION
each. Sometimes, the estimation for how long a batch will take goes horribly wrong. To guard against that, the new settingGRAPH_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)
- To avoid table bloat, especially in
-
Composable subgraphs
-
Aggregations
- Aggregate entities can be ordered by any field, not only
timestamp
/id
. (#5829)
- Aggregate entities can be ordered by any field, not only
-
Start‑up hardening
-
Graphman quality‑of‑life
-
Combined views of sharded tables in the primary
- The primary now has a namespace
sharded
that contains views that combines sharded tables such assubgraph_deployment
into one view across shards. (#5820)
- The primary now has a namespace
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
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 newdeployment_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
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 fromv0.36.0
tov0.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
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
toGRAPH_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
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 thetimestamp
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 efficientcat
API. #5284 - Derive macros for
CheapClone
andCacheWeight
. #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
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
- @itsjerryokolo made their first contribution in #5213! Thanks for the contribution @itsjerryokolo!🙌
- Thanks to all contributors to this release: @incrypto32, @lutter, @leoyvens, @mangas, @itsjerryokolo, @YaroShkvorets, @fordN, and of course the trusty @dependabot.
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
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 theGRAPH_ELASTIC_SEARCH_INDEX
environment variable which defaults tosubgraph
. (#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
$ 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 skipv0.34.0
and usev0.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
$ 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 specifyindexerHints
with a fieldprune
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 variableGRAPH_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 theendBlock
field for dataSources in subgraph manifest. By setting anendBlock
, 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 usingInt8
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