ray icon indicating copy to clipboard operation
ray copied to clipboard

[Serve] Port 8000 GET root endpoint should not be exposed

Open MortalHappiness opened this issue 1 year ago • 6 comments

What happened + What you expected to happen

Sends a GET request to localhost:8000 shows the following error.

Unexpected error, traceback: [36mray::ServeReplica:mobilenet:ImageClassifier.handle_request_streaming()[39m (pid=768, ip=10.244.0.18)
  File "/home/ray/anaconda3/lib/python3.8/site-packages/ray/serve/_private/utils.py", line 165, in wrap_to_ray_error
    raise exception
  File "/home/ray/anaconda3/lib/python3.8/site-packages/ray/serve/_private/replica.py", line 895, in call_user_method
    result = await method_to_call(*request_args, **request_kwargs)
  File "/tmp/ray/session_2024-08-23_21-13-49_235633_14/runtime_resources/working_dir_files/https_github_com_ray-project_serve_config_examples_archive_b393e77bbd6aba0881e3d94c05f968f05a387b96/mobilenet/mobilenet.py", line 25, in __call__
    image_file = await request["image"].read()
  File "/home/ray/anaconda3/lib/python3.8/site-packages/starlette/datastructures.py", line 310, in __getitem__
    return self._dict[key]
KeyError: 'image'.

This REST endpoint should not be exposed to users.

Note: I would like to work on this issue if this behavior is not expected.

Versions / Dependencies

2.34.0

Reproduction script

Follow this doc https://docs.ray.io/en/releases-2.34.0/cluster/kubernetes/examples/mobilenet-rayservice.html

Issue Severity

None

MortalHappiness avatar Aug 24 '24 04:08 MortalHappiness

cc @kevin85421

MortalHappiness avatar Aug 24 '24 04:08 MortalHappiness

cc @edoakes is this an expected behavior? If so, should we expose a better error message?

kevin85421 avatar Aug 24 '24 04:08 kevin85421

I don't understand the issue, it looks like the example code is just not gracefully handling the case where image isn't provided in the request body?

edoakes avatar Aug 26 '24 20:08 edoakes

@edoakes Is the GET / endpoint used? @kevin85421 told me that only the POST / endpoint is used. So if this endpoint is not used, it should better be hiden from the user. If this endpoint is used, then I'll change the issue description or close this issue.

MortalHappiness avatar Aug 27 '24 04:08 MortalHappiness

There seem to be some examples (https://docs.ray.io/en/latest/serve/key-concepts.html) using GET in the Ray Serve examples. It’s unclear to me when to use GET and when to use POST and which API endpoints will be created.

kevin85421 avatar Aug 27 '24 04:08 kevin85421

This is up to the application's REST API design

edoakes avatar Aug 27 '24 09:08 edoakes

@edoakes Thank you for your clarification. I closed this and opened a new one in https://github.com/ray-project/serve_config_examples/issues/10

MortalHappiness avatar Aug 31 '24 15:08 MortalHappiness