Avoid consuming 100% of CPU when stopping docker container

Fix #427
This commit is contained in:
Julien Duponchelle committed 2016-02-19 17:53:17 +01:00
1 parent f4f9e6eba6
commit f35c742b07
3 files changed
+10 -9

No files matched your search

+5 -4
View File
@@ -299,6 +299,11 @@ class DockerVM(BaseVM):
"""Stops this Docker container."""
try:
if self._telnet_server:
self._telnet_server.close()
yield from self._telnet_server.wait_closed()
self._telnet_server = None
if self._ubridge_hypervisor and self._ubridge_hypervisor.is_running():
yield from self._ubridge_hypervisor.stop()
@@ -306,10 +311,6 @@ class DockerVM(BaseVM):
if state == "paused":
yield from self.unpause()
if self._telnet_server:
self._telnet_server.close()
self._telnet_server = None
# t=5 number of seconds to wait before killing the container
try:
yield from self.manager.query("POST", "containers/{}/stop".format(self._cid), params={"t": 5})
+5 -4
View File
@@ -125,13 +125,14 @@ class AsyncioTelnetServer:
return_when=asyncio.FIRST_COMPLETED)
for coro in done:
data = coro.result()
# Console is closed
if len(data) == 0:
raise ConnectionResetError()
if coro == network_read:
network_read = asyncio.async(network_reader.read(READ_SIZE))
# Remote console is closed
if len(data) == 0:
raise ConnectionResetError()
if IAC in data:
data = yield from self._IAC_parser(data, network_reader, network_writer)
if self._writer: