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 b1a47a2341f8..3bf471bcf744 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/NeoStoreDataSource.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/NeoStoreDataSource.java @@ -795,7 +795,7 @@ private KernelModule buildKernel( TransactionAppender appender, KernelTransactions kernelTransactions = life.add( new KernelTransactions( locks, constraintIndexCreator, statementOperations, schemaWriteGuard, transactionHeaderInformationFactory, transactionCommitProcess, indexConfigStore, legacyIndexProviderLookup, hooks, transactionMonitor, life, tracers, storageEngine, - procedures, transactionIdStore, config, Clock.SYSTEM_CLOCK ) ); + procedures, transactionIdStore, Clock.SYSTEM_CLOCK ) ); final Kernel kernel = new Kernel( kernelTransactions, hooks, databaseHealth, transactionMonitor, procedures ); diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/KernelTransactionImplementation.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/KernelTransactionImplementation.java index cc739fb74244..32b682983d5b 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/KernelTransactionImplementation.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/KernelTransactionImplementation.java @@ -127,7 +127,6 @@ TransactionWriteState upgradeToSchemaWrites() throws InvalidTransactionTypeKerne private final TransactionTracer tracer; private final Pool pool; private final Supplier legacyIndexTxStateSupplier; - private final boolean txTerminationAwareLocks; // For committing private final TransactionHeaderInformationFactory headerInformationFactory; @@ -179,8 +178,7 @@ public KernelTransactionImplementation( StatementOperationParts operations, Pool pool, Clock clock, TransactionTracer tracer, - StorageEngine storageEngine, - boolean txTerminationAwareLocks ) + StorageEngine storageEngine ) { this.operations = operations; this.schemaWriteGuard = schemaWriteGuard; @@ -197,7 +195,6 @@ public KernelTransactionImplementation( StatementOperationParts operations, this.tracer = tracer; this.storageStatement = storeLayer.newStatement(); this.currentStatement = new KernelStatement( this, this, operations, storageStatement, procedures ); - this.txTerminationAwareLocks = txTerminationAwareLocks; } /** @@ -270,7 +267,7 @@ public void markForTermination( Status reason ) { failure = true; terminationReason = reason; - if ( txTerminationAwareLocks && locks != null ) + if ( locks != null ) { locks.stop(); } diff --git a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/KernelTransactions.java b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/KernelTransactions.java index db536b39a54c..5fb151a4d0ae 100644 --- a/community/kernel/src/main/java/org/neo4j/kernel/impl/api/KernelTransactions.java +++ b/community/kernel/src/main/java/org/neo4j/kernel/impl/api/KernelTransactions.java @@ -29,14 +29,11 @@ import org.neo4j.collection.pool.MarshlandPool; import org.neo4j.function.Factory; import org.neo4j.graphdb.DatabaseShutdownException; -import org.neo4j.graphdb.config.Setting; import org.neo4j.helpers.Clock; import org.neo4j.kernel.api.KernelTransaction; import org.neo4j.kernel.api.exceptions.Status; import org.neo4j.kernel.api.security.AccessMode; import org.neo4j.kernel.api.txstate.LegacyIndexTransactionState; -import org.neo4j.kernel.configuration.Config; -import org.neo4j.kernel.configuration.Settings; import org.neo4j.kernel.impl.api.state.ConstraintIndexCreator; import org.neo4j.kernel.impl.api.state.LegacyIndexTransactionStateImpl; import org.neo4j.kernel.impl.index.IndexConfigStore; @@ -52,7 +49,6 @@ import org.neo4j.storageengine.api.StorageEngine; import static java.util.Collections.newSetFromMap; -import static org.neo4j.kernel.configuration.Settings.setting; /** * Central source of transactions in the database. @@ -65,13 +61,9 @@ public class KernelTransactions extends LifecycleAdapter implements Supplier // For providing KernelTransactionSnapshots { - public static final Setting tx_termination_aware_locks = setting( - "unsupported.dbms.tx_termination_aware_locks", Settings.BOOLEAN, Settings.FALSE ); - // Transaction dependencies private final Locks locks; - private final boolean txTerminationAwareLocks; private final ConstraintIndexCreator constraintIndexCreator; private final StatementOperationParts statementOperations; private final SchemaWriteGuard schemaWriteGuard; @@ -118,11 +110,9 @@ public KernelTransactions( Locks locks, StorageEngine storageEngine, Procedures procedures, TransactionIdStore transactionIdStore, - Config config, Clock clock ) { this.locks = locks; - this.txTerminationAwareLocks = config.get( tx_termination_aware_locks ); this.constraintIndexCreator = constraintIndexCreator; this.statementOperations = statementOperations; this.schemaWriteGuard = schemaWriteGuard; @@ -152,7 +142,7 @@ public KernelTransactionImplementation newInstance() statementOperations, schemaWriteGuard, hooks, constraintIndexCreator, procedures, transactionHeaderInformationFactory, transactionCommitProcess, transactionMonitor, legacyIndexTxStateSupplier, localTxPool, clock, tracers.transactionTracer, - storageEngine, txTerminationAwareLocks ); + storageEngine ); allTransactions.add( tx ); return tx; diff --git a/community/kernel/src/test/java/org/neo4j/kernel/api/KernelTransactionFactory.java b/community/kernel/src/test/java/org/neo4j/kernel/api/KernelTransactionFactory.java index 6c9c9c633dd1..a3aa285bb6d3 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/api/KernelTransactionFactory.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/api/KernelTransactionFactory.java @@ -84,7 +84,7 @@ static Instances kernelTransactionWithInternals( AccessMode accessMode ) mock( Pool.class ), Clock.SYSTEM_CLOCK, TransactionTracer.NULL, - storageEngine, false ); + storageEngine ); transaction.initialize( 0, 0, new NoOpClient(), KernelTransaction.Type.implicit, accessMode ); diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTransactionImplementationTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTransactionImplementationTest.java index e8f9ccff0896..ba1680c30361 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTransactionImplementationTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTransactionImplementationTest.java @@ -442,7 +442,7 @@ public void shouldIncrementReuseCounterOnReuse() throws Exception @Test public void markForTerminationNotInitializedTransaction() { - KernelTransactionImplementation tx = newNotInitializedTransaction( true ); + KernelTransactionImplementation tx = newNotInitializedTransaction(); tx.markForTermination( Status.General.UnknownError ); @@ -453,7 +453,7 @@ public void markForTerminationNotInitializedTransaction() public void markForTerminationInitializedTransaction() { Locks.Client locksClient = mock( Locks.Client.class ); - KernelTransactionImplementation tx = newTransaction( accessMode(), locksClient, true ); + KernelTransactionImplementation tx = newTransaction( accessMode(), locksClient ); tx.markForTermination( Status.General.UnknownError ); @@ -465,7 +465,7 @@ public void markForTerminationInitializedTransaction() public void markForTerminationTerminatedTransaction() { Locks.Client locksClient = mock( Locks.Client.class ); - KernelTransactionImplementation tx = newTransaction( accessMode(), locksClient, true ); + KernelTransactionImplementation tx = newTransaction( accessMode(), locksClient ); transactionInitializer.accept( tx ); tx.markForTermination( Status.Transaction.Terminated ); @@ -481,7 +481,7 @@ public void markForTerminationTerminatedTransaction() public void terminatedTxMarkedNeitherSuccessNorFailureClosesWithoutThrowing() throws TransactionFailureException { Locks.Client locksClient = mock( Locks.Client.class ); - KernelTransactionImplementation tx = newTransaction( accessMode(), locksClient, true ); + KernelTransactionImplementation tx = newTransaction( accessMode(), locksClient ); transactionInitializer.accept( tx ); tx.markForTermination( Status.General.UnknownError ); @@ -495,7 +495,7 @@ public void terminatedTxMarkedNeitherSuccessNorFailureClosesWithoutThrowing() th public void terminatedTxMarkedForSuccessThrowsOnClose() { Locks.Client locksClient = mock( Locks.Client.class ); - KernelTransactionImplementation tx = newTransaction( accessMode(), locksClient, true ); + KernelTransactionImplementation tx = newTransaction( accessMode(), locksClient ); transactionInitializer.accept( tx ); tx.success(); tx.markForTermination( Status.General.UnknownError ); @@ -515,7 +515,7 @@ public void terminatedTxMarkedForSuccessThrowsOnClose() public void terminatedTxMarkedForFailureClosesWithoutThrowing() throws TransactionFailureException { Locks.Client locksClient = mock( Locks.Client.class ); - KernelTransactionImplementation tx = newTransaction( accessMode(), locksClient, true ); + KernelTransactionImplementation tx = newTransaction( accessMode(), locksClient ); transactionInitializer.accept( tx ); tx.failure(); tx.markForTermination( Status.General.UnknownError ); @@ -530,7 +530,7 @@ public void terminatedTxMarkedForFailureClosesWithoutThrowing() throws Transacti public void terminatedTxMarkedForBothSuccessAndFailureThrowsOnClose() { Locks.Client locksClient = mock( Locks.Client.class ); - KernelTransactionImplementation tx = newTransaction( accessMode(), locksClient, true ); + KernelTransactionImplementation tx = newTransaction( accessMode(), locksClient ); transactionInitializer.accept( tx ); tx.success(); tx.failure(); @@ -550,7 +550,7 @@ public void terminatedTxMarkedForBothSuccessAndFailureThrowsOnClose() public void txMarkedForBothSuccessAndFailureThrowsOnClose() { Locks.Client locksClient = mock( Locks.Client.class ); - KernelTransactionImplementation tx = newTransaction( accessMode(), locksClient, true ); + KernelTransactionImplementation tx = newTransaction( accessMode(), locksClient ); tx.success(); tx.failure(); diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTransactionTerminationTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTransactionTerminationTest.java index 035c5ee4bf5f..cfb0d49b0be7 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTransactionTerminationTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTransactionTerminationTest.java @@ -360,7 +360,7 @@ private static class TestKernelTransaction extends KernelTransactionImplementati mock( ConstraintIndexCreator.class ), new Procedures(), TransactionHeaderInformationFactory.DEFAULT, mock( TransactionCommitProcess.class ), monitor, () -> mock( LegacyIndexTransactionState.class ), mock( Pool.class ), new FakeClock(), TransactionTracer.NULL, - mock( StorageEngine.class, RETURNS_MOCKS ), true ); + mock( StorageEngine.class, RETURNS_MOCKS ) ); this.monitor = monitor; } diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTransactionTestBase.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTransactionTestBase.java index 10d8297acba7..d01865be2b37 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTransactionTestBase.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTransactionTestBase.java @@ -97,30 +97,29 @@ public KernelTransactionImplementation newTransaction( AccessMode accessMode ) return newTransaction( 0, accessMode ); } - public KernelTransactionImplementation newTransaction( AccessMode accessMode, Locks.Client locks, - boolean txTerminationAwareLocks ) + public KernelTransactionImplementation newTransaction( AccessMode accessMode, Locks.Client locks ) { - return newTransaction( 0, accessMode, locks, txTerminationAwareLocks ); + return newTransaction( 0, accessMode, locks ); } public KernelTransactionImplementation newTransaction( long lastTransactionIdWhenStarted, AccessMode accessMode ) { - return newTransaction( lastTransactionIdWhenStarted, accessMode, new NoOpClient(), false ); + return newTransaction( lastTransactionIdWhenStarted, accessMode, new NoOpClient() ); } public KernelTransactionImplementation newTransaction( long lastTransactionIdWhenStarted, AccessMode accessMode, - Locks.Client locks, boolean txTerminationAwareLocks ) + Locks.Client locks ) { - KernelTransactionImplementation tx = newNotInitializedTransaction( txTerminationAwareLocks ); + KernelTransactionImplementation tx = newNotInitializedTransaction(); tx.initialize( lastTransactionIdWhenStarted, BASE_TX_COMMIT_TIMESTAMP,locks, Type.implicit, accessMode ); return tx; } - public KernelTransactionImplementation newNotInitializedTransaction( boolean txTerminationAwareLocks ) + public KernelTransactionImplementation newNotInitializedTransaction() { return new KernelTransactionImplementation( null, schemaWriteGuard, hooks, null, null, headerInformationFactory, commitProcess, transactionMonitor, legacyIndexStateSupplier, txPool, clock, TransactionTracer.NULL, - storageEngine, txTerminationAwareLocks ); + storageEngine ); } public class CapturingCommitProcess implements TransactionCommitProcess diff --git a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTransactionsTest.java b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTransactionsTest.java index 06f2a0020010..0798c5309e6e 100644 --- a/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTransactionsTest.java +++ b/community/kernel/src/test/java/org/neo4j/kernel/impl/api/KernelTransactionsTest.java @@ -39,13 +39,9 @@ import org.neo4j.kernel.api.exceptions.Status; import org.neo4j.kernel.api.exceptions.TransactionFailureException; import org.neo4j.kernel.api.security.AccessMode; -import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.impl.locking.Locks; import org.neo4j.kernel.impl.proc.Procedures; -import org.neo4j.kernel.impl.store.MetaDataStore; -import org.neo4j.kernel.impl.store.NeoStores; import org.neo4j.kernel.impl.store.TransactionId; -import org.neo4j.kernel.impl.store.record.NodeRecord; import org.neo4j.kernel.impl.transaction.TransactionHeaderInformationFactory; import org.neo4j.kernel.impl.transaction.TransactionMonitor; import org.neo4j.kernel.impl.transaction.TransactionRepresentation; @@ -436,8 +432,7 @@ private static KernelTransactions newKernelTransactions( TransactionCommitProces null, null, null, TransactionHeaderInformationFactory.DEFAULT, commitProcess, null, null, new TransactionHooks(), mock( TransactionMonitor.class ), life, - tracers, storageEngine, new Procedures(), transactionIdStore, Config.empty(), - Clock.SYSTEM_CLOCK ); + tracers, storageEngine, new Procedures(), transactionIdStore, Clock.SYSTEM_CLOCK ); } private static TransactionCommitProcess newRememberingCommitProcess( final TransactionRepresentation[] slot ) diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/lock/SlaveLockManager.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/lock/SlaveLockManager.java index 9ba773797bca..de72a043fa66 100644 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/lock/SlaveLockManager.java +++ b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/lock/SlaveLockManager.java @@ -23,7 +23,6 @@ import org.neo4j.kernel.configuration.Config; import org.neo4j.kernel.ha.com.RequestContextFactory; import org.neo4j.kernel.ha.com.master.Master; -import org.neo4j.kernel.impl.api.KernelTransactions; import org.neo4j.kernel.impl.locking.Locks; import org.neo4j.logging.LogProvider; @@ -34,7 +33,6 @@ public class SlaveLockManager implements Locks private final Master master; private final AvailabilityGuard availabilityGuard; private final LogProvider logProvider; - private final boolean txTerminationAwareLocks; public SlaveLockManager( Locks localLocks, RequestContextFactory requestContextFactory, Master master, AvailabilityGuard availabilityGuard, LogProvider logProvider, Config config ) @@ -44,15 +42,13 @@ public SlaveLockManager( Locks localLocks, RequestContextFactory requestContextF this.local = localLocks; this.master = master; this.logProvider = logProvider; - this.txTerminationAwareLocks = config.get( KernelTransactions.tx_termination_aware_locks ); } @Override public Client newClient() { Client client = local.newClient(); - return new SlaveLocksClient( master, client, local, requestContextFactory, availabilityGuard, logProvider, - txTerminationAwareLocks ); + return new SlaveLocksClient( master, client, local, requestContextFactory, availabilityGuard, logProvider ); } @Override diff --git a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/lock/SlaveLocksClient.java b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/lock/SlaveLocksClient.java index 7d052ca60a96..e29cd837a12c 100644 --- a/enterprise/ha/src/main/java/org/neo4j/kernel/ha/lock/SlaveLocksClient.java +++ b/enterprise/ha/src/main/java/org/neo4j/kernel/ha/lock/SlaveLocksClient.java @@ -35,10 +35,10 @@ import org.neo4j.kernel.impl.locking.LockClientStoppedException; import org.neo4j.kernel.impl.locking.Locks; import org.neo4j.kernel.impl.locking.ResourceTypes; -import org.neo4j.storageengine.api.lock.AcquireLockTimeoutException; -import org.neo4j.storageengine.api.lock.ResourceType; import org.neo4j.logging.Log; import org.neo4j.logging.LogProvider; +import org.neo4j.storageengine.api.lock.AcquireLockTimeoutException; +import org.neo4j.storageengine.api.lock.ResourceType; import static org.neo4j.kernel.impl.locking.LockType.READ; import static org.neo4j.kernel.impl.locking.LockType.WRITE; @@ -63,7 +63,6 @@ class SlaveLocksClient implements Locks.Client private final Map> sharedLocks; private final Map> exclusiveLocks; private final Log log; - private final boolean txTerminationAwareLocks; private boolean initialized; private volatile boolean stopped; @@ -73,8 +72,7 @@ public SlaveLocksClient( Locks localLockManager, RequestContextFactory requestContextFactory, AvailabilityGuard availabilityGuard, - LogProvider logProvider, - boolean txTerminationAwareLocks ) + LogProvider logProvider ) { this.master = master; this.client = local; @@ -82,7 +80,6 @@ public SlaveLocksClient( this.requestContextFactory = requestContextFactory; this.availabilityGuard = availabilityGuard; this.log = logProvider.getLog( getClass() ); - this.txTerminationAwareLocks = txTerminationAwareLocks; sharedLocks = new HashMap<>(); exclusiveLocks = new HashMap<>(); } @@ -206,12 +203,9 @@ public void releaseExclusive( ResourceType resourceType, long resourceId ) @Override public void stop() { - if ( txTerminationAwareLocks ) - { - client.stop(); - stopLockSessionOnMaster(); - stopped = true; - } + client.stop(); + stopLockSessionOnMaster(); + stopped = true; } @Override diff --git a/enterprise/ha/src/test/java/org/neo4j/ha/TestPullUpdates.java b/enterprise/ha/src/test/java/org/neo4j/ha/TestPullUpdates.java index 145de270030a..476980bf1f4d 100644 --- a/enterprise/ha/src/test/java/org/neo4j/ha/TestPullUpdates.java +++ b/enterprise/ha/src/test/java/org/neo4j/ha/TestPullUpdates.java @@ -45,10 +45,8 @@ import org.neo4j.graphdb.TransientTransactionFailureException; import org.neo4j.graphdb.factory.TestHighlyAvailableGraphDatabaseFactory; import org.neo4j.helpers.collection.MapUtil; -import org.neo4j.kernel.configuration.Settings; import org.neo4j.kernel.ha.HaSettings; import org.neo4j.kernel.ha.HighlyAvailableGraphDatabase; -import org.neo4j.kernel.impl.api.KernelTransactions; import org.neo4j.kernel.impl.ha.ClusterManager; import org.neo4j.kernel.impl.logging.LogService; import org.neo4j.kernel.impl.transaction.log.TransactionIdStore; @@ -133,15 +131,14 @@ public void makeSureUpdatePullerGetsGoingAfterMasterSwitch() throws Throwable } @Test - public void terminatedTransactionDoesNotForceUpdatePullingWithTxTerminationAwareLocks() throws Throwable + public void terminatedTransactionDoesNotForceUpdatePulling() throws Throwable { int testTxsOnMaster = 42; File root = testDirectory.directory( testName.getMethodName() ); ClusterManager clusterManager = new ClusterManager.Builder( root ) .withSharedConfig( MapUtil.stringMap( HaSettings.pull_interval.name(), "0s", - HaSettings.tx_push_factor.name(), "0", - KernelTransactions.tx_termination_aware_locks.name(), Settings.TRUE ) ).build(); + HaSettings.tx_push_factor.name(), "0" ) ).build(); clusterManager.start(); cluster = clusterManager.getCluster(); 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 8acc20e0fd6e..7d84ea4a808f 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 @@ -54,7 +54,6 @@ import static org.junit.Assert.fail; import static org.junit.runners.Parameterized.Parameters; import static org.neo4j.graphdb.DynamicRelationshipType.withName; -import static org.neo4j.kernel.impl.api.KernelTransactions.tx_termination_aware_locks; @RunWith( Parameterized.class ) public class TerminationOfSlavesDuringPullUpdatesTest @@ -71,8 +70,6 @@ public class TerminationOfSlavesDuringPullUpdatesTest @Parameter public ReadContestantActions action; @Parameter( 1 ) - public boolean txTerminationAwareLocks; - @Parameter( 2 ) public String name; @Parameters( name = "{1}" ) @@ -81,34 +78,34 @@ public static Iterable data() return Arrays.asList( new Object[][] { {new PropertyValueActions( longString( 'a' ), longString( 'b' ), true ), - true, "NodeStringProperty[txTerminationAwareLocks=yes]"}, + "NodeStringProperty[txTerminationAwareLocks=yes]"}, {new PropertyValueActions( longString( 'a' ), longString( 'b' ), true ), - false, "NodeStringProperty[txTerminationAwareLocks=no]"}, + "NodeStringProperty[txTerminationAwareLocks=no]"}, {new PropertyValueActions( longString( 'a' ), longString( 'b' ), false ), - true, "RelationshipStringProperty[txTerminationAwareLocks=yes]"}, + "RelationshipStringProperty[txTerminationAwareLocks=yes]"}, {new PropertyValueActions( longString( 'a' ), longString( 'b' ), false ), - false, "RelationshipStringProperty[txTerminationAwareLocks=no]"}, + "RelationshipStringProperty[txTerminationAwareLocks=no]"}, {new PropertyValueActions( longArray( 'a' ), longArray( 'b' ), true ), - true, "NodeArrayProperty[txTerminationAwareLocks=yes]"}, + "NodeArrayProperty[txTerminationAwareLocks=yes]"}, {new PropertyValueActions( longArray( 'a' ), longArray( 'b' ), true ), - false, "NodeArrayProperty[txTerminationAwareLocks=no]"}, + "NodeArrayProperty[txTerminationAwareLocks=no]"}, {new PropertyValueActions( longArray( 'a' ), longArray( 'b' ), false ), - true, "RelationshipArrayProperty[txTerminationAwareLocks=yes]"}, + "RelationshipArrayProperty[txTerminationAwareLocks=yes]"}, {new PropertyValueActions( longArray( 'a' ), longArray( 'b' ), false ), - false, "RelationshipArrayProperty[txTerminationAwareLocks=no]"}, + "RelationshipArrayProperty[txTerminationAwareLocks=no]"}, {new PropertyKeyActions( 'a', 'b', true ), - true, "NodePropertyKeys[txTerminationAwareLocks=yes]"}, + "NodePropertyKeys[txTerminationAwareLocks=yes]"}, {new PropertyKeyActions( 'a', 'b', true ), - false, "NodePropertyKeys[txTerminationAwareLocks=no]"}, + "NodePropertyKeys[txTerminationAwareLocks=no]"}, {new PropertyKeyActions( 'a', 'b', false ), - true, "RelationshipPropertyKeys[txTerminationAwareLocks=yes]"}, + "RelationshipPropertyKeys[txTerminationAwareLocks=yes]"}, {new PropertyKeyActions( 'a', 'b', false ), - false, "RelationshipPropertyKeys[txTerminationAwareLocks=no]"} + "RelationshipPropertyKeys[txTerminationAwareLocks=no]"} } ); } @@ -119,7 +116,7 @@ public void slavesTerminateOrReadConsistentDataWhenApplyingBatchLargerThanSafeZo long safeZone = TimeUnit.MILLISECONDS.toMillis( 0 ); clusterRule.withSharedSetting( HaSettings.id_reuse_safe_zone_time, String.valueOf( safeZone ) ); // given - final ClusterManager.ManagedCluster cluster = startCluster(); + final ClusterManager.ManagedCluster cluster = clusterRule.startCluster(); HighlyAvailableGraphDatabase master = cluster.getMaster(); // when @@ -153,7 +150,7 @@ public void slavesDontTerminateAndReadConsistentDataWhenApplyingBatchSmallerThan long safeZone = TimeUnit.MINUTES.toMillis( 1 ); clusterRule.withSharedSetting( HaSettings.id_reuse_safe_zone_time, String.valueOf( safeZone ) ); // given - final ClusterManager.ManagedCluster cluster = startCluster(); + final ClusterManager.ManagedCluster cluster = clusterRule.startCluster(); HighlyAvailableGraphDatabase master = cluster.getMaster(); // when @@ -418,12 +415,6 @@ PropertyContainer getEntity( HighlyAvailableGraphDatabase db, long id ) } } - private ClusterManager.ManagedCluster startCluster() throws Exception - { - return clusterRule.withSharedSetting( tx_termination_aware_locks, String.valueOf( txTerminationAwareLocks ) ) - .startCluster(); - } - private static Object longArray( char b ) { return longString( b ).toCharArray(); diff --git a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/lock/SlaveLocksClientConcurrentTest.java b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/lock/SlaveLocksClientConcurrentTest.java index 7569e77b7f00..8796067734a5 100644 --- a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/lock/SlaveLocksClientConcurrentTest.java +++ b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/lock/SlaveLocksClientConcurrentTest.java @@ -42,8 +42,8 @@ import org.neo4j.kernel.impl.enterprise.lock.forseti.ForsetiLockManager; import org.neo4j.kernel.impl.locking.ResourceTypes; import org.neo4j.logging.Log; -import org.neo4j.storageengine.api.lock.ResourceType; import org.neo4j.logging.NullLogProvider; +import org.neo4j.storageengine.api.lock.ResourceType; import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.any; @@ -111,7 +111,7 @@ public void readersCanAcquireLockAsSoonAsItReleasedOnMaster() throws Interrupted private SlaveLocksClient createClient() { return new SlaveLocksClient( master, lockManager.newClient(), lockManager, - requestContextFactory, availabilityGuard, NullLogProvider.getInstance(), false ); + requestContextFactory, availabilityGuard, NullLogProvider.getInstance() ); } private static class LockedOnMasterAnswer implements Answer diff --git a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/lock/SlaveLocksClientTest.java b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/lock/SlaveLocksClientTest.java index e672899992e5..da388d162269 100644 --- a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/lock/SlaveLocksClientTest.java +++ b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/lock/SlaveLocksClientTest.java @@ -57,7 +57,6 @@ import static org.mockito.Matchers.eq; import static org.mockito.Mockito.inOrder; import static org.mockito.Mockito.mock; -import static org.mockito.Mockito.never; import static org.mockito.Mockito.spy; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; @@ -93,7 +92,8 @@ public void setUp() throws Exception whenMasterAcquireExclusive().thenReturn( responseOk ); - client = newSlaveLocksClient( lockManager, true ); + client = new SlaveLocksClient( master, local, lockManager, mock( RequestContextFactory.class ), + availabilityGuard, logProvider ); } private OngoingStubbing> whenMasterAcquireShared() @@ -532,23 +532,6 @@ public void stopDoesNotThrowWhenMasterCommunicationThrows() CoreMatchers.equalTo( error ) ) ); } - @Test - public void stopDoesNothingWhenLocksAreNotTxTerminationAware() - { - SlaveLocksClient client = newSlaveLocksClient( lockManager, false ); - - client.stop(); - - verify( local, never() ).stop(); - verify( master, never() ).endLockSession( any( RequestContext.class ), anyBoolean() ); - } - - private SlaveLocksClient newSlaveLocksClient( Locks lockManager, boolean txTerminationAwareLocks ) - { - return new SlaveLocksClient( master, local, lockManager, mock( RequestContextFactory.class ), - availabilityGuard, logProvider, txTerminationAwareLocks ); - } - private SlaveLocksClient stoppedClient() { client.stop(); diff --git a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/transaction/TransactionThroughMasterSwitchStressIT.java b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/transaction/TransactionThroughMasterSwitchStressIT.java index 7302523455ea..d341e4d391e0 100644 --- a/enterprise/ha/src/test/java/org/neo4j/kernel/ha/transaction/TransactionThroughMasterSwitchStressIT.java +++ b/enterprise/ha/src/test/java/org/neo4j/kernel/ha/transaction/TransactionThroughMasterSwitchStressIT.java @@ -21,12 +21,7 @@ import org.junit.Rule; import org.junit.Test; -import org.junit.runner.RunWith; -import org.junit.runners.Parameterized; -import org.junit.runners.Parameterized.Parameters; -import java.util.Arrays; -import java.util.List; import java.util.Random; import java.util.concurrent.ThreadLocalRandom; import java.util.concurrent.atomic.AtomicBoolean; @@ -51,7 +46,6 @@ import static org.neo4j.kernel.ha.cluster.modeswitch.HighAvailabilityModeSwitcher.MASTER; import static org.neo4j.kernel.ha.cluster.modeswitch.HighAvailabilityModeSwitcher.UNKNOWN; import static org.neo4j.kernel.impl.MyRelTypes.TEST; -import static org.neo4j.kernel.impl.api.KernelTransactions.tx_termination_aware_locks; import static org.neo4j.kernel.impl.ha.ClusterManager.memberThinksItIsRole; /** @@ -79,25 +73,12 @@ * This test is a stress test and duration of execution can be controlled via system property * -D{@link org.neo4j.kernel.ha.transaction.TransactionThroughMasterSwitchStressIT}.duration */ -@RunWith( Parameterized.class ) public class TransactionThroughMasterSwitchStressIT { @Rule - public final ClusterRule clusterRule; - - public TransactionThroughMasterSwitchStressIT( boolean txTerminationAwareLocks ) - { - clusterRule = new ClusterRule( getClass() ) - .withInstanceSetting( HaSettings.slave_only, - value -> value == 1 || value == 2 ? Settings.TRUE : Settings.FALSE ) - .withSharedSetting( tx_termination_aware_locks, String.valueOf( txTerminationAwareLocks ) ); - } - - @Parameters(name = "txTerminationAwareLocks={0}") - public static List txTerminationAwareLocks() - { - return Arrays.asList( false, true ); - } + public final ClusterRule clusterRule = new ClusterRule( getClass() ) + .withInstanceSetting( HaSettings.slave_only, + value -> value == 1 || value == 2 ? Settings.TRUE : Settings.FALSE ); @Test public void shouldNotHaveTransactionsRunningThroughRoleSwitchProduceInconsistencies() throws Throwable diff --git a/integrationtests/src/test/java/org/neo4j/TransactionTerminationIT.java b/integrationtests/src/test/java/org/neo4j/TransactionTerminationIT.java index 296a6f0e4b20..db012ed6d173 100644 --- a/integrationtests/src/test/java/org/neo4j/TransactionTerminationIT.java +++ b/integrationtests/src/test/java/org/neo4j/TransactionTerminationIT.java @@ -94,8 +94,7 @@ public class TransactionTerminationIT .withCluster( clusterOfSize( 3 ) ) .withSharedSetting( HaSettings.ha_server, ":6001-6005" ) .withSharedSetting( HaSettings.tx_push_factor, "2" ) - .withSharedSetting( HaSettings.lock_read_timeout, "1m" ) - .withSharedSetting( KernelTransactions.tx_termination_aware_locks, Settings.TRUE ); + .withSharedSetting( HaSettings.lock_read_timeout, "1m" ); @Rule public final RuleChain ruleChain = RuleChain.outerRule( SuppressOutput.suppressAll() ) @@ -114,7 +113,6 @@ public void terminateSingleInstanceRestTransactionThatWaitsForLock() throws Exce ServerControls server = cleanupRule.add( TestServerBuilders.newInProcessBuilder() .withConfig( GraphDatabaseSettings.auth_enabled, Settings.FALSE ) .withConfig( GraphDatabaseFacadeFactory.Configuration.lock_manager, lockManagerName ) - .withConfig( KernelTransactions.tx_termination_aware_locks, Settings.TRUE ) .newServer() ); GraphDatabaseService db = server.graph();