fix(collections): re-raise non-404 errors from async Collection.exists() (#2100) - #2112
Open
Anai-Guo wants to merge 1 commit into
Open
fix(collections): re-raise non-404 errors from async Collection.exists() (#2100)#2112Anai-Guo wants to merge 1 commit into
Anai-Guo wants to merge 1 commit into
Conversation
The async `Collection.exists()` still had a bare `except Exception: return False`, so a connection error, auth failure or timeout was indistinguishable from "collection not found". PR weaviate#1950 fixed this for the sync path only. Mirror the sync implementation: return False on 404 and re-raise anything else. Adds a mock test covering both branches on the async client. Fixes weaviate#2100
There was a problem hiding this comment.
Orca Security Scan Summary
| Status | Check | Issues by priority | |
|---|---|---|---|
| Infrastructure as Code | View in Orca | ||
| SAST | View in Orca | ||
| Secrets | View in Orca | ||
| Vulnerabilities | View in Orca |
|
To avoid any confusion in the future about your contribution to Weaviate, we work with a Contributor License Agreement. If you agree, you can simply add a comment to this PR that you agree with the CLA so that we can merge. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #2100
Problem
CollectionAsync.exists()still had a bare catch-all:so a connection error, auth failure or timeout is indistinguishable from "collection not found". The common guard
therefore tries to re-create the collection whenever the server is merely unreachable, masking the outage.
#1799 reported exactly this. #1950 fixed the sync path in
weaviate/collections/collection/sync.pybut the async counterpart was never updated.Change
Mirror the sync implementation exactly — return
Falseon 404, re-raise everything else:Test
Adds
test_async_collection_existstomock_tests/test_collection.py, following the existingtest_collection_existsshape and theuse_async_with_localpattern already used inmock_tests/test_auth.py. It asserts both branches: 404 →False, 500 →UnexpectedStatusCodeErrorwithstatus_code == 500.Verified locally against the mock server:
mock_tests/test_collection.pyae327ca), test onlyFAILED — DID NOT RAISE UnexpectedStatusCodeErrorpassed21 passedruff/ruff format(pinnedv0.14.7) andflake8are clean on both touched files.🤖 Generated with Claude Code