Skip to content

Commit 9c5d822

Browse files
authored
Merge pull request #5393 from stacks-network/fix/relayer-drain-channel
Fix: snappy downloader
2 parents 2456645 + 4c59af8 commit 9c5d822

File tree

23 files changed

+1950
-502
lines changed

23 files changed

+1950
-502
lines changed

stackslib/src/burnchains/burnchain.rs

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -702,6 +702,10 @@ impl Burnchain {
702702
}
703703

704704
pub fn get_burnchaindb_path(&self) -> String {
705+
if self.working_dir.as_str() == ":memory:" {
706+
return ":memory:".to_string();
707+
}
708+
705709
let chainstate_dir = Burnchain::get_chainstate_path_str(&self.working_dir);
706710
let mut db_pathbuf = PathBuf::from(&chainstate_dir);
707711
db_pathbuf.push("burnchain.sqlite");
@@ -743,12 +747,14 @@ impl Burnchain {
743747
/// Open just the burnchain database
744748
pub fn open_burnchain_db(&self, readwrite: bool) -> Result<BurnchainDB, burnchain_error> {
745749
let burnchain_db_path = self.get_burnchaindb_path();
746-
if let Err(e) = fs::metadata(&burnchain_db_path) {
747-
warn!(
748-
"Failed to stat burnchain DB path '{}': {:?}",
749-
&burnchain_db_path, &e
750-
);
751-
return Err(burnchain_error::DBError(db_error::NoDBError));
750+
if burnchain_db_path != ":memory:" {
751+
if let Err(e) = fs::metadata(&burnchain_db_path) {
752+
warn!(
753+
"Failed to stat burnchain DB path '{}': {:?}",
754+
&burnchain_db_path, &e
755+
);
756+
return Err(burnchain_error::DBError(db_error::NoDBError));
757+
}
752758
}
753759
test_debug!(
754760
"Open burnchain DB at {} (rw? {})",

stackslib/src/burnchains/db.rs

Lines changed: 30 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1000,33 +1000,38 @@ impl BurnchainDB {
10001000
readwrite: bool,
10011001
) -> Result<BurnchainDB, BurnchainError> {
10021002
let mut create_flag = false;
1003-
let open_flags = match fs::metadata(path) {
1004-
Err(e) => {
1005-
if e.kind() == io::ErrorKind::NotFound {
1006-
// need to create
1007-
if readwrite {
1008-
create_flag = true;
1009-
let ppath = Path::new(path);
1010-
let pparent_path = ppath
1011-
.parent()
1012-
.unwrap_or_else(|| panic!("BUG: no parent of '{}'", path));
1013-
fs::create_dir_all(&pparent_path)
1014-
.map_err(|e| BurnchainError::from(DBError::IOError(e)))?;
1015-
1016-
OpenFlags::SQLITE_OPEN_READ_WRITE | OpenFlags::SQLITE_OPEN_CREATE
1003+
let open_flags = if path == ":memory:" {
1004+
create_flag = true;
1005+
OpenFlags::SQLITE_OPEN_READ_WRITE | OpenFlags::SQLITE_OPEN_CREATE
1006+
} else {
1007+
match fs::metadata(path) {
1008+
Err(e) => {
1009+
if e.kind() == io::ErrorKind::NotFound {
1010+
// need to create
1011+
if readwrite {
1012+
create_flag = true;
1013+
let ppath = Path::new(path);
1014+
let pparent_path = ppath
1015+
.parent()
1016+
.unwrap_or_else(|| panic!("BUG: no parent of '{}'", path));
1017+
fs::create_dir_all(&pparent_path)
1018+
.map_err(|e| BurnchainError::from(DBError::IOError(e)))?;
1019+
1020+
OpenFlags::SQLITE_OPEN_READ_WRITE | OpenFlags::SQLITE_OPEN_CREATE
1021+
} else {
1022+
return Err(BurnchainError::from(DBError::NoDBError));
1023+
}
10171024
} else {
1018-
return Err(BurnchainError::from(DBError::NoDBError));
1025+
return Err(BurnchainError::from(DBError::IOError(e)));
10191026
}
1020-
} else {
1021-
return Err(BurnchainError::from(DBError::IOError(e)));
10221027
}
1023-
}
1024-
Ok(_md) => {
1025-
// can just open
1026-
if readwrite {
1027-
OpenFlags::SQLITE_OPEN_READ_WRITE
1028-
} else {
1029-
OpenFlags::SQLITE_OPEN_READ_ONLY
1028+
Ok(_md) => {
1029+
// can just open
1030+
if readwrite {
1031+
OpenFlags::SQLITE_OPEN_READ_WRITE
1032+
} else {
1033+
OpenFlags::SQLITE_OPEN_READ_ONLY
1034+
}
10301035
}
10311036
}
10321037
};
@@ -1089,7 +1094,7 @@ impl BurnchainDB {
10891094
let conn = sqlite_open(path, open_flags, true)?;
10901095
let mut db = BurnchainDB { conn };
10911096

1092-
if readwrite {
1097+
if readwrite || path == ":memory:" {
10931098
db.add_indexes()?;
10941099
}
10951100
Ok(db)

stackslib/src/chainstate/nakamoto/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -328,7 +328,7 @@ pub trait StacksDBIndexed {
328328
fn get(&mut self, tip: &StacksBlockId, key: &str) -> Result<Option<String>, DBError>;
329329
fn sqlite(&self) -> &Connection;
330330

331-
/// Get the ancestor block hash given a height
331+
/// Get the ancestor block hash given a coinbase height
332332
fn get_ancestor_block_id(
333333
&mut self,
334334
coinbase_height: u64,

0 commit comments

Comments
 (0)