diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/raft/log/segmented/ReaderPool.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/raft/log/segmented/ReaderPool.java index 46ce0f9c8e861..85ae392395571 100644 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/raft/log/segmented/ReaderPool.java +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/raft/log/segmented/ReaderPool.java @@ -36,7 +36,7 @@ // TODO: Prune stale readers with a recurring job. class ReaderPool { - private final ArrayList pool; + private ArrayList pool; private final int maxSize; private final Log log; private final FileNames fileNames; @@ -125,16 +125,23 @@ private void dispose( Reader reader ) } } - synchronized void disposeAll() throws IOException + synchronized void close() throws IOException { for ( Reader reader : pool ) { reader.close(); } + pool.clear(); + pool = null; } public synchronized void prune( long version ) { + if ( pool == null ) + { + return; + } + Iterator itr = pool.iterator(); while ( itr.hasNext() ) { diff --git a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/raft/log/segmented/SegmentedRaftLog.java b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/raft/log/segmented/SegmentedRaftLog.java index 1137e8413d8b5..c224eb8185cf4 100644 --- a/enterprise/core-edge/src/main/java/org/neo4j/coreedge/raft/log/segmented/SegmentedRaftLog.java +++ b/enterprise/core-edge/src/main/java/org/neo4j/coreedge/raft/log/segmented/SegmentedRaftLog.java @@ -104,7 +104,7 @@ public synchronized void start() throws IOException, DamagedLogStorageException, @Override public synchronized void stop() throws DisposedException, IOException { - readerPool.disposeAll(); + readerPool.close(); state.segments.close(); } diff --git a/enterprise/core-edge/src/test/java/org/neo4j/coreedge/raft/log/segmented/ReaderPoolTest.java b/enterprise/core-edge/src/test/java/org/neo4j/coreedge/raft/log/segmented/ReaderPoolTest.java index c66fc69230cb0..3b9c3bf78a258 100644 --- a/enterprise/core-edge/src/test/java/org/neo4j/coreedge/raft/log/segmented/ReaderPoolTest.java +++ b/enterprise/core-edge/src/test/java/org/neo4j/coreedge/raft/log/segmented/ReaderPoolTest.java @@ -147,7 +147,7 @@ public void shouldDisposeAllReleasedReaders() throws Exception pool.release( readerC ); // when - pool.disposeAll(); + pool.close(); // then verify( readerA ).close();