Skip to content

Commit b1a92b2

Browse files
authored
demodec: don't wait for the dependencies. the laptops don't like it (#389)
1 parent 605a2ae commit b1a92b2

File tree

1 file changed

+10
-6
lines changed
  • services/director/src/simcore_service_director

1 file changed

+10
-6
lines changed

services/director/src/simcore_service_director/producer.py

+10-6
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,7 @@ def __set_service_name(docker_service_runtime_parameters: Dict,
221221

222222

223223
def _get_docker_image_port_mapping(service_id: str) -> Tuple[str, str]:
224+
log.debug("getting port published by service: %s", service_id)
224225
# TODO: It could be possible that the endpoint is also accessible using high/level client in service.attrs
225226
# pylint: disable=C0103
226227
low_level_client = docker.APIClient()
@@ -318,25 +319,27 @@ async def __wait_until_service_running_or_failed(service_id: str,
318319
node_uuid: str):
319320
# pylint: disable=C0103
320321
log.debug("Waiting for service %s to start", service_id)
321-
client = docker.APIClient()
322+
client = docker.from_env()
322323

323324
# some times one has to wait until the task info is filled
324325
while True:
325-
task_infos_json = client.tasks(filters={'service': service_id})
326+
service = client.services.get(service_id)
327+
task_infos_json = service.tasks()
328+
# log.debug("task infos: %s", task_infos_json)
326329
if task_infos_json:
327330
# check the status
328331
status_json = task_infos_json[0]["Status"]
329332
task_state = status_json["State"]
330333

331-
log.debug("%s %s", service_id, task_state)
334+
# log.debug("%s %s", service_id, task_state)
332335
if task_state == "running":
333336
break
334337
elif task_state in ("failed", "rejected"):
335338
log.error("Error while waiting for service")
336339
raise exceptions.ServiceStartTimeoutError(
337340
service_name, node_uuid)
338-
# would allow dealing with other events instead of wasting time here
339-
await asyncio.sleep(0.005) # 5ms
341+
# allows dealing with other events instead of wasting time here
342+
await asyncio.sleep(1) # 1s
340343
log.debug("Waited for service %s to start", service_id)
341344

342345

@@ -438,7 +441,8 @@ async def _start_docker_service(client: docker.client,
438441
log.debug("Starting docker service %s using parameters %s", docker_image_full_path, docker_service_runtime_parameters)
439442
service = client.services.create(docker_image_full_path, **docker_service_runtime_parameters)
440443
log.debug("Service started now waiting for it to run")
441-
await __wait_until_service_running_or_failed(service.id, docker_image_full_path, node_uuid)
444+
if main_service:
445+
await __wait_until_service_running_or_failed(service.id, docker_image_full_path, node_uuid)
442446
# the docker swarm opened some random port to access the service
443447
published_port, target_port = _get_docker_image_port_mapping(service.id)
444448
log.debug("Service successfully started on %s:%s", service_entrypoint, published_port)

0 commit comments

Comments
 (0)