Repository: activemq-artemis Updated Branches: refs/heads/2.6.x a108ad361 -> 6b50d76e4
ARTEMIS-2102 delete paging directory or table if address is removed (cherry picked from commit 8f4bd7c6212a2410142ae31045a0bf878aeb0136) Project: http://git-wip-us.apache.org/repos/asf/activemq-artemis/repo Commit: http://git-wip-us.apache.org/repos/asf/activemq-artemis/commit/6b50d76e Tree: http://git-wip-us.apache.org/repos/asf/activemq-artemis/tree/6b50d76e Diff: http://git-wip-us.apache.org/repos/asf/activemq-artemis/diff/6b50d76e Branch: refs/heads/2.6.x Commit: 6b50d76e4fc39dd4020d7480cc6c854bff0f6163 Parents: a108ad3 Author: yang wei <[email protected]> Authored: Tue Oct 2 19:44:57 2018 +0800 Committer: Clebert Suconic <[email protected]> Committed: Thu Oct 11 15:10:26 2018 -0400 ---------------------------------------------------------------------- .../jdbc/store/file/JDBCSequentialFile.java | 30 +++++---- .../file/JDBCSequentialFileFactoryDriver.java | 13 +++- .../file/JDBCSequentialFileFactoryTest.java | 26 ++++++++ .../artemis/core/paging/PagingStore.java | 2 + .../artemis/core/paging/PagingStoreFactory.java | 2 + .../core/paging/impl/PagingManagerImpl.java | 1 + .../paging/impl/PagingStoreFactoryDatabase.java | 32 +++++++++ .../core/paging/impl/PagingStoreFactoryNIO.java | 9 +++ .../core/paging/impl/PagingStoreImpl.java | 7 ++ .../core/server/impl/ActiveMQServerImpl.java | 13 ++++ .../tests/integration/paging/PagingTest.java | 69 ++++++++++++++++++++ .../storage/PersistMultiThreadTest.java | 4 ++ .../core/paging/impl/PagingStoreImplTest.java | 4 ++ 13 files changed, 199 insertions(+), 13 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/6b50d76e/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/file/JDBCSequentialFile.java ---------------------------------------------------------------------- diff --git a/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/file/JDBCSequentialFile.java b/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/file/JDBCSequentialFile.java index fec8eaf..0b88d9a 100644 --- a/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/file/JDBCSequentialFile.java +++ b/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/file/JDBCSequentialFile.java @@ -155,12 +155,12 @@ public class JDBCSequentialFile implements SequentialFile { } } - private synchronized int internalWrite(byte[] data, IOCallback callback) { + private synchronized int internalWrite(byte[] data, IOCallback callback, boolean append) { try { open(); synchronized (writeLock) { - int noBytes = dbDriver.writeToFile(this, data); - seek(noBytes); + int noBytes = dbDriver.writeToFile(this, data, append); + seek(append ? writePosition + noBytes : noBytes); if (logger.isTraceEnabled()) { logger.trace("Write: ID: " + this.getId() + " FileName: " + this.getFileName() + size()); } @@ -177,18 +177,22 @@ public class JDBCSequentialFile implements SequentialFile { } public synchronized int internalWrite(ActiveMQBuffer buffer, IOCallback callback) { + return internalWrite(buffer, callback, true); + } + + public synchronized int internalWrite(ActiveMQBuffer buffer, IOCallback callback, boolean append) { byte[] data = new byte[buffer.readableBytes()]; buffer.readBytes(data); - return internalWrite(data, callback); + return internalWrite(data, callback, append); } private synchronized int internalWrite(ByteBuffer buffer, IOCallback callback) { - return internalWrite(buffer.array(), callback); + return internalWrite(buffer.array(), callback, true); } - private void scheduleWrite(final ActiveMQBuffer bytes, final IOCallback callback) { + private void scheduleWrite(final ActiveMQBuffer bytes, final IOCallback callback, boolean append) { executor.execute(() -> { - internalWrite(bytes, callback); + internalWrite(bytes, callback, append); }); } @@ -199,13 +203,17 @@ public class JDBCSequentialFile implements SequentialFile { } synchronized void seek(long noBytes) { - writePosition += noBytes; + writePosition = noBytes; + } + + public void write(ActiveMQBuffer bytes, boolean sync, IOCallback callback, boolean append) throws Exception { + // We ignore sync since we schedule writes straight away. + scheduleWrite(bytes, callback, append); } @Override public void write(ActiveMQBuffer bytes, boolean sync, IOCallback callback) throws Exception { - // We ignore sync since we schedule writes straight away. - scheduleWrite(bytes, callback); + write(bytes, sync, callback, true); } @Override @@ -217,7 +225,7 @@ public class JDBCSequentialFile implements SequentialFile { public void write(EncodingSupport bytes, boolean sync, IOCallback callback) throws Exception { ActiveMQBuffer data = ActiveMQBuffers.fixedBuffer(bytes.getEncodeSize()); bytes.encode(data); - scheduleWrite(data, callback); + write(data, sync, callback, true); } @Override http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/6b50d76e/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/file/JDBCSequentialFileFactoryDriver.java ---------------------------------------------------------------------- diff --git a/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/file/JDBCSequentialFileFactoryDriver.java b/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/file/JDBCSequentialFileFactoryDriver.java index e736dca..7d9aded 100644 --- a/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/file/JDBCSequentialFileFactoryDriver.java +++ b/artemis-jdbc-store/src/main/java/org/apache/activemq/artemis/jdbc/store/file/JDBCSequentialFileFactoryDriver.java @@ -246,6 +246,10 @@ public class JDBCSequentialFileFactoryDriver extends AbstractJDBCDriver { } } + public int writeToFile(JDBCSequentialFile file, byte[] data) throws SQLException { + return writeToFile(file, data, true); + } + /** * Persists data to this files associated database mapping. * @@ -254,7 +258,7 @@ public class JDBCSequentialFileFactoryDriver extends AbstractJDBCDriver { * @return * @throws SQLException */ - public int writeToFile(JDBCSequentialFile file, byte[] data) throws SQLException { + public int writeToFile(JDBCSequentialFile file, byte[] data, boolean append) throws SQLException { synchronized (connection) { connection.setAutoCommit(false); appendToLargeObject.setLong(1, file.getId()); @@ -266,7 +270,12 @@ public class JDBCSequentialFileFactoryDriver extends AbstractJDBCDriver { if (blob == null) { blob = connection.createBlob(); } - bytesWritten = blob.setBytes(blob.length() + 1, data); + if (append) { + bytesWritten = blob.setBytes(blob.length() + 1, data); + } else { + blob.truncate(0); + bytesWritten = blob.setBytes(1, data); + } rs.updateBlob(1, blob); rs.updateRow(); } http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/6b50d76e/artemis-jdbc-store/src/test/java/org/apache/activemq/artemis/jdbc/file/JDBCSequentialFileFactoryTest.java ---------------------------------------------------------------------- diff --git a/artemis-jdbc-store/src/test/java/org/apache/activemq/artemis/jdbc/file/JDBCSequentialFileFactoryTest.java b/artemis-jdbc-store/src/test/java/org/apache/activemq/artemis/jdbc/file/JDBCSequentialFileFactoryTest.java index a45b9a8..7b6dc39 100644 --- a/artemis-jdbc-store/src/test/java/org/apache/activemq/artemis/jdbc/file/JDBCSequentialFileFactoryTest.java +++ b/artemis-jdbc-store/src/test/java/org/apache/activemq/artemis/jdbc/file/JDBCSequentialFileFactoryTest.java @@ -202,6 +202,32 @@ public class JDBCSequentialFileFactoryTest { } @Test + public void testWriteToFile() throws Exception { + JDBCSequentialFile file = (JDBCSequentialFile) factory.createSequentialFile("test.txt"); + file.open(); + + ActiveMQBuffer src = ActiveMQBuffers.fixedBuffer(1); + src.writeByte((byte)7); + + file.internalWrite(src, null); + checkData(file, src); + assertEquals(1, file.size()); + file.close(); + + file = (JDBCSequentialFile) factory.createSequentialFile("test.txt"); + file.open(); + + int bufferSize = 1024; + src = ActiveMQBuffers.fixedBuffer(bufferSize); + for (int i = 0; i < bufferSize; i++) { + src.writeByte((byte)i); + } + file.internalWrite(src, null, false); + checkData(file, src); + assertEquals(bufferSize, file.size()); + } + + @Test public void testCopyFile() throws Exception { JDBCSequentialFile file = (JDBCSequentialFile) factory.createSequentialFile("test.txt"); file.open(); http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/6b50d76e/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/PagingStore.java ---------------------------------------------------------------------- diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/PagingStore.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/PagingStore.java index 4dd8bf8..38c59dc 100644 --- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/PagingStore.java +++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/PagingStore.java @@ -184,4 +184,6 @@ public interface PagingStore extends ActiveMQComponent, RefCountMessageListener * This method will re-enable cleanup of pages. Notice that it will also start cleanup threads. */ void enableCleanup(); + + void destroy() throws Exception; } http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/6b50d76e/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/PagingStoreFactory.java ---------------------------------------------------------------------- diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/PagingStoreFactory.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/PagingStoreFactory.java index 6cfaf20..ce31021 100644 --- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/PagingStoreFactory.java +++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/PagingStoreFactory.java @@ -49,6 +49,8 @@ public interface PagingStoreFactory { SequentialFileFactory newFileFactory(SimpleString address) throws Exception; + void removeFileFactory(SequentialFileFactory fileFactory) throws Exception; + void injectMonitor(FileStoreMonitor monitor) throws Exception; default ScheduledExecutorService getScheduledExecutor() { http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/6b50d76e/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagingManagerImpl.java ---------------------------------------------------------------------- diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagingManagerImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagingManagerImpl.java index 8893984..07f5ad7 100644 --- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagingManagerImpl.java +++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagingManagerImpl.java @@ -317,6 +317,7 @@ public final class PagingManagerImpl implements PagingManager { PagingStore store = stores.remove(storeName); if (store != null) { store.stop(); + store.destroy(); } } finally { syncLock.readLock().unlock(); http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/6b50d76e/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagingStoreFactoryDatabase.java ---------------------------------------------------------------------- diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagingStoreFactoryDatabase.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagingStoreFactoryDatabase.java index 23a0bd3..6dc11f3 100644 --- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagingStoreFactoryDatabase.java +++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagingStoreFactoryDatabase.java @@ -18,7 +18,9 @@ package org.apache.activemq.artemis.core.paging.impl; import java.nio.ByteBuffer; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import java.util.concurrent.Executor; import java.util.concurrent.ScheduledExecutorService; @@ -94,6 +96,8 @@ public class PagingStoreFactoryDatabase implements PagingStoreFactory { private final IOCriticalErrorListener criticalErrorListener; + private final Map<SequentialFileFactory, String> factoryToTableName; + public PagingStoreFactoryDatabase(final DatabaseStorageConfiguration dbConf, final StorageManager storageManager, final long syncTimeout, @@ -108,6 +112,7 @@ public class PagingStoreFactoryDatabase implements PagingStoreFactory { this.syncTimeout = syncTimeout; this.dbConf = dbConf; this.criticalErrorListener = critialErrorListener; + this.factoryToTableName = new HashMap<>(); start(); } @@ -181,6 +186,32 @@ public class PagingStoreFactoryDatabase implements PagingStoreFactory { } @Override + public synchronized void removeFileFactory(SequentialFileFactory fileFactory) throws Exception { + ((JDBCSequentialFileFactory)fileFactory).destroy(); + String tableName = factoryToTableName.remove(fileFactory); + if (tableName != null) { + SimpleString removeTableName = SimpleString.toSimpleString(tableName); + JDBCSequentialFile directoryList = (JDBCSequentialFile) pagingFactoryFileFactory.createSequentialFile(DIRECTORY_NAME); + directoryList.open(); + + int size = ((Long) directoryList.size()).intValue(); + ActiveMQBuffer buffer = readActiveMQBuffer(directoryList, size); + + ActiveMQBuffer writeBuffer = ActiveMQBuffers.fixedBuffer(size); + + while (buffer.readableBytes() > 0) { + SimpleString table = buffer.readSimpleString(); + if (!removeTableName.equals(table)) { + writeBuffer.writeSimpleString(table); + } + } + + directoryList.write(writeBuffer, true, null, false); + directoryList.close(); + } + } + + @Override public void setPagingManager(final PagingManager pagingManager) { this.pagingManager = pagingManager; } @@ -249,6 +280,7 @@ public class PagingStoreFactoryDatabase implements PagingStoreFactory { if (jdbcNetworkTimeout >= 0) { fileFactory.setNetworkTimeout(this.executorFactory.getExecutor(), jdbcNetworkTimeout); } + factoryToTableName.put(fileFactory, directoryName); return fileFactory; } http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/6b50d76e/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagingStoreFactoryNIO.java ---------------------------------------------------------------------- diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagingStoreFactoryNIO.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagingStoreFactoryNIO.java index aa71c0e..b0cbbb3 100644 --- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagingStoreFactoryNIO.java +++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagingStoreFactoryNIO.java @@ -45,6 +45,7 @@ import org.apache.activemq.artemis.core.server.files.FileStoreMonitor; import org.apache.activemq.artemis.core.settings.HierarchicalRepository; import org.apache.activemq.artemis.core.settings.impl.AddressSettings; import org.apache.activemq.artemis.utils.ExecutorFactory; +import org.apache.activemq.artemis.utils.FileUtil; import org.apache.activemq.artemis.utils.UUIDGenerator; import org.apache.activemq.artemis.utils.actors.ArtemisExecutor; @@ -174,6 +175,14 @@ public class PagingStoreFactoryNIO implements PagingStoreFactory { } @Override + public synchronized void removeFileFactory(SequentialFileFactory fileFactory) throws Exception { + File directory = fileFactory.getDirectory(); + if (directory.exists()) { + FileUtil.deleteDirectory(directory); + } + } + + @Override public void setPagingManager(final PagingManager pagingManager) { this.pagingManager = pagingManager; } http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/6b50d76e/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagingStoreImpl.java ---------------------------------------------------------------------- diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagingStoreImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagingStoreImpl.java index 1392cfc..00001cc 100644 --- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagingStoreImpl.java +++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/paging/impl/PagingStoreImpl.java @@ -967,6 +967,13 @@ public class PagingStoreImpl implements PagingStore { return; } + @Override + public void destroy() throws Exception { + if (fileFactory != null) { + storeFactory.removeFileFactory(fileFactory); + } + } + private static class FinishPageMessageOperation implements TransactionOperation { private final PageTransactionInfo pageTransaction; http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/6b50d76e/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java ---------------------------------------------------------------------- diff --git a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java index be340ee..f8b46e2 100644 --- a/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java +++ b/artemis-server/src/main/java/org/apache/activemq/artemis/core/server/impl/ActiveMQServerImpl.java @@ -2392,6 +2392,8 @@ public class ActiveMQServerImpl implements ActiveMQServer { JournalLoadInformation[] journalInfo = loadJournals(); + removeExtraAddressStores(); + final ServerInfo dumper = new ServerInfo(this, pagingManager); long dumpInfoInterval = configuration.getServerDumpInterval(); @@ -3163,6 +3165,17 @@ public class ActiveMQServerImpl implements ActiveMQServer { } } + private void removeExtraAddressStores() throws Exception { + SimpleString[] storeNames = pagingManager.getStoreNames(); + if (storeNames != null && storeNames.length > 0) { + for (SimpleString storeName : storeNames) { + if (getAddressInfo(storeName) == null) { + pagingManager.deletePageStore(storeName); + } + } + } + } + private final class ActivationThread extends Thread { final Runnable runnable; http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/6b50d76e/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/paging/PagingTest.java ---------------------------------------------------------------------- diff --git a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/paging/PagingTest.java b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/paging/PagingTest.java index 13d8f08..65b5892 100644 --- a/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/paging/PagingTest.java +++ b/tests/integration-tests/src/test/java/org/apache/activemq/artemis/tests/integration/paging/PagingTest.java @@ -6220,6 +6220,75 @@ public class PagingTest extends ActiveMQTestBase { server.stop(); } + @Test + public void testPagingStoreDestroyed() throws Exception { + clearDataRecreateServerDirs(); + + Configuration config = createDefaultInVMConfig().setJournalSyncNonTransactional(false); + + server = createServer(true, config, PagingTest.PAGE_SIZE, PagingTest.PAGE_MAX); + + server.start(); + + final int numberOfMessages = 5000; + + locator = createInVMNonHALocator().setBlockOnNonDurableSend(true).setBlockOnDurableSend(true).setBlockOnAcknowledge(true); + + sf = createSessionFactory(locator); + + ClientSession session = sf.createSession(false, false, false); + + session.createQueue(PagingTest.ADDRESS, PagingTest.ADDRESS, null, true); + + ClientProducer producer = session.createProducer(PagingTest.ADDRESS); + + ClientMessage message = null; + + byte[] body = new byte[MESSAGE_SIZE]; + + ByteBuffer bb = ByteBuffer.wrap(body); + + for (int j = 1; j <= MESSAGE_SIZE; j++) { + bb.put(getSamplebyte(j)); + } + + for (int i = 0; i < numberOfMessages; i++) { + message = session.createMessage(true); + + ActiveMQBuffer bodyLocal = message.getBodyBuffer(); + + bodyLocal.writeBytes(body); + + producer.send(message); + if (i % 1000 == 0) { + session.commit(); + } + } + session.commit(); + producer.close(); + assertTrue(Arrays.asList(server.getPagingManager().getStoreNames()).contains(PagingTest.ADDRESS)); + assertTrue(server.getPagingManager().getPageStore(PagingTest.ADDRESS).isPaging()); + + session.deleteQueue(PagingTest.ADDRESS); + session.close(); + sf.close(); + locator.close(); + locator = null; + sf = null; + assertFalse(Arrays.asList(server.getPagingManager().getStoreNames()).contains(PagingTest.ADDRESS)); + // Ensure pagingStore is physically deleted + server.getPagingManager().reloadStores(); + assertFalse(Arrays.asList(server.getPagingManager().getStoreNames()).contains(PagingTest.ADDRESS)); + server.stop(); + + server.start(); + assertFalse(Arrays.asList(server.getPagingManager().getStoreNames()).contains(PagingTest.ADDRESS)); + // Ensure pagingStore is physically deleted + server.getPagingManager().reloadStores(); + assertFalse(Arrays.asList(server.getPagingManager().getStoreNames()).contains(PagingTest.ADDRESS)); + server.stop(); + } + @Override protected Configuration createDefaultConfig(final int serverID, final boolean netty) throws Exception { Configuration configuration = super.createDefaultConfig(serverID, netty); http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/6b50d76e/tests/performance-tests/src/test/java/org/apache/activemq/artemis/tests/performance/storage/PersistMultiThreadTest.java ---------------------------------------------------------------------- diff --git a/tests/performance-tests/src/test/java/org/apache/activemq/artemis/tests/performance/storage/PersistMultiThreadTest.java b/tests/performance-tests/src/test/java/org/apache/activemq/artemis/tests/performance/storage/PersistMultiThreadTest.java index da9e8cd..813765d 100644 --- a/tests/performance-tests/src/test/java/org/apache/activemq/artemis/tests/performance/storage/PersistMultiThreadTest.java +++ b/tests/performance-tests/src/test/java/org/apache/activemq/artemis/tests/performance/storage/PersistMultiThreadTest.java @@ -469,5 +469,9 @@ public class PersistMultiThreadTest extends ActiveMQTestBase { public boolean checkReleasedMemory() { return true; } + + @Override + public void destroy() throws Exception { + } } } http://git-wip-us.apache.org/repos/asf/activemq-artemis/blob/6b50d76e/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/paging/impl/PagingStoreImplTest.java ---------------------------------------------------------------------- diff --git a/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/paging/impl/PagingStoreImplTest.java b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/paging/impl/PagingStoreImplTest.java index d3a67e7..90725a2 100644 --- a/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/paging/impl/PagingStoreImplTest.java +++ b/tests/unit-tests/src/test/java/org/apache/activemq/artemis/tests/unit/core/paging/impl/PagingStoreImplTest.java @@ -803,6 +803,10 @@ public class PagingStoreImplTest extends ActiveMQTestBase { } @Override + public void removeFileFactory(SequentialFileFactory fileFactory) throws Exception { + } + + @Override public PagingStore newStore(final SimpleString destinationName, final AddressSettings addressSettings) { return null; }
