node: Populate refs db on startup
If the refs database is empty, populate it on startup. Also includes a script to clear it.
This commit is contained in:
parent
6be77ca9c3
commit
ad7ba82e6a
|
|
@ -555,6 +555,19 @@ where
|
||||||
let nid = self.node_id();
|
let nid = self.node_id();
|
||||||
self.started_at = Some(time);
|
self.started_at = Some(time);
|
||||||
|
|
||||||
|
// Populate refs database. This is only useful as part of the upgrade process for nodes
|
||||||
|
// that have been online since before the refs database was created.
|
||||||
|
match self.db.refs().count() {
|
||||||
|
Ok(0) => {
|
||||||
|
info!(target: "service", "Empty refs database, populating from storage..");
|
||||||
|
if let Err(e) = self.db.refs_mut().populate(&self.storage) {
|
||||||
|
error!(target: "service", "Failed to populate refs database: {e}");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Ok(n) => debug!(target: "service", "Refs database has {n} cached references"),
|
||||||
|
Err(e) => error!(target: "service", "Error checking refs database: {e}"),
|
||||||
|
}
|
||||||
|
|
||||||
// Ensure that our local node is in our address database.
|
// Ensure that our local node is in our address database.
|
||||||
self.db
|
self.db
|
||||||
.addresses_mut()
|
.addresses_mut()
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,18 @@
|
||||||
|
#!/bin/sh
|
||||||
|
set -e
|
||||||
|
|
||||||
|
DB="$(rad path)/node/node.db"
|
||||||
|
|
||||||
|
if command -v sqlite3 >/dev/null 2>&1; then
|
||||||
|
if [ -f "$DB" ]; then
|
||||||
|
echo -n "Clearing 'refs' table from $DB.. "
|
||||||
|
sqlite3 $DB "DELETE FROM refs;"
|
||||||
|
echo "done."
|
||||||
|
else
|
||||||
|
echo "fatal: database file does not exist"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
echo "fatal: sqlite3 is not installed"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
Loading…
Reference in New Issue