Skip to content

Commit 7b8db8f

Browse files
authored
api should not load snapshot db if --from-genesis (#2216)
1 parent fcc51f4 commit 7b8db8f

File tree

1 file changed

+50
-42
lines changed

1 file changed

+50
-42
lines changed

components/stacks-network/src/orchestrator.rs

Lines changed: 50 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -460,7 +460,7 @@ impl DevnetOrchestrator {
460460
&format!("http://localhost:{stacks_api_port}/doc"),
461461
);
462462

463-
match self.boot_stacks_api_container(ctx).await {
463+
match self.boot_stacks_api_container(ctx, no_snapshot).await {
464464
Ok(_) => {}
465465
Err(message) => {
466466
let _ = event_tx.send(DevnetEvent::FatalError(message.clone()));
@@ -1544,7 +1544,11 @@ db_path = "stacks-signer-{signer_id}.sqlite"
15441544
}
15451545
}
15461546
}
1547-
pub async fn boot_stacks_api_container(&self, ctx: &Context) -> Result<(), String> {
1547+
pub async fn boot_stacks_api_container(
1548+
&self,
1549+
ctx: &Context,
1550+
no_snapshot: bool,
1551+
) -> Result<(), String> {
15481552
let container = self
15491553
.stacks_api_container_id
15501554
.as_ref()
@@ -1565,49 +1569,53 @@ db_path = "stacks-signer-{signer_id}.sqlite"
15651569
};
15661570

15671571
// Check if we need to import events
1568-
if let Some(events_path) = self.has_events_to_import(devnet_config) {
1569-
// Wait for API to be ready
1570-
// TODO: don't do this..
1571-
std::thread::sleep(Duration::from_secs(8));
1572-
1573-
ctx.try_log(|logger| {
1574-
slog::info!(logger, "Importing events from {}", events_path.display())
1575-
});
1576-
1577-
// Copy the events file to the container
1578-
let container_name = format!("stacks-api.{}", self.network_name);
1579-
let copy_command = format!(
1580-
"docker cp {} {}:/tmp/events_cache.tsv",
1581-
events_path.display(),
1582-
container_name
1583-
);
1584-
let output = run_command(&copy_command)
1585-
.map_err(|e| format!("Failed to copy events file to container: {e}"))?;
1586-
1587-
if !output.status.success() {
1588-
return Err(format!(
1589-
"Copy command failed: {}",
1590-
String::from_utf8_lossy(&output.stderr)
1591-
));
1592-
}
1593-
1594-
// Run the import command
1595-
let import_command = format!(
1596-
"docker exec {container_name} node /app/lib/index.js import-events --file /tmp/events_cache.tsv --wipe-db"
1597-
);
1598-
let output = run_command(&import_command)
1599-
.map_err(|e| format!("Failed to import events: {e}"))?;
1572+
if !no_snapshot {
1573+
if let Some(events_path) = self.has_events_to_import(devnet_config) {
1574+
// Wait for API to be ready
1575+
// TODO: don't do this..
1576+
std::thread::sleep(Duration::from_secs(8));
16001577

1601-
if !output.status.success() {
16021578
ctx.try_log(|logger| {
1603-
slog::warn!(
1604-
logger,
1605-
"Events import failed: {}",
1606-
String::from_utf8_lossy(&output.stderr)
1607-
)
1579+
slog::info!(logger, "Importing events from {}", events_path.display())
16081580
});
1609-
} else {
1610-
ctx.try_log(|logger| slog::info!(logger, "Events import completed successfully"));
1581+
1582+
// Copy the events file to the container
1583+
let container_name = format!("stacks-api.{}", self.network_name);
1584+
let copy_command = format!(
1585+
"docker cp {} {}:/tmp/events_cache.tsv",
1586+
events_path.display(),
1587+
container_name
1588+
);
1589+
let output = run_command(&copy_command)
1590+
.map_err(|e| format!("Failed to copy events file to container: {e}"))?;
1591+
1592+
if !output.status.success() {
1593+
return Err(format!(
1594+
"Copy command failed: {}",
1595+
String::from_utf8_lossy(&output.stderr)
1596+
));
1597+
}
1598+
1599+
// Run the import command
1600+
let import_command = format!(
1601+
"docker exec {container_name} node /app/lib/index.js import-events --file /tmp/events_cache.tsv --wipe-db"
1602+
);
1603+
let output = run_command(&import_command)
1604+
.map_err(|e| format!("Failed to import events: {e}"))?;
1605+
1606+
if !output.status.success() {
1607+
ctx.try_log(|logger| {
1608+
slog::warn!(
1609+
logger,
1610+
"Events import failed: {}",
1611+
String::from_utf8_lossy(&output.stderr)
1612+
)
1613+
});
1614+
} else {
1615+
ctx.try_log(|logger| {
1616+
slog::info!(logger, "Events import completed successfully")
1617+
});
1618+
}
16111619
}
16121620
}
16131621
Ok(())

0 commit comments

Comments
 (0)