github graphprotocol/graph-node v0.21.0

latest releases: fraction2, canary-3ff4a4f4d, canary-0a9d6a6c...
3 years ago

Source: Release notes

Feature: Database sharding

This release makes it possible to shard subgraph storage and spread subgraph deployments, and the load coming from indexing and querying them across multiple independent Postgres databases.

This feature is considered experimenatal. We encourage users to try this out in a test environment, but do not recommend it yet for production use. In particular, the details of how sharding is configured may change in backwards-incompatible ways in the future.

Breaking change: Require a block number in proofOfIndexing queries

This changes the proofOfIndexing GraphQL API from

type Query {
  proofOfIndexing(subgraph: String!, blockHash: Bytes!, indexer: Bytes): Bytes
}

to

type Query {
  proofOfIndexing(
    subgraph: String!
    blockNumber: Int!
    blockHash: Bytes!
    indexer: Bytes
  ): Bytes
}

This allows the indexer agent to provide a block number and hash to be able to obtain a POI even if this block is not cached in the Ethereum blocks cache. Prior to this, the POI would be null if this wasn't the case, even if the subgraph deployment in question was up to date, leading to the indexer missing out on indexing rewards.

Misc

  • Fix non-determinism caused by not (always) correctly reverting dynamic sources when handling reorgs.
  • Integrate the query cache into subscriptions to improve their performance.
  • Add graphman crate for managing Graph Node infrastructure.
  • Improve query cache logging.
  • Expose indexing status port (8030) from Docker image.
  • Remove support for unnecessary data sources templates inside subgraph data sources. They are only supported at the top level.
  • Avoid sending empty store events through the database.
  • Fix database connection deadlocks.
  • Rework the codebase to use anyhow instead of failure.
  • Log stack trace in case of database connection timeouts, to help with root-causing.
  • Fix stack overflows in GraphQL parsing.
  • Disable fulltext search by default (it is nondeterministic and therefore not currently supported in the network).

Don't miss a new graph-node release

NewReleases is sending notifications on new releases.