public PageCache getPageCache( FileSystemAbstraction fs, PageCacheConfig pageCacheConfig, Config config ) { closeExistingPageCache(); pageCache = createPageCache( fs, pageCacheConfig, config ); pageCachePostConstruct( pageCacheConfig ); return pageCache; }
public PageCache getPageCache( FileSystemAbstraction fs, Config config ) { return getPageCache( fs, config(), config ); }
private PageCache createPageCache( FileSystemAbstraction fs, PageCacheConfig pageCacheConfig, Config config ) { PageCacheTracer tracer = selectConfig( baseConfig.tracer, pageCacheConfig.tracer, PageCacheTracer.NULL ); PageCursorTracerSupplier cursorTracerSupplier = selectConfig( baseConfig.pageCursorTracerSupplier, pageCacheConfig.pageCursorTracerSupplier, PageCursorTracerSupplier.NULL ); config.augmentDefaults( GraphDatabaseSettings.pagecache_memory, "8M" ); FormattedLogProvider logProvider = FormattedLogProvider.toOutputStream( System.err ); initializeJobScheduler(); ConfiguringPageCacheFactory pageCacheFactory = new ConfiguringPageCacheFactory( fs, config, tracer, cursorTracerSupplier, logProvider.getLog( PageCache.class ), EmptyVersionContextSupplier.EMPTY, jobScheduler ); return pageCacheFactory.getOrCreatePageCache(); } }
private void createStore() { store = new MyStore( config, pageCacheRule.getPageCache( fs.get(), config ), 8 ); store.initialise( true ); }
@Override protected void after( boolean success ) { super.after( success ); life.shutdown(); if ( fileSystem != null ) { try { fileSystem.close(); } catch ( IOException e ) { throw new AssertionError( "Failed to stop file system after test", e ); } } }
return super.apply( directory.apply( new Statement()
KeyValueStoreFile open() throws IOException { return openStore( fs.get(), pages.getPageCache( fs.get() ), getStoreFile() ); }
KeyValueStoreFile create( Map<String,byte[]> headers, DataProvider data ) throws IOException { return createStore( fs.get(), pages.getPageCache( fs.get() ), getStoreFile(), 16, 16, headers( headers ), data ); }
@Test public void extractHeaderRecordDuringLoadStorageMustThrowOnPageOverflow() throws Exception { MyStore first = new MyStore( config, pageCacheRule.getPageCache( fs.get(), config ), 8 ); first.initialise( true ); first.close(); PageCacheRule.PageCacheConfig pageCacheConfig = PageCacheRule.config(); PageCache pageCache = pageCacheRule.getPageCache( fs.get(), pageCacheConfig, config ); MyStore second = new MyStore( config, pageCache, PAGE_SIZE + 1 ); assertThrowsUnderlyingStorageException( () -> second.initialise( false ) ); }
@Test public void writingOfHeaderRecordDuringInitialiseNewStoreFileMustThrowOnPageOverflow() throws Exception { // 16-byte header will overflow an 8-byte page size PageCacheRule.PageCacheConfig pageCacheConfig = PageCacheRule.config(); PageCache pageCache = pageCacheRule.getPageCache( fs.get(), pageCacheConfig, config ); MyStore store = new MyStore( config, pageCache, PAGE_SIZE + 1 ); assertThrowsUnderlyingStorageException( () -> store.initialise( true ) ); }
KeyValueStoreFile create( Map<String,String> config, Map<String,byte[]> headers, DataProvider data ) throws IOException { PageCacheRule.PageCacheConfig pageCacheConfig = PageCacheRule.config(); PageCache pageCache = pages.getPageCache( fs.get(), pageCacheConfig, Config.defaults( config ) ); return createStore( fs.get(), pageCache, getStoreFile(), 16, 16, headers( headers ), data ); }
@Test public void shouldDeleteOnCloseIfOpenOptionsSaysSo() { // GIVEN DatabaseLayout databaseLayout = dir.databaseLayout(); File nodeStore = databaseLayout.nodeStore(); File idFile = databaseLayout.idFile( DatabaseFile.NODE_STORE ).orElseThrow( () -> new IllegalStateException( "Node store id file not found." ) ); FileSystemAbstraction fs = fileSystemRule.get(); PageCache pageCache = pageCacheRule.getPageCache( fs, Config.defaults() ); TheStore store = new TheStore( nodeStore, databaseLayout.idNodeStore(), config, idType, new DefaultIdGeneratorFactory( fs ), pageCache, NullLogProvider.getInstance(), recordFormat, DELETE_ON_CLOSE ); store.initialise( true ); store.makeStoreOk(); assertTrue( fs.fileExists( nodeStore ) ); assertTrue( fs.fileExists( idFile ) ); // WHEN store.close(); // THEN assertFalse( fs.fileExists( nodeStore ) ); assertFalse( fs.fileExists( idFile ) ); }
FileSystemAbstraction fileSystemAbstraction = fileSystemRule.get(); DefaultIdGeneratorFactory idGeneratorFactory = new DefaultIdGeneratorFactory( fileSystemAbstraction ); PageCache pageCache = pageCacheRule.getPageCache( fileSystemAbstraction, config ); StoreFactory storeFactory = new StoreFactory( testDirectory.databaseLayout(), config, idGeneratorFactory, pageCache, fileSystemAbstraction, NullLogProvider.getInstance(), EmptyVersionContextSupplier.EMPTY );