Skip to content

v0.39.0

Compare
Choose a tag to compare
@encalypto encalypto released this 29 May 01:49
a52bba6

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