diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/spi/KernelContext.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/spi/KernelContext.java index 0e0305171533..01e1dd69786a 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/spi/KernelContext.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/spi/KernelContext.java @@ -22,7 +22,6 @@ import java.io.File; import org.neo4j.io.fs.FileSystemAbstraction; -import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.impl.factory.DatabaseInfo; import org.neo4j.kernel.impl.util.DependencySatisfier; @@ -35,6 +34,4 @@ public interface KernelContext DatabaseInfo databaseInfo(); DependencySatisfier dependencySatisfier(); - - boolean customIOConfigurationUsed( Config config ); } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/spi/SimpleKernelContext.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/spi/SimpleKernelContext.java index 3b1782eb7f49..182b425f59ad 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/spi/SimpleKernelContext.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/spi/SimpleKernelContext.java @@ -21,9 +21,7 @@ import java.io.File; -import org.neo4j.graphdb.factory.GraphDatabaseSettings; import org.neo4j.io.fs.FileSystemAbstraction; -import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.impl.factory.DatabaseInfo; import org.neo4j.kernel.impl.util.DependencySatisfier; @@ -66,10 +64,4 @@ public DependencySatisfier dependencySatisfier() { return satisfier; } - - @Override - public boolean customIOConfigurationUsed( Config config ) - { - return config.get( GraphDatabaseSettings.pagecache_swapper ) != null; - } } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/storemigration/StoreUpgrader.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/storemigration/StoreUpgrader.java index a628029c9200..f0842e794ceb 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/storemigration/StoreUpgrader.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/storemigration/StoreUpgrader.java @@ -32,6 +32,7 @@ import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.impl.storemigration.monitoring.MigrationProgressMonitor; import org.neo4j.kernel.impl.storemigration.monitoring.MigrationProgressMonitor.Section; +import org.neo4j.kernel.impl.util.CustomIOConfigValidator; import org.neo4j.logging.Log; import org.neo4j.logging.LogProvider; @@ -114,10 +115,7 @@ public void migrateIfNeeded( File storeDirectory) throw new UpgradeNotAllowedByConfigurationException(); } - if( customIOConfigurationUsed( config ) ) - { - throw new IllegalArgumentException( CUSTOM_IO_EXCEPTION_MESSAGE ); - } + CustomIOConfigValidator.assertCustomIOConfigNotUsed( config, CUSTOM_IO_EXCEPTION_MESSAGE ); // One or more participants would like to do migration progressMonitor.started(); @@ -157,11 +155,6 @@ public void migrateIfNeeded( File storeDirectory) progressMonitor.completed(); } - private boolean customIOConfigurationUsed( Config config ) - { - return config.get( GraphDatabaseSettings.pagecache_swapper ) != null; - } - private boolean isUpgradeAllowed() { return config.get( GraphDatabaseSettings.allow_store_upgrade ); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/util/CustomIOConfigValidator.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/util/CustomIOConfigValidator.java new file mode 100644 index 000000000000..986192ed5919 --- /dev/null +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/util/CustomIOConfigValidator.java @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2002-2016 "Neo Technology," + * Network Engine for Objects in Lund AB [http://neotechnology.com] + * + * This file is part of Neo4j. + * + * Neo4j is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package org.neo4j.kernel.impl.util; + +import org.neo4j.graphdb.factory.GraphDatabaseSettings; +import org.neo4j.kernel.configuration.Config; + +public class CustomIOConfigValidator +{ + public static void assertCustomIOConfigNotUsed( Config config, String message ) + { + if ( customIOConfigUsed( config ) ) + { + throw new CustomIOConfigNotSupportedException( message ); + } + } + + private static boolean customIOConfigUsed( Config config ) + { + return config.get( GraphDatabaseSettings.pagecache_swapper ) != null; + } + + private static class CustomIOConfigNotSupportedException extends RuntimeException + { + CustomIOConfigNotSupportedException( String message ) + { + super( message ); + } + } +} diff --git a/enterprise/backup/src/main/java/org/neo4j/backup/OnlineBackupExtensionFactory.java b/enterprise/backup/src/main/java/org/neo4j/backup/OnlineBackupExtensionFactory.java index 19e0907f0872..dd982f09c3af 100644 --- a/enterprise/backup/src/main/java/org/neo4j/backup/OnlineBackupExtensionFactory.java +++ b/enterprise/backup/src/main/java/org/neo4j/backup/OnlineBackupExtensionFactory.java @@ -32,6 +32,7 @@ import org.neo4j.kernel.impl.transaction.log.LogicalTransactionStore; import org.neo4j.kernel.impl.transaction.log.TransactionIdStore; import org.neo4j.kernel.impl.transaction.log.checkpoint.CheckPointer; +import org.neo4j.kernel.impl.util.CustomIOConfigValidator; import org.neo4j.kernel.internal.GraphDatabaseAPI; import org.neo4j.kernel.lifecycle.Lifecycle; import org.neo4j.kernel.monitoring.Monitors; @@ -79,10 +80,7 @@ public Class getSettingsClass() @Override public Lifecycle newInstance( KernelContext context, Dependencies dependencies ) throws Throwable { - if ( context.customIOConfigurationUsed( dependencies.getConfig() ) ) - { - throw new IllegalArgumentException( CUSTOM_IO_EXCEPTION_MESSAGE ); - } + CustomIOConfigValidator.assertCustomIOConfigNotUsed( dependencies.getConfig(), CUSTOM_IO_EXCEPTION_MESSAGE ); return new OnlineBackupKernelExtension( dependencies.getConfig(), dependencies.getGraphDatabaseAPI(), dependencies.logService().getInternalLogProvider(), dependencies.monitors(), diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/factory/HighlyAvailableEditionModule.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/factory/HighlyAvailableEditionModule.java index b64028423cd9..e486c3fd7e8b 100644 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/factory/HighlyAvailableEditionModule.java +++ b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/factory/HighlyAvailableEditionModule.java @@ -144,6 +144,7 @@ import org.neo4j.kernel.impl.transaction.log.TransactionIdStore; import org.neo4j.kernel.impl.transaction.log.checkpoint.CheckPointer; import org.neo4j.kernel.impl.transaction.log.entry.LogEntryReader; +import org.neo4j.kernel.impl.util.CustomIOConfigValidator; import org.neo4j.kernel.impl.util.Dependencies; import org.neo4j.kernel.impl.util.JobScheduler; import org.neo4j.kernel.internal.GraphDatabaseAPI; @@ -191,10 +192,7 @@ public HighlyAvailableEditionModule( final PlatformModule platformModule ) final Monitors monitors = platformModule.monitors; //Temporary check for custom IO - if ( customIOConfigurationUsed( platformModule.config ) ) - { - throw new IllegalArgumentException( CUSTOM_IO_EXCEPTION_MESSAGE ); - } + CustomIOConfigValidator.assertCustomIOConfigNotUsed( config, CUSTOM_IO_EXCEPTION_MESSAGE ); // Set Netty logger InternalLoggerFactory.setDefaultFactory( new NettyLoggerFactory( logging.getInternalLogProvider() ) ); @@ -520,12 +518,6 @@ public void elected( String role, InstanceId instanceId, URI electedMember ) life.add( paxosLife ); } - private boolean customIOConfigurationUsed( Config config ) - { - return config.get( GraphDatabaseSettings.pagecache_swapper ) != null; - } - - private void publishServerId( Config config, UsageData sysInfo ) { sysInfo.set( UsageDataKeys.serverId, config.get( ClusterSettings.server_id ).toString() );