public List<Difference> differences() { for ( Map.Entry<CountsKey, DoubleLongRegister> entry : counts.entrySet() ) { DoubleLongRegister value = entry.getValue(); differences.add( new Difference( entry.getKey(), value.readFirst(), value.readSecond(), 0, 0 ) ); } counts.clear(); return differences; } }
@Override public void accept( CountsVisitor visitor ) { for ( Map.Entry<CountsKey, DoubleLongRegister> entry : counts.entrySet() ) { DoubleLongRegister register = entry.getValue(); entry.getKey().accept( visitor, register.readFirst(), register.readSecond() ); } }
private void verify( CountsKey key, long actualFirst, long actualSecond ) { DoubleLongRegister expected = counts.remove( key ); if ( expected == null ) { if ( actualFirst != 0 || actualSecond != 0 ) { differences.add( new Difference( key, 0, 0, actualFirst, actualSecond ) ); } } else { long expectedFirst = expected.readFirst(); long expectedSecond = expected.readSecond(); if ( expectedFirst != actualFirst || expectedSecond != actualSecond ) { differences.add( new Difference( key, expectedFirst, expectedSecond, actualFirst, actualSecond ) ); } } }
private void verify( CountsKey key, long actualFirst, long actualSecond ) { DoubleLongRegister expected = counts.remove( key ); if ( expected == null ) { if ( actualFirst != 0 || actualSecond != 0 ) { differences.add( new Difference( key, 0, 0, actualFirst, actualSecond ) ); } } else { long expectedFirst = expected.readFirst(); long expectedSecond = expected.readSecond(); if ( expectedFirst != actualFirst || expectedSecond != actualSecond ) { differences.add( new Difference( key, expectedFirst, expectedSecond, actualFirst, actualSecond ) ); } } }
public double indexUniqueValuesPercentage( SchemaDescriptor descriptor ) throws IndexNotFoundKernelException { final long indexId = indexMapRef.getOnlineIndexId( descriptor ); final DoubleLongRegister output = Registers.newDoubleLongRegister(); storeView.indexSample( indexId, output ); long unique = output.readFirst(); long size = output.readSecond(); if ( size == 0 ) { return 1.0d; } else { return ((double) unique) / ((double) size); } }
@Override public void accept( CountsVisitor visitor ) { for ( Map.Entry<CountsKey, DoubleLongRegister> entry : counts.entrySet() ) { DoubleLongRegister register = entry.getValue(); entry.getKey().accept( visitor, register.readFirst(), register.readSecond() ); } }
@Override public boolean test( Long indexId ) { storeView.indexUpdatesAndSize( indexId, output ); long updates = output.readFirst(); long size = output.readSecond(); long threshold = Math.round( config.updateRatio() * size ); return updates > threshold; } };
public List<Difference> differences() { for ( Map.Entry<CountsKey, DoubleLongRegister> entry : counts.entrySet() ) { DoubleLongRegister value = entry.getValue(); differences.add( new Difference( entry.getKey(), value.readFirst(), value.readSecond(), 0, 0 ) ); } counts.clear(); return differences; } }
private static long readUpdates( IndexReference index, SchemaRead schemaRead, Register.DoubleLongRegister register ) throws IndexNotFoundKernelException { schemaRead.indexUpdatesAndSize( index, register ); return register.readFirst(); } }
private static List<Map<String,Object>> indexes( TokenRead tokens, SchemaRead schemaRead, Anonymizer anonymizer ) throws IndexNotFoundKernelException { List<Map<String,Object>> indexes = new ArrayList<>(); SilentTokenNameLookup tokenLookup = new SilentTokenNameLookup( tokens ); Iterator<IndexReference> iterator = schemaRead.indexesGetAll(); while ( iterator.hasNext() ) { IndexReference index = iterator.next(); Map<String,Object> data = new HashMap<>(); data.put( "labels", map( index.schema().getEntityTokenIds(), id -> anonymizer.label( tokenLookup.labelGetName( id ), id ) ) ); data.put( "properties", map( index.schema().getPropertyIds(), id -> anonymizer.propertyKey( tokenLookup.propertyKeyGetName( id ), id ) ) ); Register.DoubleLongRegister register = Registers.newDoubleLongRegister(); schemaRead.indexUpdatesAndSize( index, register ); data.put( "totalSize", register.readSecond() ); data.put( "updatesSinceEstimation", register.readFirst() ); schemaRead.indexSample( index, register ); data.put( "estimatedUniqueSize", register.readFirst() ); indexes.add( data ); } return indexes; }
public double indexUniqueValuesPercentage( SchemaDescriptor descriptor ) throws IndexNotFoundKernelException { final long indexId = indexMapRef.getOnlineIndexId( descriptor ); final DoubleLongRegister output = Registers.newDoubleLongRegister(); storeView.indexSample( indexId, output ); long unique = output.readFirst(); long size = output.readSecond(); if ( size == 0 ) { return 1.0d; } else { return ((double) unique) / ((double) size); } }
@Override public boolean test( Long indexId ) { storeView.indexUpdatesAndSize( indexId, output ); long updates = output.readFirst(); long size = output.readSecond(); long threshold = Math.round( config.updateRatio() * size ); return updates > threshold; } };
private static long readUpdates( IndexReference index, SchemaRead schemaRead, Register.DoubleLongRegister register ) throws IndexNotFoundKernelException { schemaRead.indexUpdatesAndSize( index, register ); return register.readFirst(); } }
private void assertDoubleLongEquals( long expectedUniqueValue, long expectedSampledSize, DoubleLongRegister register ) { assertEquals( expectedUniqueValue, register.readFirst() ); assertEquals( expectedSampledSize, register.readSecond() ); }
private long indexUpdates( IndexReference reference ) throws KernelException { return ((GraphDatabaseAPI) db).getDependencyResolver() .resolveDependency( IndexingService.class ) .indexUpdatesAndSize( reference.schema() ).readFirst(); }
@Override public void visitIndexSample( long indexId, long unique, long size ) { Register.DoubleLongRegister output = tracker.indexSample( indexId, newDoubleLongRegister() ); assertEquals( "Should be able to read visited state.", output.readFirst(), unique ); assertEquals( "Should be able to read visited state.", output.readSecond(), size ); } } );
@Override public void visitIndexStatistics( long indexId, long updates, long size ) { Register.DoubleLongRegister output = tracker.indexUpdatesAndSize( indexId, newDoubleLongRegister() ); assertEquals( "Should be able to read visited state.", output.readFirst(), updates ); assertEquals( "Should be able to read visited state.", output.readSecond(), size ); }
private void assertEqualRegisters( String message, DoubleLongRegister expected, DoubleLongRegister actual ) { assertEquals( message + " (first part of register)", expected.readFirst(), actual.readFirst() ); assertEquals( message + " (second part of register)", expected.readSecond(), actual.readSecond() ); }