diff --git a/services/director/src/simcore_service_director/producer.py b/services/director/src/simcore_service_director/producer.py index e72624684b2..b7799af6f41 100644 --- a/services/director/src/simcore_service_director/producer.py +++ b/services/director/src/simcore_service_director/producer.py @@ -439,31 +439,34 @@ async def _get_service_state( tasks = await client.tasks.list(filters={"service": service_name}) # only keep the ones with the right service ID (we're being a bit picky maybe) tasks = [x for x in tasks if x["ServiceID"] == service["ID"]] + # we are only interested in the last task which has index 0 if tasks: last_task = tasks[0] task_state = last_task["Status"]["State"] log.debug("%s %s", service["ID"], task_state) - simcore_state = ServiceState.STARTING - simcore_message = ( + + last_task_state = ServiceState.STARTING # default + last_task_error_msg = ( last_task["Status"]["Err"] if "Err" in last_task["Status"] else "" ) if task_state in ("failed", "rejected"): log.error( "service %s failed with %s", service_name, last_task["Status"] ) - simcore_state = ServiceState.FAILED + last_task_state = ServiceState.FAILED elif task_state in ("pending"): - simcore_state = ServiceState.PENDING + last_task_state = ServiceState.PENDING elif task_state in ("assigned", "accepted", "preparing"): - simcore_state = ServiceState.PULLING + last_task_state = ServiceState.PULLING elif task_state in ("ready", "starting"): - simcore_state = ServiceState.STARTING + last_task_state = ServiceState.STARTING elif task_state in ("running"): - simcore_state = ServiceState.RUNNING + last_task_state = ServiceState.RUNNING elif task_state in ("complete", "shutdown"): - simcore_state = ServiceState.COMPLETE - return (simcore_state, simcore_message) + last_task_state = ServiceState.COMPLETE + return (last_task_state, last_task_error_msg) + # allows dealing with other events instead of wasting time here await asyncio.sleep(1) # 1s log.debug("Waited for service %s to start", service_name) @@ -600,6 +603,7 @@ async def _start_docker_service( service = await client.services.inspect(service["ID"]) service_name = service["Spec"]["Name"] service_state, service_msg = await _get_service_state(client, service) + # wait for service to start # await _wait_until_service_running_or_failed(client, service, node_uuid) log.debug("Service %s successfully started", service_name) diff --git a/services/storage/src/simcore_service_storage/data/docker-prod-config.yaml b/services/storage/src/simcore_service_storage/data/docker-prod-config.yaml index cfafd782a6b..423928fc891 100644 --- a/services/storage/src/simcore_service_storage/data/docker-prod-config.yaml +++ b/services/storage/src/simcore_service_storage/data/docker-prod-config.yaml @@ -15,8 +15,8 @@ postgres: password: ${POSTGRES_PASSWORD} host: ${POSTGRES_HOST} port: ${POSTGRES_PORT} - minsize: 4 - maxsize: 4 + minsize: 10 + maxsize: 15 s3: endpoint: ${S3_ENDPOINT} access_key: ${S3_ACCESS_KEY} diff --git a/services/web/client/source/class/osparc/dashboard/StudyBrowser.js b/services/web/client/source/class/osparc/dashboard/StudyBrowser.js index 6b11de6d152..4ce391c41cc 100644 --- a/services/web/client/source/class/osparc/dashboard/StudyBrowser.js +++ b/services/web/client/source/class/osparc/dashboard/StudyBrowser.js @@ -230,7 +230,7 @@ qx.Class.define("osparc.dashboard.StudyBrowser", { }, __getStudyAndStart: function(loadStudyId) { - osparc.store.Store.getStudyWState(loadStudyId, true) + osparc.store.Store.getInstance().getStudyWState(loadStudyId, true) .then(studyData => { this.__startStudy(studyData); }) diff --git a/services/web/server/src/simcore_service_webserver/computation_comp_tasks_listening_task.py b/services/web/server/src/simcore_service_webserver/computation_comp_tasks_listening_task.py index f5ae1349a91..718bdf3f6c4 100644 --- a/services/web/server/src/simcore_service_webserver/computation_comp_tasks_listening_task.py +++ b/services/web/server/src/simcore_service_webserver/computation_comp_tasks_listening_task.py @@ -81,6 +81,7 @@ async def listen(app: web.Application): task_output = node_data["outputs"] node_id = node_data["node_id"] project_id = node_data["project_id"] + # FIXME: we do not know who triggered these changes. we assume the user had the rights to do so # therefore we'll use the prj_owner user id. This should be fixed when the new sidecar comes in # and comp_tasks/comp_pipeline get deprecated. @@ -89,7 +90,7 @@ async def listen(app: web.Application): result = await conn.execute( select([projects]).where(projects.c.uuid == project_id) ) - the_project: RowProxy = result.fetchone() + the_project: RowProxy = await result.fetchone() if not the_project: log.warning( "Project %s was not found and cannot be updated", project_id diff --git a/services/web/server/src/simcore_service_webserver/config/server-docker-prod.yaml b/services/web/server/src/simcore_service_webserver/config/server-docker-prod.yaml index 2b3cd871c4e..784e442faa9 100644 --- a/services/web/server/src/simcore_service_webserver/config/server-docker-prod.yaml +++ b/services/web/server/src/simcore_service_webserver/config/server-docker-prod.yaml @@ -31,7 +31,7 @@ db: password: ${POSTGRES_PASSWORD} host: ${POSTGRES_HOST} port: ${POSTGRES_PORT} - minsize: 4 + minsize: 10 maxsize: 15 resource_manager: enabled: True