diff --git a/src/ert/ensemble_evaluator/evaluator.py b/src/ert/ensemble_evaluator/evaluator.py index b9ea3bfaa78..317957f7dca 100644 --- a/src/ert/ensemble_evaluator/evaluator.py +++ b/src/ert/ensemble_evaluator/evaluator.py @@ -313,7 +313,8 @@ async def _server(self) -> None: except zmq.error.ZMQError as e: logger.error(f"ZMQ error encountered {e} during evaluator initialization") self._server_started.set_exception(e) - raise + zmq_context.destroy(linger=0) + return try: await self._server_done.wait() try: @@ -338,7 +339,7 @@ async def _server(self) -> None: finally: try: self._router_socket.close() - zmq_context.destroy() + zmq_context.destroy(linger=0) except Exception as exc: logger.warning(f"Failed to clean up zmq context {exc}") logger.info("ZMQ cleanup done!") diff --git a/tests/ert/unit_tests/ensemble_evaluator/test_ensemble_evaluator.py b/tests/ert/unit_tests/ensemble_evaluator/test_ensemble_evaluator.py index 17edb28fd69..e7c4a546d3f 100644 --- a/tests/ert/unit_tests/ensemble_evaluator/test_ensemble_evaluator.py +++ b/tests/ert/unit_tests/ensemble_evaluator/test_ensemble_evaluator.py @@ -108,7 +108,8 @@ async def test_evaluator_raises_on_start_with_address_in_use(make_ee_config): with pytest.raises(zmq.error.ZMQError, match="Address already in use"): await evaluator.run_and_get_successful_realizations() finally: - ctx.destroy() + socket.close() + ctx.destroy(linger=0) async def test_no_config_raises_valueerror_when_running():