Open zstatmanweil opened 1 year ago
Same issue here.
qdrant-client==0.11.3 qdrant container version: 0.11.4 python: 3.9.15
Qdrant Docker container looks fine:
` 2022-12-06 11:25:57 Access web UI at https://ui.qdrant.tech/?v=v0.11.4
2022-12-06 11:25:57
2022-12-06 11:25:26 [2022-12-06T00:25:26.391Z INFO actix_server::worker] Shutting down idle worker
2022-12-06 11:25:26 [2022-12-06T00:25:26.391Z INFO actix_server::worker] Shutting down idle worker
2022-12-06 11:25:26 [2022-12-06T00:25:26.391Z INFO actix_server::worker] Shutting down idle worker
2022-12-06 11:25:26 [2022-12-06T00:25:26.392Z INFO actix_server::worker] Shutting down idle worker
2022-12-06 11:25:26 [2022-12-06T00:25:26.392Z INFO actix_server::worker] Shutting down idle worker
2022-12-06 11:25:57 [2022-12-06T00:25:57.249Z INFO storage::content_manager::consensus::persistent] Loading raft state from ./storage/raft_state
2022-12-06 11:25:57 [2022-12-06T00:25:57.445Z INFO storage::content_manager::toc] Loading collection: my_collection
2022-12-06 11:26:03 [2022-12-06T00:26:03.452Z INFO qdrant] Distributed mode disabled
2022-12-06 11:26:03 [2022-12-06T00:26:03.457Z INFO actix_server::builder] Starting 15 workers
2022-12-06 11:26:03 [2022-12-06T00:26:03.458Z INFO actix_server::server] Actix runtime found; starting in Actix runtime
2022-12-06 11:26:03 [2022-12-06T00:26:03.878Z INFO qdrant::tonic] Qdrant gRPC listening on 6334
2022-12-06 11:26:28 [2022-12-06T00:26:28.907Z INFO actix_web::middleware::logger] 172.17.0.1 "DELETE /collections/my_collection HTTP/1.1" 200 69 "-" "python-httpx/0.23.1" 2.247990
2022-12-06 11:26:47 [2022-12-06T00:26:47.882Z INFO actix_web::middleware::logger] 172.17.0.1 "PUT /collections/my_collection HTTP/1.1" 200 70 "-" "python-httpx/0.23.1" 18.941867
2022-12-06 11:34:09 [2022-12-06T00:34:09.338Z INFO actix_web::middleware::logger] 172.17.0.1 "DELETE /collections/my_collection HTTP/1.1" 200 69 "-" "python-httpx/0.23.1" 1.419514
2022-12-06 11:34:27 [2022-12-06T00:34:27.671Z INFO actix_web::middleware::logger] 172.17.0.1 "PUT /collections/my_collection HTTP/1.1" 200 70 "-" "python-httpx/0.23.1" 18.304708 `
The only change I did to Docker is the use of the WSL 2 based engine (Settings -> General -> tick Use the WSL 2 based engine) but I cannot confirm if this is the cause of the issue.
I had the exact same issue. Traced it to a request sent in the httpx library. Seems like the response given is 400 Bad Request, but this is somewhere incorrectly pushed up the exception chain as a timeout.
Solved the issue by using thedocker pull qdrant/qdrant:v1.1.1
docker image version instead of latest.
Same error here.
Traceback (most recent call last):
File "/usr/local/lib/python3.10/dist-packages/qdrant_client/http/api_client.py", line 95, in send_inner
response = self._client.send(request)
File "/usr/local/lib/python3.10/dist-packages/httpx/_client.py", line 901, in send
response = self._send_handling_auth(
File "/usr/local/lib/python3.10/dist-packages/httpx/_client.py", line 929, in _send_handling_auth
response = self._send_handling_redirects(
File "/usr/local/lib/python3.10/dist-packages/httpx/_client.py", line 966, in _send_handling_redirects
response = self._send_single_request(request)
File "/usr/local/lib/python3.10/dist-packages/httpx/_client.py", line 1002, in _send_single_request
response = transport.handle_request(request)
File "/usr/local/lib/python3.10/dist-packages/httpx/_transports/default.py", line 217, in handle_request
with map_httpcore_exceptions():
File "/usr/lib/python3.10/contextlib.py", line 153, in __exit__
self.gen.throw(typ, value, traceback)
File "/usr/local/lib/python3.10/dist-packages/httpx/_transports/default.py", line 77, in map_httpcore_exceptions
raise mapped_exc(message) from exc
httpx.WriteTimeout: timed out
It seems httpx has a default timeout for its clients https://www.python-httpx.org/advanced/#timeout-configuration.
if the qdrant client doesn't alter this when requesting it will timeout. However, it seems to me that this is in fact done through the timeout
parameter by passing **kwargs to httpx.Client()
. I am wondering if this could be an issue with httpx?
Btw. This happens to me on the snapshot API all the time. When setting the timeout to some arbitrary high number I don't get this issue. Obviously if the snapshot process is done before the timeout.
I facing the same issue on windows when creating and re-creating collection. I am using qdrant client version v1.7.0
and qdrant version v1.7.0
. However it works perfectly on linux systems.
I have done some trial and error testing. I have found that
docker run -p 6333:6333 qdrant/qdrant
directly on terminal. Works perfectlyqdrant:
image: qdrant/qdrant:v1.7.0
container_name: 'vector-db'
ports:
- "6333:6333"
expose:
- "6333"
volumes:
- "./vbs:/qdrant/storage"
This is the error
Traceback (most recent call last):
File "E:\ProJects\venv\lib\site-packages\httpcore\_exceptions.py", line 10, in map_exceptions
yield
File "E:\ProJects\venv\lib\site-packages\httpcore\_backends\sync.py", line 126, in read
return self._sock.recv(max_bytes)
socket.timeout: timed out
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "E:\ProJects\venv\lib\site-packages\httpx\_transports\default.py", line 67, in map_httpcore_exceptions
yield
File "E:\ProJects\venv\lib\site-packages\httpx\_transports\default.py", line 231, in handle_request
resp = self._pool.handle_request(req)
File "E:\ProJects\venv\lib\site-packages\httpcore\_sync\connection_pool.py", line 268, in handle_request
raise exc
File "E:\ProJects\venv\lib\site-packages\httpcore\_sync\connection_pool.py", line 251, in handle_request
response = connection.handle_request(request)
File "E:\ProJects\venv\lib\site-packages\httpcore\_sync\connection.py", line 103, in handle_request
return self._connection.handle_request(request)
File "E:\ProJects\venv\lib\site-packages\httpcore\_sync\http11.py", line 133, in handle_request
raise exc
File "E:\ProJects\venv\lib\site-packages\httpcore\_sync\http11.py", line 111, in handle_request
) = self._receive_response_headers(**kwargs)
File "E:\ProJects\venv\lib\site-packages\httpcore\_sync\http11.py", line 176, in _receive_response_headers
event = self._receive_event(timeout=timeout)
File "E:\ProJects\venv\lib\site-packages\httpcore\_sync\http11.py", line 212, in _receive_event
data = self._network_stream.read(
File "E:\ProJects\venv\lib\site-packages\httpcore\_backends\sync.py", line 126, in read
return self._sock.recv(max_bytes)
File "C:\Users\ayush\.pyenv\pyenv-win\versions\3.9.7\lib\contextlib.py", line 137, in __exit__
self.gen.throw(typ, value, traceback)
File "E:\ProJects\venv\lib\site-packages\httpcore\_exceptions.py", line 14, in map_exceptions
raise to_exc(exc) from exc
httpcore.ReadTimeout: timed out
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "E:\ProJects\venv\lib\site-packages\qdrant_client\http\api_client.py", line 101, in send_inner
response = self._client.send(request)
File "E:\ProJects\venv\lib\site-packages\httpx\_client.py", line 915, in send
response = self._send_handling_auth(
File "E:\ProJects\venv\lib\site-packages\httpx\_client.py", line 943, in _send_handling_auth
response = self._send_handling_redirects(
File "E:\ProJects\venv\lib\site-packages\httpx\_client.py", line 980, in _send_handling_redirects
response = self._send_single_request(request)
File "E:\ProJects\venv\lib\site-packages\httpx\_client.py", line 1016, in _send_single_request
response = transport.handle_request(request)
File "E:\ProJects\venv\lib\site-packages\httpx\_transports\default.py", line 231, in handle_request
resp = self._pool.handle_request(req)
File "C:\Users\ayush\.pyenv\pyenv-win\versions\3.9.7\lib\contextlib.py", line 137, in __exit__
self.gen.throw(typ, value, traceback)
File "E:\ProJects\venv\lib\site-packages\httpx\_transports\default.py", line 84, in map_httpcore_exceptions
raise mapped_exc(message) from exc
httpx.ReadTimeout: timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "E:\ProJects\some.py", line 10, in <module>
qdrant_client.recreate_collection(
File "E:\ProJects\venv\lib\site-packages\qdrant_client\qdrant_client.py", line 1751, in recreate_collection
return self._client.recreate_collection(
File "E:\ProJects\venv\lib\site-packages\qdrant_client\qdrant_remote.py", line 2183, in recreate_collection
return self.create_collection(
File "E:\ProJects\venv\lib\site-packages\qdrant_client\qdrant_remote.py", line 2154, in create_collection
result: Optional[bool] = self.http.collections_api.create_collection(
File "E:\ProJects\venv\lib\site-packages\qdrant_client\http\api\collections_api.py", line 1118, in create_collection
return self._build_for_create_collection(
File "E:\ProJects\venv\lib\site-packages\qdrant_client\http\api\collections_api.py", line 96, in _build_for_create_collection
return self.api_client.request(
File "E:\ProJectsvenv\lib\site-packages\qdrant_client\http\api_client.py", line 74, in request
return self.send(request, type_)
File "E:\ProJects\venv\lib\site-packages\qdrant_client\http\api_client.py", line 91, in send
response = self.middleware(request, self.send_inner)
File "E:\ProJects\venv\lib\site-packages\qdrant_client\http\api_client.py", line 200, in __call__
return call_next(request)
File "E:\ProJects\venv\lib\site-packages\qdrant_client\http\api_client.py", line 103, in send_inner
raise ResponseHandlingException(e)
qdrant_client.http.exceptions.ResponseHandlingException: timed out
Please let me know if I am doing anything wrong here?
I found a workaround, which is ugly but works for now. If client
is your Python SDK client, then you can set the timeout for HTTPx with:
client._client.openapi_client.client._client.timeout = 60 # seconds
as I said, very ugly :-)
should be fixed as of qdrant-client==1.8.2
Versions
qdrant_client version: 11.1 qdrant version: 0.11.3 python: 3.9
Summary
I have been getting timeouts when creating collections. I passed in
timeout=60
to therecreate_collection
method and it still appears to timeout after about 10 seconds. See stack trace below. However, when I look at the logs in the cluster, I see it did appear to successfully pass the timeout parameter to the PUT request:[2022-11-21T20:01:05.375Z INFO actix_web::middleware::logger] 10.2.137.204 "PUT /collections/test_v01_32_16_10?timeout=60 HTTP/1.1" 200 72 "-" "python-httpx/0.23.0" 60.814669
Timeout error from python client