Skip to content
This repository has been archived by the owner on Nov 15, 2023. It is now read-only.

Commit

Permalink
dirty changes...
Browse files Browse the repository at this point in the history
  • Loading branch information
tdimitrov committed Feb 9, 2023
1 parent e90097a commit 8b59b56
Showing 1 changed file with 38 additions and 59 deletions.
97 changes: 38 additions & 59 deletions node/overseer/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -761,65 +761,27 @@ where
let metrics = self.metrics.clone();
spawn_metronome_metrics(&mut self, metrics)?;

// block until major sync is done
gum::error!(target: LOG_TARGET, "Waiting for major sync"); // TODO: fix this log level
loop {
select! {
msg = self.events_rx.select_next_some() => {
match msg {
Event::MsgToSubsystem { msg, origin } => {
// gum::error!(
// target: LOG_TARGET,
// ?msg,
// ?origin,
// "Ignored MsgToSubsystem event during major sync");
self.route_message(msg.into(), origin).await?;
self.metrics.on_message_relayed();
}
Event::Stop => {
self.stop().await;
return Ok(());
}
Event::BlockImported(block) => {
// handle the event but don't send update
let _ = self.block_imported(block, false).await;
}
Event::BlockFinalized(block) => {
// handle event and break if finished syncing
let sync_complete = self.sync_oracle.finished_syncing();
self.block_finalized(block, sync_complete).await?;
if sync_complete {
gum::error!(target: LOG_TARGET, "Major sync complete"); // TODO: fix this log level
break;
}
}
Event::ExternalRequest(request) => {
self.handle_external_request(request);
}
}
},
res = self.running_subsystems.select_next_some() => {
gum::error!(
target: LOG_TARGET,
subsystem = ?res,
"subsystem finished unexpectedly during major sync",
);
self.stop().await;
return res;
},
// If sync is complete - send initial `ActiveLeavesUpdate`
// If not - save the initial active leaves. They will be sent later.
let mut leaf_sent = false;
if self.sync_oracle.finished_syncing() {
for (hash, number) in std::mem::take(&mut self.leaves) {
let _ = self.active_leaves.insert(hash, number);
if let Some((span, status)) = self.on_head_activated(&hash, None).await {
let update = ActiveLeavesUpdate::start_work(ActivatedLeaf {
hash,
number,
status,
span,
});
self.broadcast_signal(OverseerSignal::ActiveLeaves(update)).await?;
leaf_sent = true;
}
}
} else {
for (hash, number) in std::mem::take(&mut self.leaves) {
let _ = self.active_leaves.insert(hash, number);
}
}

// Generate initial events
for (hash, number) in self.active_leaves.clone().into_iter() {
let span = self.span_per_active_leaf.get(&hash).unwrap(); // TODO: FIX THIS!!!
let update = ActiveLeavesUpdate::start_work(ActivatedLeaf {
hash,
number,
status: LeafStatus::Fresh,
span: span.clone(),
});
self.broadcast_signal(OverseerSignal::ActiveLeaves(update)).await?;
}

loop {
Expand All @@ -835,10 +797,27 @@ where
return Ok(());
}
Event::BlockImported(block) => {
self.block_imported(block, true).await?;
let sync_complete = self.sync_oracle.finished_syncing();
gum::error!(target: LOG_TARGET, ?block.number, ?sync_complete, "Got BlockImported");
self.block_imported(block, sync_complete).await?;
leaf_sent = sync_complete;
}
Event::BlockFinalized(block) => {
let sync_complete = self.sync_oracle.finished_syncing();
gum::error!(target: LOG_TARGET, ?block.number, ?sync_complete, "Got BlockFinalized");
self.block_finalized(block, true).await?;
if sync_complete && !leaf_sent {
for (hash, number) in self.active_leaves.clone().into_iter() {
let span = self.span_per_active_leaf.get(&hash).unwrap(); // TODO: FIX THIS!!!
let update = ActiveLeavesUpdate::start_work(ActivatedLeaf {
hash,
number,
status: LeafStatus::Fresh,
span: span.clone(),
});
self.broadcast_signal(OverseerSignal::ActiveLeaves(update)).await?;
}
}
}
Event::ExternalRequest(request) => {
self.handle_external_request(request);
Expand Down

0 comments on commit 8b59b56

Please sign in to comment.