You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by cl...@apache.org on 2019/08/27 18:53:47 UTC
[activemq-artemis] branch master updated: NO-JIRA Fixing
SharedNothingReplicationFlowControlTest::testSendPages
This is an automated email from the ASF dual-hosted git repository.
clebertsuconic pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/activemq-artemis.git
The following commit(s) were added to refs/heads/master by this push:
new 3293aba NO-JIRA Fixing SharedNothingReplicationFlowControlTest::testSendPages
3293aba is described below
commit 3293aba11938806db0a130f92a0d456ad27ac099
Author: Clebert Suconic <cl...@apache.org>
AuthorDate: Tue Aug 27 14:52:14 2019 -0400
NO-JIRA Fixing SharedNothingReplicationFlowControlTest::testSendPages
---
.../SharedNothingReplicationFlowControlTest.java | 49 ++++++++++++++++------
1 file changed, 37 insertions(+), 12 deletions(-)
diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/replication/SharedNothingReplicationFlowControlTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/replication/SharedNothingReplicationFlowControlTest.java
index 22521b9..e979664 100644
--- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/replication/SharedNothingReplicationFlowControlTest.java
+++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/replication/SharedNothingReplicationFlowControlTest.java
@@ -19,9 +19,13 @@ package org.apache.activemq.artemis.tests.integration.replication;
import java.io.File;
import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
import java.lang.management.ManagementFactory;
import java.util.ArrayList;
import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Executor;
import java.util.concurrent.ExecutorService;
@@ -223,6 +227,7 @@ public class SharedNothingReplicationFlowControlTest extends ActiveMQTestBase {
ServerLocator locator = ServerLocatorImpl.newLocator("tcp://localhost:61616");
locator.setCallTimeout(60_000L);
locator.setConnectionTTL(60_000L);
+ locator.setBlockOnDurableSend(false);
final ClientSessionFactory csf = locator.createSessionFactory();
ClientSession sess = csf.createSession();
@@ -243,8 +248,7 @@ public class SharedNothingReplicationFlowControlTest extends ActiveMQTestBase {
sess.close();
- openCount.set(0);
- closeCount.set(0);
+ TestableSequentialFile.openFiles.clear();
// start backup
Configuration backupConfiguration = createBackupConfiguration().setNetworkCheckURLList(null);
@@ -264,14 +268,17 @@ public class SharedNothingReplicationFlowControlTest extends ActiveMQTestBase {
Wait.waitFor(backupServer::isReplicaSync, 30000);
- PageStoreFactoryTestable testablePageStoreFactory = (PageStoreFactoryTestable) ((PagingManagerImpl) backupServer.getPagingManager()).getPagingStoreFactory();
-
- Wait.assertTrue(() -> openCount.get() == closeCount.get());
+ // Asserting for file leaks
+ if (!Wait.waitFor(() -> TestableSequentialFile.openFiles.size() == 0, 5000)) {
+ StringWriter writer = new StringWriter();
+ PrintWriter print = new PrintWriter(writer);
+ for (Object fileOpen : TestableSequentialFile.openFiles.keySet()) {
+ print.println("File still open ::" + fileOpen);
+ }
+ Assert.fail(writer.toString());
+ }
}
- static AtomicInteger openCount = new AtomicInteger(0);
- static AtomicInteger closeCount = new AtomicInteger(0);
-
private static class PageStoreFactoryTestable extends PagingStoreFactoryNIO {
PageStoreFactoryTestable(StorageManager storageManager,
@@ -308,6 +315,24 @@ public class SharedNothingReplicationFlowControlTest extends ActiveMQTestBase {
public static class TestableSequentialFile extends NIOSequentialFile {
+ @Override
+ public boolean equals(Object obj) {
+ TestableSequentialFile other = (TestableSequentialFile)obj;
+ return other.getFile().equals(this.getFile());
+ }
+
+ @Override
+ public String toString() {
+ return "TestableSequentialFile::" + getFile().toString();
+ }
+
+ @Override
+ public int hashCode() {
+ return getFile().hashCode();
+ }
+
+ static Map<TestableSequentialFile, Exception> openFiles = new ConcurrentHashMap<>();
+
public TestableSequentialFile(SequentialFileFactory factory,
File directory,
String file,
@@ -319,13 +344,13 @@ public class SharedNothingReplicationFlowControlTest extends ActiveMQTestBase {
@Override
public void open(int maxIO, boolean useExecutor) throws IOException {
super.open(maxIO, useExecutor);
- openCount.incrementAndGet();
+ openFiles.put(TestableSequentialFile.this, new Exception("open"));
}
@Override
- public synchronized void close() throws IOException, InterruptedException, ActiveMQException {
- super.close();
- closeCount.incrementAndGet();
+ public synchronized void close(boolean waitSync) throws IOException, InterruptedException, ActiveMQException {
+ super.close(waitSync);
+ openFiles.remove(TestableSequentialFile.this);
}
}