Skip to content

Commit 12a4dcb

Browse files
committed
Start vm health_check monitor only if the vm was in created state
Signed-off-by: Guvenc Gulce <guevenc.guelce@sap.com>
1 parent 63b9e59 commit 12a4dcb

File tree

2 files changed

+14
-7
lines changed

2 files changed

+14
-7
lines changed

feos/services/vm-service/src/dispatcher_handlers.rs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -518,7 +518,12 @@ pub(crate) async fn handle_start_vm_command(
518518
return;
519519
}
520520

521-
let cancel_bus = healthcheck_cancel_bus_tx.subscribe();
521+
let cancel_bus = if current_state == VmState::Stopped {
522+
None
523+
} else {
524+
Some(healthcheck_cancel_bus_tx.subscribe())
525+
};
526+
522527
tokio::spawn(worker::handle_start_vm(
523528
req,
524529
responder,

feos/services/vm-service/src/worker.rs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ use crate::{
88
use feos_proto::{
99
image_service::{ImageState as OciImageState, WatchImageStatusRequest},
1010
vm_service::{
11-
stream_vm_console_request as console_input, AttachDiskRequest,
12-
AttachDiskResponse, ConsoleData, CreateVmRequest, CreateVmResponse, DeleteVmRequest,
13-
DeleteVmResponse, GetVmRequest, PauseVmRequest, PauseVmResponse, PingVmRequest,
14-
PingVmResponse, RemoveDiskRequest, RemoveDiskResponse, ResumeVmRequest, ResumeVmResponse,
11+
stream_vm_console_request as console_input, AttachDiskRequest, AttachDiskResponse,
12+
ConsoleData, CreateVmRequest, CreateVmResponse, DeleteVmRequest, DeleteVmResponse,
13+
GetVmRequest, PauseVmRequest, PauseVmResponse, PingVmRequest, PingVmResponse,
14+
RemoveDiskRequest, RemoveDiskResponse, ResumeVmRequest, ResumeVmResponse,
1515
ShutdownVmRequest, ShutdownVmResponse, StartVmRequest, StartVmResponse,
1616
StreamVmConsoleRequest, StreamVmConsoleResponse, StreamVmEventsRequest, VmEvent, VmInfo,
1717
VmState, VmStateChangedEvent,
@@ -179,7 +179,7 @@ pub async fn handle_start_vm(
179179
responder: oneshot::Sender<Result<StartVmResponse, VmServiceError>>,
180180
hypervisor: Arc<dyn Hypervisor>,
181181
broadcast_tx: mpsc::Sender<VmEventWrapper>,
182-
cancel_bus: broadcast::Receiver<Uuid>,
182+
cancel_bus: Option<broadcast::Receiver<Uuid>>,
183183
) {
184184
let vm_id = req.vm_id.clone();
185185
let result = hypervisor.start_vm(req).await;
@@ -197,7 +197,9 @@ pub async fn handle_start_vm(
197197
)
198198
.await;
199199

200-
start_healthcheck_monitor(vm_id, hypervisor, broadcast_tx, cancel_bus);
200+
if let Some(cancel_bus) = cancel_bus {
201+
start_healthcheck_monitor(vm_id, hypervisor, broadcast_tx, cancel_bus);
202+
}
201203
}
202204

203205
if responder.send(result.map_err(Into::into)).is_err() {

0 commit comments

Comments
 (0)