From 43592cb2a33cd9f766dea4402f0b068b3d9413a1 Mon Sep 17 00:00:00 2001 From: Max Sumrall Date: Wed, 24 Aug 2016 15:27:19 +0100 Subject: [PATCH] Create Id Allocation Chunk Size config option. --- .../impl/store/id/configuration/IdTypeConfiguration.java | 4 ++-- .../CommunityIdTypeConfigurationProviderTest.java | 2 +- .../main/java/org/neo4j/coreedge/convert/ClusterSeed.java | 3 ++- .../coreedge/convert/ConvertNonCoreEdgeStoreCli.java | 1 - .../neo4j/coreedge/convert/GenerateClusterSeedCli.java | 1 - .../org/neo4j/coreedge/core/CoreEdgeClusterSettings.java | 4 ++++ .../org/neo4j/coreedge/core/state/DumpClusterState.java | 8 ++++++-- .../core/state/machines/CoreStateMachinesModule.java | 2 +- 8 files changed, 16 insertions(+), 9 deletions(-) diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/store/id/configuration/IdTypeConfiguration.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/store/id/configuration/IdTypeConfiguration.java index 31b120ea04d2e..4b92a36f9c4e3 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/store/id/configuration/IdTypeConfiguration.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/store/id/configuration/IdTypeConfiguration.java @@ -29,7 +29,7 @@ public class IdTypeConfiguration { static final int DEFAULT_GRAB_SIZE = 1024; - static final int AGGRESIVE_GRAB_SIZE = 50000; + static final int AGGRESSIVE_GRAB_SIZE = 50000; private final boolean allowAggressiveReuse; @@ -45,6 +45,6 @@ public boolean allowAggressiveReuse() public int getGrabSize() { - return allowAggressiveReuse ? AGGRESIVE_GRAB_SIZE : DEFAULT_GRAB_SIZE; + return allowAggressiveReuse ? AGGRESSIVE_GRAB_SIZE : DEFAULT_GRAB_SIZE; } } diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/store/id/configuration/CommunityIdTypeConfigurationProviderTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/store/id/configuration/CommunityIdTypeConfigurationProviderTest.java index 71ae959e16366..dc8f540a95e8c 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/store/id/configuration/CommunityIdTypeConfigurationProviderTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/store/id/configuration/CommunityIdTypeConfigurationProviderTest.java @@ -64,7 +64,7 @@ public void reusableTypeConfiguration() IdTypeConfigurationProvider provider = createIdTypeProvider(); IdTypeConfiguration typeConfiguration = provider.getIdTypeConfiguration( reusableType ); assertTrue( typeConfiguration.allowAggressiveReuse() ); - assertEquals( IdTypeConfiguration.AGGRESIVE_GRAB_SIZE, typeConfiguration.getGrabSize() ); + assertEquals( IdTypeConfiguration.AGGRESSIVE_GRAB_SIZE, typeConfiguration.getGrabSize() ); } private IdTypeConfigurationProvider createIdTypeProvider() diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/convert/ClusterSeed.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/convert/ClusterSeed.java index 8dab2816af521..fac2918243b96 100644 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/convert/ClusterSeed.java +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/convert/ClusterSeed.java @@ -67,7 +67,8 @@ public StoreId after() public String getConversionId() { - ByteBuffer buffer = ByteBuffer.allocate( 88 ); + int bytesNeeded = 88; + ByteBuffer buffer = ByteBuffer.allocate( bytesNeeded ); buffer.putLong( lastTxId ); diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/convert/ConvertNonCoreEdgeStoreCli.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/convert/ConvertNonCoreEdgeStoreCli.java index 095e03b4c60d0..69dc76de87f4a 100644 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/convert/ConvertNonCoreEdgeStoreCli.java +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/convert/ConvertNonCoreEdgeStoreCli.java @@ -31,7 +31,6 @@ import org.neo4j.helpers.ArrayUtil; import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.impl.util.Converters; -import org.neo4j.logging.NullLog; import org.neo4j.server.configuration.ConfigLoader; import static org.neo4j.helpers.collection.MapUtil.stringMap; diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/convert/GenerateClusterSeedCli.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/convert/GenerateClusterSeedCli.java index 4fca5ea96f10b..7644ef22e8d37 100644 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/convert/GenerateClusterSeedCli.java +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/convert/GenerateClusterSeedCli.java @@ -31,7 +31,6 @@ import org.neo4j.helpers.ArrayUtil; import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.impl.util.Converters; -import org.neo4j.logging.NullLog; import org.neo4j.server.configuration.ConfigLoader; import static org.neo4j.dbms.DatabaseManagementSystemSettings.database_path; diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/core/CoreEdgeClusterSettings.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/core/CoreEdgeClusterSettings.java index 352f11f48e244..d579db9a73148 100644 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/core/CoreEdgeClusterSettings.java +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/core/CoreEdgeClusterSettings.java @@ -223,4 +223,8 @@ public String toString() @Description( "Edge server 'call home' frequency" ) public static final Setting edge_refresh_rate = setting( "core_edge.edge_refresh_rate", DURATION, "5s", min(5_000L) ); + + @Description( "Id range allocation chunk size" ) + public static final Setting allocation_chunk_size = + setting( "core_edge.allocation_chunk_size", INTEGER, "1024" ); } diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/core/state/DumpClusterState.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/core/state/DumpClusterState.java index eff53fce52e40..727120364cd16 100644 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/core/state/DumpClusterState.java +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/core/state/DumpClusterState.java @@ -23,6 +23,7 @@ import java.io.IOException; import java.io.PrintStream; +import org.neo4j.coreedge.core.CoreEdgeClusterSettings; import org.neo4j.coreedge.core.consensus.membership.RaftMembershipState; import org.neo4j.coreedge.core.consensus.term.TermState; import org.neo4j.coreedge.core.consensus.vote.VoteState; @@ -36,6 +37,7 @@ import org.neo4j.coreedge.identity.MemberId.Marshal; import org.neo4j.io.fs.DefaultFileSystemAbstraction; import org.neo4j.io.fs.FileSystemAbstraction; +import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.lifecycle.Lifespan; import org.neo4j.logging.NullLogProvider; @@ -105,8 +107,10 @@ void dump() throws IOException private void dumpState( String name, StateMarshal marshal ) throws IOException { - DurableStateStorage storage = new DurableStateStorage<>( - fs, clusterStateDirectory, name, marshal, 1024, NullLogProvider.getInstance() ); + int rotationSize = Config.defaults().get( CoreEdgeClusterSettings.replicated_lock_token_state_size ); + DurableStateStorage storage = + new DurableStateStorage<>( fs, clusterStateDirectory, name, marshal, rotationSize, + NullLogProvider.getInstance() ); if ( storage.exists() ) { diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/core/state/machines/CoreStateMachinesModule.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/core/state/machines/CoreStateMachinesModule.java index 5ee5afd1ad2d5..a659badcc6ace 100644 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/core/state/machines/CoreStateMachinesModule.java +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/core/state/machines/CoreStateMachinesModule.java @@ -111,7 +111,7 @@ public CoreStateMachinesModule( MemberId myself, PlatformModule platformModule, ReplicatedIdAllocationStateMachine idAllocationStateMachine = new ReplicatedIdAllocationStateMachine( idAllocationState ); - int allocationChunk = 1024; // TODO: AllocationChunk should be configurable and per type. + int allocationChunk = config.get( CoreEdgeClusterSettings.allocation_chunk_size ); ReplicatedIdRangeAcquirer idRangeAcquirer = new ReplicatedIdRangeAcquirer( replicator, idAllocationStateMachine, allocationChunk, myself, logProvider );