From 907d06daf743d154727903c1f0fed0f13bd21e3d Mon Sep 17 00:00:00 2001 From: Mikhaylo Demianenko Date: Tue, 5 Jul 2016 15:14:34 +0200 Subject: [PATCH] Update property description, remove maintenance method from NeoStoreDataSource, introduce constants --- .../kernel/CommunityIdTypeConfigurationProvider.java | 9 ++++++--- .../main/java/org/neo4j/kernel/IdTypeConfiguration.java | 5 ++++- .../main/java/org/neo4j/kernel/NeoStoreDataSource.java | 8 -------- .../java/org/neo4j/kernel/configuration/Settings.java | 6 +++++- .../kernel/CommunityIdTypeConfigurationProviderTest.java | 4 ++-- .../org/neo4j/kernel/ha/IdBufferingRoleSwitchIT.java | 6 ++++-- .../TerminationOfSlavesDuringPullUpdatesTest.java | 7 +++---- .../configuration/EnterpriseEditionSettings.java | 3 ++- .../kernel/impl/enterprise/store/id/IdReuseTest.java | 8 ++++++++ 9 files changed, 34 insertions(+), 22 deletions(-) diff --git a/community/kernel/src/main/java/org/neo4j/kernel/CommunityIdTypeConfigurationProvider.java b/community/kernel/src/main/java/org/neo4j/kernel/CommunityIdTypeConfigurationProvider.java index 10fecee209ac9..93f49ac54fe55 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/CommunityIdTypeConfigurationProvider.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/CommunityIdTypeConfigurationProvider.java @@ -19,6 +19,7 @@ */ package org.neo4j.kernel; +import java.util.Collections; import java.util.EnumMap; import java.util.EnumSet; import java.util.Map; @@ -33,9 +34,11 @@ public class CommunityIdTypeConfigurationProvider implements IdTypeConfigurationProvider { + private static final Set TYPES_TO_ALLOW_REUSE = + Collections.unmodifiableSet( EnumSet.of( IdType.PROPERTY, IdType.STRING_BLOCK, + IdType.ARRAY_BLOCK, IdType.NODE_LABELS ) ); + private final Map typeConfigurations = new EnumMap<>(IdType.class); - private final Set typesToAllowReuse = EnumSet.of( IdType.PROPERTY, IdType.STRING_BLOCK, - IdType.ARRAY_BLOCK, IdType.NODE_LABELS); @Override public IdTypeConfiguration getIdTypeConfiguration( IdType idType ) @@ -51,6 +54,6 @@ public IdTypeConfiguration getIdTypeConfiguration( IdType idType ) protected Set getTypesToReuse() { - return typesToAllowReuse; + return TYPES_TO_ALLOW_REUSE; } } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/IdTypeConfiguration.java b/community/kernel/src/main/java/org/neo4j/kernel/IdTypeConfiguration.java index 7326119b60484..4ff2d4d0ee021 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/IdTypeConfiguration.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/IdTypeConfiguration.java @@ -26,6 +26,9 @@ */ public class IdTypeConfiguration { + static final int DEFAULT_GRAB_SIZE = 1024; + static final int AGGRESIVE_GRAB_SIZE = 50000; + private final boolean allowAggressiveReuse; public IdTypeConfiguration( boolean allowAggressiveReuse ) @@ -40,6 +43,6 @@ public boolean allowAggressiveReuse() public int getGrabSize() { - return allowAggressiveReuse ? 50000 : 1024; + return allowAggressiveReuse ? AGGRESIVE_GRAB_SIZE : DEFAULT_GRAB_SIZE; } } 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 526c95df7234a..9f6fa6d0c4422 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/NeoStoreDataSource.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/NeoStoreDataSource.java @@ -1368,14 +1368,6 @@ private StatementOperationParts buildStatementOperations( return parts; } - public void maintenance() - { - if ( bufferingIdGeneratorFactory != null ) - { - bufferingIdGeneratorFactory.maintenance(); - } - } - @Override public void registerIndexProvider( String name, IndexImplementation index ) { diff --git a/community/kernel/src/main/java/org/neo4j/kernel/configuration/Settings.java b/community/kernel/src/main/java/org/neo4j/kernel/configuration/Settings.java index 8e6acd0d6bb91..2ecaa4d978d43 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/configuration/Settings.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/configuration/Settings.java @@ -19,6 +19,8 @@ */ package org.neo4j.kernel.configuration; +import org.apache.commons.lang3.StringUtils; + import java.io.File; import java.net.URI; import java.net.URISyntaxException; @@ -327,8 +329,10 @@ public List apply( String value ) for( String item : list) { item = item.trim(); - if( !item.equals( "" ) ) + if( StringUtils.isNotEmpty( item ) ) + { result.add( item ); + } } return result; } diff --git a/community/kernel/src/test/java/org/neo4j/kernel/CommunityIdTypeConfigurationProviderTest.java b/community/kernel/src/test/java/org/neo4j/kernel/CommunityIdTypeConfigurationProviderTest.java index d4932b702fdcf..6efd5da130cd5 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/CommunityIdTypeConfigurationProviderTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/CommunityIdTypeConfigurationProviderTest.java @@ -56,7 +56,7 @@ public void nonReusableTypeConfiguration() IdTypeConfigurationProvider provider = createIdTypeProvider(); IdTypeConfiguration typeConfiguration = provider.getIdTypeConfiguration( IdType.RELATIONSHIP ); assertFalse( "Relationship ids are not reusable.", typeConfiguration.allowAggressiveReuse() ); - assertEquals( "Relationship ids are not reusable.", 1024, typeConfiguration.getGrabSize() ); + assertEquals( "Relationship ids are not reusable.", IdTypeConfiguration.DEFAULT_GRAB_SIZE, typeConfiguration.getGrabSize() ); } @Test @@ -65,7 +65,7 @@ public void reusableTypeConfiguration() IdTypeConfigurationProvider provider = createIdTypeProvider(); IdTypeConfiguration typeConfiguration = provider.getIdTypeConfiguration( reusableType ); assertTrue( typeConfiguration.allowAggressiveReuse() ); - assertEquals( 50000, typeConfiguration.getGrabSize() ); + assertEquals( IdTypeConfiguration.AGGRESIVE_GRAB_SIZE, typeConfiguration.getGrabSize() ); } private IdTypeConfigurationProvider createIdTypeProvider() diff --git a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/IdBufferingRoleSwitchIT.java b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/IdBufferingRoleSwitchIT.java index 88aceb6ada99b..da2bbef4cf9f5 100644 --- a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/IdBufferingRoleSwitchIT.java +++ b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/IdBufferingRoleSwitchIT.java @@ -28,8 +28,8 @@ import org.neo4j.graphdb.Node; import org.neo4j.graphdb.Transaction; import org.neo4j.kernel.GraphDatabaseAPI; +import org.neo4j.kernel.NeoStoreDataSource; import org.neo4j.kernel.impl.ha.ClusterManager.ManagedCluster; -import org.neo4j.kernel.impl.transaction.state.DataSourceManager; import org.neo4j.test.Barrier; import org.neo4j.test.OtherThreadExecutor.WorkerCommand; import org.neo4j.test.OtherThreadRule; @@ -84,7 +84,9 @@ public void shouldNotSeeFreedIdsCrossRoleSwitch() throws Throwable private void triggerIdMaintenance( GraphDatabaseAPI db ) { - db.getDependencyResolver().resolveDependency( DataSourceManager.class ).getDataSource().maintenance(); + db.getDependencyResolver() + .resolveDependency( NeoStoreDataSource.BufferedIdMaintenanceController.class ) + .maintenance(); } private WorkerCommand barrierControlledReadTransaction( final GraphDatabaseService slave, diff --git a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/cluster/TerminationOfSlavesDuringPullUpdatesTest.java b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/cluster/TerminationOfSlavesDuringPullUpdatesTest.java index 39eab051943d4..118a15d4cff83 100644 --- a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/cluster/TerminationOfSlavesDuringPullUpdatesTest.java +++ b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/cluster/TerminationOfSlavesDuringPullUpdatesTest.java @@ -45,7 +45,6 @@ import org.neo4j.kernel.ha.HighlyAvailableGraphDatabase; import org.neo4j.kernel.ha.UpdatePuller; import org.neo4j.kernel.impl.ha.ClusterManager; -import org.neo4j.kernel.impl.transaction.state.DataSourceManager; import org.neo4j.test.Race; import org.neo4j.test.ha.ClusterRule; @@ -409,9 +408,9 @@ private static String longString( char ch ) private void forceMaintenance( HighlyAvailableGraphDatabase master ) { - NeoStoreDataSource dataSource = - master.getDependencyResolver().resolveDependency( DataSourceManager.class ).getDataSource(); - dataSource.maintenance(); + master.getDependencyResolver() + .resolveDependency( NeoStoreDataSource.BufferedIdMaintenanceController.class ) + .maintenance(); } private static void assertPropertyValue( Object property, Object... candidates ) diff --git a/enterprise/kernel/src/main/java/org/neo4j/kernel/impl/enterprise/configuration/EnterpriseEditionSettings.java b/enterprise/kernel/src/main/java/org/neo4j/kernel/impl/enterprise/configuration/EnterpriseEditionSettings.java index b0f7b1f64ab2b..d1746e9038603 100644 --- a/enterprise/kernel/src/main/java/org/neo4j/kernel/impl/enterprise/configuration/EnterpriseEditionSettings.java +++ b/enterprise/kernel/src/main/java/org/neo4j/kernel/impl/enterprise/configuration/EnterpriseEditionSettings.java @@ -31,7 +31,8 @@ */ public class EnterpriseEditionSettings { - @Description( "Specified names of id types that should be reused." ) + @Description( "Specified names of id types (comma separated) that should be reused. " + + "Currently only 'RELATIONSHIP' type is supported. " ) public static Setting> idTypesToReuse = Settings.setting( "dbms.ids.reuse.types.override", Settings.STRING_LIST, "" ); diff --git a/enterprise/kernel/src/test/java/org/neo4j/kernel/impl/enterprise/store/id/IdReuseTest.java b/enterprise/kernel/src/test/java/org/neo4j/kernel/impl/enterprise/store/id/IdReuseTest.java index b13e6addebf2f..961128871004f 100644 --- a/enterprise/kernel/src/test/java/org/neo4j/kernel/impl/enterprise/store/id/IdReuseTest.java +++ b/enterprise/kernel/src/test/java/org/neo4j/kernel/impl/enterprise/store/id/IdReuseTest.java @@ -136,8 +136,12 @@ public void sequentialOperationRelationshipIdReuse() assertEquals( "Ids should be sequential", relationship1 + 1, relationship2 ); assertEquals( "Ids should be sequential", relationship2 + 1, relationship3 ); + final NeoStoreDataSource.BufferedIdMaintenanceController idMaintenanceController = getIdMaintenanceController(); + deleteRelationshipByLabelAndRelationshipType( marker ); + idMaintenanceController.maintenance(); + assertEquals( "Relationships have reused id", relationship1, createRelationship( marker ) ); assertEquals( "Relationships have reused id", relationship2, createRelationship( marker ) ); assertEquals( "Relationships have reused id", relationship3, createRelationship( marker ) ); @@ -149,6 +153,8 @@ public void relationshipIdReusableOnlyAfterTransactionFinish() Label testLabel = DynamicLabel.label( "testLabel" ); long relationshipId = createRelationship( testLabel ); + final NeoStoreDataSource.BufferedIdMaintenanceController idMaintenanceController = getIdMaintenanceController(); + try ( Transaction transaction = dbRule.beginTx(); ResourceIterator nodes = dbRule.findNodes( testLabel ) ) { @@ -162,6 +168,8 @@ public void relationshipIdReusableOnlyAfterTransactionFinish() } } + idMaintenanceController.maintenance(); + Node node1 = dbRule.createNode( testLabel ); Node node2 = dbRule.createNode( testLabel );