Search in sources :

Example 1 with CheckPointer

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

the class GetStoreRequestHandler method channelRead0.

@Override
protected void channelRead0(ChannelHandlerContext ctx, GetStoreRequest msg) throws Exception {
    if (!msg.expectedStoreId().equalToKernelStoreId(dataSource.get().getStoreId())) {
        endStoreCopy(SUCCESS, ctx, -1);
    } else {
        CheckPointer checkPointer = checkPointerSupplier.get();
        long lastCheckPointedTx;
        try (Resource lock = mutex.storeCopy(() -> checkPointer.tryCheckPoint(new SimpleTriggerInfo("Store copy")));
            ResourceIterator<StoreFileMetadata> files = dataSource.get().listStoreFiles(false)) {
            lastCheckPointedTx = checkPointer.lastCheckPointedTransactionId();
            while (files.hasNext()) {
                StoreFileMetadata fileMetadata = files.next();
                File file = fileMetadata.file();
                log.debug("Sending file " + file);
                ctx.writeAndFlush(ResponseMessageType.FILE);
                ctx.writeAndFlush(new FileHeader(relativePath(dataSource.get().getStoreDir(), file), fileMetadata.recordSize()));
                Optional<PagedFile> existingMapping = pageCache.getExistingMapping(file);
                if (existingMapping.isPresent()) {
                    try (PagedFile pagedFile = existingMapping.get()) {
                        ctx.writeAndFlush(new FileSender(pagedFile.openReadableByteChannel()));
                    }
                } else {
                    ctx.writeAndFlush(new FileSender(fs.open(file, "r")));
                }
            }
        }
        endStoreCopy(SUCCESS, ctx, lastCheckPointedTx);
    }
    protocol.expect(State.MESSAGE_TYPE);
}
Also used : SimpleTriggerInfo(org.neo4j.kernel.impl.transaction.log.checkpoint.SimpleTriggerInfo) PagedFile(org.neo4j.io.pagecache.PagedFile) CheckPointer(org.neo4j.kernel.impl.transaction.log.checkpoint.CheckPointer) Resource(org.neo4j.graphdb.Resource) StoreFileMetadata(org.neo4j.storageengine.api.StoreFileMetadata) PagedFile(org.neo4j.io.pagecache.PagedFile) File(java.io.File)

Example 2 with CheckPointer

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

the class FileWatchIT method doNotNotifyAboutLuceneIndexFilesDeletion.

@Test(timeout = TEST_TIMEOUT)
public void doNotNotifyAboutLuceneIndexFilesDeletion() throws InterruptedException, IOException {
    DependencyResolver dependencyResolver = ((GraphDatabaseAPI) database).getDependencyResolver();
    FileWatcher fileWatcher = getFileWatcher(database);
    CheckPointer checkPointer = dependencyResolver.resolveDependency(CheckPointer.class);
    String propertyStoreName = MetaDataStore.DEFAULT_NAME + StoreFactory.PROPERTY_STORE_NAME;
    AccumulativeDeletionEventListener accumulativeListener = new AccumulativeDeletionEventListener();
    ModificationEventListener modificationListener = new ModificationEventListener(propertyStoreName);
    fileWatcher.addFileWatchEventListener(modificationListener);
    fileWatcher.addFileWatchEventListener(accumulativeListener);
    String labelName = "labelName";
    String propertyName = "propertyName";
    Label testLabel = Label.label(labelName);
    createIndexes(database, propertyName, testLabel);
    do {
        createNode(database, propertyName, testLabel);
        forceCheckpoint(checkPointer);
    } while (!modificationListener.awaitModificationNotification());
    fileWatcher.removeFileWatchEventListener(modificationListener);
    ModificationEventListener afterRemovalListener = new ModificationEventListener(propertyStoreName);
    fileWatcher.addFileWatchEventListener(afterRemovalListener);
    dropAllIndexes(database);
    do {
        createNode(database, propertyName, testLabel);
        forceCheckpoint(checkPointer);
    } while (!afterRemovalListener.awaitModificationNotification());
    accumulativeListener.assertDoesNotHaveAnyDeletions();
}
Also used : FileWatcher(org.neo4j.io.fs.watcher.FileWatcher) GraphDatabaseAPI(org.neo4j.kernel.internal.GraphDatabaseAPI) CheckPointer(org.neo4j.kernel.impl.transaction.log.checkpoint.CheckPointer) Label(org.neo4j.graphdb.Label) Matchers.containsString(org.hamcrest.Matchers.containsString) DependencyResolver(org.neo4j.graphdb.DependencyResolver) Test(org.junit.Test)

Example 3 with CheckPointer

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

the class IndexingServiceIntegrationTest method dropIndexDirectlyOnIndexingServiceRaceWithCheckpoint.

@ParameterizedTest
@MethodSource("parameters")
void dropIndexDirectlyOnIndexingServiceRaceWithCheckpoint(GraphDatabaseSettings.SchemaIndex schemaIndex) throws Throwable {
    setUp(schemaIndex);
    IndexingService indexingService = getIndexingService(database);
    CheckPointer checkPointer = getCheckPointer(database);
    IndexDescriptor indexDescriptor;
    try (Transaction tx = database.beginTx()) {
        IndexDefinitionImpl indexDefinition = (IndexDefinitionImpl) tx.schema().indexFor(Label.label("label")).on("prop").create();
        indexDescriptor = indexDefinition.getIndexReference();
        tx.commit();
    }
    try (Transaction tx = database.beginTx()) {
        tx.schema().awaitIndexesOnline(1, TimeUnit.HOURS);
        tx.commit();
    }
    Race race = new Race();
    race.addContestant(Race.throwing(() -> checkPointer.forceCheckPoint(new SimpleTriggerInfo("Test force"))));
    race.addContestant(Race.throwing(() -> indexingService.dropIndex(indexDescriptor)));
    race.go();
}
Also used : 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) IndexDescriptor(org.neo4j.internal.schema.IndexDescriptor) IndexDefinitionImpl(org.neo4j.kernel.impl.coreapi.schema.IndexDefinitionImpl) ParameterizedTest(org.junit.jupiter.params.ParameterizedTest) MethodSource(org.junit.jupiter.params.provider.MethodSource)

Example 4 with CheckPointer

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

the class RecoveryCleanupIT method checkpoint.

private static void checkpoint(GraphDatabaseService db) throws IOException {
    CheckPointer checkPointer = checkPointer(db);
    checkPointer.forceCheckPoint(new SimpleTriggerInfo("test"));
}
Also used : SimpleTriggerInfo(org.neo4j.kernel.impl.transaction.log.checkpoint.SimpleTriggerInfo) CheckPointer(org.neo4j.kernel.impl.transaction.log.checkpoint.CheckPointer)

Example 5 with CheckPointer

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

the class FileWatchIT method notifyAboutStoreFileDeletion.

@Test
void notifyAboutStoreFileDeletion() throws IOException, InterruptedException {
    String fileName = databaseLayout.metadataStore().getFileName().toString();
    FileWatcher fileWatcher = getFileWatcher(database);
    CheckPointer checkpointer = getCheckpointer(database);
    DeletionLatchEventListener deletionListener = new DeletionLatchEventListener(fileName);
    fileWatcher.addFileWatchEventListener(deletionListener);
    do {
        createNode(database);
        forceCheckpoint(checkpointer);
    } while (!deletionListener.awaitModificationNotification());
    deleteFile(databaseLayout.databaseDirectory(), fileName);
    deletionListener.awaitDeletionNotification();
    assertThat(logProvider).containsMessages("'" + fileName + "' which belongs to the '" + databaseLayout.databaseDirectory().getFileName().toString() + "' database was deleted while it was running.");
}
Also used : FileWatcher(org.neo4j.io.fs.watcher.FileWatcher) CheckPointer(org.neo4j.kernel.impl.transaction.log.checkpoint.CheckPointer) Test(org.junit.jupiter.api.Test)

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