Browse Source

Check that dora daemon and node API versions match

tags/v0.2.3-rc
Philipp Oppermann 2 years ago
parent
commit
06e020472b
Failed to extract signature
3 changed files with 24 additions and 8 deletions
  1. +1
    -0
      apis/rust/node/src/daemon_connection/communication/mod.rs
  2. +22
    -8
      binaries/daemon/src/listener/mod.rs
  3. +1
    -0
      libraries/core/src/daemon_messages.rs

+ 1
- 0
apis/rust/node/src/daemon_connection/communication/mod.rs View File

@@ -37,6 +37,7 @@ impl DaemonChannel {
let msg = DaemonRequest::Register {
dataflow_id,
node_id,
dora_version: env!("CARGO_PKG_VERSION").to_owned(),
};
let reply = self
.request(&msg)


+ 22
- 8
binaries/daemon/src/listener/mod.rs View File

@@ -133,14 +133,23 @@ impl Listener {
DaemonRequest::Register {
dataflow_id,
node_id,
dora_version: node_api_version,
} => {
let reply = DaemonReply::Result(Ok(()));
match connection
.send_reply(reply)
let daemon_version = env!("CARGO_PKG_VERSION");
let result = if node_api_version == daemon_version {
Ok(())
} else {
Err(format!(
"version mismatch: node API v{node_api_version} is not compatible \
with daemon v{daemon_version}"
))
};
let send_result = connection
.send_reply(DaemonReply::Result(result.clone()))
.await
.wrap_err("failed to send register reply")
{
Ok(()) => {
.wrap_err("failed to send register reply");
match (result, send_result) {
(Ok(()), Ok(())) => {
let mut listener = Listener {
dataflow_id,
node_id,
@@ -158,8 +167,13 @@ impl Listener {
Err(err) => tracing::error!("{err:?}"),
}
}
Err(err) => {
tracing::warn!("{err:?}");
(Err(err), _) => {
tracing::warn!("failed to register node {dataflow_id}/{node_id}: {err}");
}
(Ok(()), Err(err)) => {
tracing::warn!(
"failed send register reply to node {dataflow_id}/{node_id}: {err:?}"
);
}
}
}


+ 1
- 0
libraries/core/src/daemon_messages.rs View File

@@ -37,6 +37,7 @@ pub enum DaemonRequest {
Register {
dataflow_id: DataflowId,
node_id: NodeId,
dora_version: String,
},
Subscribe,
SendMessage {


Loading…
Cancel
Save