private StoreLockChecker( FileSystemAbstraction fileSystem, StoreLayout storeLayout ) { this.fileSystem = fileSystem; this.storeLocker = new GlobalStoreLocker( fileSystem, storeLayout ); }
protected StoreLocker createStoreLocker() { return new GlobalStoreLocker( fileSystem, storeLayout ); }
private StoreLocker tryLockStore( FileSystemAbstraction fileSystem ) { StoreLocker storeLocker = new GlobalStoreLocker( fileSystem, this.databaseLayout.getStoreLayout() ); try { storeLocker.checkLock(); } catch ( Exception e ) { try { storeLocker.close(); } catch ( IOException ce ) { e.addSuppressed( ce ); } throw e; } return storeLocker; }
public static void checkLock( StoreLayout storeLayout ) throws CommandFailed { try ( FileSystemAbstraction fileSystem = new DefaultFileSystemAbstraction(); StoreLocker storeLocker = new GlobalStoreLocker( fileSystem, storeLayout ) ) { storeLocker.checkLock(); } catch ( StoreLockException e ) { throw new CommandFailed( "the database is in use -- stop Neo4j and try again", e ); } catch ( IOException e ) { wrapIOException( e ); } }
@Test public void allowToLockSameDirectoryIfItWasUnlocked() throws IOException { StoreLayout storeLayout = testDirectory.storeLayout(); try ( GlobalStoreLocker storeLocker = new GlobalStoreLocker( fileSystemRule.get(), storeLayout ) ) { storeLocker.checkLock(); } try ( GlobalStoreLocker storeLocker = new GlobalStoreLocker( fileSystemRule.get(), storeLayout ) ) { storeLocker.checkLock(); } }
@Test public void failToLockSameFolderAcrossIndependentLockers() throws Exception { StoreLayout storeLayout = testDirectory.storeLayout(); try ( GlobalStoreLocker storeLocker = new GlobalStoreLocker( fileSystemRule.get(), storeLayout ) ) { storeLocker.checkLock(); try ( GlobalStoreLocker locker = new GlobalStoreLocker( fileSystemRule.get(), storeLayout ) ) { locker.checkLock(); fail("directory should be locked"); } catch ( StoreLockException expected ) { // expected } try ( GlobalStoreLocker locker = new GlobalStoreLocker( fileSystemRule.get(), storeLayout ) ) { locker.checkLock(); fail("directory should be locked"); } catch ( StoreLockException expected ) { // expected } } }
@Test public void allowMultipleCallstoActuallyStoreLocker() throws IOException { StoreLayout storeLayout = testDirectory.storeLayout(); try ( GlobalStoreLocker storeLocker = new GlobalStoreLocker( fileSystemRule.get(), storeLayout ) ) { storeLocker.checkLock(); storeLocker.checkLock(); storeLocker.checkLock(); storeLocker.checkLock(); storeLocker.checkLock(); } } }
private StoreLockChecker( FileSystemAbstraction fileSystem, StoreLayout storeLayout ) { this.fileSystem = fileSystem; this.storeLocker = new GlobalStoreLocker( fileSystem, storeLayout ); }
protected StoreLocker createStoreLocker() { return new GlobalStoreLocker( fileSystem, storeLayout ); }
private StoreLocker tryLockStore( FileSystemAbstraction fileSystem ) { StoreLocker storeLocker = new GlobalStoreLocker( fileSystem, this.databaseLayout.getStoreLayout() ); try { storeLocker.checkLock(); } catch ( Exception e ) { try { storeLocker.close(); } catch ( IOException ce ) { e.addSuppressed( ce ); } throw e; } return storeLocker; }