keep snapshot watcher alive

This commit is contained in:
Robert Habermeier 2016-09-05 14:25:56 +02:00
parent 2bf235e226
commit f0ef5e6943
3 changed files with 27 additions and 0 deletions

View File

@ -275,6 +275,13 @@ impl Service {
}
}
// delete the temporary snapshot dir if it does exist.
if let Err(e) = fs::remove_dir_all(service.temp_snapshot_dir()) {
if e.kind() != ErrorKind {
return Err(e.into())
}
}
Ok(service)
}

View File

@ -49,6 +49,8 @@ impl Broadcast for IoChannel<ClientIoMessage> {
None => return,
};
trace!(target: "snapshot_watcher", "broadcast: {}", num);
if let Err(e) = self.send(ClientIoMessage::TakeSnapshot(num)) {
warn!("Snapshot watcher disconnected from IoService: {}", e);
}
@ -88,6 +90,8 @@ impl ChainNotify for Watcher {
_: Vec<H256>,
_duration: u64)
{
trace!(target: "snapshot_watcher", "{} imported", imported.len());
let highest = imported.into_iter()
.filter_map(|h| self.oracle.to_number(h))
.filter(|&num| num >= self.period + self.history)

View File

@ -257,6 +257,22 @@ pub fn execute(cmd: RunCmd) -> Result<(), String> {
});
service.register_io_handler(io_handler).expect("Error registering IO handler");
// the watcher must be kept alive.
let _watcher = match cmd.no_periodic_snapshot {
true => None,
false => {
let watcher = Arc::new(snapshot::Watcher::new(
service.client(),
service.io().channel(),
SNAPSHOT_PERIOD,
SNAPSHOT_HISTORY,
));
service.add_notify(watcher.clone());
Some(watcher)
},
};
if !cmd.no_periodic_snapshot {
let watcher = snapshot::Watcher::new(
service.client(),