[GH-ISSUE #17452] issue: Timeout When Retrieving Large Collections from Qdrant #18293

Closed
opened 2026-04-20 00:30:09 -05:00 by GiteaMirror · 3 comments
Owner

Originally created by @ka-admin on GitHub (Sep 15, 2025).
Original GitHub issue: https://github.com/open-webui/open-webui/issues/17452

Check Existing Issues

  • I have searched for any existing and/or related issues.
  • I have searched for any existing and/or related discussions.
  • I am using the latest version of Open WebUI.

Installation Method

Docker

Open WebUI Version

0.6.28

Ollama Version (if applicable)

0.11.11

Operating System

Ubuntu Server 25.04 x64

Browser (if applicable)

Firefox latest

Confirmation

  • I have read and followed all instructions in README.md.
  • I am using the latest version of both Open WebUI and Ollama.
  • I have included the browser console logs.
  • I have included the Docker container logs.
  • I have provided every relevant configuration, setting, and environment variable used in my setup.
  • I have clearly listed every relevant configuration, custom setting, environment variable, and command-line option that influences my setup (such as Docker Compose overrides, .env values, browser settings, authentication configurations, etc).
  • I have documented step-by-step reproduction instructions that are precise, sequential, and leave nothing to interpretation. My steps:
  • Start with the initial platform/version/OS and dependencies used,
  • Specify exact install/launch/configure commands,
  • List URLs visited, user input (incl. example values/emails/passwords if needed),
  • Describe all options and toggles enabled or changed,
  • Include any files or environmental changes,
  • Identify the expected and actual result at each stage,
  • Ensure any reasonably skilled user can follow and hit the same issue.

Expected Behavior

Open WebUI should successfully retrieve data from large Qdrant collections, either by:

  1. Implementing configurable timeout settings
  2. Using appropriate default timeouts for collection operations
  3. Implementing retry mechanisms with exponential backoff

Actual Behavior

The default timeout configuration in Open WebUI's Qdrant client is insufficient for handling large collections. The client timeout appears to be set to approximately 5 seconds, while queries on large collections can take dozens of seconds to complete.

Steps to Reproduce

  1. Set up Open WebUI with Qdrant backend
  2. Create a collection with 40,000+ documents, using Qwen/Qwen3-Embedding-0.6B + Qwen/Qwen3-Reranker-0.6B
  3. Perform a knowledge retrieval operation that queries the large collection
  4. Observe timeout exceptions in logs

Logs & Screenshots

Failed to fetch collection dcc05ab4-b656-4ab8-aef8-ded0dcad5ea5: timed out
Traceback (most recent call last):

File "/usr/local/lib/python3.11/site-packages/httpx/_transports/default.py", line 101, in map_httpcore_exceptions
yield
File "/usr/local/lib/python3.11/site-packages/httpx/_transports/default.py", line 250, in handle_request
resp = self._pool.handle_request(req)
│ │ │ └ <Request [b'POST']>
│ │ └ <function ConnectionPool.handle_request at 0x76077dfb60c0>
│ └ <ConnectionPool [Requests: 0 active, 0 queued | Connections: 0 active, 0 idle]>
└ <httpx.HTTPTransport object at 0x76077df4c790>
File "/usr/local/lib/python3.11/site-packages/httpcore/_sync/connection_pool.py", line 256, in handle_request
raise exc from None
File "/usr/local/lib/python3.11/site-packages/httpcore/_sync/connection_pool.py", line 236, in handle_request
response = connection.handle_request(
│ └ <function HTTPConnection.handle_request at 0x76077dfb53a0>
└ <HTTPConnection ['http://192.168.127.20:6333', HTTP/1.1, CLOSED, Request Count: 2]>
File "/usr/local/lib/python3.11/site-packages/httpcore/_sync/connection.py", line 103, in handle_request
return self._connection.handle_request(request)
│ │ │ └ <Request [b'POST']>
│ │ └ <function HTTP11Connection.handle_request at 0x76077dfb4220>
│ └ <HTTP11Connection ['http://192.168.127.20:6333', CLOSED, Request Count: 2]>
└ <HTTPConnection ['http://192.168.127.20:6333', HTTP/1.1, CLOSED, Request Count: 2]>
File "/usr/local/lib/python3.11/site-packages/httpcore/_sync/http11.py", line 136, in handle_request
raise exc
File "/usr/local/lib/python3.11/site-packages/httpcore/_sync/http11.py", line 106, in handle_request
) = self._receive_response_headers(**kwargs)
│ │ └ {'request': <Request [b'POST']>}
│ └ <function HTTP11Connection._receive_response_headers at 0x76077dfb44a0>
└ <HTTP11Connection ['http://192.168.127.20:6333', CLOSED, Request Count: 2]>
File "/usr/local/lib/python3.11/site-packages/httpcore/_sync/http11.py", line 177, in _receive_response_headers
event = self._receive_event(timeout=timeout)
│ │ └ 5
│ └ <function HTTP11Connection._receive_event at 0x76077dfb45e0>
└ <HTTP11Connection ['http://192.168.127.20:6333', CLOSED, Request Count: 2]>
File "/usr/local/lib/python3.11/site-packages/httpcore/_sync/http11.py", line 217, in _receive_event
data = self._network_stream.read(
│ │ └ <function SyncStream.read at 0x76077df5a840>
│ └ <httpcore._backends.sync.SyncStream object at 0x7606f07a2510>
└ <HTTP11Connection ['http://192.168.127.20:6333', CLOSED, Request Count: 2]>
File "/usr/local/lib/python3.11/site-packages/httpcore/_backends/sync.py", line 126, in read
with map_exceptions(exc_map):
│ └ {<class 'TimeoutError'>: <class 'httpcore.ReadTimeout'>, <class 'OSError'>: <class 'httpcore.ReadError'>}
└ <function map_exceptions at 0x76077df59580>
File "/usr/local/lib/python3.11/contextlib.py", line 158, in exit
self.gen.throw(typ, value, traceback)
│ │ │ │ │ └ <traceback object at 0x7607080f82c0>
│ │ │ │ └ TimeoutError('timed out')
│ │ │ └ <class 'TimeoutError'>
│ │ └ <method 'throw' of 'generator' objects>
│ └ <generator object map_exceptions at 0x76070a32cb40>
└ <contextlib._GeneratorContextManager object at 0x760581d71c10>
File "/usr/local/lib/python3.11/site-packages/httpcore/_exceptions.py", line 14, in map_exceptions
raise to_exc(exc) from exc
└ <class 'httpcore.ReadTimeout'>

httpcore.ReadTimeout: timed out

The above exception was the direct cause of the following exception:

Traceback (most recent call last):

File "/usr/local/lib/python3.11/site-packages/qdrant_client/http/api_client.py", line 134, in send_inner
response = self._client.send(request)
│ │ │ └ <Request('POST', 'http://192.168.127.20:6333/collections/open-webui_knowledge/points/scroll')>
│ │ └ <function Client.send at 0x76078064bf60>
│ └ <httpx.Client object at 0x76077df3f690>
└ <qdrant_client.http.api_client.ApiClient object at 0x76077df3f1d0>
File "/usr/local/lib/python3.11/site-packages/httpx/_client.py", line 914, in send
response = self._send_handling_auth(
│ └ <function Client._send_handling_auth at 0x76078065c040>
└ <httpx.Client object at 0x76077df3f690>
File "/usr/local/lib/python3.11/site-packages/httpx/_client.py", line 942, in _send_handling_auth
response = self._send_handling_redirects(
│ └ <function Client._send_handling_redirects at 0x76078065c0e0>
└ <httpx.Client object at 0x76077df3f690>
File "/usr/local/lib/python3.11/site-packages/httpx/_client.py", line 979, in _send_handling_redirects
response = self._send_single_request(request)
│ │ └ <Request('POST', 'http://192.168.127.20:6333/collections/open-webui_knowledge/points/scroll')>
│ └ <function Client._send_single_request at 0x76078065c180>
└ <httpx.Client object at 0x76077df3f690>
File "/usr/local/lib/python3.11/site-packages/httpx/_client.py", line 1014, in _send_single_request
response = transport.handle_request(request)
│ │ └ <Request('POST', 'http://192.168.127.20:6333/collections/open-webui_knowledge/points/scroll')>
│ └ <function HTTPTransport.handle_request at 0x7607806496c0>
└ <httpx.HTTPTransport object at 0x76077df4c790>
File "/usr/local/lib/python3.11/site-packages/httpx/_transports/default.py", line 249, in handle_request
with map_httpcore_exceptions():
└ <function map_httpcore_exceptions at 0x7607806491c0>
File "/usr/local/lib/python3.11/contextlib.py", line 158, in exit
self.gen.throw(typ, value, traceback)
│ │ │ │ │ └ <traceback object at 0x760581d70c00>
│ │ │ │ └ ReadTimeout(TimeoutError('timed out'))
│ │ │ └ <class 'httpcore.ReadTimeout'>
│ │ └ <method 'throw' of 'generator' objects>
│ └ <generator object map_httpcore_exceptions at 0x76070a32d140>
└ <contextlib._GeneratorContextManager object at 0x7605914be1d0>
File "/usr/local/lib/python3.11/site-packages/httpx/_transports/default.py", line 118, in map_httpcore_exceptions
raise mapped_exc(message) from exc
│ └ 'timed out'
└ <class 'httpx.ReadTimeout'>

httpx.ReadTimeout: timed out

During handling of the above exception, another exception occurred:

Traceback (most recent call last):

File "/usr/local/lib/python3.11/threading.py", line 1002, in _bootstrap
self._bootstrap_inner()
│ └ <function Thread._bootstrap_inner at 0x7607f25ac9a0>
└ <Thread(ThreadPoolExecutor-6_0, started 129769902986944)>
File "/usr/local/lib/python3.11/threading.py", line 1045, in _bootstrap_inner
self.run()
│ └ <function Thread.run at 0x7607f25ac680>
└ <Thread(ThreadPoolExecutor-6_0, started 129769902986944)>
File "/usr/local/lib/python3.11/threading.py", line 982, in run
self._target(*self._args, **self._kwargs)
│ │ │ │ │ └ {}
│ │ │ │ └ <Thread(ThreadPoolExecutor-6_0, started 129769902986944)>
│ │ │ └ (<weakref at 0x7606595f6840; to 'ThreadPoolExecutor' at 0x76059ba20e10>, <_queue.SimpleQueue object at 0x76070a98ff60>, None,...
│ │ └ <Thread(ThreadPoolExecutor-6_0, started 129769902986944)>
│ └ <function _worker at 0x7607f16889a0>
└ <Thread(ThreadPoolExecutor-6_0, started 129769902986944)>
File "/usr/local/lib/python3.11/concurrent/futures/thread.py", line 83, in _worker
work_item.run()
│ └ <function _WorkItem.run at 0x7607f1688ae0>
└ <concurrent.futures.thread._WorkItem object at 0x760581d70650>
File "/usr/local/lib/python3.11/concurrent/futures/thread.py", line 58, in run
result = self.fn(*self.args, **self.kwargs)
│ │ │ │ │ └ {}
│ │ │ │ └ <concurrent.futures.thread._WorkItem object at 0x760581d70650>
│ │ │ └ ()
│ │ └ <concurrent.futures.thread._WorkItem object at 0x760581d70650>
│ └ <function chat_completion_files_handler.. at 0x76070aad9da0>
└ <concurrent.futures.thread._WorkItem object at 0x760581d70650>

File "/app/backend/open_webui/utils/middleware.py", line 683, in
lambda: get_sources_from_items(
└ <function get_sources_from_items at 0x76077b92c180>

File "/app/backend/open_webui/retrieval/utils.py", line 643, in get_sources_from_items
query_result = query_collection_with_hybrid_search(
└ <function query_collection_with_hybrid_search at 0x76077baeff60>

File "/app/backend/open_webui/retrieval/utils.py", line 350, in query_collection_with_hybrid_search
collection_results[collection_name] = VECTOR_DB_CLIENT.get(
│ │ │ └ <function QdrantClient.get at 0x76077e0aaa20>
│ │ └ <open_webui.retrieval.vector.dbs.qdrant_multitenancy.QdrantClient object at 0x76077f98e410>
│ └ 'dcc05ab4-b656-4ab8-aef8-ded0dcad5ea5'
└ {}

File "/app/backend/open_webui/retrieval/vector/dbs/qdrant_multitenancy.py", line 314, in get
points = self.client.scroll(
│ │ └ <function QdrantClient.scroll at 0x76077e0a8180>
│ └ <qdrant_client.qdrant_client.QdrantClient object at 0x76077f9a4c90>
└ <open_webui.retrieval.vector.dbs.qdrant_multitenancy.QdrantClient object at 0x76077f98e410>

File "/usr/local/lib/python3.11/site-packages/qdrant_client/qdrant_client.py", line 1459, in scroll
return self._client.scroll(
│ │ └ <function QdrantRemote.scroll at 0x76077e0a5260>
│ └ <qdrant_client.qdrant_remote.QdrantRemote object at 0x76077df3ee50>
└ <qdrant_client.qdrant_client.QdrantClient object at 0x76077f9a4c90>
File "/usr/local/lib/python3.11/site-packages/qdrant_client/qdrant_remote.py", line 1719, in scroll
self.openapi_client.points_api.scroll_points(
│ │ │ └ <function SyncPointsApi.scroll_points at 0x76077e6a1620>
│ │ └ <qdrant_client.http.api.points_api.SyncPointsApi object at 0x76077df4ced0>
│ └ <qdrant_client.http.api_client.SyncApis object at 0x76077df3f810>
└ <qdrant_client.qdrant_remote.QdrantRemote object at 0x76077df3ee50>
File "/usr/local/lib/python3.11/site-packages/qdrant_client/http/api/points_api.py", line 936, in scroll_points
return self._build_for_scroll_points(
│ └ <function _PointsApi._build_for_scroll_points at 0x76077e6a0400>
└ <qdrant_client.http.api.points_api.SyncPointsApi object at 0x76077df4ced0>
File "/usr/local/lib/python3.11/site-packages/qdrant_client/http/api/points_api.py", line 410, in build_for_scroll_points
return self.api_client.request(
│ │ └ <function ApiClient.request at 0x76077e6b3240>
│ └ <qdrant_client.http.api_client.ApiClient object at 0x76077df3f1d0>
└ <qdrant_client.http.api.points_api.SyncPointsApi object at 0x76077df4ced0>
File "/usr/local/lib/python3.11/site-packages/qdrant_client/http/api_client.py", line 95, in request
return self.send(request, type
)
│ │ │ └ <class 'qdrant_client.http.models.models.InlineResponse20016'>
│ │ └ <Request('POST', 'http://192.168.127.20:6333/collections/open-webui_knowledge/points/scroll')>
│ └ <function ApiClient.send at 0x76077e6b3560>
└ <qdrant_client.http.api_client.ApiClient object at 0x76077df3f1d0>
File "/usr/local/lib/python3.11/site-packages/qdrant_client/http/api_client.py", line 112, in send
response = self.middleware(request, self.send_inner)
│ │ │ │ └ <function ApiClient.send_inner at 0x76077e6b3600>
│ │ │ └ <qdrant_client.http.api_client.ApiClient object at 0x76077df3f1d0>
│ │ └ <Request('POST', 'http://192.168.127.20:6333/collections/open-webui_knowledge/points/scroll')>
│ └ <qdrant_client.http.api_client.BaseMiddleware object at 0x76077df3f190>
└ <qdrant_client.http.api_client.ApiClient object at 0x76077df3f1d0>
File "/usr/local/lib/python3.11/site-packages/qdrant_client/http/api_client.py", line 250, in call
return call_next(request)
│ └ <Request('POST', 'http://192.168.127.20:6333/collections/open-webui_knowledge/points/scroll')>
└ <bound method ApiClient.send_inner of <qdrant_client.http.api_client.ApiClient object at 0x76077df3f1d0>>
File "/usr/local/lib/python3.11/site-packages/qdrant_client/http/api_client.py", line 136, in send_inner
raise ResponseHandlingException(e)
└ <class 'qdrant_client.http.exceptions.ResponseHandlingException'>

qdrant_client.http.exceptions.ResponseHandlingException: timed out

Additional Information

Environment:

Ubuntu Server 25.04
Open WebUI (Docker version)
Qdrant DB (non-Docker, same server)
Hardware: 2x RTX 4090, NVIDIA Tesla V100, 192GB RAM, Ryzen 9 7950x
Collection size: ~40,000 documents (planned expansion to 100,000+)

Problem:
When querying collections containing large numbers of documents (~40k), Open WebUI experiences timeout exceptions while attempting to retrieve data from Qdrant. The Qdrant server itself is operational and eventually returns results when queried directly (via browser takes dozens of seconds), but the Open WebUI client fails with httpx.ReadTimeout and ResponseHandlingException.

Originally created by @ka-admin on GitHub (Sep 15, 2025). Original GitHub issue: https://github.com/open-webui/open-webui/issues/17452 ### Check Existing Issues - [x] I have searched for any existing and/or related issues. - [x] I have searched for any existing and/or related discussions. - [x] I am using the latest version of Open WebUI. ### Installation Method Docker ### Open WebUI Version 0.6.28 ### Ollama Version (if applicable) 0.11.11 ### Operating System Ubuntu Server 25.04 x64 ### Browser (if applicable) Firefox latest ### Confirmation - [x] I have read and followed all instructions in `README.md`. - [x] I am using the latest version of **both** Open WebUI and Ollama. - [x] I have included the browser console logs. - [x] I have included the Docker container logs. - [x] I have **provided every relevant configuration, setting, and environment variable used in my setup.** - [x] I have clearly **listed every relevant configuration, custom setting, environment variable, and command-line option that influences my setup** (such as Docker Compose overrides, .env values, browser settings, authentication configurations, etc). - [x] I have documented **step-by-step reproduction instructions that are precise, sequential, and leave nothing to interpretation**. My steps: - Start with the initial platform/version/OS and dependencies used, - Specify exact install/launch/configure commands, - List URLs visited, user input (incl. example values/emails/passwords if needed), - Describe all options and toggles enabled or changed, - Include any files or environmental changes, - Identify the expected and actual result at each stage, - Ensure any reasonably skilled user can follow and hit the same issue. ### Expected Behavior Open WebUI should successfully retrieve data from large Qdrant collections, either by: 1. Implementing configurable timeout settings 2. Using appropriate default timeouts for collection operations 3. Implementing retry mechanisms with exponential backoff ### Actual Behavior The default timeout configuration in Open WebUI's Qdrant client is insufficient for handling large collections. The client timeout appears to be set to approximately 5 seconds, while queries on large collections can take dozens of seconds to complete. ### Steps to Reproduce 1. Set up Open WebUI with Qdrant backend 2. Create a collection with 40,000+ documents, using Qwen/Qwen3-Embedding-0.6B + Qwen/Qwen3-Reranker-0.6B 3. Perform a knowledge retrieval operation that queries the large collection 4. Observe timeout exceptions in logs ### Logs & Screenshots Failed to fetch collection dcc05ab4-b656-4ab8-aef8-ded0dcad5ea5: timed out Traceback (most recent call last): File "/usr/local/lib/python3.11/site-packages/httpx/_transports/default.py", line 101, in map_httpcore_exceptions yield File "/usr/local/lib/python3.11/site-packages/httpx/_transports/default.py", line 250, in handle_request resp = self._pool.handle_request(req) │ │ │ └ <Request [b'POST']> │ │ └ <function ConnectionPool.handle_request at 0x76077dfb60c0> │ └ <ConnectionPool [Requests: 0 active, 0 queued | Connections: 0 active, 0 idle]> └ <httpx.HTTPTransport object at 0x76077df4c790> File "/usr/local/lib/python3.11/site-packages/httpcore/_sync/connection_pool.py", line 256, in handle_request raise exc from None File "/usr/local/lib/python3.11/site-packages/httpcore/_sync/connection_pool.py", line 236, in handle_request response = connection.handle_request( │ └ <function HTTPConnection.handle_request at 0x76077dfb53a0> └ <HTTPConnection ['http://192.168.127.20:6333', HTTP/1.1, CLOSED, Request Count: 2]> File "/usr/local/lib/python3.11/site-packages/httpcore/_sync/connection.py", line 103, in handle_request return self._connection.handle_request(request) │ │ │ └ <Request [b'POST']> │ │ └ <function HTTP11Connection.handle_request at 0x76077dfb4220> │ └ <HTTP11Connection ['http://192.168.127.20:6333', CLOSED, Request Count: 2]> └ <HTTPConnection ['http://192.168.127.20:6333', HTTP/1.1, CLOSED, Request Count: 2]> File "/usr/local/lib/python3.11/site-packages/httpcore/_sync/http11.py", line 136, in handle_request raise exc File "/usr/local/lib/python3.11/site-packages/httpcore/_sync/http11.py", line 106, in handle_request ) = self._receive_response_headers(**kwargs) │ │ └ {'request': <Request [b'POST']>} │ └ <function HTTP11Connection._receive_response_headers at 0x76077dfb44a0> └ <HTTP11Connection ['http://192.168.127.20:6333', CLOSED, Request Count: 2]> File "/usr/local/lib/python3.11/site-packages/httpcore/_sync/http11.py", line 177, in _receive_response_headers event = self._receive_event(timeout=timeout) │ │ └ 5 │ └ <function HTTP11Connection._receive_event at 0x76077dfb45e0> └ <HTTP11Connection ['http://192.168.127.20:6333', CLOSED, Request Count: 2]> File "/usr/local/lib/python3.11/site-packages/httpcore/_sync/http11.py", line 217, in _receive_event data = self._network_stream.read( │ │ └ <function SyncStream.read at 0x76077df5a840> │ └ <httpcore._backends.sync.SyncStream object at 0x7606f07a2510> └ <HTTP11Connection ['http://192.168.127.20:6333', CLOSED, Request Count: 2]> File "/usr/local/lib/python3.11/site-packages/httpcore/_backends/sync.py", line 126, in read with map_exceptions(exc_map): │ └ {<class 'TimeoutError'>: <class 'httpcore.ReadTimeout'>, <class 'OSError'>: <class 'httpcore.ReadError'>} └ <function map_exceptions at 0x76077df59580> File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__ self.gen.throw(typ, value, traceback) │ │ │ │ │ └ <traceback object at 0x7607080f82c0> │ │ │ │ └ TimeoutError('timed out') │ │ │ └ <class 'TimeoutError'> │ │ └ <method 'throw' of 'generator' objects> │ └ <generator object map_exceptions at 0x76070a32cb40> └ <contextlib._GeneratorContextManager object at 0x760581d71c10> File "/usr/local/lib/python3.11/site-packages/httpcore/_exceptions.py", line 14, in map_exceptions raise to_exc(exc) from exc └ <class 'httpcore.ReadTimeout'> httpcore.ReadTimeout: timed out The above exception was the direct cause of the following exception: Traceback (most recent call last): File "/usr/local/lib/python3.11/site-packages/qdrant_client/http/api_client.py", line 134, in send_inner response = self._client.send(request) │ │ │ └ <Request('POST', 'http://192.168.127.20:6333/collections/open-webui_knowledge/points/scroll')> │ │ └ <function Client.send at 0x76078064bf60> │ └ <httpx.Client object at 0x76077df3f690> └ <qdrant_client.http.api_client.ApiClient object at 0x76077df3f1d0> File "/usr/local/lib/python3.11/site-packages/httpx/_client.py", line 914, in send response = self._send_handling_auth( │ └ <function Client._send_handling_auth at 0x76078065c040> └ <httpx.Client object at 0x76077df3f690> File "/usr/local/lib/python3.11/site-packages/httpx/_client.py", line 942, in _send_handling_auth response = self._send_handling_redirects( │ └ <function Client._send_handling_redirects at 0x76078065c0e0> └ <httpx.Client object at 0x76077df3f690> File "/usr/local/lib/python3.11/site-packages/httpx/_client.py", line 979, in _send_handling_redirects response = self._send_single_request(request) │ │ └ <Request('POST', 'http://192.168.127.20:6333/collections/open-webui_knowledge/points/scroll')> │ └ <function Client._send_single_request at 0x76078065c180> └ <httpx.Client object at 0x76077df3f690> File "/usr/local/lib/python3.11/site-packages/httpx/_client.py", line 1014, in _send_single_request response = transport.handle_request(request) │ │ └ <Request('POST', 'http://192.168.127.20:6333/collections/open-webui_knowledge/points/scroll')> │ └ <function HTTPTransport.handle_request at 0x7607806496c0> └ <httpx.HTTPTransport object at 0x76077df4c790> File "/usr/local/lib/python3.11/site-packages/httpx/_transports/default.py", line 249, in handle_request with map_httpcore_exceptions(): └ <function map_httpcore_exceptions at 0x7607806491c0> File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__ self.gen.throw(typ, value, traceback) │ │ │ │ │ └ <traceback object at 0x760581d70c00> │ │ │ │ └ ReadTimeout(TimeoutError('timed out')) │ │ │ └ <class 'httpcore.ReadTimeout'> │ │ └ <method 'throw' of 'generator' objects> │ └ <generator object map_httpcore_exceptions at 0x76070a32d140> └ <contextlib._GeneratorContextManager object at 0x7605914be1d0> File "/usr/local/lib/python3.11/site-packages/httpx/_transports/default.py", line 118, in map_httpcore_exceptions raise mapped_exc(message) from exc │ └ 'timed out' └ <class 'httpx.ReadTimeout'> httpx.ReadTimeout: timed out During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/local/lib/python3.11/threading.py", line 1002, in _bootstrap self._bootstrap_inner() │ └ <function Thread._bootstrap_inner at 0x7607f25ac9a0> └ <Thread(ThreadPoolExecutor-6_0, started 129769902986944)> File "/usr/local/lib/python3.11/threading.py", line 1045, in _bootstrap_inner self.run() │ └ <function Thread.run at 0x7607f25ac680> └ <Thread(ThreadPoolExecutor-6_0, started 129769902986944)> File "/usr/local/lib/python3.11/threading.py", line 982, in run self._target(*self._args, **self._kwargs) │ │ │ │ │ └ {} │ │ │ │ └ <Thread(ThreadPoolExecutor-6_0, started 129769902986944)> │ │ │ └ (<weakref at 0x7606595f6840; to 'ThreadPoolExecutor' at 0x76059ba20e10>, <_queue.SimpleQueue object at 0x76070a98ff60>, None,... │ │ └ <Thread(ThreadPoolExecutor-6_0, started 129769902986944)> │ └ <function _worker at 0x7607f16889a0> └ <Thread(ThreadPoolExecutor-6_0, started 129769902986944)> File "/usr/local/lib/python3.11/concurrent/futures/thread.py", line 83, in _worker work_item.run() │ └ <function _WorkItem.run at 0x7607f1688ae0> └ <concurrent.futures.thread._WorkItem object at 0x760581d70650> File "/usr/local/lib/python3.11/concurrent/futures/thread.py", line 58, in run result = self.fn(*self.args, **self.kwargs) │ │ │ │ │ └ {} │ │ │ │ └ <concurrent.futures.thread._WorkItem object at 0x760581d70650> │ │ │ └ () │ │ └ <concurrent.futures.thread._WorkItem object at 0x760581d70650> │ └ <function chat_completion_files_handler.<locals>.<lambda> at 0x76070aad9da0> └ <concurrent.futures.thread._WorkItem object at 0x760581d70650> File "/app/backend/open_webui/utils/middleware.py", line 683, in <lambda> lambda: get_sources_from_items( └ <function get_sources_from_items at 0x76077b92c180> File "/app/backend/open_webui/retrieval/utils.py", line 643, in get_sources_from_items query_result = query_collection_with_hybrid_search( └ <function query_collection_with_hybrid_search at 0x76077baeff60> > File "/app/backend/open_webui/retrieval/utils.py", line 350, in query_collection_with_hybrid_search collection_results[collection_name] = VECTOR_DB_CLIENT.get( │ │ │ └ <function QdrantClient.get at 0x76077e0aaa20> │ │ └ <open_webui.retrieval.vector.dbs.qdrant_multitenancy.QdrantClient object at 0x76077f98e410> │ └ 'dcc05ab4-b656-4ab8-aef8-ded0dcad5ea5' └ {} File "/app/backend/open_webui/retrieval/vector/dbs/qdrant_multitenancy.py", line 314, in get points = self.client.scroll( │ │ └ <function QdrantClient.scroll at 0x76077e0a8180> │ └ <qdrant_client.qdrant_client.QdrantClient object at 0x76077f9a4c90> └ <open_webui.retrieval.vector.dbs.qdrant_multitenancy.QdrantClient object at 0x76077f98e410> File "/usr/local/lib/python3.11/site-packages/qdrant_client/qdrant_client.py", line 1459, in scroll return self._client.scroll( │ │ └ <function QdrantRemote.scroll at 0x76077e0a5260> │ └ <qdrant_client.qdrant_remote.QdrantRemote object at 0x76077df3ee50> └ <qdrant_client.qdrant_client.QdrantClient object at 0x76077f9a4c90> File "/usr/local/lib/python3.11/site-packages/qdrant_client/qdrant_remote.py", line 1719, in scroll self.openapi_client.points_api.scroll_points( │ │ │ └ <function SyncPointsApi.scroll_points at 0x76077e6a1620> │ │ └ <qdrant_client.http.api.points_api.SyncPointsApi object at 0x76077df4ced0> │ └ <qdrant_client.http.api_client.SyncApis object at 0x76077df3f810> └ <qdrant_client.qdrant_remote.QdrantRemote object at 0x76077df3ee50> File "/usr/local/lib/python3.11/site-packages/qdrant_client/http/api/points_api.py", line 936, in scroll_points return self._build_for_scroll_points( │ └ <function _PointsApi._build_for_scroll_points at 0x76077e6a0400> └ <qdrant_client.http.api.points_api.SyncPointsApi object at 0x76077df4ced0> File "/usr/local/lib/python3.11/site-packages/qdrant_client/http/api/points_api.py", line 410, in _build_for_scroll_points return self.api_client.request( │ │ └ <function ApiClient.request at 0x76077e6b3240> │ └ <qdrant_client.http.api_client.ApiClient object at 0x76077df3f1d0> └ <qdrant_client.http.api.points_api.SyncPointsApi object at 0x76077df4ced0> File "/usr/local/lib/python3.11/site-packages/qdrant_client/http/api_client.py", line 95, in request return self.send(request, type_) │ │ │ └ <class 'qdrant_client.http.models.models.InlineResponse20016'> │ │ └ <Request('POST', 'http://192.168.127.20:6333/collections/open-webui_knowledge/points/scroll')> │ └ <function ApiClient.send at 0x76077e6b3560> └ <qdrant_client.http.api_client.ApiClient object at 0x76077df3f1d0> File "/usr/local/lib/python3.11/site-packages/qdrant_client/http/api_client.py", line 112, in send response = self.middleware(request, self.send_inner) │ │ │ │ └ <function ApiClient.send_inner at 0x76077e6b3600> │ │ │ └ <qdrant_client.http.api_client.ApiClient object at 0x76077df3f1d0> │ │ └ <Request('POST', 'http://192.168.127.20:6333/collections/open-webui_knowledge/points/scroll')> │ └ <qdrant_client.http.api_client.BaseMiddleware object at 0x76077df3f190> └ <qdrant_client.http.api_client.ApiClient object at 0x76077df3f1d0> File "/usr/local/lib/python3.11/site-packages/qdrant_client/http/api_client.py", line 250, in __call__ return call_next(request) │ └ <Request('POST', 'http://192.168.127.20:6333/collections/open-webui_knowledge/points/scroll')> └ <bound method ApiClient.send_inner of <qdrant_client.http.api_client.ApiClient object at 0x76077df3f1d0>> File "/usr/local/lib/python3.11/site-packages/qdrant_client/http/api_client.py", line 136, in send_inner raise ResponseHandlingException(e) └ <class 'qdrant_client.http.exceptions.ResponseHandlingException'> qdrant_client.http.exceptions.ResponseHandlingException: timed out ### Additional Information **Environment:** Ubuntu Server 25.04 Open WebUI (Docker version) Qdrant DB (non-Docker, same server) Hardware: 2x RTX 4090, NVIDIA Tesla V100, 192GB RAM, Ryzen 9 7950x Collection size: ~40,000 documents (planned expansion to 100,000+) **Problem:** When querying collections containing large numbers of documents (~40k), Open WebUI experiences timeout exceptions while attempting to retrieve data from Qdrant. The Qdrant server itself is operational and eventually returns results when queried directly (via browser takes dozens of seconds), but the Open WebUI client fails with httpx.ReadTimeout and ResponseHandlingException.
GiteaMirror added the bug label 2026-04-20 00:30:09 -05:00
Author
Owner

@Classic298 commented on GitHub (Sep 15, 2025):

what's your aiohttp timeout set to?

<!-- gh-comment-id:3291978355 --> @Classic298 commented on GitHub (Sep 15, 2025): what's your aiohttp timeout set to?
Author
Owner

@ka-admin commented on GitHub (Sep 15, 2025):

Where can I find it? I didn't change any timeouts in Open WebUI / qdrant or browser, so I guess the value is default.

<!-- gh-comment-id:3292016598 --> @ka-admin commented on GitHub (Sep 15, 2025): Where can I find it? I didn't change any timeouts in Open WebUI / qdrant or browser, so I guess the value is default.
Author
Owner

@ka-admin commented on GitHub (Sep 15, 2025):

OK, looks like I got it. Added this https://docs.openwebui.com/getting-started/env-configuration/#qdrant_timeout to docker run command and everything fine now.

thanks and sorry for bothering.

Documents retreived fine but in logs I see this (Don't know maybe could be useful for some other case investigation):


2025-09-15 13:29:02.245 | WARNING  | open_webui.utils.oauth:get_oauth_token:178 - No OAuth session found for user 7d2ca130-7d6f-4baf-a0fa-86dd4d2bfa58, session None
2025-09-15 13:29:08.498 | INFO     | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.127.1:57385 - "GET /api/v1/chats/d1386e27-7206-4780-a11c-9ffbf5f2cfa9 HTTP/1.1" 401
2025-09-15 13:29:08.580 | INFO     | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.127.1:57390 - "GET /_app/immutable/chunks/BrmYRhou.js HTTP/1.1" 200
2025-09-15 13:29:08.581 | INFO     | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.127.1:57389 - "GET /_app/immutable/chunks/MPrObXKZ.js HTTP/1.1" 200
2025-09-15 13:29:09.423 | INFO     | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.127.1:57390 - "GET /api/v1/chats/d1386e27-7206-4780-a11c-9ffbf5f2cfa9 HTTP/1.1" 401
2025-09-15 13:29:10.059 | INFO     | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.127.1:57390 - "GET /api/v1/chats/d1386e27-7206-4780-a11c-9ffbf5f2cfa9/pinned HTTP/1.1" 401
2025-09-15 13:29:12.275 | INFO     | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.127.1:57390 - "DELETE /api/v1/chats/d1386e27-7206-4780-a11c-9ffbf5f2cfa9 HTTP/1.1" 500
Exception in ASGI application
  + Exception Group Traceback (most recent call last):
  |   File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 76, in collapse_excgroups
  |     yield
  |   File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 178, in __call__
  |     async with anyio.create_task_group() as task_group:
  |   File "/usr/local/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in __aexit__
  |     raise BaseExceptionGroup(
  | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception)
  +-+---------------- 1 ----------------
    | Traceback (most recent call last):
    |   File "/usr/local/lib/python3.11/site-packages/uvicorn/protocols/http/httptools_impl.py", line 409, in run_asgi
    |     result = await app(  # type: ignore[func-returns-value]
    |              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
    |     return await self.app(scope, receive, send)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.11/site-packages/fastapi/applications.py", line 1054, in __call__
    |     await super().__call__(scope, receive, send)
    |   File "/usr/local/lib/python3.11/site-packages/starlette/applications.py", line 112, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 187, in __call__
    |     raise exc
    |   File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 165, in __call__
    |     await self.app(scope, receive, _send)
    |   File "/usr/local/lib/python3.11/site-packages/starlette/middleware/cors.py", line 93, in __call__
    |     await self.simple_response(scope, receive, send, request_headers=headers)
    |   File "/usr/local/lib/python3.11/site-packages/starlette/middleware/cors.py", line 144, in simple_response
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 177, in __call__
    |     with recv_stream, send_stream, collapse_excgroups():
    |   File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
    |     self.gen.throw(typ, value, traceback)
    |   File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    |     raise exc
    |   File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 179, in __call__
    |     response = await self.dispatch_func(request, call_next)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/backend/open_webui/main.py", line 1212, in inspect_websocket
    |     return await call_next(request)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 154, in call_next
    |     raise app_exc
    |   File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 141, in coro
    |     await self.app(scope, receive_or_disconnect, send_no_error)
    |   File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 177, in __call__
    |     with recv_stream, send_stream, collapse_excgroups():
    |   File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
    |     self.gen.throw(typ, value, traceback)
    |   File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    |     raise exc
    |   File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 179, in __call__
    |     response = await self.dispatch_func(request, call_next)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/backend/open_webui/main.py", line 1191, in check_url
    |     response = await call_next(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 154, in call_next
    |     raise app_exc
    |   File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 141, in coro
    |     await self.app(scope, receive_or_disconnect, send_no_error)
    |   File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 177, in __call__
    |     with recv_stream, send_stream, collapse_excgroups():
    |   File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
    |     self.gen.throw(typ, value, traceback)
    |   File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    |     raise exc
    |   File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 179, in __call__
    |     response = await self.dispatch_func(request, call_next)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/backend/open_webui/main.py", line 1177, in commit_session_after_request
    |     response = await call_next(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 154, in call_next
    |     raise app_exc
    |   File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 141, in coro
    |     await self.app(scope, receive_or_disconnect, send_no_error)
    |   File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 177, in __call__
    |     with recv_stream, send_stream, collapse_excgroups():
    |   File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
    |     self.gen.throw(typ, value, traceback)
    |   File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    |     raise exc
    |   File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 179, in __call__
    |     response = await self.dispatch_func(request, call_next)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/backend/open_webui/utils/security_headers.py", line 11, in dispatch
    |     response = await call_next(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 154, in call_next
    |     raise app_exc
    |   File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 141, in coro
    |     await self.app(scope, receive_or_disconnect, send_no_error)
    |   File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 177, in __call__
    |     with recv_stream, send_stream, collapse_excgroups():
    |   File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
    |     self.gen.throw(typ, value, traceback)
    |   File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    |     raise exc
    |   File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 179, in __call__
    |     response = await self.dispatch_func(request, call_next)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/backend/open_webui/main.py", line 1163, in dispatch
    |     response = await call_next(request)
    |                ^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 154, in call_next
    |     raise app_exc
    |   File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 141, in coro
    |     await self.app(scope, receive_or_disconnect, send_no_error)
    |   File "/usr/local/lib/python3.11/site-packages/starlette_compress/__init__.py", line 96, in __call__
    |     return await self._gzip(scope, receive, send)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.11/site-packages/starlette_compress/_gzip.py", line 110, in __call__
    |     await self.app(scope, receive, wrapper)
    |   File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    |     await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
    |   File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 715, in __call__
    |     await self.middleware_stack(scope, receive, send)
    |   File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 735, in app
    |     await route.handle(scope, receive, send)
    |   File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 288, in handle
    |     await self.app(scope, receive, send)
    |   File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 76, in app
    |     await wrap_app_handling_exceptions(app, request)(scope, receive, send)
    |   File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    |     raise exc
    |   File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    |     await app(scope, receive, sender)
    |   File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 73, in app
    |     response = await f(request)
    |                ^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 301, in app
    |     raw_response = await run_endpoint_function(
    |                    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    |     return await dependant.call(**values)
    |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
    |   File "/app/backend/open_webui/routers/chats.py", line 540, in delete_chat_by_id
    |     for tag in chat.meta.get("tags", []):
    |                ^^^^^^^^^
    | AttributeError: 'NoneType' object has no attribute 'meta'
    +------------------------------------

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/uvicorn/protocols/http/httptools_impl.py", line 409, in run_asgi
    result = await app(  # type: ignore[func-returns-value]
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__
    return await self.app(scope, receive, send)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/fastapi/applications.py", line 1054, in __call__
    await super().__call__(scope, receive, send)
  File "/usr/local/lib/python3.11/site-packages/starlette/applications.py", line 112, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 187, in __call__
    raise exc
  File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 165, in __call__
    await self.app(scope, receive, _send)
  File "/usr/local/lib/python3.11/site-packages/starlette/middleware/cors.py", line 93, in __call__
    await self.simple_response(scope, receive, send, request_headers=headers)
  File "/usr/local/lib/python3.11/site-packages/starlette/middleware/cors.py", line 144, in simple_response
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 177, in __call__
    with recv_stream, send_stream, collapse_excgroups():
  File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
    self.gen.throw(typ, value, traceback)
  File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    raise exc
  File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 179, in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/backend/open_webui/main.py", line 1212, in inspect_websocket
    return await call_next(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 154, in call_next
    raise app_exc
  File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 141, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 177, in __call__
    with recv_stream, send_stream, collapse_excgroups():
  File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
    self.gen.throw(typ, value, traceback)
  File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    raise exc
  File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 179, in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/backend/open_webui/main.py", line 1191, in check_url
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 154, in call_next
    raise app_exc
  File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 141, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 177, in __call__
    with recv_stream, send_stream, collapse_excgroups():
  File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
    self.gen.throw(typ, value, traceback)
  File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    raise exc
  File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 179, in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/backend/open_webui/main.py", line 1177, in commit_session_after_request
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 154, in call_next
    raise app_exc
  File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 141, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 177, in __call__
    with recv_stream, send_stream, collapse_excgroups():
  File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
    self.gen.throw(typ, value, traceback)
  File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    raise exc
  File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 179, in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/backend/open_webui/utils/security_headers.py", line 11, in dispatch
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 154, in call_next
    raise app_exc
  File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 141, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 177, in __call__
    with recv_stream, send_stream, collapse_excgroups():
  File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__
    self.gen.throw(typ, value, traceback)
  File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 82, in collapse_excgroups
    raise exc
  File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 179, in __call__
    response = await self.dispatch_func(request, call_next)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/backend/open_webui/main.py", line 1163, in dispatch
    response = await call_next(request)
               ^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 154, in call_next
    raise app_exc
  File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 141, in coro
    await self.app(scope, receive_or_disconnect, send_no_error)
  File "/usr/local/lib/python3.11/site-packages/starlette_compress/__init__.py", line 96, in __call__
    return await self._gzip(scope, receive, send)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/starlette_compress/_gzip.py", line 110, in __call__
    await self.app(scope, receive, wrapper)
  File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 62, in __call__
    await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send)
  File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 715, in __call__
    await self.middleware_stack(scope, receive, send)
  File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 735, in app
    await route.handle(scope, receive, send)
  File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 288, in handle
    await self.app(scope, receive, send)
  File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 76, in app
    await wrap_app_handling_exceptions(app, request)(scope, receive, send)
  File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app
    raise exc
  File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app
    await app(scope, receive, sender)
  File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 73, in app
    response = await f(request)
               ^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 301, in app
    raw_response = await run_endpoint_function(
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 212, in run_endpoint_function
    return await dependant.call(**values)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/app/backend/open_webui/routers/chats.py", line 540, in delete_chat_by_id
    for tag in chat.meta.get("tags", []):
               ^^^^^^^^^
AttributeError: 'NoneType' object has no attribute 'meta'
<!-- gh-comment-id:3292166989 --> @ka-admin commented on GitHub (Sep 15, 2025): OK, looks like I got it. Added this https://docs.openwebui.com/getting-started/env-configuration/#qdrant_timeout to docker run command and everything fine now. thanks and sorry for bothering. Documents retreived fine but in logs I see this (Don't know maybe could be useful for some other case investigation): ``` 2025-09-15 13:29:02.245 | WARNING | open_webui.utils.oauth:get_oauth_token:178 - No OAuth session found for user 7d2ca130-7d6f-4baf-a0fa-86dd4d2bfa58, session None 2025-09-15 13:29:08.498 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.127.1:57385 - "GET /api/v1/chats/d1386e27-7206-4780-a11c-9ffbf5f2cfa9 HTTP/1.1" 401 2025-09-15 13:29:08.580 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.127.1:57390 - "GET /_app/immutable/chunks/BrmYRhou.js HTTP/1.1" 200 2025-09-15 13:29:08.581 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.127.1:57389 - "GET /_app/immutable/chunks/MPrObXKZ.js HTTP/1.1" 200 2025-09-15 13:29:09.423 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.127.1:57390 - "GET /api/v1/chats/d1386e27-7206-4780-a11c-9ffbf5f2cfa9 HTTP/1.1" 401 2025-09-15 13:29:10.059 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.127.1:57390 - "GET /api/v1/chats/d1386e27-7206-4780-a11c-9ffbf5f2cfa9/pinned HTTP/1.1" 401 2025-09-15 13:29:12.275 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 192.168.127.1:57390 - "DELETE /api/v1/chats/d1386e27-7206-4780-a11c-9ffbf5f2cfa9 HTTP/1.1" 500 Exception in ASGI application + Exception Group Traceback (most recent call last): | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 76, in collapse_excgroups | yield | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 178, in __call__ | async with anyio.create_task_group() as task_group: | File "/usr/local/lib/python3.11/site-packages/anyio/_backends/_asyncio.py", line 772, in __aexit__ | raise BaseExceptionGroup( | ExceptionGroup: unhandled errors in a TaskGroup (1 sub-exception) +-+---------------- 1 ---------------- | Traceback (most recent call last): | File "/usr/local/lib/python3.11/site-packages/uvicorn/protocols/http/httptools_impl.py", line 409, in run_asgi | result = await app( # type: ignore[func-returns-value] | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/local/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__ | return await self.app(scope, receive, send) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/local/lib/python3.11/site-packages/fastapi/applications.py", line 1054, in __call__ | await super().__call__(scope, receive, send) | File "/usr/local/lib/python3.11/site-packages/starlette/applications.py", line 112, in __call__ | await self.middleware_stack(scope, receive, send) | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 187, in __call__ | raise exc | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 165, in __call__ | await self.app(scope, receive, _send) | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/cors.py", line 93, in __call__ | await self.simple_response(scope, receive, send, request_headers=headers) | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/cors.py", line 144, in simple_response | await self.app(scope, receive, send) | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 177, in __call__ | with recv_stream, send_stream, collapse_excgroups(): | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__ | self.gen.throw(typ, value, traceback) | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 82, in collapse_excgroups | raise exc | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 179, in __call__ | response = await self.dispatch_func(request, call_next) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/app/backend/open_webui/main.py", line 1212, in inspect_websocket | return await call_next(request) | ^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 154, in call_next | raise app_exc | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 141, in coro | await self.app(scope, receive_or_disconnect, send_no_error) | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 177, in __call__ | with recv_stream, send_stream, collapse_excgroups(): | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__ | self.gen.throw(typ, value, traceback) | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 82, in collapse_excgroups | raise exc | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 179, in __call__ | response = await self.dispatch_func(request, call_next) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/app/backend/open_webui/main.py", line 1191, in check_url | response = await call_next(request) | ^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 154, in call_next | raise app_exc | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 141, in coro | await self.app(scope, receive_or_disconnect, send_no_error) | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 177, in __call__ | with recv_stream, send_stream, collapse_excgroups(): | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__ | self.gen.throw(typ, value, traceback) | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 82, in collapse_excgroups | raise exc | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 179, in __call__ | response = await self.dispatch_func(request, call_next) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/app/backend/open_webui/main.py", line 1177, in commit_session_after_request | response = await call_next(request) | ^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 154, in call_next | raise app_exc | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 141, in coro | await self.app(scope, receive_or_disconnect, send_no_error) | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 177, in __call__ | with recv_stream, send_stream, collapse_excgroups(): | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__ | self.gen.throw(typ, value, traceback) | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 82, in collapse_excgroups | raise exc | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 179, in __call__ | response = await self.dispatch_func(request, call_next) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/app/backend/open_webui/utils/security_headers.py", line 11, in dispatch | response = await call_next(request) | ^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 154, in call_next | raise app_exc | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 141, in coro | await self.app(scope, receive_or_disconnect, send_no_error) | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 177, in __call__ | with recv_stream, send_stream, collapse_excgroups(): | File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__ | self.gen.throw(typ, value, traceback) | File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 82, in collapse_excgroups | raise exc | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 179, in __call__ | response = await self.dispatch_func(request, call_next) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/app/backend/open_webui/main.py", line 1163, in dispatch | response = await call_next(request) | ^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 154, in call_next | raise app_exc | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 141, in coro | await self.app(scope, receive_or_disconnect, send_no_error) | File "/usr/local/lib/python3.11/site-packages/starlette_compress/__init__.py", line 96, in __call__ | return await self._gzip(scope, receive, send) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/local/lib/python3.11/site-packages/starlette_compress/_gzip.py", line 110, in __call__ | await self.app(scope, receive, wrapper) | File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 62, in __call__ | await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) | File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app | raise exc | File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app | await app(scope, receive, sender) | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 715, in __call__ | await self.middleware_stack(scope, receive, send) | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 735, in app | await route.handle(scope, receive, send) | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 288, in handle | await self.app(scope, receive, send) | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 76, in app | await wrap_app_handling_exceptions(app, request)(scope, receive, send) | File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app | raise exc | File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app | await app(scope, receive, sender) | File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 73, in app | response = await f(request) | ^^^^^^^^^^^^^^^^ | File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 301, in app | raw_response = await run_endpoint_function( | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 212, in run_endpoint_function | return await dependant.call(**values) | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | File "/app/backend/open_webui/routers/chats.py", line 540, in delete_chat_by_id | for tag in chat.meta.get("tags", []): | ^^^^^^^^^ | AttributeError: 'NoneType' object has no attribute 'meta' +------------------------------------ During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/usr/local/lib/python3.11/site-packages/uvicorn/protocols/http/httptools_impl.py", line 409, in run_asgi result = await app( # type: ignore[func-returns-value] ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/uvicorn/middleware/proxy_headers.py", line 60, in __call__ return await self.app(scope, receive, send) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/applications.py", line 1054, in __call__ await super().__call__(scope, receive, send) File "/usr/local/lib/python3.11/site-packages/starlette/applications.py", line 112, in __call__ await self.middleware_stack(scope, receive, send) File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 187, in __call__ raise exc File "/usr/local/lib/python3.11/site-packages/starlette/middleware/errors.py", line 165, in __call__ await self.app(scope, receive, _send) File "/usr/local/lib/python3.11/site-packages/starlette/middleware/cors.py", line 93, in __call__ await self.simple_response(scope, receive, send, request_headers=headers) File "/usr/local/lib/python3.11/site-packages/starlette/middleware/cors.py", line 144, in simple_response await self.app(scope, receive, send) File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 177, in __call__ with recv_stream, send_stream, collapse_excgroups(): File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__ self.gen.throw(typ, value, traceback) File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 82, in collapse_excgroups raise exc File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 179, in __call__ response = await self.dispatch_func(request, call_next) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/backend/open_webui/main.py", line 1212, in inspect_websocket return await call_next(request) ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 154, in call_next raise app_exc File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 141, in coro await self.app(scope, receive_or_disconnect, send_no_error) File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 177, in __call__ with recv_stream, send_stream, collapse_excgroups(): File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__ self.gen.throw(typ, value, traceback) File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 82, in collapse_excgroups raise exc File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 179, in __call__ response = await self.dispatch_func(request, call_next) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/backend/open_webui/main.py", line 1191, in check_url response = await call_next(request) ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 154, in call_next raise app_exc File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 141, in coro await self.app(scope, receive_or_disconnect, send_no_error) File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 177, in __call__ with recv_stream, send_stream, collapse_excgroups(): File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__ self.gen.throw(typ, value, traceback) File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 82, in collapse_excgroups raise exc File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 179, in __call__ response = await self.dispatch_func(request, call_next) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/backend/open_webui/main.py", line 1177, in commit_session_after_request response = await call_next(request) ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 154, in call_next raise app_exc File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 141, in coro await self.app(scope, receive_or_disconnect, send_no_error) File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 177, in __call__ with recv_stream, send_stream, collapse_excgroups(): File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__ self.gen.throw(typ, value, traceback) File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 82, in collapse_excgroups raise exc File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 179, in __call__ response = await self.dispatch_func(request, call_next) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/backend/open_webui/utils/security_headers.py", line 11, in dispatch response = await call_next(request) ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 154, in call_next raise app_exc File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 141, in coro await self.app(scope, receive_or_disconnect, send_no_error) File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 177, in __call__ with recv_stream, send_stream, collapse_excgroups(): File "/usr/local/lib/python3.11/contextlib.py", line 158, in __exit__ self.gen.throw(typ, value, traceback) File "/usr/local/lib/python3.11/site-packages/starlette/_utils.py", line 82, in collapse_excgroups raise exc File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 179, in __call__ response = await self.dispatch_func(request, call_next) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/backend/open_webui/main.py", line 1163, in dispatch response = await call_next(request) ^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 154, in call_next raise app_exc File "/usr/local/lib/python3.11/site-packages/starlette/middleware/base.py", line 141, in coro await self.app(scope, receive_or_disconnect, send_no_error) File "/usr/local/lib/python3.11/site-packages/starlette_compress/__init__.py", line 96, in __call__ return await self._gzip(scope, receive, send) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/starlette_compress/_gzip.py", line 110, in __call__ await self.app(scope, receive, wrapper) File "/usr/local/lib/python3.11/site-packages/starlette/middleware/exceptions.py", line 62, in __call__ await wrap_app_handling_exceptions(self.app, conn)(scope, receive, send) File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app raise exc File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 715, in __call__ await self.middleware_stack(scope, receive, send) File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 735, in app await route.handle(scope, receive, send) File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 288, in handle await self.app(scope, receive, send) File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 76, in app await wrap_app_handling_exceptions(app, request)(scope, receive, send) File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 53, in wrapped_app raise exc File "/usr/local/lib/python3.11/site-packages/starlette/_exception_handler.py", line 42, in wrapped_app await app(scope, receive, sender) File "/usr/local/lib/python3.11/site-packages/starlette/routing.py", line 73, in app response = await f(request) ^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 301, in app raw_response = await run_endpoint_function( ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/fastapi/routing.py", line 212, in run_endpoint_function return await dependant.call(**values) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/app/backend/open_webui/routers/chats.py", line 540, in delete_chat_by_id for tag in chat.meta.get("tags", []): ^^^^^^^^^ AttributeError: 'NoneType' object has no attribute 'meta' ```
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/open-webui#18293