Commit a70203ae authored by Ryo Hashimoto's avatar Ryo Hashimoto Committed by Commit Bot

arc: Launch concierge before vsock proxy

Vsock proxy depends on /run/vm which is created by pre-start script in vm_concierge.conf.

BUG=b:143997789
TEST=Launch Play Store

Change-Id: I46ccb49cd19df98001f4a3937e7ab1c7e40d06c5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1901009Reviewed-by: default avatarYusuke Sato <yusukes@chromium.org>
Commit-Queue: Ryo Hashimoto <hashimoto@chromium.org>
Cr-Commit-Position: refs/heads/master@{#713342}
parent af464280
...@@ -393,10 +393,9 @@ class ArcVmClientAdapter : public ArcClientAdapter, ...@@ -393,10 +393,9 @@ class ArcVmClientAdapter : public ArcClientAdapter,
void UpgradeArc(UpgradeParams params, void UpgradeArc(UpgradeParams params,
chromeos::VoidDBusMethodCallback callback) override { chromeos::VoidDBusMethodCallback callback) override {
VLOG(1) << "Starting arcvm-server-proxy"; VLOG(1) << "Starting Concierge service";
chromeos::UpstartClient::Get()->StartJob( chromeos::DBusThreadManager::Get()->GetDebugDaemonClient()->StartConcierge(
kArcVmServerProxyJobName, /*environment=*/{}, base::BindOnce(&ArcVmClientAdapter::OnConciergeStarted,
base::BindOnce(&ArcVmClientAdapter::OnArcVmServerProxyJobStarted,
weak_factory_.GetWeakPtr(), std::move(params), weak_factory_.GetWeakPtr(), std::move(params),
std::move(callback))); std::move(callback)));
} }
...@@ -464,32 +463,30 @@ class ArcVmClientAdapter : public ArcClientAdapter, ...@@ -464,32 +463,30 @@ class ArcVmClientAdapter : public ArcClientAdapter,
std::move(callback).Run(true); std::move(callback).Run(true);
} }
void OnArcVmServerProxyJobStarted(UpgradeParams params, void OnConciergeStarted(UpgradeParams params,
chromeos::VoidDBusMethodCallback callback, chromeos::VoidDBusMethodCallback callback,
bool result) { bool success) {
if (!result) { if (!success) {
LOG(ERROR) << "Failed to start arcvm-server-proxy job"; LOG(ERROR) << "Failed to start Concierge service for arcvm";
std::move(callback).Run(false); std::move(callback).Run(false);
return; return;
} }
VLOG(1) << "Starting arcvm-server-proxy";
VLOG(1) << "Starting Concierge service"; chromeos::UpstartClient::Get()->StartJob(
chromeos::DBusThreadManager::Get()->GetDebugDaemonClient()->StartConcierge( kArcVmServerProxyJobName, /*environment=*/{},
base::BindOnce(&ArcVmClientAdapter::OnConciergeStarted, base::BindOnce(&ArcVmClientAdapter::OnArcVmServerProxyJobStarted,
weak_factory_.GetWeakPtr(), std::move(params), weak_factory_.GetWeakPtr(), std::move(params),
std::move(callback))); std::move(callback)));
} }
void OnConciergeStarted(UpgradeParams params, void OnArcVmServerProxyJobStarted(UpgradeParams params,
chromeos::VoidDBusMethodCallback callback, chromeos::VoidDBusMethodCallback callback,
bool success) { bool result) {
if (!success) { if (!result) {
LOG(ERROR) << "Failed to start Concierge service for arcvm"; LOG(ERROR) << "Failed to start arcvm-server-proxy job";
std::move(callback).Run(false); std::move(callback).Run(false);
return; return;
} }
VLOG(1) << "Concierge service started for arcvm.";
// TODO(pliard): Export host-side /data to the VM, and remove the call. Note // TODO(pliard): Export host-side /data to the VM, and remove the call. Note
// that ArcSessionImpl checks low disk conditions before calling UpgradeArc. // that ArcSessionImpl checks low disk conditions before calling UpgradeArc.
base::PostTaskAndReplyWithResult( base::PostTaskAndReplyWithResult(
......
...@@ -346,7 +346,8 @@ TEST_F(ArcVmClientAdapterTest, UpgradeArc_StartArcVmProxyFailure) { ...@@ -346,7 +346,8 @@ TEST_F(ArcVmClientAdapterTest, UpgradeArc_StartArcVmProxyFailure) {
upstart_client->set_start_job_result(false); upstart_client->set_start_job_result(false);
UpgradeArc(false); UpgradeArc(false);
EXPECT_FALSE(GetStartConciergeCalled()); EXPECT_TRUE(GetStartConciergeCalled());
EXPECT_FALSE(GetTestConciergeClient()->start_arc_vm_called());
EXPECT_FALSE(arc_instance_stopped_called()); EXPECT_FALSE(arc_instance_stopped_called());
upstart_client->set_start_job_result(true); upstart_client->set_start_job_result(true);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment