Skip to content
This repository was archived by the owner on Jun 5, 2025. It is now read-only.
This repository was archived by the owner on Jun 5, 2025. It is now read-only.

CodeGate gets stuck on looping #951

Closed
Closed
@rdimitrov

Description

@rdimitrov

Describe the issue

The issue is that while running the Ollama integration tests locally in a loop (script provided), either CodeGate gets stuck in a loop or the curl is left hanging for response.

This was not reproducible when using larger models (1.5B or 7B).

This does not cause a denial of service to CodeGate.

Steps to Reproduce

  1. Run ollama locally
  2. Pull the following model - ollama pull qwen2.5-coder:0.5b
  3. Start CodeGate
  4. Create/activate a venv with the necessary dependencies installed
  5. Run the following script -
#!/bin/bash

FAIL_COUNT=0
TOTAL_RUNS=60

for ((i=1; i<=TOTAL_RUNS; i++)); do
    echo "Run #$i"
    CODEGATE_PROVIDERS=ollama python tests/integration/integration_tests.py
    if [ $? -ne 0 ]; then
        ((FAIL_COUNT++))
    fi
    sleep 2
done

echo "Total failures: $FAIL_COUNT out of $TOTAL_RUNS runs."

Operating System

MacOS (Arm)

IDE and Version

None, bash script doing curls

Extension and Version

None, bash script doing curls

Provider

Ollama

Model

qwen2.5-coder:0.5b

Codegate version

Build from main - Commit 7eb57d6

Logs

1. Logs from when the curl is stuck -

  • Test:
2025-02-06 14:44:38 [debug    ] Generated embedding            model=all-minilm-L6-v2-q5_k_m.gguf vector_length=384
2025-02-06 14:44:38 [debug    ] Generating embedding           content=["```python\nif __name__ == '__main__':\n    invokehttp.run(call_api)\n```\n"] content_length=70 model=all-minilm-L6-v2-q5_k_m.gguf
2025-02-06 14:44:38 [debug    ] Generated embedding            model=all-minilm-L6-v2-q5_k_m.gguf vector_length=384
2025-02-06 14:44:38 [info     ] Test Ollama FIM passed        
2025-02-06 14:44:38 [debug    ] Creating requester for provider: ollama
2025-02-06 14:44:38 [debug    ] Using requester type: StandardRequester
2025-02-06 14:44:38 [debug    ] Making request to URL: http://127.0.0.1:8989/ollama/chat/completions
2025-02-06 14:44:38 [debug    ] Headers: {'Content-Type': 'application/json'}
2025-02-06 14:44:38 [debug    ] Data: {'max_tokens': 4096, 'messages': [{'content': 'You are a coding assistant.', 'role': 'system'}, {'content': 'Is it safe to use invokehttp?', 'role': 'user'}], 'model': 'qwen2.5-coder:0.5b', 'stream': True, 'temperature': 0}
  • Codegate:
2025-02-06T12:44:37.588443Z [debug    ] send_request_body.complete     lineno=87 module=_trace pathname=/Users/dimitrovr/stacklok/codegate/venv/lib/python3.13/site-packages/httpcore/_trace.py
2025-02-06T12:44:37.588578Z [debug    ] receive_response_headers.started request=<Request [b'POST']> lineno=87 module=_trace pathname=/Users/dimitrovr/stacklok/codegate/venv/lib/python3.13/site-packages/httpcore/_trace.py
2025-02-06T12:44:38.313037Z [debug    ] receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Content-Type', b'application/x-ndjson'), (b'Date', b'Thu, 06 Feb 2025 12:44:38 GMT'), (b'Transfer-Encoding', b'chunked')]) lineno=87 module=_trace pathname=/Users/dimitrovr/stacklok/codegate/venv/lib/python3.13/site-packages/httpcore/_trace.py
2025-02-06T12:44:38.313919Z [info     ] HTTP Request: POST http://localhost:11434/api/generate "HTTP/1.1 200 OK" lineno=1786 module=_client pathname=/Users/dimitrovr/stacklok/codegate/venv/lib/python3.13/site-packages/httpx/_client.py
2025-02-06T12:44:38.314582Z [debug    ] receive_response_body.started request=<Request [b'POST']> lineno=87 module=_trace pathname=/Users/dimitrovr/stacklok/codegate/venv/lib/python3.13/site-packages/httpcore/_trace.py
2025-02-06T12:44:38.423121Z [debug    ] receive_response_body.complete lineno=87 module=_trace pathname=/Users/dimitrovr/stacklok/codegate/venv/lib/python3.13/site-packages/httpcore/_trace.py
2025-02-06T12:44:38.423533Z [debug    ] response_closed.started        lineno=87 module=_trace pathname=/Users/dimitrovr/stacklok/codegate/venv/lib/python3.13/site-packages/httpcore/_trace.py
2025-02-06T12:44:38.423923Z [debug    ] response_closed.complete       lineno=87 module=_trace pathname=/Users/dimitrovr/stacklok/codegate/venv/lib/python3.13/site-packages/httpcore/_trace.py
2025-02-06T12:44:38.424442Z [debug    ] No secrets found for session   lineno=115 module=manager pathname=/Users/dimitrovr/stacklok/codegate/src/codegate/pipeline/secrets/manager.py session_id=8f280000-0cd3-4e92-ace6-b7656a1ce6e5
2025-02-06T12:44:38.703034Z [debug    ] User-Agent header received: python-requests/2.32.3 from 127.0.0.1 lineno=56 module=server pathname=/Users/dimitrovr/stacklok/codegate/src/codegate/server.py
2025-02-06T12:44:38.704185Z [info     ] No particilar client detected, using generic client lineno=224 module=detector pathname=/Users/dimitrovr/stacklok/codegate/src/codegate/clients/detector.py
2025-02-06T12:44:38.705078Z [info     ] Chat completion pipeline selected for execution. lineno=158 module=base pathname=/Users/dimitrovr/stacklok/codegate/src/codegate/providers/base.py
2025-02-06T12:44:38.705528Z [info     ] Total secrets redacted since last assistant message: 0 lineno=298 module=secrets pathname=/Users/dimitrovr/stacklok/codegate/src/codegate/pipeline/secrets/secrets.py
2025-02-06T12:44:38.705708Z [debug    ] Generating embedding           content=['Is it safe to use invokehttp?'] content_length=29 lineno=80 model=all-minilm-L6-v2-q5_k_m.gguf module=inference_engine pathname=/Users/dimitrovr/stacklok/codegate/src/codegate/inference/inference_engine.py
2025-02-06T12:44:38.708466Z [debug    ] Generated embedding            lineno=90 model=all-minilm-L6-v2-q5_k_m.gguf module=inference_engine pathname=/Users/dimitrovr/stacklok/codegate/src/codegate/inference/inference_engine.py vector_length=384
2025-02-06T12:44:38.708640Z [debug    ] Performing vector similarity search distance_threshold=0.5 limit=100 lineno=204 module=storage_engine pathname=/Users/dimitrovr/stacklok/codegate/src/codegate/storage/storage_engine.py query='Is it safe to use invokehttp?'
2025-02-06T12:44:38.708896Z [info     ] Adding 1 bad packages to the context. lineno=115 module=codegate pathname=/Users/dimitrovr/stacklok/codegate/src/codegate/pipeline/codegate_context_retriever/codegate.py
2025-02-06T12:44:38.709067Z [debug    ] Found matching packages in sqlite-vec database lineno=52 matched_packages=['invokehttp (pypi)'] module=codegate pathname=/Users/dimitrovr/stacklok/codegate/src/codegate/pipeline/codegate_context_retriever/codegate.py
2025-02-06T12:44:38.709181Z [debug    ] Final context message          context_message='Context: invokehttp is a Python package available on PyPI ecosystem.  However, this package is found to be malicious and must not be used. For additional information refer to https://www.insight.stacklok.com/report/pypi/invokehttp?utm_source=codegate - Package offers this functionality: Invokehttp is a malicious package\n \n\n Query: Is it safe to use invokehttp?' lineno=157 module=codegate pathname=/Users/dimitrovr/stacklok/codegate/src/codegate/pipeline/codegate_context_retriever/codegate.py
2025-02-06T12:44:38.713017Z [info     ] Chat completion pipeline selected for output. lineno=112 module=base pathname=/Users/dimitrovr/stacklok/codegate/src/codegate/providers/base.py
2025-02-06T12:44:38.714148Z [info     ] 127.0.0.1:61870 - "POST /ollama/chat/completions HTTP/1.1" 200 lineno=473 module=h11_impl pathname=/Users/dimitrovr/stacklok/codegate/venv/lib/python3.13/site-packages/uvicorn/protocols/http/h11_impl.py
2025-02-06T12:44:38.714620Z [debug    ] send_request_headers.started request=<Request [b'POST']> lineno=87 module=_trace pathname=/Users/dimitrovr/stacklok/codegate/venv/lib/python3.13/site-packages/httpcore/_trace.py
2025-02-06T12:44:38.714999Z [debug    ] send_request_headers.complete  lineno=87 module=_trace pathname=/Users/dimitrovr/stacklok/codegate/venv/lib/python3.13/site-packages/httpcore/_trace.py
2025-02-06T12:44:38.715093Z [debug    ] send_request_body.started request=<Request [b'POST']> lineno=87 module=_trace pathname=/Users/dimitrovr/stacklok/codegate/venv/lib/python3.13/site-packages/httpcore/_trace.py
2025-02-06T12:44:38.715367Z [debug    ] send_request_body.complete     lineno=87 module=_trace pathname=/Users/dimitrovr/stacklok/codegate/venv/lib/python3.13/site-packages/httpcore/_trace.py
2025-02-06T12:44:38.715451Z [debug    ] receive_response_headers.started request=<Request [b'POST']> lineno=87 module=_trace pathname=/Users/dimitrovr/stacklok/codegate/venv/lib/python3.13/site-packages/httpcore/_trace.py
2025-02-06T12:44:39.624093Z [debug    ] receive_response_headers.complete return_value=(b'HTTP/1.1', 200, b'OK', [(b'Content-Type', b'application/x-ndjson'), (b'Date', b'Thu, 06 Feb 2025 12:44:39 GMT'), (b'Transfer-Encoding', b'chunked')]) lineno=87 module=_trace pathname=/Users/dimitrovr/stacklok/codegate/venv/lib/python3.13/site-packages/httpcore/_trace.py
2025-02-06T12:44:39.625773Z [info     ] HTTP Request: POST http://localhost:11434/api/chat "HTTP/1.1 200 OK" lineno=1786 module=_client pathname=/Users/dimitrovr/stacklok/codegate/venv/lib/python3.13/site-packages/httpx/_client.py
2025-02-06T12:44:39.626668Z [debug    ] receive_response_body.started request=<Request [b'POST']> lineno=87 module=_trace pathname=/Users/dimitrovr/stacklok/codegate/venv/lib/python3.13/site-packages/httpcore/_trace.py

2. Logs from when CodeGate is stuck

  • Test:
2025-02-06 14:49:40 [debug    ] Generated embedding            model=all-minilm-L6-v2-q5_k_m.gguf vector_length=384
2025-02-06 14:49:40 [info     ] Test Ollama FIM passed        
2025-02-06 14:49:40 [debug    ] Creating requester for provider: ollama
2025-02-06 14:49:40 [debug    ] Using requester type: StandardRequester
2025-02-06 14:49:40 [debug    ] Making request to URL: http://127.0.0.1:8989/ollama/chat/completions
2025-02-06 14:49:40 [debug    ] Headers: {'Content-Type': 'application/json'}
2025-02-06 14:49:40 [debug    ] Data: {'max_tokens': 4096, 'messages': [{'content': 'You are a coding assistant.', 'role': 'system'}, {'content': 'Is it safe to use invokehttp?', 'role': 'user'}], 'model': 'qwen2.5-coder:0.5b', 'stream': True, 'temperature': 0}

  • CodeGate
...
2025-02-06T12:50:25.417862Z [info     ] Found 0 libraries in the storage engine lineno=58 module=output pathname=/Users/dimitrovr/stacklok/codegate/src/codegate/pipeline/extract_snippets/output.py
2025-02-06T12:50:26.199536Z [debug    ] Searching by package names and ecosystem ecosystem=pypi lineno=161 module=storage_engine packages=['flask'] params=['flask', 'pypi'] pathname=/Users/dimitrovr/stacklok/codegate/src/codegate/storage/storage_engine.py sql='\n                    SELECT name, type, status, description\n                    FROM packages\n                    WHERE LOWER(name) IN (?)\n                    AND LOWER(type) = ?\n                '
2025-02-06T12:50:26.199793Z [info     ] Found 0 libraries in the storage engine lineno=58 module=output pathname=/Users/dimitrovr/stacklok/codegate/src/codegate/pipeline/extract_snippets/output.py
2025-02-06T12:50:26.990139Z [debug    ] Searching by package names and ecosystem ecosystem=pypi lineno=161 module=storage_engine packages=['flask'] params=['flask', 'pypi'] pathname=/Users/dimitrovr/stacklok/codegate/src/codegate/storage/storage_engine.py sql='\n                    SELECT name, type, status, description\n                    FROM packages\n                    WHERE LOWER(name) IN (?)\n                    AND LOWER(type) = ?\n                '
2025-02-06T12:50:26.990398Z [info     ] Found 0 libraries in the storage engine lineno=58 module=output pathname=/Users/dimitrovr/stacklok/codegate/src/codegate/pipeline/extract_snippets/output.py
2025-02-06T12:50:27.738928Z [debug    ] Searching by package names and ecosystem ecosystem=pypi lineno=161 module=storage_engine packages=['flask'] params=['flask', 'pypi'] pathname=/Users/dimitrovr/stacklok/codegate/src/codegate/storage/storage_engine.py sql='\n                    SELECT name, type, status, description\n                    FROM packages\n                    WHERE LOWER(name) IN (?)\n                    AND LOWER(type) = ?\n                '
2025-02-06T12:50:27.739193Z [info     ] Found 0 libraries in the storage engine lineno=58 module=output pathname=/Users/dimitrovr/stacklok/codegate/src/codegate/pipeline/extract_snippets/output.py
2025-02-06T12:50:28.386815Z [debug    ] Searching by package names and ecosystem ecosystem=pypi lineno=161 module=storage_engine packages=['flask'] params=['flask', 'pypi'] pathname=/Users/dimitrovr/stacklok/codegate/src/codegate/storage/storage_engine.py sql='\n                    SELECT name, type, status, description\n                    FROM packages\n                    WHERE LOWER(name) IN (?)\n                    AND LOWER(type) = ?\n                '
2025-02-06T12:50:28.387055Z [info     ] Found 0 libraries in the storage engine lineno=58 module=output pathname=/Users/dimitrovr/stacklok/codegate/src/codegate/pipeline/extract_snippets/output.py
2025-02-06T12:50:29.059227Z [debug    ] Searching by package names and ecosystem ecosystem=pypi lineno=161 module=storage_engine packages=['flask'] params=['flask', 'pypi'] pathname=/Users/dimitrovr/stacklok/codegate/src/codegate/storage/storage_engine.py sql='\n                    SELECT name, type, status, description\n                    FROM packages\n                    WHERE LOWER(name) IN (?)\n                    AND LOWER(type) = ?\n                '
2025-02-06T12:50:29.059469Z [info     ] Found 0 libraries in the storage engine lineno=58 module=output pathname=/Users/dimitrovr/stacklok/codegate/src/codegate/pipeline/extract_snippets/output.py
2025-02-06T12:50:29.756715Z [debug    ] Searching by package names and ecosystem ecosystem=pypi lineno=161 module=storage_engine packages=['flask'] params=['flask', 'pypi'] pathname=/Users/dimitrovr/stacklok/codegate/src/codegate/storage/storage_engine.py sql='\n                    SELECT name, type, status, description\n                    FROM packages\n                    WHERE LOWER(name) IN (?)\n                    AND LOWER(type) = ?\n                '
2025-02-06T12:50:29.756984Z [info     ] Found 0 libraries in the storage engine lineno=58 module=output pathname=/Users/dimitrovr/stacklok/codegate/src/codegate/pipeline/extract_snippets/output.py
2025-02-06T12:50:30.457167Z [debug    ] Searching by package names and ecosystem ecosystem=pypi lineno=161 module=storage_engine packages=['flask'] params=['flask', 'pypi'] pathname=/Users/dimitrovr/stacklok/codegate/src/codegate/storage/storage_engine.py sql='\n                    SELECT name, type, status, description\n                    FROM packages\n                    WHERE LOWER(name) IN (?)\n                    AND LOWER(type) = ?\n                '
2025-02-06T12:50:30.457502Z [info     ] Found 0 libraries in the storage engine lineno=58 module=output pathname=/Users/dimitrovr/stacklok/codegate/src/codegate/pipeline/extract_snippets/output.py
2025-02-06T12:50:31.165392Z [debug    ] Searching by package names and ecosystem ecosystem=pypi lineno=161 module=storage_engine packages=['flask'] params=['flask', 'pypi'] pathname=/Users/dimitrovr/stacklok/codegate/src/codegate/storage/storage_engine.py sql='\n                    SELECT name, type, status, description\n                    FROM packages\n                    WHERE LOWER(name) IN (?)\n                    AND LOWER(type) = ?\n                '
2025-02-06T12:50:31.165673Z [info     ] Found 0 libraries in the storage engine lineno=58 module=output pathname=/Users/dimitrovr/stacklok/codegate/src/codegate/pipeline/extract_snippets/output.py
2025-02-06T12:50:31.896884Z [debug    ] Searching by package names and ecosystem ecosystem=pypi lineno=161 module=storage_engine packages=['flask'] params=['flask', 'pypi'] pathname=/Users/dimitrovr/stacklok/codegate/src/codegate/storage/storage_engine.py sql='\n                    SELECT name, type, status, description\n                    FROM packages\n                    WHERE LOWER(name) IN (?)\n                    AND LOWER(type) = ?\n                '
2025-02-06T12:50:31.897134Z [info     ] Found 0 libraries in the storage engine lineno=58 module=output pathname=/Users/dimitrovr/stacklok/codegate/src/codegate/pipeline/extract_snippets/output.py
2025-02-06T12:50:32.651781Z [debug    ] Searching by package names and ecosystem ecosystem=pypi lineno=161 module=storage_engine packages=['flask'] params=['flask', 'pypi'] pathname=/Users/dimitrovr/stacklok/codegate/src/codegate/storage/storage_engine.py sql='\n                    SELECT name, type, status, description\n                    FROM packages\n                    WHERE LOWER(name) IN (?)\n                    AND LOWER(type) = ?\n                '
2025-02-06T12:50:32.652048Z [info     ] Found 0 libraries in the storage engine lineno=58 module=output pathname=/Users/dimitrovr/stacklok/codegate/src/codegate/pipeline/extract_snippets/output.py
...

Additional Context

No response

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions