Skip to content

Commit 2289b20

Browse files
committed
Implement DB manager command
1 parent d5adc2e commit 2289b20

File tree

1 file changed

+32
-0
lines changed

1 file changed

+32
-0
lines changed

database_manager/src/lib.rs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,12 @@ pub fn inspect_cli_app<'a, 'b>() -> App<'a, 'b> {
5959
)
6060
}
6161

62+
pub fn prune_payloads_app<'a, 'b>() -> App<'a, 'b> {
63+
App::new("prune_payloads")
64+
.setting(clap::AppSettings::ColoredHelp)
65+
.about("Prune finalized execution payloads")
66+
}
67+
6268
pub fn cli_app<'a, 'b>() -> App<'a, 'b> {
6369
App::new(CMD)
6470
.visible_aliases(&["db"])
@@ -85,6 +91,7 @@ pub fn cli_app<'a, 'b>() -> App<'a, 'b> {
8591
.subcommand(migrate_cli_app())
8692
.subcommand(version_cli_app())
8793
.subcommand(inspect_cli_app())
94+
.subcommand(prune_payloads_app())
8895
}
8996

9097
fn parse_client_config<E: EthSpec>(
@@ -257,6 +264,30 @@ pub fn migrate_db<E: EthSpec>(
257264
)
258265
}
259266

267+
pub fn prune_payloads<E: EthSpec>(
268+
client_config: ClientConfig,
269+
runtime_context: &RuntimeContext<E>,
270+
log: Logger,
271+
) -> Result<(), Error> {
272+
let spec = &runtime_context.eth2_config.spec;
273+
let hot_path = client_config.get_db_path();
274+
let cold_path = client_config.get_freezer_db_path();
275+
276+
let db = HotColdDB::<E, LevelDB<E>, LevelDB<E>>::open(
277+
&hot_path,
278+
&cold_path,
279+
|_, _, _| Ok(()),
280+
client_config.store,
281+
spec.clone(),
282+
log,
283+
)?;
284+
285+
// If we're trigging a prune manually then ignore the check on the split's parent that bails
286+
// out early.
287+
let force = true;
288+
db.try_prune_execution_payloads(force)
289+
}
290+
260291
/// Run the database manager, returning an error string if the operation did not succeed.
261292
pub fn run<T: EthSpec>(cli_args: &ArgMatches<'_>, mut env: Environment<T>) -> Result<(), String> {
262293
let client_config = parse_client_config(cli_args, &env)?;
@@ -273,6 +304,7 @@ pub fn run<T: EthSpec>(cli_args: &ArgMatches<'_>, mut env: Environment<T>) -> Re
273304
let inspect_config = parse_inspect_config(cli_args)?;
274305
inspect_db(inspect_config, client_config, &context, log)
275306
}
307+
("prune_payloads", Some(_)) => prune_payloads(client_config, &context, log),
276308
_ => {
277309
return Err("Unknown subcommand, for help `lighthouse database_manager --help`".into())
278310
}

0 commit comments

Comments
 (0)