Search in sources :

Example 1 with LimitedFileSystemGraphDatabase

use of org.neo4j.test.LimitedFileSystemGraphDatabase in project neo4j by neo4j.

the class RunOutOfDiskSpaceIT method shouldPropagateIOExceptions.

@Test
public void shouldPropagateIOExceptions() throws Exception {
    // Given
    TransactionFailureException exceptionThrown = null;
    File storeDir = testDirectory.absolutePath();
    LimitedFileSystemGraphDatabase db = new LimitedFileSystemGraphDatabase(storeDir);
    try (Transaction tx = db.beginTx()) {
        db.createNode();
        tx.success();
    }
    long logVersion = db.getDependencyResolver().resolveDependency(LogVersionRepository.class).getCurrentLogVersion();
    db.runOutOfDiskSpaceNao();
    // When
    try (Transaction tx = db.beginTx()) {
        db.createNode();
        tx.success();
    } catch (TransactionFailureException e) {
        exceptionThrown = e;
    } finally {
        Assert.assertNotNull("Expected tx finish to throw TransactionFailureException when filesystem is full.", exceptionThrown);
        assertTrue(Exceptions.contains(exceptionThrown, IOException.class));
    }
    // to help shutting down the db
    db.somehowGainMoreDiskSpace();
    db.shutdown();
    PageCache pageCache = pageCacheRule.getPageCache(db.getFileSystem());
    File neoStore = new File(storeDir, MetaDataStore.DEFAULT_NAME);
    assertEquals(logVersion, MetaDataStore.getRecord(pageCache, neoStore, MetaDataStore.Position.LOG_VERSION));
}
Also used : IOException(java.io.IOException) File(java.io.File) LogVersionRepository(org.neo4j.kernel.impl.transaction.log.LogVersionRepository) LimitedFileSystemGraphDatabase(org.neo4j.test.LimitedFileSystemGraphDatabase) PageCache(org.neo4j.io.pagecache.PageCache) Test(org.junit.Test)

Example 2 with LimitedFileSystemGraphDatabase

use of org.neo4j.test.LimitedFileSystemGraphDatabase in project neo4j by neo4j.

the class RunOutOfDiskSpaceIT method shouldStopDatabaseWhenOutOfDiskSpace.

@Test
public void shouldStopDatabaseWhenOutOfDiskSpace() throws Exception {
    // Given
    TransactionFailureException expectedCommitException = null;
    TransactionFailureException expectedStartException = null;
    File storeDir = testDirectory.absolutePath();
    LimitedFileSystemGraphDatabase db = cleanup.add(new LimitedFileSystemGraphDatabase(storeDir));
    try (Transaction tx = db.beginTx()) {
        db.createNode();
        tx.success();
    }
    long logVersion = db.getDependencyResolver().resolveDependency(LogVersionRepository.class).getCurrentLogVersion();
    db.runOutOfDiskSpaceNao();
    try (Transaction tx = db.beginTx()) {
        db.createNode();
        tx.success();
    } catch (TransactionFailureException e) {
        expectedCommitException = e;
    } finally {
        Assert.assertNotNull("Expected tx finish to throw TransactionFailureException when filesystem is full.", expectedCommitException);
    }
    // When
    try (Transaction transaction = db.beginTx()) {
        fail("Expected tx begin to throw TransactionFailureException when tx manager breaks.");
    } catch (TransactionFailureException e) {
        expectedStartException = e;
    } finally {
        Assert.assertNotNull("Expected tx begin to throw TransactionFailureException when tx manager breaks.", expectedStartException);
    }
    // Then
    // to help shutting down the db
    db.somehowGainMoreDiskSpace();
    db.shutdown();
    PageCache pageCache = pageCacheRule.getPageCache(db.getFileSystem());
    File neoStore = new File(storeDir, MetaDataStore.DEFAULT_NAME);
    assertEquals(logVersion, MetaDataStore.getRecord(pageCache, neoStore, MetaDataStore.Position.LOG_VERSION));
}
Also used : File(java.io.File) LogVersionRepository(org.neo4j.kernel.impl.transaction.log.LogVersionRepository) LimitedFileSystemGraphDatabase(org.neo4j.test.LimitedFileSystemGraphDatabase) PageCache(org.neo4j.io.pagecache.PageCache) Test(org.junit.Test)

Aggregations

File (java.io.File)2 Test (org.junit.Test)2 PageCache (org.neo4j.io.pagecache.PageCache)2 LogVersionRepository (org.neo4j.kernel.impl.transaction.log.LogVersionRepository)2 LimitedFileSystemGraphDatabase (org.neo4j.test.LimitedFileSystemGraphDatabase)2 IOException (java.io.IOException)1