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