v1.2.0 — embeddinggemma default + concurrency/timeout bug fixes#2
Merged
Conversation
Fix concurrency race in collection switch:
mcp_server.ex handle_tool_call("reindex", ...) now pre-checks
Indexer.busy?/0 before calling IndexManagement.ensure_collection_for_project/1.
Previously, a rejected reindex would still swap the active Qdrant
collection out from under in-flight Broadway batches, producing
hundreds of "404 Not found: Collection nexus_X doesn't exist" errors
until container restart.
Fix cold-start Ollama timeouts dropping chunks:
embed_batch/1 retries up to 3 times with linear backoff on
:timeout / :connect_timeout / :econnrefused. Default recv_timeout
raised from 30s to 60s. Timeout, retry count and backoff are
configurable via Application env so tests can fast-fail.
EmbeddingModel.warm_up/0 runs from Application.start/2 so the
first real batch doesn't block on a cold model load.
Default model switched to embeddinggemma:300m:
@default_model in embedding_model.ex, plus updates in
docker-compose.yml (already in v1.1.x), .env.example, config.exs,
CLAUDE.md, README.md, docs/DOCKERHUB.md. OLLAMA_MODEL=nomic-embed-text
still works as override.
Bumps version to 1.2.0.
iksnerd
added a commit
that referenced
this pull request
May 4, 2026
Fix concurrency race in collection switch:
mcp_server.ex handle_tool_call("reindex", ...) now pre-checks
Indexer.busy?/0 before calling IndexManagement.ensure_collection_for_project/1.
Previously, a rejected reindex would still swap the active Qdrant
collection out from under in-flight Broadway batches, producing
hundreds of "404 Not found: Collection nexus_X doesn't exist" errors
until container restart.
Fix cold-start Ollama timeouts dropping chunks:
embed_batch/1 retries up to 3 times with linear backoff on
:timeout / :connect_timeout / :econnrefused. Default recv_timeout
raised from 30s to 60s. Timeout, retry count and backoff are
configurable via Application env so tests can fast-fail.
EmbeddingModel.warm_up/0 runs from Application.start/2 so the
first real batch doesn't block on a cold model load.
Default model switched to embeddinggemma:300m:
@default_model in embedding_model.ex, plus updates in
docker-compose.yml (already in v1.1.x), .env.example, config.exs,
CLAUDE.md, README.md, docs/DOCKERHUB.md. OLLAMA_MODEL=nomic-embed-text
still works as override.
Bumps version to 1.2.0.
Co-authored-by: iksnerd <iksnerd@users.noreply.github.com>
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.
Summary
1. Fix concurrency race in collection switch.
mcp_server.exhandle_tool_call("reindex", ...)now pre-checksIndexer.busy?/0beforeIndexManagement.ensure_collection_for_project/1. Previously a rejected reindex still swapped the active Qdrant collection, causing in-flight Broadway batches from the prior job to write to a non-existent collection.2. Fix cold-start Ollama timeouts dropping chunks.
embed_batch/1retries up to 3× with linear backoff on transient errors.recv_timeoutraised from 30s → 60s.EmbeddingModel.warm_up/0runs fromApplication.start/2. All three knobs are Application env so tests fast-fail (1s/0 retries).3. Default model switched to
embeddinggemma:300m.@default_modelinembedding_model.ex, plus.env.example,config.exs,CLAUDE.md,README.md,docs/DOCKERHUB.md.OLLAMA_MODEL=nomic-embed-textstill works as override.4. Version bump to 1.2.0.
Test plan
mix compile --warnings-as-errorspassesmix format --check-formattedpassesreindex(B)whilereindex(A)is mid-flight now returns:indexing_in_progresswithout swapping the collection — verified by reproduction in the prior sessiondocker-compose upfollowed byreindexno longer drops chunks (warm-up + retries handle the first batches)🤖 Generated with Claude Code