From c94da31f34f4abbae88d578c0c34a340783740a1 Mon Sep 17 00:00:00 2001 From: Andrei Koval Date: Mon, 4 Jun 2018 14:36:29 +0200 Subject: [PATCH] Add util method to create Lifecycle that only has shutdown action --- .../neo4j/kernel/lifecycle/LifecycleAdapter.java | 14 ++++++++++++++ .../java/org/neo4j/kernel/NeoStoreDataSource.java | 15 +++++---------- .../neo4j/tools/applytx/DatabaseRebuildTool.java | 11 ++--------- 3 files changed, 21 insertions(+), 19 deletions(-) diff --git a/community/common/src/main/java/org/neo4j/kernel/lifecycle/LifecycleAdapter.java b/community/common/src/main/java/org/neo4j/kernel/lifecycle/LifecycleAdapter.java index 9c794b9fc688b..35c507de10fc0 100644 --- a/community/common/src/main/java/org/neo4j/kernel/lifecycle/LifecycleAdapter.java +++ b/community/common/src/main/java/org/neo4j/kernel/lifecycle/LifecycleAdapter.java @@ -19,6 +19,8 @@ */ package org.neo4j.kernel.lifecycle; +import org.neo4j.function.ThrowingAction; + /** * Adapter for Lifecycle interface. Subclass and override methods as needed */ @@ -43,4 +45,16 @@ public void stop() throws Throwable public void shutdown() throws Throwable { } + + public static Lifecycle onShutdown( ThrowingAction action ) + { + return new LifecycleAdapter() + { + @Override + public void shutdown() throws Exception + { + action.apply(); + } + }; + } } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/NeoStoreDataSource.java b/community/kernel/src/main/java/org/neo4j/kernel/NeoStoreDataSource.java index 2499f90fbda39..27c53b32ae7ab 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/NeoStoreDataSource.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/NeoStoreDataSource.java @@ -748,19 +748,14 @@ private Lifecycle lifecycleToTriggerCheckPointOnShutdown() // Write new checkpoint in the log only if the kernel is healthy. // We cannot throw here since we need to shutdown without exceptions, // so let's make the checkpointing part of the life, so LifeSupport can handle exceptions properly - return new LifecycleAdapter() + return LifecycleAdapter.onShutdown( () -> { - @Override - public void shutdown() throws IOException + if ( databaseHealth.isHealthy() ) { - if ( databaseHealth.isHealthy() ) - { - // Flushing of neo stores happens as part of the checkpoint - transactionLogModule.checkPointing() - .forceCheckPoint( new SimpleTriggerInfo( "database shutdown" ) ); - } + // Flushing of neo stores happens as part of the checkpoint + transactionLogModule.checkPointing().forceCheckPoint( new SimpleTriggerInfo( "database shutdown" ) ); } - }; + } ); } public StoreId getStoreId() diff --git a/tools/src/main/java/org/neo4j/tools/applytx/DatabaseRebuildTool.java b/tools/src/main/java/org/neo4j/tools/applytx/DatabaseRebuildTool.java index f926184a81b8d..5aa52fdccdbc4 100644 --- a/tools/src/main/java/org/neo4j/tools/applytx/DatabaseRebuildTool.java +++ b/tools/src/main/java/org/neo4j/tools/applytx/DatabaseRebuildTool.java @@ -43,11 +43,11 @@ import org.neo4j.kernel.impl.util.Listener; import org.neo4j.kernel.internal.GraphDatabaseAPI; import org.neo4j.kernel.lifecycle.LifeSupport; -import org.neo4j.kernel.lifecycle.LifecycleAdapter; import org.neo4j.logging.FormattedLogProvider; import org.neo4j.tools.console.input.ArgsCommand; import org.neo4j.tools.console.input.ConsoleInput; +import static org.neo4j.kernel.lifecycle.LifecycleAdapter.onShutdown; import static org.neo4j.tools.console.input.ConsoleUtil.NO_PROMPT; import static org.neo4j.tools.console.input.ConsoleUtil.oneCommand; import static org.neo4j.tools.console.input.ConsoleUtil.staticPrompt; @@ -224,14 +224,7 @@ public String toString() return "Runs consistency check on the database for data that has been applied up to this point"; } } ); - life.add( new LifecycleAdapter() - { - @Override - public void shutdown() - { - store.get().shutdown(); - } - } ); + life.add( onShutdown( () -> store.get().shutdown() ) ); return consoleInput; } }