Commit ecbb1bc
GigaMap concurrency handling improvements and eventual indexing (#564)
* Bump jvector version to 4.0.0-rc.8 in pom.xml
* Add parallel on-disk write support to VectorIndex
* Introduce BackgroundIndexingManager for eventual consistency in VectorIndex
- Added `BackgroundIndexingManager` interface to manage background graph indexing.
- Implemented a default asynchronous queue-based manager for deferred HNSW operations.
- Added unit tests to validate eventual indexing behavior across add, update, remove, and bulk operations.
* Add concurrent stress tests for VectorIndex thread safety
- Introduced stress test cases to validate VectorIndex under heavy concurrent operations.
- Tests cover various configurations, including in-memory and on-disk setups with/without PQ compression and background tasks.
- Ensured thread safety via assertions for no exceptions or deadlocks.
- Included targeted eventual indexing and heavy load scenarios for robustness.
* Add performance tests for synchronous vs eventual indexing in VectorIndex
- Introduced test cases to evaluate insertion performance (single and batch adds) between synchronous and eventual indexing modes.
- Verified search quality to ensure correctness of deferred graph indexing.
- Included detailed metrics on caller-visible speedup and indexing throughput.
* Refactor BackgroundIndexingManager to delegate operation handling via execute()
- Replaced the applyOperation method with per-operation execute() implementations in IndexingOperation types.
- Simplified indexing logic by encapsulating operation-specific behavior within each record.
- Improved maintainability and reduced duplication in BackgroundIndexingManager.
* Update default value for parallel on-disk write to false in VectorIndexConfiguration
* Update tests for parallel on-disk write default change to false in VectorIndexConfiguration
* Refactor VectorIndex synchronization and builder operation handling
- Replaced `persistenceLock` with `builderLock` for unified read/write access control over builder operations.
- Introduced deferred operation handling for sync-mode mutations during cleanup phases.
- Improved thread-safety for concurrent graph updates by coordinating via builder read/write locks.
- Added `cleanupInProgress` flag and `deferredBuilderOps` queue to manage in-flight operations during cleanup and persistence tasks.
- Removed redundant `synchronized(parentMap)` calls to avoid lock-ordering issues.
* Documented `eventualIndexing` and `parallelOnDiskWrite` features in VectorIndexConfiguration with examples and configuration details.
* Document eventual indexing and parallel on-disk write features with examples and configuration guidance in VectorIndex JavaDoc.
* Remove redundant default case check for unsupported similarity function in VectorIndex and add comment
* Add braces to conditional statements in VectorEntry equals() for consistency
* Consolidate BackgroundIndexingManager, BackgroundOptimizationManager, and BackgroundPersistenceManager into unified BackgroundTaskManager.
* Gigamap jvector update tests updade (#569)
* move configuration tests to VICT file, remove duplicite tests.
* remove test, duplicate of testBackgroundOptimizationTriggersAfterIntervalAndThreshold
* test refactoring
* change indents - to see diff in PR
* reverts original formats
* add vector indices unit tests
* remove dulicite tests
---------
Co-authored-by: Zdenek Jonas <z.jonas@microstream.one>1 parent 36a3d77 commit ecbb1bc
16 files changed
Lines changed: 4557 additions & 1271 deletions
File tree
- docs/modules/gigamap/pages/indexing/jvector
- gigamap/jvector
- src
- main/java/org/eclipse/store/gigamap/jvector
- test/java/org/eclipse/store/gigamap/jvector
Lines changed: 53 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
141 | 141 | | |
142 | 142 | | |
143 | 143 | | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
144 | 148 | | |
145 | 149 | | |
146 | 150 | | |
| |||
157 | 161 | | |
158 | 162 | | |
159 | 163 | | |
| 164 | + | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
| 175 | + | |
| 176 | + | |
| 177 | + | |
| 178 | + | |
| 179 | + | |
| 180 | + | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
| 192 | + | |
| 193 | + | |
| 194 | + | |
| 195 | + | |
| 196 | + | |
| 197 | + | |
| 198 | + | |
| 199 | + | |
| 200 | + | |
| 201 | + | |
| 202 | + | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
160 | 213 | | |
161 | 214 | | |
162 | 215 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
| 13 | + | |
| 14 | + | |
13 | 15 | | |
14 | 16 | | |
15 | 17 | | |
| |||
163 | 165 | | |
164 | 166 | | |
165 | 167 | | |
| 168 | + | |
| 169 | + | |
| 170 | + | |
| 171 | + | |
| 172 | + | |
| 173 | + | |
| 174 | + | |
166 | 175 | | |
167 | 176 | | |
168 | 177 | | |
| |||
223 | 232 | | |
224 | 233 | | |
225 | 234 | | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
| 248 | + | |
| 249 | + | |
| 250 | + | |
| 251 | + | |
| 252 | + | |
| 253 | + | |
| 254 | + | |
| 255 | + | |
| 256 | + | |
| 257 | + | |
| 258 | + | |
| 259 | + | |
| 260 | + | |
| 261 | + | |
| 262 | + | |
| 263 | + | |
| 264 | + | |
| 265 | + | |
| 266 | + | |
226 | 267 | | |
227 | 268 | | |
228 | 269 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
19 | 19 | | |
20 | 20 | | |
21 | 21 | | |
22 | | - | |
| 22 | + | |
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
| |||
44 | 44 | | |
45 | 45 | | |
46 | 46 | | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
47 | 53 | | |
48 | 54 | | |
49 | 55 | | |
| |||
gigamap/jvector/src/main/java/org/eclipse/store/gigamap/jvector/BackgroundOptimizationManager.java
Lines changed: 0 additions & 239 deletions
This file was deleted.
0 commit comments