runtime: clh: minimum 10s timeout for CreateVM + BootVM

Relax the timeout for calling CLH's CreateVM + BootVM APIs. When
hitting the older 1s timeout, killing a half-booted Guest and
retrying the same boot sequence could have been wasteful and resulting
in unstable CI testing on slower Hosts.

Fixes: #9152

Signed-off-by: Dan Mihai <dmihai@microsoft.com>
This commit is contained in:
Dan Mihai 2024-02-24 19:15:57 +00:00
parent 4f3c83cd12
commit f4509b806b

View File

@ -75,6 +75,9 @@ const (
clhTimeout = 10 clhTimeout = 10
clhAPITimeout = 1 clhAPITimeout = 1
clhAPITimeoutConfidentialGuest = 20 clhAPITimeoutConfidentialGuest = 20
// Minimum timout for calling CreateVM followed by BootVM. Executing these two APIs
// might take longer than the value returned by getClhAPITimeout().
clhCreateAndBootVMMinimumTimeout = 10
// Timeout for hot-plug - hotplug devices can take more time, than usual API calls // Timeout for hot-plug - hotplug devices can take more time, than usual API calls
// Use longer time timeout for it. // Use longer time timeout for it.
clhHotPlugAPITimeout = 5 clhHotPlugAPITimeout = 5
@ -711,7 +714,11 @@ func (clh *cloudHypervisor) StartVM(ctx context.Context, timeout int) error {
} }
clh.state.PID = pid clh.state.PID = pid
ctx, cancel := context.WithTimeout(ctx, clh.getClhAPITimeout()*time.Second) bootTimeout := clh.getClhAPITimeout()
if bootTimeout < clhCreateAndBootVMMinimumTimeout {
bootTimeout = clhCreateAndBootVMMinimumTimeout
}
ctx, cancel := context.WithTimeout(ctx, bootTimeout*time.Second)
defer cancel() defer cancel()
if err := clh.bootVM(ctx); err != nil { if err := clh.bootVM(ctx); err != nil {