Open
Conversation
|
@ExoMonk is attempting to deploy a commit to the joshaavecom's projects Team on Vercel. A member of the Team first needs to authorize it. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Enables simultaneous PostgreSQL + ClickHouse writes in rindexer (and future ones). Events, checkpoints, reorg cleanup, and factory addresses now write to both backends in parallel when both are configured. Single-backend users see zero behavioral change.
What changes
New abstractions
Vec<Arc<dyn Database>>for paralleljoin_allwrites + typed postgres/clickhouse fields for backend-specific operations (checkpoints,reorg, DDL)Core updates
ContractEventProcessingConfig,FactoryEventProcessingConfig) now carry databases:DatabaseBackendsinstead of separate postgres/clickhouse fieldsEventProcessingConfigenum preserves.postgres()/.clickhouse()accessors + new.databases()accessorno_code.rscollapsed from two sequential if-let blocks to singledatabases.insert_bulk()callBreaking changes
None. Single-backend configs produce identical behavior and code-gen output. Inherent insert_bulk methods on PostgresClient / ClickhouseClient are preserved: Rust-mode users calling
pg.insert_bulk(...)directly still compile unchanged.Examples
If CH goes down, indexer continues writing to PG. CH circuit trips after 5 consecutive failures, probes every 60s. Large batches split into 1000-row chunks.
Error only if PG fails. CH failures are logged but tolerated. CH catches up from its stale checkpoint on restart.
Identical behavior to before. All new fields are optional with safe defaults.