Skip to content

Commit 4f9cbc4

Browse files
authored
reorg loop fix (#316)
1 parent 6a6bbd9 commit 4f9cbc4

1 file changed

Lines changed: 8 additions & 4 deletions

File tree

internal/libs/clickhouse.go

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ func GetBlockHeadersForReorgCheck(chainId uint64, startBlockNumber uint64, endBl
180180
length := endBlockNumber - startBlockNumber + 1
181181
blocksRaw := make([]*common.Block, length)
182182

183-
query := fmt.Sprintf("SELECT chain_id, block_number, hash, parent_hash FROM %s.blocks WHERE chain_id = %d AND block_number BETWEEN %d AND %d order by block_number",
183+
query := fmt.Sprintf("SELECT chain_id, block_number, hash, parent_hash FROM %s.blocks FINAL WHERE chain_id = %d AND block_number BETWEEN %d AND %d order by block_number",
184184
config.Cfg.CommitterClickhouseDatabase,
185185
chainId,
186186
startBlockNumber,
@@ -414,8 +414,10 @@ func GetTransactionMismatchRangeFromClickHouseV2(chainId uint64, startBlockNumbe
414414
}
415415

416416
// Aggregate transaction counts per block from the transactions table.
417+
// FINAL collapses ReplacingMergeTree duplicates per primary key so that
418+
// stale (pre-reorg) rows and tombstones don't inflate the count.
417419
query := fmt.Sprintf(
418-
"SELECT block_number, count() AS tx_count FROM %s.transactions WHERE chain_id = %d AND block_number BETWEEN %d AND %d GROUP BY block_number ORDER BY block_number",
420+
"SELECT block_number, count() AS tx_count FROM %s.transactions FINAL WHERE chain_id = %d AND block_number BETWEEN %d AND %d GROUP BY block_number ORDER BY block_number",
419421
config.Cfg.CommitterClickhouseDatabase,
420422
chainId,
421423
startBlockNumber,
@@ -491,8 +493,10 @@ func GetLogsMismatchRangeFromClickHouseV2(chainId uint64, startBlockNumber uint6
491493
}
492494

493495
// Aggregate log counts and max log_index per block from the logs table.
496+
// FINAL collapses ReplacingMergeTree duplicates per primary key so that
497+
// stale (pre-reorg) rows and tombstones don't inflate the count.
494498
query := fmt.Sprintf(
495-
"SELECT block_number, count() AS log_count, max(log_index) AS max_log_index FROM %s.logs WHERE chain_id = %d AND block_number BETWEEN %d AND %d GROUP BY block_number ORDER BY block_number",
499+
"SELECT block_number, count() AS log_count, max(log_index) AS max_log_index FROM %s.logs FINAL WHERE chain_id = %d AND block_number BETWEEN %d AND %d GROUP BY block_number ORDER BY block_number",
496500
config.Cfg.CommitterClickhouseDatabase,
497501
chainId,
498502
startBlockNumber,
@@ -560,7 +564,7 @@ func getBlocksFromV2(chainId uint64, startBlockNumber uint64, endBlockNumber uin
560564
length := endBlockNumber - startBlockNumber + 1
561565
blocksRaw := make([]common.Block, length)
562566

563-
query := fmt.Sprintf("SELECT %s FROM %s.blocks WHERE chain_id = %d AND block_number BETWEEN %d AND %d order by block_number",
567+
query := fmt.Sprintf("SELECT %s FROM %s.blocks FINAL WHERE chain_id = %d AND block_number BETWEEN %d AND %d order by block_number",
564568
strings.Join(defaultBlockFields, ", "),
565569
config.Cfg.CommitterClickhouseDatabase,
566570
chainId,

0 commit comments

Comments
 (0)