chore: raise weaviate-client floor and test against Weaviate 1.39 - #3956
Merged
davidsbatista merged 2 commits intoSep 15, 2026
Merged
davidsbatista merged 2 commits into
davidsbatista merged 2 commits into
Conversation
Three related maintenance bumps. weaviate-client >=4.20 -> >=4.23.0. No code here needs a newer API, so this is hygiene rather than a requirement, but the floor is the version CI actually exercises (the "lowest direct dependencies" step resolves to it), and 4.20 carries three bugs on paths this integration uses: - 4.23.0 fixes `collections.exists()` in the async client swallowing non-404 errors and returning False. The `async_client` property calls exactly this and would try to re-create an existing collection. - 4.23.0 fixes blocking of the event loop while the async client waits for Weaviate to become ready. Every `run_async` path goes through it. - 4.21.2 fixes aggregate metrics returning 0/0.0 instead of None for empty result sets, which `get_metadata_field_min_max()` and the unique-value aggregates depend on. Test server 1.36.2 -> 1.39.4, so the integration suite stops testing three minor versions behind. Also moves off the Docker Hub image path to avoid pull rate limits in CI. Adds a healthcheck and switches CI to `docker compose up -d --wait`. The workflow previously started the container with no readiness gate, which is a plausible source of the flakiness that `--reruns 3 --reruns-delay 30` masks.
dudanogueira
requested review from
davidsbatista
and removed request for
a team
September 14, 2026 17:55
Contributor
|
Hi @dudanogueira, thanks for your interest in contributing to Haystack! 🙏 This is an automated message to help us keep the review queue healthy. |
This was referenced Sep 14, 2026
Contributor
davidsbatista
approved these changes
Sep 15, 2026
davidsbatista
left a comment
Contributor
There was a problem hiding this comment.
Looks good @dudanogueira - thanks for the update! obrigado :)
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.
Related Issues
Proposed Changes:
Three related maintenance bumps for the Weaviate integration.
weaviate-client>=4.20→>=4.23.0. To be straightforward about it: nothing in the integration currently needs an API newer than 4.20, so this is hygiene rather than a requirement. The reason to do it anyway is that the declared floor is the version CI actually exercises — the "lowest direct dependencies" step resolves to it — and 4.20 carries three bugs on paths this integration uses:collections.exists()in the async client swallowing non-404 errors and returningFalse. Theasync_clientproperty calls exactly this, and on a swallowed error would try to re-create an existing collection.run_asyncpath goes through it.0/0.0instead ofNonefor empty result sets, whichget_metadata_field_min_max()and the unique-value aggregates depend on.No upper cap is added.
Test server
1.36.2→1.39.4. The integration suite was testing three minor versions behind, so nothing from 1.37, 1.38 or 1.39 was covered. This also moves off the Docker Hub image path tocr.weaviate.ioto avoid pull rate limits in CI.A readiness gate.
docker-compose.ymlgains a healthcheck and the workflow switches todocker compose up -d --wait. The container was previously started with no wait at all, immediately before the unit tests; that race is a plausible source of the flakiness the--reruns 3 --reruns-delay 30retry policy currently masks.How did you test it?
Reproduced the CI lowest-direct step locally, which resolves to
weaviate-client==4.23.0, and ranhatch run test:unitagainst it — 81 passed. Restored the environment withhatch env pruneafterwards.Ran the full integration suite against Weaviate 1.39.4: 186 passed, 1 skipped.
docker compose up -d --waitreturns after ~11s with the container reported healthy.hatch run fmt-checkandhatch run test:typespass.Notes for the reviewer
The healthcheck shells out to
busybox wget, since the Weaviate image ships nocurlor standalonewget. I verified it works on 1.39.4, but it does couple the compose file to an image internal. If you'd rather not, the alternative is a runner-side poll step in the workflow instead:Happy to switch to that — or to drop the client floor bump entirely and keep only the server bump, if forcing an upgrade on downstream users isn't worth the three fixes above.
Checklist