Search in sources :

Example 11 with CheckPointer

use of org.neo4j.kernel.impl.transaction.log.checkpoint.CheckPointer in project neo4j by neo4j.

the class FileWatchIT method notifyAboutLegacyIndexFolderRemoval.

@Test(timeout = TEST_TIMEOUT)
public void notifyAboutLegacyIndexFolderRemoval() throws InterruptedException, IOException {
    String monitoredDirectory = getLegacyIndexDirectory(storeDir);
    FileWatcher fileWatcher = getFileWatcher(database);
    CheckPointer checkPointer = getCheckpointer(database);
    DeletionLatchEventListener deletionListener = new DeletionLatchEventListener(monitoredDirectory);
    ModificationEventListener modificationEventListener = new ModificationEventListener(MetaDataStore.DEFAULT_NAME);
    fileWatcher.addFileWatchEventListener(deletionListener);
    fileWatcher.addFileWatchEventListener(modificationEventListener);
    do {
        createNode(database);
        forceCheckpoint(checkPointer);
    } while (!modificationEventListener.awaitModificationNotification());
    deleteStoreDirectory(storeDir, monitoredDirectory);
    deletionListener.awaitDeletionNotification();
    logProvider.assertContainsMessageContaining("'" + monitoredDirectory + "' which belongs to the store was deleted while database was running.");
}
Also used : FileWatcher(org.neo4j.io.fs.watcher.FileWatcher) CheckPointer(org.neo4j.kernel.impl.transaction.log.checkpoint.CheckPointer) Matchers.containsString(org.hamcrest.Matchers.containsString) Test(org.junit.Test)

Example 12 with CheckPointer

use of org.neo4j.kernel.impl.transaction.log.checkpoint.CheckPointer in project neo4j by neo4j.

the class IndexingServiceIntegrationTest method dropIndexRaceWithCheckpoint.

@ParameterizedTest
@MethodSource("parameters")
void dropIndexRaceWithCheckpoint(GraphDatabaseSettings.SchemaIndex schemaIndex) throws Throwable {
    setUp(schemaIndex);
    CheckPointer checkPointer = getCheckPointer(database);
    int nbrOfIndexes = 100;
    try (Transaction tx = database.beginTx()) {
        for (int i = 0; i < nbrOfIndexes; i++) {
            tx.schema().indexFor(Label.label("label")).on("prop" + i).create();
        }
        tx.commit();
    }
    try (Transaction tx = database.beginTx()) {
        tx.schema().awaitIndexesOnline(1, TimeUnit.HOURS);
        tx.commit();
    }
    AtomicBoolean allIndexesDropped = new AtomicBoolean();
    Race race = new Race();
    race.addContestant(Race.throwing(() -> {
        while (!allIndexesDropped.get()) {
            checkPointer.forceCheckPoint(new SimpleTriggerInfo("Test force"));
        }
    }));
    race.addContestant(Race.throwing(() -> {
        try (Transaction tx = database.beginTx()) {
            tx.schema().getIndexes().forEach(IndexDefinition::drop);
            tx.commit();
        } finally {
            allIndexesDropped.set(true);
        }
    }));
    race.go();
}
Also used : AtomicBoolean(java.util.concurrent.atomic.AtomicBoolean) SimpleTriggerInfo(org.neo4j.kernel.impl.transaction.log.checkpoint.SimpleTriggerInfo) InternalTransaction(org.neo4j.kernel.impl.coreapi.InternalTransaction) Transaction(org.neo4j.graphdb.Transaction) KernelTransaction(org.neo4j.kernel.api.KernelTransaction) Race(org.neo4j.test.Race) CheckPointer(org.neo4j.kernel.impl.transaction.log.checkpoint.CheckPointer) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest) MethodSource(org.junit.jupiter.params.provider.MethodSource)

Example 13 with CheckPointer

use of org.neo4j.kernel.impl.transaction.log.checkpoint.CheckPointer in project neo4j by neo4j.

the class MissingStoreFilesRecoveryIT method createSomeData.

private static void createSomeData(GraphDatabaseAPI databaseApi) throws IOException {
    insertData(databaseApi);
    CheckPointer checkPointer = databaseApi.getDependencyResolver().resolveDependency(CheckPointer.class);
    checkPointer.forceCheckPoint(new SimpleTriggerInfo("forcedCheckpointInTheMiddle"));
    insertData(databaseApi);
}
Also used : SimpleTriggerInfo(org.neo4j.kernel.impl.transaction.log.checkpoint.SimpleTriggerInfo) CheckPointer(org.neo4j.kernel.impl.transaction.log.checkpoint.CheckPointer)

Example 14 with CheckPointer

use of org.neo4j.kernel.impl.transaction.log.checkpoint.CheckPointer in project neo4j by neo4j.

the class RecoveryCorruptedTransactionLogIT method generateTransactionsAndRotate.

private static void generateTransactionsAndRotate(GraphDatabaseAPI database, int logFilesToGenerate, boolean checkpoint) throws IOException {
    DependencyResolver resolver = database.getDependencyResolver();
    LogFiles logFiles = resolver.resolveDependency(LogFiles.class);
    CheckPointer checkpointer = resolver.resolveDependency(CheckPointer.class);
    while (logFiles.getLogFile().getHighestLogVersion() < logFilesToGenerate) {
        logFiles.getLogFile().rotate();
        generateTransaction(database);
        if (checkpoint) {
            checkpointer.forceCheckPoint(new SimpleTriggerInfo("testForcedCheckpoint"));
        }
    }
}
Also used : SimpleTriggerInfo(org.neo4j.kernel.impl.transaction.log.checkpoint.SimpleTriggerInfo) LogFiles(org.neo4j.kernel.impl.transaction.log.files.LogFiles) CheckPointer(org.neo4j.kernel.impl.transaction.log.checkpoint.CheckPointer) DependencyResolver(org.neo4j.common.DependencyResolver)

Example 15 with CheckPointer

use of org.neo4j.kernel.impl.transaction.log.checkpoint.CheckPointer in project neo4j by neo4j.

the class TestRecoveryRelationshipTypes method main.

public static void main(String[] args) throws IOException {
    if (args.length != 1) {
        exit(1);
    }
    Path storeDir = Path.of(args[0]).toAbsolutePath();
    DatabaseManagementService managementService = new TestDatabaseManagementServiceBuilder(storeDir).build();
    GraphDatabaseService db = managementService.database(DEFAULT_DATABASE_NAME);
    try (Transaction tx = db.beginTx()) {
        tx.createNode().createRelationshipTo(tx.createNode(), MyRelTypes.TEST);
        tx.commit();
    }
    CheckPointer checkPointer = ((GraphDatabaseAPI) db).getDependencyResolver().resolveDependency(CheckPointer.class);
    checkPointer.forceCheckPoint(new SimpleTriggerInfo("test"));
    exit(0);
}
Also used : Path(java.nio.file.Path) GraphDatabaseService(org.neo4j.graphdb.GraphDatabaseService) TestDatabaseManagementServiceBuilder(org.neo4j.test.TestDatabaseManagementServiceBuilder) SimpleTriggerInfo(org.neo4j.kernel.impl.transaction.log.checkpoint.SimpleTriggerInfo) Transaction(org.neo4j.graphdb.Transaction) CheckPointer(org.neo4j.kernel.impl.transaction.log.checkpoint.CheckPointer) DatabaseManagementService(org.neo4j.dbms.api.DatabaseManagementService)

Aggregations

CheckPointer (org.neo4j.kernel.impl.transaction.log.checkpoint.CheckPointer)17 SimpleTriggerInfo (org.neo4j.kernel.impl.transaction.log.checkpoint.SimpleTriggerInfo)10 FileWatcher (org.neo4j.io.fs.watcher.FileWatcher)6 Test (org.junit.jupiter.api.Test)5 Transaction (org.neo4j.graphdb.Transaction)5 Test (org.junit.Test)4 GraphDatabaseAPI (org.neo4j.kernel.internal.GraphDatabaseAPI)4 DependencyResolver (org.neo4j.common.DependencyResolver)3 Label (org.neo4j.graphdb.Label)3 FileSystemAbstraction (org.neo4j.io.fs.FileSystemAbstraction)3 File (java.io.File)2 Path (java.nio.file.Path)2 Matchers.containsString (org.hamcrest.Matchers.containsString)2 ParameterizedTest (org.junit.jupiter.params.ParameterizedTest)2 MethodSource (org.junit.jupiter.params.provider.MethodSource)2 IndexingService (org.neo4j.kernel.impl.api.index.IndexingService)2 TestDatabaseManagementServiceBuilder (org.neo4j.test.TestDatabaseManagementServiceBuilder)2 IOException (java.io.IOException)1 String.format (java.lang.String.format)1 List (java.util.List)1