[GH-ISSUE #14634] issue: Uploading Files Crashes Open-WebUI #17320

Closed
opened 2026-04-19 23:03:18 -05:00 by GiteaMirror · 0 comments
Owner

Originally created by @austin3410 on GitHub (Jun 3, 2025).
Original GitHub issue: https://github.com/open-webui/open-webui/issues/14634

Check Existing Issues

  • I have searched the existing issues and discussions.
  • I am using the latest version of Open WebUI.

Installation Method

Pip Install

Open WebUI Version

v0.6.13

Ollama Version (if applicable)

v0.9.0

Operating System

Windows Server 2022

Browser (if applicable)

Edge/Chrome

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

Uploading a directory of documents to a Knowledge through the WebUI or API should process all documents successfully.

Actual Behavior

A random amount of the documents upload successfully (normally around 20-60) but eventually, one document fails, Open-WebUI crashes WITHOUT ERROR, the Vector DB for that Knowledge gets corrupted and no other documents are able to be uploaded to it. The documents that were successfully uploaded are still present and RAG queries work as expected with those documents.

Essentially that Knowledge enters a locked state in which it works properly, but no other documents can be uploaded. Attempting to do so results in an Open-WebUI server crash.

Steps to Reproduce

Using web UI:

  1. Install Windows Server 2022
  2. Install Nvidia CUDA 12.8 driver
  3. Install OpenJDK 21.0.7
  4. Download and start Tika 3.2.0 server java -jar tika-server.jar
  5. Download and start Ollama 0.9.0 server
  6. Install Open-WebUI using Pip method with Python 3.11
  7. Start Open-WebUI open-webui serve
  8. Setup local admin user
  9. Enable API keys
  10. Create a new Knowledge
  11. Click on Add Content
  12. Click Upload Directory
  13. Select a directory with a moderate number of PDF files. (Mine is 180)
  14. Watch and wait as files begin to be added successfully
  15. Eventually, 1 file fails (For me this is random but usually between 20-70)
  16. Open-WebUI crashes (You'll know this has happened because all other files in queue will immediately fail)
  17. Restart Open-WebUI server
  18. Attempting to upload any other files to that same Knowledge will crash Open-WebUI again.

Using the API

  1. Identical steps as WebUI up to step 11
  2. Run the script providing the ID of the Knowledge you created
  3. Eventually, script will state that a file upload failed (this is when Open-WebUI server crashes)

Logs & Screenshots

Open-WebUI logs for last two file uploads. The first is successful, the second crashes the server.
In this example I was using the Python API script.
When going through the WebUI, the logs are generally the same, minus the lines about file.content_type: None and File type None is not provided.
Either way the final behavior is the same, Open-WebUI fails to upload all the files and crashes.

2025-06-03 11:08:16.697 | INFO     | open_webui.routers.files:upload_file:94 - file.content_type: None - {}
2025-06-03 11:08:16.720 | INFO     | open_webui.routers.files:upload_file:174 - File type None is not provided, but trying to process anyway - {}
2025-06-03 11:08:16.808 | INFO     | open_webui.routers.retrieval:save_docs_to_vector_db:1086 - save_docs_to_vector_db: document document-1-title.pdf file-53a798b7-f863-4adc-baa9-23cf4ed56106 - {}
2025-06-03 11:08:16.901 | INFO     | open_webui.routers.retrieval:save_docs_to_vector_db:1169 - adding to collection file-53a798b7-f863-4adc-baa9-23cf4ed56106 - {}
2025-06-03 11:08:17.487 | INFO     | uvicorn.protocols.http.httptools_impl:send:476 - 10.1.4.120:0 - "POST /api/v1/files/?process=true&internal=true HTTP/1.1" 200 - {}
2025-06-03 11:08:17.634 | INFO     | open_webui.routers.retrieval:save_docs_to_vector_db:1086 - save_docs_to_vector_db: document document-1-title.pdf 33627520-abcf-42dc-bef7-4c11325e7309 - {}
2025-06-03 11:08:17.733 | INFO     | open_webui.routers.retrieval:save_docs_to_vector_db:1158 - collection 33627520-abcf-42dc-bef7-4c11325e7309 already exists - {}
2025-06-03 11:08:17.734 | INFO     | open_webui.routers.retrieval:save_docs_to_vector_db:1169 - adding to collection 33627520-abcf-42dc-bef7-4c11325e7309 - {}
2025-06-03 11:08:18.180 | INFO     | uvicorn.protocols.http.httptools_impl:send:476 - 10.1.4.120:0 - "POST /api/v1/knowledge/33627520-abcf-42dc-bef7-4c11325e7309/file/add HTTP/1.1" 200 - {}
2025-06-03 11:08:18.335 | INFO     | open_webui.routers.files:upload_file:94 - file.content_type: None - {}
2025-06-03 11:08:18.396 | INFO     | open_webui.routers.files:upload_file:174 - File type None is not provided, but trying to process anyway - {}
2025-06-03 11:08:20.097 | INFO     | open_webui.routers.retrieval:save_docs_to_vector_db:1086 - save_docs_to_vector_db: document document-2-title.pdf file-7a1e34bc-f628-4107-a80b-f6e85489bed0 - {}
2025-06-03 11:08:20.168 | INFO     | open_webui.routers.retrieval:save_docs_to_vector_db:1169 - adding to collection file-7a1e34bc-f628-4107-a80b-f6e85489bed0 - {}
2025-06-03 11:08:20.802 | INFO     | uvicorn.protocols.http.httptools_impl:send:476 - 10.1.4.120:0 - "POST /api/v1/files/?process=true&internal=true HTTP/1.1" 200 - {}
2025-06-03 11:08:20.960 | INFO     | open_webui.routers.retrieval:save_docs_to_vector_db:1086 - save_docs_to_vector_db: document document-2-title.pdf 33627520-abcf-42dc-bef7-4c11325e7309 - {}
2025-06-03 11:08:21.057 | INFO     | open_webui.routers.retrieval:save_docs_to_vector_db:1158 - collection 33627520-abcf-42dc-bef7-4c11325e7309 already exists - {}
2025-06-03 11:08:21.058 | INFO     | open_webui.routers.retrieval:save_docs_to_vector_db:1169 - adding to collection 33627520-abcf-42dc-bef7-4c11325e7309 - {}
(venv) (base) PS C:\Program Files\open-webui>

Ollama Server Logs and Tika Server Logs contain no errors, they simply stop receiving requests.

Client Browser Logs:

+layout.svelte:101 Socket undefined disconnected due to transport close
+layout.svelte:103 Additional details: {description: 'websocket connection closed', context: CloseEvent}context: CloseEventisTrusted: truebubbles: falsecancelBubble: falsecancelable: falsecode: 1006composed: falsecurrentTarget: WebSocket {url: 'ws://myopen-webui.com/ws/socket.io/?EIO=4&transport=websocket', readyState: 3, bufferedAmount: 0, onopen: ƒ, onerror: ƒ, …}defaultPrevented: falseeventPhase: 0reason: ""returnValue: truesrcElement: WebSocket {url: 'ws://myopen-webui.com/ws/socket.io/?EIO=4&transport=websocket', readyState: 3, bufferedAmount: 0, onopen: ƒ, onerror: ƒ, …}target: WebSocket {url: 'ws://myopen-webui.com/ws/socket.io/?EIO=4&transport=websocket', readyState: 3, bufferedAmount: 0, onopen: ƒ, onerror: ƒ, …}timeStamp: 275201.40000009537type: "close"wasClean: false[[Prototype]]: CloseEventdescription: "websocket connection closed"[[Prototype]]: Object
index.ts:183 
            
            
            POST http://myopen-webui.com/api/v1/knowledge/541ef59d-3c46-404d-a1a7-cda212cd0a90/file/add net::ERR_CONNECTION_REFUSED

Additional Information

Running the Python API Script below generates the same behavior.

Attempting to upload the documents through the WebUI on the Open-WebUI server itself (localhost:8080) also generates the same behavior.

API Python Script:

import requests
import os


class Client:

    def __init__(self, base_url, token):
        self.base_url = base_url
        self.token = token


# This function uploads a file to Open-WebUI
    def upload_file(self, filepath):
        url = f"{self.base_url}/v1/files/?process=true&internal=true"

        headers = {
            'Authorization': f'Bearer {self.token}',
            'accept': 'application/json'
        }

        with open(filepath, "rb") as file:
            files = {"file": file}
            response = requests.post(url, headers=headers, files=files, timeout=None)

            if response.status_code == 200:
                return response.json()
            else:
                return {"status_code": response.status_code, "detail": response}
    
    # This function adds a file to a Knowledge Collection
    def add_file_to_knowledge(self, file_id, knowledge_id):
        url = f"{self.base_url}/v1/knowledge/{knowledge_id}/file/add"

        headers = {
            'Authorization': f'Bearer {self.token}',
            'accept': 'application/json'
        }

        payload = {
              "file_id": file_id
            }
        
        response = requests.post(url, headers=headers, json=payload, timeout=None)
        
        if response.status_code == 200:
            return response.json()
        else:
            return {"status_code": response.status_code, "detail": response}
    
    # This function loops through all files in the provided directory, uploads them, and adds them to a specified Knowledge.
    def process_dir(self, dir_path, knowledge_id):
        filenames = [f for f in os.listdir(dir_path) if os.path.isfile(os.path.join(dir_path, f))]
        for f in filenames:
            fullpath = os.path.join(dir_path, f)
            upload_r = self.upload_file(filepath=fullpath)
            add_r = self.add_file_to_knowledge(upload_r["id"], knowledge_id=knowledge_id)
            if "id" in add_r:
                print(f"Uploaded: {f}!")
            else:
                print(f"FAILED: {f}!")
                print(add_r)
                x = input("Continue Y/n: ")
                if x == "" or x.lower() == "y":
                    continue
                else:
                    break
        

client = Client("http://myopen-webui.com", "my-api-token")

client.process_dir(dir_path="mydir", knowledge_id="33627520-abcf-42dc-bef7-4c11325e7309")

MY OPEN-WEBUI DOCUMENTS SETTINGS

Image
Image

I have no Pipelines enabled.

Let me know if there's anything else I need to provide.

Originally created by @austin3410 on GitHub (Jun 3, 2025). Original GitHub issue: https://github.com/open-webui/open-webui/issues/14634 ### Check Existing Issues - [x] I have searched the existing issues and discussions. - [x] I am using the latest version of Open WebUI. ### Installation Method Pip Install ### Open WebUI Version v0.6.13 ### Ollama Version (if applicable) v0.9.0 ### Operating System Windows Server 2022 ### Browser (if applicable) Edge/Chrome ### 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 Uploading a directory of documents to a Knowledge through the WebUI or API should process all documents successfully. ### Actual Behavior A random amount of the documents upload successfully (normally around 20-60) but eventually, one document fails, Open-WebUI crashes WITHOUT ERROR, the Vector DB for that Knowledge gets corrupted and no other documents are able to be uploaded to it. The documents that were successfully uploaded are still present and RAG queries work as expected with those documents. Essentially that Knowledge enters a locked state in which it works properly, but no other documents can be uploaded. Attempting to do so results in an Open-WebUI server crash. ### Steps to Reproduce Using web UI: 1. Install Windows Server 2022 2. Install Nvidia CUDA 12.8 driver 3. Install OpenJDK 21.0.7 4. Download and start Tika 3.2.0 server `java -jar tika-server.jar` 5. Download and start Ollama 0.9.0 server 6. Install Open-WebUI using Pip method with Python 3.11 7. Start Open-WebUI `open-webui serve` 8. Setup local admin user 9. Enable API keys 10. Create a new Knowledge 11. Click on Add Content 12. Click Upload Directory 13. Select a directory with a moderate number of PDF files. (Mine is 180) 14. Watch and wait as files begin to be added successfully 15. Eventually, 1 file fails (For me this is random but usually between 20-70) 16. Open-WebUI crashes (You'll know this has happened because all other files in queue will immediately fail) 17. Restart Open-WebUI server 18. Attempting to upload any other files to that same Knowledge will crash Open-WebUI again. Using the API 1. Identical steps as WebUI up to step 11 2. Run the script providing the ID of the Knowledge you created 3. Eventually, script will state that a file upload failed (this is when Open-WebUI server crashes) ### Logs & Screenshots Open-WebUI logs for last two file uploads. The first is successful, the second crashes the server. In this example I was using the Python API script. When going through the WebUI, the logs are generally the same, minus the lines about file.content_type: None and File type None is not provided. Either way the final behavior is the same, Open-WebUI fails to upload all the files and crashes. ``` 2025-06-03 11:08:16.697 | INFO | open_webui.routers.files:upload_file:94 - file.content_type: None - {} 2025-06-03 11:08:16.720 | INFO | open_webui.routers.files:upload_file:174 - File type None is not provided, but trying to process anyway - {} 2025-06-03 11:08:16.808 | INFO | open_webui.routers.retrieval:save_docs_to_vector_db:1086 - save_docs_to_vector_db: document document-1-title.pdf file-53a798b7-f863-4adc-baa9-23cf4ed56106 - {} 2025-06-03 11:08:16.901 | INFO | open_webui.routers.retrieval:save_docs_to_vector_db:1169 - adding to collection file-53a798b7-f863-4adc-baa9-23cf4ed56106 - {} 2025-06-03 11:08:17.487 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.1.4.120:0 - "POST /api/v1/files/?process=true&internal=true HTTP/1.1" 200 - {} 2025-06-03 11:08:17.634 | INFO | open_webui.routers.retrieval:save_docs_to_vector_db:1086 - save_docs_to_vector_db: document document-1-title.pdf 33627520-abcf-42dc-bef7-4c11325e7309 - {} 2025-06-03 11:08:17.733 | INFO | open_webui.routers.retrieval:save_docs_to_vector_db:1158 - collection 33627520-abcf-42dc-bef7-4c11325e7309 already exists - {} 2025-06-03 11:08:17.734 | INFO | open_webui.routers.retrieval:save_docs_to_vector_db:1169 - adding to collection 33627520-abcf-42dc-bef7-4c11325e7309 - {} 2025-06-03 11:08:18.180 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.1.4.120:0 - "POST /api/v1/knowledge/33627520-abcf-42dc-bef7-4c11325e7309/file/add HTTP/1.1" 200 - {} 2025-06-03 11:08:18.335 | INFO | open_webui.routers.files:upload_file:94 - file.content_type: None - {} 2025-06-03 11:08:18.396 | INFO | open_webui.routers.files:upload_file:174 - File type None is not provided, but trying to process anyway - {} 2025-06-03 11:08:20.097 | INFO | open_webui.routers.retrieval:save_docs_to_vector_db:1086 - save_docs_to_vector_db: document document-2-title.pdf file-7a1e34bc-f628-4107-a80b-f6e85489bed0 - {} 2025-06-03 11:08:20.168 | INFO | open_webui.routers.retrieval:save_docs_to_vector_db:1169 - adding to collection file-7a1e34bc-f628-4107-a80b-f6e85489bed0 - {} 2025-06-03 11:08:20.802 | INFO | uvicorn.protocols.http.httptools_impl:send:476 - 10.1.4.120:0 - "POST /api/v1/files/?process=true&internal=true HTTP/1.1" 200 - {} 2025-06-03 11:08:20.960 | INFO | open_webui.routers.retrieval:save_docs_to_vector_db:1086 - save_docs_to_vector_db: document document-2-title.pdf 33627520-abcf-42dc-bef7-4c11325e7309 - {} 2025-06-03 11:08:21.057 | INFO | open_webui.routers.retrieval:save_docs_to_vector_db:1158 - collection 33627520-abcf-42dc-bef7-4c11325e7309 already exists - {} 2025-06-03 11:08:21.058 | INFO | open_webui.routers.retrieval:save_docs_to_vector_db:1169 - adding to collection 33627520-abcf-42dc-bef7-4c11325e7309 - {} (venv) (base) PS C:\Program Files\open-webui> ``` **Ollama Server Logs and Tika Server Logs contain no errors, they simply stop receiving requests.** Client Browser Logs: ``` +layout.svelte:101 Socket undefined disconnected due to transport close +layout.svelte:103 Additional details: {description: 'websocket connection closed', context: CloseEvent}context: CloseEventisTrusted: truebubbles: falsecancelBubble: falsecancelable: falsecode: 1006composed: falsecurrentTarget: WebSocket {url: 'ws://myopen-webui.com/ws/socket.io/?EIO=4&transport=websocket', readyState: 3, bufferedAmount: 0, onopen: ƒ, onerror: ƒ, …}defaultPrevented: falseeventPhase: 0reason: ""returnValue: truesrcElement: WebSocket {url: 'ws://myopen-webui.com/ws/socket.io/?EIO=4&transport=websocket', readyState: 3, bufferedAmount: 0, onopen: ƒ, onerror: ƒ, …}target: WebSocket {url: 'ws://myopen-webui.com/ws/socket.io/?EIO=4&transport=websocket', readyState: 3, bufferedAmount: 0, onopen: ƒ, onerror: ƒ, …}timeStamp: 275201.40000009537type: "close"wasClean: false[[Prototype]]: CloseEventdescription: "websocket connection closed"[[Prototype]]: Object index.ts:183 POST http://myopen-webui.com/api/v1/knowledge/541ef59d-3c46-404d-a1a7-cda212cd0a90/file/add net::ERR_CONNECTION_REFUSED ``` ### Additional Information Running the Python API Script below generates the same behavior. Attempting to upload the documents through the WebUI on the Open-WebUI server itself (localhost:8080) also generates the same behavior. API Python Script: ``` import requests import os class Client: def __init__(self, base_url, token): self.base_url = base_url self.token = token # This function uploads a file to Open-WebUI def upload_file(self, filepath): url = f"{self.base_url}/v1/files/?process=true&internal=true" headers = { 'Authorization': f'Bearer {self.token}', 'accept': 'application/json' } with open(filepath, "rb") as file: files = {"file": file} response = requests.post(url, headers=headers, files=files, timeout=None) if response.status_code == 200: return response.json() else: return {"status_code": response.status_code, "detail": response} # This function adds a file to a Knowledge Collection def add_file_to_knowledge(self, file_id, knowledge_id): url = f"{self.base_url}/v1/knowledge/{knowledge_id}/file/add" headers = { 'Authorization': f'Bearer {self.token}', 'accept': 'application/json' } payload = { "file_id": file_id } response = requests.post(url, headers=headers, json=payload, timeout=None) if response.status_code == 200: return response.json() else: return {"status_code": response.status_code, "detail": response} # This function loops through all files in the provided directory, uploads them, and adds them to a specified Knowledge. def process_dir(self, dir_path, knowledge_id): filenames = [f for f in os.listdir(dir_path) if os.path.isfile(os.path.join(dir_path, f))] for f in filenames: fullpath = os.path.join(dir_path, f) upload_r = self.upload_file(filepath=fullpath) add_r = self.add_file_to_knowledge(upload_r["id"], knowledge_id=knowledge_id) if "id" in add_r: print(f"Uploaded: {f}!") else: print(f"FAILED: {f}!") print(add_r) x = input("Continue Y/n: ") if x == "" or x.lower() == "y": continue else: break client = Client("http://myopen-webui.com", "my-api-token") client.process_dir(dir_path="mydir", knowledge_id="33627520-abcf-42dc-bef7-4c11325e7309") ``` **MY OPEN-WEBUI DOCUMENTS SETTINGS** ![Image](https://github.com/user-attachments/assets/b6036041-4998-42a2-ae76-7f8cb57fbaa8) ![Image](https://github.com/user-attachments/assets/0a94d949-5cd3-49fe-8868-cb2409e7d590) I have no Pipelines enabled. Let me know if there's anything else I need to provide.
GiteaMirror added the bug label 2026-04-19 23:03:18 -05:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: github-starred/open-webui#17320