fix: restore automatic startup of local ADB server
This commit is contained in:
1 parent
f826bdf3b0
commit
49873e7f05
9 files changed
+211
-23
No files matched your search
@@ -25,6 +25,7 @@ import threading
|
||||
import time
|
||||
from typing import Any
|
||||
|
||||
from artemis.runtime.adb_endpoint import AdbSession, current_adb_endpoint
|
||||
from artemis.runtime.device_lock import DeviceExecutionLock
|
||||
from artemis.toolchain import toolchain
|
||||
from artemis.utils.logger import get_logger
|
||||
@@ -242,23 +243,29 @@ class DevicePool:
|
||||
|
||||
async def _start_adb_server(self, timeout: float) -> None:
|
||||
"""Best-effort bounded `adb start-server` so later queries hit a warm daemon."""
|
||||
endpoint = current_adb_endpoint()
|
||||
if not endpoint.is_local_default:
|
||||
return
|
||||
adb = self._resolve_adb()
|
||||
if not adb:
|
||||
return
|
||||
proc = None
|
||||
try:
|
||||
clean_env = os.environ.copy()
|
||||
clean_env.pop("ADB_SERVER_SOCKET", None)
|
||||
session = AdbSession(endpoint, adb_path=adb)
|
||||
proc = await asyncio.create_subprocess_exec(
|
||||
adb,
|
||||
"start-server",
|
||||
*session.command(["start-server"]),
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE,
|
||||
env=clean_env,
|
||||
env=session.environment(),
|
||||
)
|
||||
await asyncio.wait_for(proc.communicate(), timeout=timeout)
|
||||
stdout, stderr = await asyncio.wait_for(proc.communicate(), timeout=timeout)
|
||||
if proc.returncode != 0:
|
||||
output = (stderr or stdout).decode(errors="replace").strip()
|
||||
logger.warning(
|
||||
f"Local ADB server startup failed (exit {proc.returncode}): {output}"
|
||||
)
|
||||
except Exception as exc:
|
||||
logger.debug(f"adb start-server warm-up did not complete: {exc}")
|
||||
logger.warning(f"Local ADB server startup did not complete: {exc}")
|
||||
if proc is not None:
|
||||
try:
|
||||
proc.kill()
|
||||
|
||||
Reference in new issue
Block a user