@@ -235,7 +235,7 @@ static RealVector vectorFromBytes(@Nonnull final Config config, @Nonnull final b
235235 */
236236 @ Nonnull
237237 @ SuppressWarnings ("PrimitiveArrayArgumentToVarargsMethod" )
238- static Tuple tupleFromVector (final RealVector vector ) {
238+ static Tuple tupleFromVector (@ Nonnull final RealVector vector ) {
239239 return Tuple .from (vector .getRawData ());
240240 }
241241
@@ -249,15 +249,15 @@ static CompletableFuture<AccessInfo> fetchAccessInfo(@Nonnull final Config confi
249249 @ Nonnull final ReadTransaction readTransaction ,
250250 @ Nonnull final Subspace subspace ,
251251 @ Nonnull final OnReadListener onReadListener ) {
252- final Subspace entryNodeSubspace = subspace . subspace ( Tuple . from ( SUBSPACE_PREFIX_ACCESS_INFO ) );
252+ final Subspace entryNodeSubspace = accessInfoSubspace ( subspace );
253253 final byte [] key = entryNodeSubspace .pack ();
254254
255255 return readTransaction .get (key )
256256 .thenApply (valueBytes -> {
257+ onReadListener .onKeyValueRead (-1 , key , valueBytes );
257258 if (valueBytes == null ) {
258259 return null ; // not a single node in the index
259260 }
260- onReadListener .onKeyValueRead (-1 , key , valueBytes );
261261
262262 final Tuple entryTuple = Tuple .fromBytes (valueBytes );
263263 final int layer = (int )entryTuple .getLong (0 );
@@ -293,7 +293,7 @@ static void writeAccessInfo(@Nonnull final Transaction transaction,
293293 @ Nonnull final Subspace subspace ,
294294 @ Nonnull final AccessInfo accessInfo ,
295295 @ Nonnull final OnWriteListener onWriteListener ) {
296- final Subspace entryNodeSubspace = subspace . subspace ( Tuple . from ( SUBSPACE_PREFIX_ACCESS_INFO ) );
296+ final Subspace entryNodeSubspace = accessInfoSubspace ( subspace );
297297 final EntryNodeReference entryNodeReference = accessInfo .getEntryNodeReference ();
298298 final RealVector centroid = accessInfo .getCentroid ();
299299 final byte [] key = entryNodeSubspace .pack ();
@@ -312,7 +312,7 @@ static CompletableFuture<List<AggregatedVector>> consumeSampledVectors(@Nonnull
312312 @ Nonnull final Subspace subspace ,
313313 final int numMaxVectors ,
314314 @ Nonnull final OnReadListener onReadListener ) {
315- final Subspace prefixSubspace = subspace . subspace ( Tuple . from ( SUBSPACE_PREFIX_SAMPLES ) );
315+ final Subspace prefixSubspace = samplesSubspace ( subspace );
316316
317317 final byte [] prefixKey = prefixSubspace .pack ();
318318 final ReadTransaction snapshot = transaction .snapshot ();
@@ -326,6 +326,7 @@ static CompletableFuture<List<AggregatedVector>> consumeSampledVectors(@Nonnull
326326 final byte [] key = keyValue .getKey ();
327327 final byte [] value = keyValue .getValue ();
328328 resultBuilder .add (aggregatedVectorFromRaw (prefixSubspace , key , value ));
329+ transaction .addReadConflictKey (key );
329330 transaction .clear (key );
330331 onReadListener .onKeyValueRead (-1 , key , value );
331332 }
@@ -338,7 +339,7 @@ static void appendSampledVector(@Nonnull final Transaction transaction,
338339 final int partialCount ,
339340 @ Nonnull final Transformed <RealVector > vector ,
340341 @ Nonnull final OnWriteListener onWriteListener ) {
341- final Subspace prefixSubspace = subspace . subspace ( Tuple . from ( SUBSPACE_PREFIX_SAMPLES ) );
342+ final Subspace prefixSubspace = samplesSubspace ( subspace );
342343 final Subspace keySubspace = prefixSubspace .subspace (Tuple .from (partialCount , UUID .randomUUID ()));
343344 final byte [] prefixKey = keySubspace .pack ();
344345 // getting underlying is okay as it is only written to the database
@@ -348,8 +349,7 @@ static void appendSampledVector(@Nonnull final Transaction transaction,
348349 }
349350
350351 static void removeAllSampledVectors (@ Nonnull final Transaction transaction , @ Nonnull final Subspace subspace ) {
351- final Subspace prefixSubspace =
352- subspace .subspace (Tuple .from (SUBSPACE_PREFIX_SAMPLES ));
352+ final Subspace prefixSubspace = samplesSubspace (subspace );
353353
354354 final byte [] prefixKey = prefixSubspace .pack ();
355355 final Range range = Range .startsWith (prefixKey );
@@ -366,4 +366,14 @@ private static AggregatedVector aggregatedVectorFromRaw(@Nonnull final Subspace
366366
367367 return new AggregatedVector (partialCount , AffineOperator .identity ().transform (vector ));
368368 }
369+
370+ @ Nonnull
371+ static Subspace accessInfoSubspace (@ Nonnull final Subspace rootSubspace ) {
372+ return rootSubspace .subspace (Tuple .from (SUBSPACE_PREFIX_ACCESS_INFO ));
373+ }
374+
375+ @ Nonnull
376+ static Subspace samplesSubspace (@ Nonnull final Subspace rootSubspace ) {
377+ return rootSubspace .subspace (Tuple .from (SUBSPACE_PREFIX_SAMPLES ));
378+ }
369379}
0 commit comments