Skip to content

Server crashes when OCI Endpoint Unreachable #412

@gotsysdba

Description

@gotsysdba

Checklist

  • I have searched the existing issues for similar issues.
  • I added a very descriptive title to this issue.
  • I have provided sufficient information below to help reproduce this issue.

Summary

Server process crashes when OCI config exists but OCI GenAI endpoint is unreachable.

Steps To Reproduce

  1. Ensure OCI config is setup
  2. Start Server
  3. if the OCI GenAI endpoint is unreachable it crashes

Expected Behavior

Gracefully fail to load OCI models and continue

Current Behavior

2026-Mar-09 22:25:01 (v2.0.4.dev7+g2ffd076d4) - INFO     - (api.utils.oci): OCI Authentication as Standard
2026-Mar-09 22:25:01 (v2.0.4.dev7+g2ffd076d4) - INFO     - (api.utils.oci): Checking Region: eu-amsterdam-1; Compartment: ocid1.compartment.oc1..... for GenAI services
INFO:     127.0.0.1:51361 - "GET /v1/oci/genai/DEFAULT HTTP/1.1" 500 Internal Server Error
Exception in ASGI application
Traceback (most recent call last):
  File "/lib/python3.11/site-packages/oci/_vendor/urllib3/connection.py", line 179, in _new_conn
    conn = connection.create_connection(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/lib/python3.11/site-packages/oci/_vendor/urllib3/util/connection.py", line 100, in create_connection
    raise err
  File "/lib/python3.11/site-packages/oci/_vendor/urllib3/util/connection.py", line 90, in create_connection
    sock.connect(sa)
TimeoutError: timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/lib/python3.11/site-packages/oci/_vendor/urllib3/connectionpool.py", line 721, in urlopen
    httplib_response = self._make_request(
                       ^^^^^^^^^^^^^^^^^^^
  File "/lib/python3.11/site-packages/oci/_vendor/urllib3/connectionpool.py", line 409, in _make_request
    self._validate_conn(conn)
  File "/lib/python3.11/site-packages/oci/_vendor/urllib3/connectionpool.py", line 1066, in _validate_conn
    conn.connect()
  File "/lib/python3.11/site-packages/oci/_vendor/urllib3/connection.py", line 368, in connect
    self.sock = conn = self._new_conn()
                       ^^^^^^^^^^^^^^^^
  File "/lib/python3.11/site-packages/oci/_vendor/urllib3/connection.py", line 184, in _new_conn
    raise ConnectTimeoutError(
oci._vendor.urllib3.exceptions.ConnectTimeoutError: (<oci.base_client.OCIConnection object at 0x15b6d0210>, 'Connection to generativeai.eu-amsterdam-1.oci.oraclecloud.com timed out. (connect timeout=1)')
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/lib/python3.11/site-packages/oci/_vendor/requests/adapters.py", line 447, in send
    resp = conn.urlopen(
           ^^^^^^^^^^^^^
  File "/lib/python3.11/site-packages/oci/_vendor/urllib3/connectionpool.py", line 807, in urlopen
    retries = retries.increment(
              ^^^^^^^^^^^^^^^^^^
  File "/lib/python3.11/site-packages/oci/_vendor/urllib3/util/retry.py", line 599, in increment
    raise MaxRetryError(_pool, url, error or ResponseError(cause))
oci._vendor.urllib3.exceptions.MaxRetryError: OCIConnectionPool(host='generativeai.eu-amsterdam-1.oci.oraclecloud.com', port=443): Max retries exceeded with url: /20231130/models?compartmentId=ocid1.compartment.oc1....&lifecycleState=ACTIVE&sortOrder=ASC&sortBy=displayName (Caused by ConnectTimeoutError(<oci.base_client.OCIConnection object at 0x15b6d0210>, 'Connection to generativeai.eu-amsterdam-1.oci.oraclecloud.com timed out. (connect timeout=1)'))
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/lib/python3.11/site-packages/oci/base_client.py", line 882, in request
    response = self.session.request(
               ^^^^^^^^^^^^^^^^^^^^^
  File "/lib/python3.11/site-packages/oci/_vendor/requests/sessions.py", line 536, in request
    resp = self.send(prep, **send_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/lib/python3.11/site-packages/oci/_vendor/requests/sessions.py", line 652, in send
    r = adapter.send(request, **kwargs)
        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/lib/python3.11/site-packages/oci/_vendor/requests/adapters.py", line 515, in send
    raise ConnectTimeout(e, request=request)
oci._vendor.requests.exceptions.ConnectTimeout: (MaxRetryError("OCIConnectionPool(host='generativeai.eu-amsterdam-1.oci.oraclecloud.com', port=443): Max retries exceeded with url: /20231130/models?compartmentId=ocid1.compartment.oc1....&lifecycleState=ACTIVE&sortOrder=ASC&sortBy=displayName (Caused by ConnectTimeoutError(<oci.base_client.OCIConnection object at 0x15b6d0210>, 'Connection to generativeai.eu-amsterdam-1.oci.oraclecloud.com timed out. (connect timeout=1)'))"), 'Request Endpoint: GET https://generativeai.eu-amsterdam-1.oci.oraclecloud.com/20231130/models See https://docs.oracle.com/en-us/iaas/Content/API/Concepts/sdk_troubleshooting.htm for help troubleshooting this error, or contact support and provide this full error message.')
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "/lib/python3.11/site-packages/uvicorn/protocols/http/h11_impl.py", line 410, in run_asgi
    result = await app(  # type: ignore[func-returns-value]
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
    return await self.app(scope, receive, send)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/lib/python3.11/site-packages/fastapi/applications.py", line 1134, in __call__
    await super().__call__(scope, receive, send)
  File "/lib/python3.11/site-packages/starlette/applications.py", line 107, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/lib/python3.11/site-packages/starlette/middleware/errors.py", line 186, in __call__
    raise exc
  File "/lib/python3.11/site-packages/starlette/middleware/errors.py", line 164, in __call__
    await self.app(scope, receive, _send)
  File "/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 63, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/lib/python3.11/site-packages/fastapi/middleware/asyncexitstack.py", line 18, in __call__
    await self.app(scope, receive, send)
  File "/lib/python3.11/site-packages/starlette/routing.py", line 716, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/lib/python3.11/site-packages/starlette/routing.py", line 736, in app
    await route.handle(scope, receive, send)
  File "/lib/python3.11/site-packages/starlette/routing.py", line 290, in handle
    await self.app(scope, receive, send)
  File "/lib/python3.11/site-packages/fastapi/routing.py", line 119, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/lib/python3.11/site-packages/fastapi/routing.py", line 105, in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
  File "/lib/python3.11/site-packages/fastapi/routing.py", line 424, in app
    raw_response = await run_endpoint_function(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/lib/python3.11/site-packages/fastapi/routing.py", line 312, in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sureshnagoosah/ai-optimizer/src/server/api/v1/oci.py", line 91, in oci_list_genai
    all_models = utils_oci.get_genai_models(oci_config, regional=False)
                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/Users/sureshnagoosah/ai-optimizer/src/server/api/utils/oci.py", line 252, in get_genai_models
    response = client.list_models(
               ^^^^^^^^^^^^^^^^^^^
  File "/lib/python3.11/site-packages/oci/generative_ai/generative_ai_client.py", line 4116, in list_models
    return retry_strategy.make_retrying_call(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/lib/python3.11/site-packages/oci/retry/retry.py", line 238, in make_retrying_call
    return func_ref(*func_args, **func_kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/lib/python3.11/site-packages/oci/base_client.py", line 646, in call_api
    response = self.request(request, allow_control_chars, operation_name, api_reference_link)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/lib/python3.11/site-packages/circuitbreaker.py", line 146, in wrapper
    return self.call(function, *args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/lib/python3.11/site-packages/circuitbreaker.py", line 188, in call
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/lib/python3.11/site-packages/oci/base_client.py", line 923, in request
    raise exceptions.ConnectTimeout(e)
oci.exceptions.ConnectTimeout: (MaxRetryError("OCIConnectionPool(host='generativeai.eu-amsterdam-1.oci.oraclecloud.com', port=443): Max retries exceeded with url: /20231130/models?compartmentId=ocid1.compartment.oc1....&lifecycleState=ACTIVE&sortOrder=ASC&sortBy=displayName (Caused by ConnectTimeoutError(<oci.base_client.OCIConnection object at 0x15b6d0210>, 'Connection to generativeai.eu-amsterdam-1.oci.oraclecloud.com timed out. (connect timeout=1)'))"), 'Request Endpoint: GET https://generativeai.eu-amsterdam-1.oci.oraclecloud.com/20231130/models See https://docs.oracle.com/en-us/iaas/Content/API/Concepts/sdk_troubleshooting.htm for help troubleshooting this error, or contact support and provide this full error message.')
2026-Mar-09 22:25:56 (v2.0.4.dev7+g2ffd076d4) - INFO     - (mcp.server.streamable_http_manager): StreamableHTTP session manager shutting down
2026-Mar-09 22:25:56 (v2.0.4.dev7+g2ffd076d4) - INFO     - (launch_server): Cleaning up leftover processes...

Is this a regression?

  • Yes, this used to work in a previous version.

Debug info

  • Version:
  • Python version:
  • Operating System:
  • Browser:

Additional Information

No response

Metadata

Metadata

Assignees

Labels

fixedFixed but not Merged

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions