Skip to content
Open
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions public_dropin_environments/java_codegen/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,8 @@ ENV ADDRESS=0.0.0.0:8080
ENV WITH_ERROR_SERVER=0 \
PYTHONUNBUFFERED=1

# Gunicorn configuration
ENV MLOPS_RUNTIME_PARAM_DRUM_SERVER_TYPE='{"type": "string", "payload": "gunicorn"}'

COPY ./*.sh ${CODE_DIR}/
WORKDIR ${CODE_DIR}
Expand Down
2 changes: 1 addition & 1 deletion public_dropin_environments/java_codegen/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ charset-normalizer==3.4.4
click==8.3.1
cryptography==46.0.3
datarobot==3.10.0
datarobot-drum==1.17.8
datarobot-drum==1.17.10
datarobot-mlops==11.1.0
datarobot-storage==2.2.0
docker==7.1.0
Expand Down
2 changes: 2 additions & 0 deletions public_dropin_environments/python311/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@ ENV ADDRESS=0.0.0.0:8080
ENV WITH_ERROR_SERVER=0 \
PYTHONUNBUFFERED=1

# Gunicorn configuration
ENV MLOPS_RUNTIME_PARAM_DRUM_SERVER_TYPE='{"type": "string", "payload": "gunicorn"}'

COPY ./*.sh ${CODE_DIR}/
WORKDIR ${CODE_DIR}
Expand Down
2 changes: 1 addition & 1 deletion public_dropin_environments/python311/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ charset-normalizer==3.4.4
click==8.3.1
cryptography==46.0.3
datarobot==3.10.0
datarobot-drum==1.17.8
datarobot-drum==1.17.10
datarobot-mlops==11.1.0
datarobot-storage==2.2.0
docker==7.1.0
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
datarobot-drum==1.17.8
datarobot-drum==1.17.10
datarobot-genai==0.2.7
datarobot-mlops==11.1.0
datarobot-moderations==11.2.8
Expand Down
3 changes: 3 additions & 0 deletions public_dropin_environments/python3_keras/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,9 @@ ENV ADDRESS=0.0.0.0:8080
ENV WITH_ERROR_SERVER=0 \
PYTHONUNBUFFERED=1

# Gunicorn configuration
ENV MLOPS_RUNTIME_PARAM_DRUM_SERVER_TYPE='{"type": "string", "payload": "gunicorn"}'

COPY ./*.sh ${CODE_DIR}/
WORKDIR ${CODE_DIR}

Expand Down
2 changes: 1 addition & 1 deletion public_dropin_environments/python3_keras/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ charset-normalizer==3.4.4
click==8.3.1
cryptography==46.0.3
datarobot==3.10.0
datarobot-drum==1.17.8
datarobot-drum==1.17.10
datarobot-mlops==11.1.0
datarobot-storage==2.2.0
docker==7.1.0
Expand Down
2 changes: 2 additions & 0 deletions public_dropin_environments/python3_onnx/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@ ENV ADDRESS=0.0.0.0:8080
ENV WITH_ERROR_SERVER=0 \
PYTHONUNBUFFERED=1

# Gunicorn configuration
ENV MLOPS_RUNTIME_PARAM_DRUM_SERVER_TYPE='{"type": "string", "payload": "gunicorn"}'

COPY ./*.sh ${CODE_DIR}/
WORKDIR ${CODE_DIR}
Expand Down
2 changes: 1 addition & 1 deletion public_dropin_environments/python3_onnx/requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ click==8.3.1
coloredlogs==15.0.1
cryptography==46.0.3
datarobot==3.10.0
datarobot-drum==1.17.8
datarobot-drum==1.17.10
datarobot-mlops==11.1.0
datarobot-storage==2.2.0
docker==7.1.0
Expand Down
2 changes: 2 additions & 0 deletions public_dropin_environments/python3_pytorch/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,8 @@ ENV ADDRESS=0.0.0.0:8080
ENV WITH_ERROR_SERVER=0 \
PYTHONUNBUFFERED=1

# Gunicorn configuration
ENV MLOPS_RUNTIME_PARAM_DRUM_SERVER_TYPE='{"type": "string", "payload": "gunicorn"}'

COPY ./*.sh ${CODE_DIR}/
WORKDIR ${CODE_DIR}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ charset-normalizer==3.4.4
click==8.3.1
cryptography==46.0.3
datarobot==3.10.0
datarobot-drum==1.17.8
datarobot-drum==1.17.10
datarobot-mlops==11.1.0
datarobot-storage==2.2.0
docker==7.1.0
Expand Down
4 changes: 4 additions & 0 deletions public_dropin_environments/python3_sklearn/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,10 @@ ENV ADDRESS=0.0.0.0:8080
ENV WITH_ERROR_SERVER=0 \
PYTHONUNBUFFERED=1

# ENV MLOPS_RUNTIME_PARAM_DRUM_CLIENT_REQUEST_TIMEOUT='{"type": "numeric", "payload": 660}'
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: Commented-out configuration left in Dockerfile

A commented-out ENV MLOPS_RUNTIME_PARAM_DRUM_CLIENT_REQUEST_TIMEOUT line was added to the Dockerfile. This appears to be leftover testing or debugging code that was not removed before committing. Commented-out configuration in production Dockerfiles can confuse maintainers and suggests incomplete cleanup.

Fix in Cursor Fix in Web


# Gunicorn configuration
ENV MLOPS_RUNTIME_PARAM_DRUM_SERVER_TYPE='{"type": "string", "payload": "gunicorn"}'

COPY ./*.sh ${CODE_DIR}/
WORKDIR ${CODE_DIR}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ charset-normalizer==3.4.4
click==8.3.1
cryptography==46.0.3
datarobot==3.10.0
datarobot-drum==1.17.8
datarobot-drum==1.17.10
datarobot-mlops==11.1.0
datarobot-storage==2.2.0
docker==7.1.0
Expand Down
3 changes: 3 additions & 0 deletions public_dropin_environments/python3_xgboost/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,9 @@ ENV WITH_ERROR_SERVER=0 \
# Maybe the same would apply to gunicorn, when we test.
# ENV OMP_NUM_THREADS=1

# Gunicorn configuration
ENV MLOPS_RUNTIME_PARAM_DRUM_SERVER_TYPE='{"type": "string", "payload": "gunicorn"}'

COPY ./*.sh ${CODE_DIR}/
WORKDIR ${CODE_DIR}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ charset-normalizer==3.4.4
click==8.3.1
cryptography==46.0.3
datarobot==3.10.0
datarobot-drum==1.17.8
datarobot-drum==1.17.10
datarobot-mlops==11.1.0
datarobot-storage==2.2.0
docker==7.1.0
Expand Down
3 changes: 3 additions & 0 deletions public_dropin_environments/r_lang/Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,9 @@ ENV ADDRESS=0.0.0.0:8080
ENV WITH_ERROR_SERVER=0 \
PYTHONUNBUFFERED=1

# Gunicorn configuration
ENV MLOPS_RUNTIME_PARAM_DRUM_SERVER_TYPE='{"type": "string", "payload": "gunicorn"}'

COPY ./*.sh ${CODE_DIR}/
WORKDIR ${CODE_DIR}

Expand Down
10 changes: 8 additions & 2 deletions tests/functional/test_drum_server_failures.py
Original file line number Diff line number Diff line change
Expand Up @@ -128,10 +128,13 @@ def test_ping_endpoints(self, params, with_error_server, production, docker):

@pytest.mark.parametrize(
"with_error_server, production, docker",
[(False, False, None), (True, False, None), (True, True, DOCKER_PYTHON_SKLEARN)],
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bug: Inconsistent test parameter updates for gunicorn compatibility

The PR updates test parameters for test_e2e_no_model_artifact and test_e2e_model_loading_fails from (True, True, DOCKER_PYTHON_SKLEARN) to (False, False, DOCKER_PYTHON_SKLEARN) with comments explaining that gunicorn doesn't support error server or production mode. However, test_ping_endpoints (line 108) and test_e2e_predict_fails (line 188) still use (True, True, DOCKER_PYTHON_SKLEARN). If gunicorn truly doesn't support these modes, these tests will fail when run against the updated sklearn docker image.

Additional Locations (2)

Fix in Cursor Fix in Web

[(False, False, None), (True, False, None), (False, False, DOCKER_PYTHON_SKLEARN)],
)
def test_e2e_no_model_artifact(self, params, with_error_server, production, docker):
"""
Note: 12/17/2025 DOCKER_PYTHON_SKLEARN image is going to use gunicorn,
so it doesn't support running with error server or production anymore.

Verify that if an error occurs on DRUM server initialization if no model artifact is found
- if '--with-error-server' is not set, DRUM server process will exit with error
- if '--with-error-server' is set, 'error server' will still be started, and
Expand All @@ -152,10 +155,13 @@ def test_e2e_no_model_artifact(self, params, with_error_server, production, dock

@pytest.mark.parametrize(
"with_error_server, production, docker",
[(False, False, None), (True, False, None), (True, True, DOCKER_PYTHON_SKLEARN)],
[(False, False, None), (True, False, None), (False, False, DOCKER_PYTHON_SKLEARN)],
)
def test_e2e_model_loading_fails(self, params, with_error_server, production, docker):
"""
Note: 12/17/2025 DOCKER_PYTHON_SKLEARN image is going to use gunicorn,
so it doesn't support running with error server or production anymore.

Verify that if an error occurs on DRUM server initialization if model cannot load properly
- if '--with-error-server' is not set, drum server process will exit with error
- if '--with-error-server' is set, 'error server' will still be started, and
Expand Down