mirror of
https://github.com/alexgo-io/bitcoin-indexer.git
synced 2026-01-12 16:52:57 +08:00
fix: keep trying opening rocksdb conn if failing
This commit is contained in:
@@ -11,7 +11,7 @@ use rocksdb::DB;
|
||||
use crate::{
|
||||
config::Config,
|
||||
core::pipeline::{PostProcessorCommand, PostProcessorController, PostProcessorEvent},
|
||||
db::{insert_entry_in_blocks, open_readwrite_ordhook_db_conn_rocks_db, LazyBlock},
|
||||
db::{insert_entry_in_blocks, open_readwrite_ordhook_db_conn_rocks_db, LazyBlock, open_ordhook_db_conn_rocks_db_loop},
|
||||
};
|
||||
|
||||
pub fn start_block_archiving_processor(
|
||||
@@ -73,7 +73,7 @@ pub fn start_block_archiving_processor(
|
||||
|
||||
if processed_blocks % 10_000 == 0 {
|
||||
let _ = blocks_db_rw.flush_wal(true);
|
||||
blocks_db_rw = open_readwrite_ordhook_db_conn_rocks_db(&config.expected_cache_path(), &ctx).unwrap();
|
||||
blocks_db_rw = open_ordhook_db_conn_rocks_db_loop(true, &config.expected_cache_path(), &ctx);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ use crate::{
|
||||
},
|
||||
OrdhookConfig,
|
||||
},
|
||||
db::{get_any_entry_in_ordinal_activities, open_readonly_ordhook_db_conn},
|
||||
db::{get_any_entry_in_ordinal_activities, open_readonly_ordhook_db_conn, open_ordhook_db_conn_rocks_db_loop},
|
||||
};
|
||||
|
||||
use crate::db::{LazyBlockTransaction, TraversalResult};
|
||||
@@ -143,8 +143,8 @@ pub fn start_inscription_indexing_processor(
|
||||
|
||||
// Clear rocksdb db connection on a regular basis
|
||||
let _ = blocks_db_rw.flush_wal(true);
|
||||
blocks_db_rw = open_readwrite_ordhook_db_conn_rocks_db(&config.expected_cache_path(), &ctx).unwrap();
|
||||
|
||||
blocks_db_rw = open_ordhook_db_conn_rocks_db_loop(true, &config.expected_cache_path(), &ctx);
|
||||
|
||||
// Recreate sqlite db connection on a regular basis
|
||||
inscriptions_db_conn_rw =
|
||||
open_readwrite_ordhook_db_conn(&config.expected_cache_path(), &ctx).unwrap();
|
||||
|
||||
@@ -7,7 +7,7 @@ use std::path::PathBuf;
|
||||
use std::sync::Arc;
|
||||
|
||||
use crate::db::{
|
||||
find_lazy_block_at_block_height, open_readonly_ordhook_db_conn_rocks_db_loop, TransferData,
|
||||
find_lazy_block_at_block_height, open_ordhook_db_conn_rocks_db_loop, TransferData,
|
||||
};
|
||||
|
||||
use crate::db::{LazyBlockTransaction, TraversalResult};
|
||||
@@ -30,7 +30,7 @@ pub fn compute_satoshi_number(
|
||||
let mut ordinal_block_number = block_identifier.index as u32;
|
||||
let txid = transaction_identifier.get_8_hash_bytes();
|
||||
|
||||
let mut blocks_db = open_readonly_ordhook_db_conn_rocks_db_loop(&blocks_db_dir, &ctx);
|
||||
let mut blocks_db = open_ordhook_db_conn_rocks_db_loop(false, &blocks_db_dir, &ctx);
|
||||
|
||||
let (sats_ranges, inscription_offset_cross_outputs) = match traversals_cache
|
||||
.get(&(block_identifier.index as u32, txid.clone()))
|
||||
@@ -56,7 +56,7 @@ pub fn compute_satoshi_number(
|
||||
if attempt < 3 {
|
||||
attempt += 1;
|
||||
blocks_db =
|
||||
open_readonly_ordhook_db_conn_rocks_db_loop(&blocks_db_dir, &ctx);
|
||||
open_ordhook_db_conn_rocks_db_loop(false, &blocks_db_dir, &ctx);
|
||||
} else {
|
||||
return Err(format!("block #{ordinal_block_number} not in database"));
|
||||
}
|
||||
@@ -176,7 +176,7 @@ pub fn compute_satoshi_number(
|
||||
if attempt < 3 {
|
||||
attempt += 1;
|
||||
blocks_db =
|
||||
open_readonly_ordhook_db_conn_rocks_db_loop(&blocks_db_dir, &ctx);
|
||||
open_ordhook_db_conn_rocks_db_loop(false, &blocks_db_dir, &ctx);
|
||||
} else {
|
||||
return Err(format!("block #{ordinal_block_number} not in database"));
|
||||
}
|
||||
|
||||
@@ -229,10 +229,15 @@ pub fn open_readonly_ordhook_db_conn_rocks_db(
|
||||
Ok(db)
|
||||
}
|
||||
|
||||
pub fn open_readonly_ordhook_db_conn_rocks_db_loop(base_dir: &PathBuf, ctx: &Context) -> DB {
|
||||
pub fn open_ordhook_db_conn_rocks_db_loop(readwrite: bool, base_dir: &PathBuf, ctx: &Context) -> DB {
|
||||
let mut retries = 0;
|
||||
let blocks_db = loop {
|
||||
match open_readonly_ordhook_db_conn_rocks_db(&base_dir, &ctx) {
|
||||
let res = if readwrite {
|
||||
open_readwrite_ordhook_db_conn_rocks_db(&base_dir, &ctx)
|
||||
} else {
|
||||
open_readonly_ordhook_db_conn_rocks_db(&base_dir, &ctx)
|
||||
};
|
||||
match res {
|
||||
Ok(db) => break db,
|
||||
Err(e) => {
|
||||
retries += 1;
|
||||
|
||||
Reference in New Issue
Block a user