diff --git a/plugin/kvm/src/main/java/org/zstack/kvm/KVMHostHttpCallMsg.java b/plugin/kvm/src/main/java/org/zstack/kvm/KVMHostHttpCallMsg.java index 9e2730d3b08..ccaee04cda9 100644 --- a/plugin/kvm/src/main/java/org/zstack/kvm/KVMHostHttpCallMsg.java +++ b/plugin/kvm/src/main/java/org/zstack/kvm/KVMHostHttpCallMsg.java @@ -1,11 +1,15 @@ package org.zstack.kvm; +import org.zstack.core.timeout.ApiTimeoutManagerImpl; +import org.zstack.header.HasThreadContext; import org.zstack.header.host.HostMessage; import org.zstack.header.log.NoLogging; import org.zstack.header.message.CarrierMessage; import org.zstack.header.message.NeedReplyMessage; import org.zstack.utils.gson.JSONObjectUtil; +import java.util.Map; + public abstract class KVMHostHttpCallMsg extends NeedReplyMessage implements HostMessage, CarrierMessage { private String path; @NoLogging(behavior = NoLogging.Behavior.Auto, classNameField = "commandClassName") @@ -39,6 +43,15 @@ public String getCommand() { } public void setCommand(Object command) { + if (command instanceof HasThreadContext && getTimeout() != -1) { + Map taskContext = ((HasThreadContext) command).getTaskContext(); + if (taskContext != null) { + taskContext.put(ApiTimeoutManagerImpl.TASK_CONTEXT_MESSAGE_TIMEOUT, String.valueOf(getTimeout())); + taskContext.put(ApiTimeoutManagerImpl.TASK_CONTEXT_MESSAGE_DEADLINE, + String.valueOf(getMessageDeadline() != -1 ? getMessageDeadline() : + System.currentTimeMillis() + getTimeout())); + } + } this.command = JSONObjectUtil.toJsonString(command); commandClassName = command.getClass().getName(); }