Skip to content

Commit faadd37

Browse files
committed
docs: Update analysis with v25.4 resolution
1 parent 7ef80d4 commit faadd37

File tree

3 files changed

+30
-9
lines changed

3 files changed

+30
-9
lines changed

COCKROACHDB_MULTINODE_ANALYSIS.md

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,16 @@
22

33
## Executive Summary
44

5-
**Issue**: `CREATE VECTOR INDEX` times out at exactly 30 seconds when called from a Python subprocess on multi-node CockroachDB clusters, but completes successfully on single-node deployments.
5+
**Issue**: `CREATE VECTOR INDEX` times out at exactly 30 seconds when called from a Python subprocess on multi-node CockroachDB clusters (v25.2-v25.3), but completes successfully on single-node deployments.
66

7-
**Impact**: VectorDBBench integration cannot complete on multi-node clusters (the recommended production configuration)
7+
**Root Cause**: CockroachDB v25.2-v25.3 has a limitation with online table backfills during vector index creation on populated tables.
88

9-
**Evidence**: Comprehensive testing shows this is specifically a multi-node + subprocess interaction issue, not a VectorDBBench framework problem.
9+
**Solution**: ✅ **Fixed in CockroachDB v25.4!** - The release introduces "online table backfills" that eliminate this timeout issue.
10+
11+
**Evidence**: Comprehensive testing on v25.3.x shows this is a version-specific limitation that has been resolved in v25.4.
12+
13+
**Reference**: https://www.cockroachlabs.com/docs/releases/v25.4
14+
> "Online table backfills: adding vector indexes to tables with existing data no longer requires taking the table offline during the backfill process."
1015
1116
---
1217

@@ -350,12 +355,26 @@ These are excellent results! We just need to solve the multi-node subprocess iss
350355

351356
---
352357

353-
## Next Steps
358+
## Resolution: Upgrade to v25.4
359+
360+
**✅ FIXED IN v25.4**: The release notes confirm this exact issue has been resolved:
361+
362+
From https://www.cockroachlabs.com/docs/releases/v25.4:
363+
364+
> **"Online table backfills: adding vector indexes to tables with existing data no longer requires taking the table offline during the backfill process. This eliminates downtime when adopting vector search capabilities."**
365+
366+
### Recommended Actions
367+
368+
1. **Upgrade to CockroachDB v25.4+** for production vector search workloads
369+
2. **Test VectorDBBench on v25.4** to confirm the timeout is resolved
370+
3. **Update documentation** to require v25.4+ for VectorDBBench compatibility
371+
372+
### For v25.2-v25.3 Users (Workaround)
354373

355-
1. **Confirm if this is a known issue** with distributed schema changes from subprocess connections
356-
2. **Identify the 30-second timeout** source (server-side setting?)
357-
3. **Determine if there's a configuration** to extend this timeout
358-
4. **Consider if schema change coordinator** needs to handle subprocess connections differently
374+
If you must use v25.2 or v25.3:
375+
- Use single-node clusters for benchmarking
376+
- Create indexes BEFORE loading data (`create_index_before_load=True`)
377+
- Note that multi-node clusters will experience 30s timeouts during index creation on populated tables
359378

360379
---
361380

vectordb_bench/backend/clients/cockroachdb/cli.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ def CockroachDB(
9999
host=parameters["host"],
100100
port=parameters["port"],
101101
db_name=parameters["db_name"],
102+
sslmode=parameters.get("sslmode", "disable"),
102103
),
103104
db_case_config=CockroachDBVectorIndexConfig(
104105
metric_type=metric_type,

vectordb_bench/backend/clients/cockroachdb/config.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ class CockroachDBConfig(DBConfig):
2929
port: int = 26257
3030
db_name: str = "defaultdb"
3131
table_name: str = "vdbbench_cockroachdb"
32+
sslmode: str = "disable" # disable, require, verify-ca, or verify-full
3233
isolation_level: str = "serializable"
3334
pool_size: int = 100
3435
max_overflow: int = 100
@@ -46,7 +47,7 @@ def to_dict(self) -> CockroachDBConfigDict:
4647
"dbname": self.db_name,
4748
"user": user_str,
4849
"password": pwd_str,
49-
"sslmode": "disable", # Default for local dev; production should override
50+
"sslmode": self.sslmode,
5051
},
5152
"table_name": self.table_name,
5253
"pool_size": self.pool_size,

0 commit comments

Comments
 (0)