fix: pin chromadb to <1.0 to avoid 1.5.x queue-stall regression (#1006)#1008
fix: pin chromadb to <1.0 to avoid 1.5.x queue-stall regression (#1006)#1008
Conversation
chromadb 1.5.x has a regression where the embeddings_queue to embeddings processor never runs from PersistentClient. Writes land durably in the queue but segment materialization never happens, so mempalace status and search show 0 drawers after a mine that reported hundreds filed. Confirmed broken on 1.5.8 and 1.5.6; chromadb 0.6.3 works immediately. pyproject.toml previously pinned chromadb>=0.5.0 with no upper bound, so every fresh pip install mempalace today pulls broken 1.5.8. Pinning to <1.0 restores working behavior for new installs while keeping the 0.5.0 floor so existing users on older chromadb are unaffected. See #1006 for full diagnosis with SQLite-level evidence and version test matrix.
Code reviewFound 1 issue:
Lines 26 to 31 in 8ad5772 🤖 Generated with Claude Code - If this code review was useful, please react with 👍. Otherwise, react with 👎. |
|
Closing in favor of #581 ( Per the review on this PR, the #581 is already APPROVED with a 50K-drawer auto-migration validation (per @jphein's testing — 648 tests pass, palace migrates 0.6.x → 1.5.x cleanly). It keeps mempalace on a supported-Python path and plausibly excludes the broken 1.5.x versions via its Issue #1006 stays open. The queue-stall regression is real; the right fix is a narrow floor in the 1.5.x line, not a blanket cap below 1.0. If #581 merges and 1.5.4 itself exhibits the queue-stall, a follow-up bump to the floor is simpler than capping below the whole major. |
Summary
Fixes #1006.
chromadb>=0.5.0with no upper bound lets freshpip install mempalacepull the latestchromadb==1.5.8, which has a queue-processor regression that makes writes invisible. Mine reports success;mempalace status/searchshow 0 drawers.chromadb==0.6.3verified working.Change
One line in
pyproject.toml:Test plan
pip installfrom this branch — verify chromadb resolves below 1.0mempalace mine <dir> --mode convosreports filed drawersmempalace statusshows the filed drawers (not 0)mempalace searchreturns real content with non-None metadataRoot cause
The 1.x architecture introduced async segment materialization via
embeddings_queue. In 1.5.x that processor isn't running fromPersistentClientalone — writes durably queue but never reach theembeddings/embedding_metadatatables. SQLite-level evidence in #1006.Upstream fix not investigated in this PR. Long-term: contribute to ChromaDB or raise the ceiling once a 1.x version ships with the processor restored.
Note for affected users
Users who already pulled 1.5.x can recover without losing data: