fix: keep trying opening rocksdb conn if failing

This commit is contained in:
Ludo Galabru
2023-08-15 16:21:30 +02:00
parent 81d85759a4
commit dbc794a0d4
4 changed files with 16 additions and 11 deletions

View File

@@ -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);
}
}

View File

@@ -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();

View File

@@ -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"));
}

View File

@@ -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;