mirror of https://github.com/oxen-io/lokinet
periodic nodedb flush
This commit is contained in:
parent
c7b94f32be
commit
b56a3528db
|
@ -214,6 +214,7 @@ llarp_nodedb::Load(const fs::path &path)
|
|||
if(l > 0)
|
||||
loaded += l;
|
||||
}
|
||||
m_NextSaveToDisk = llarp::time_now_ms() + m_SaveInterval;
|
||||
return loaded;
|
||||
}
|
||||
|
||||
|
@ -243,10 +244,19 @@ llarp_nodedb::SaveAll()
|
|||
}
|
||||
}
|
||||
|
||||
bool
|
||||
llarp_nodedb::ShouldSaveToDisk(llarp_time_t now) const
|
||||
{
|
||||
if(now == 0)
|
||||
now = llarp::time_now_ms();
|
||||
return m_NextSaveToDisk > 0 && m_NextSaveToDisk <= now;
|
||||
}
|
||||
|
||||
void
|
||||
llarp_nodedb::AsyncFlushToDisk()
|
||||
{
|
||||
disk->addJob(std::bind(&llarp_nodedb::SaveAll, this));
|
||||
m_NextSaveToDisk = llarp::time_now_ms() + m_SaveInterval;
|
||||
}
|
||||
|
||||
ssize_t
|
||||
|
|
|
@ -52,6 +52,10 @@ struct llarp_nodedb
|
|||
|
||||
std::shared_ptr< llarp::thread::ThreadPool > disk;
|
||||
mutable llarp::util::Mutex access; // protects entries
|
||||
/// time for next save to disk event, 0 if never happened
|
||||
llarp_time_t m_NextSaveToDisk = 0;
|
||||
/// how often to save to disk
|
||||
const llarp_time_t m_SaveInterval = 60 * 5 * 1000;
|
||||
|
||||
struct NetDBEntry
|
||||
{
|
||||
|
@ -67,6 +71,10 @@ struct llarp_nodedb
|
|||
NetDBMap_t entries GUARDED_BY(access);
|
||||
fs::path nodePath;
|
||||
|
||||
/// return true if we should save our nodedb to disk
|
||||
bool
|
||||
ShouldSaveToDisk(llarp_time_t now = 0) const;
|
||||
|
||||
bool
|
||||
Remove(const llarp::RouterID &pk) LOCKS_EXCLUDED(access);
|
||||
|
||||
|
|
|
@ -727,12 +727,17 @@ namespace llarp
|
|||
|
||||
if(rpcCaller)
|
||||
rpcCaller->Tick(now);
|
||||
// save profiles async
|
||||
// save profiles
|
||||
if(routerProfiling().ShouldSave(now))
|
||||
{
|
||||
diskworker()->addJob(
|
||||
[&]() { routerProfiling().Save(routerProfilesFile.c_str()); });
|
||||
}
|
||||
// save nodedb
|
||||
if(nodedb()->ShouldSaveToDisk(now))
|
||||
{
|
||||
nodedb()->AsyncFlushToDisk();
|
||||
}
|
||||
|
||||
// get connected peers
|
||||
std::set< dht::Key_t > peersWeHave;
|
||||
|
|
Loading…
Reference in New Issue