You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by cs...@apache.org on 2022/05/02 11:59:47 UTC
[maven-indexer] branch MINDEXER-121-prevent-leak created (now eadff60)
This is an automated email from the ASF dual-hosted git repository.
cstamas pushed a change to branch MINDEXER-121-prevent-leak
in repository https://gitbox.apache.org/repos/asf/maven-indexer.git
at eadff60 [MINDEXER-121] Prevent ChunkReadIterator leak
This branch includes the following new commits:
new eadff60 [MINDEXER-121] Prevent ChunkReadIterator leak
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
[maven-indexer] 01/01: [MINDEXER-121] Prevent ChunkReadIterator leak
Posted by cs...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
cstamas pushed a commit to branch MINDEXER-121-prevent-leak
in repository https://gitbox.apache.org/repos/asf/maven-indexer.git
commit eadff600c0e5511de915decc482ca30c7bcd7d09
Author: Tamas Cservenak <ta...@cservenak.net>
AuthorDate: Mon May 2 13:58:57 2022 +0200
[MINDEXER-121] Prevent ChunkReadIterator leak
The simplest change to not disturb any possible
current users of this.
Later this will need some rework, probably with
some breaking changes.
---
.../org/apache/maven/index/reader/IndexReader.java | 22 ++++++++++++++--------
1 file changed, 14 insertions(+), 8 deletions(-)
diff --git a/indexer-reader/src/main/java/org/apache/maven/index/reader/IndexReader.java b/indexer-reader/src/main/java/org/apache/maven/index/reader/IndexReader.java
index d546f8a..6b34b36 100644
--- a/indexer-reader/src/main/java/org/apache/maven/index/reader/IndexReader.java
+++ b/indexer-reader/src/main/java/org/apache/maven/index/reader/IndexReader.java
@@ -269,18 +269,28 @@ public class IndexReader
private final Iterator<String> chunkNamesIterator;
- private Resource currentResource;
-
private ChunkReader currentChunkReader;
private ChunkReaderIterator( final ResourceHandler resourceHandler, final Iterator<String> chunkNamesIterator )
{
this.resourceHandler = resourceHandler;
this.chunkNamesIterator = chunkNamesIterator;
+ this.currentChunkReader = null;
}
public boolean hasNext()
{
+ try
+ {
+ if ( currentChunkReader != null )
+ {
+ currentChunkReader.close();
+ }
+ }
+ catch ( IOException e )
+ {
+ throw new RuntimeException( "IO problem while closing chunk readers", e );
+ }
return chunkNamesIterator.hasNext();
}
@@ -289,17 +299,13 @@ public class IndexReader
String chunkName = chunkNamesIterator.next();
try
{
- if ( currentChunkReader != null )
- {
- currentChunkReader.close();
- }
- currentResource = resourceHandler.locate( chunkName );
+ Resource currentResource = resourceHandler.locate( chunkName );
currentChunkReader = new ChunkReader( chunkName, currentResource.read() );
return currentChunkReader;
}
catch ( IOException e )
{
- throw new RuntimeException( "IO problem while switching chunk readers", e );
+ throw new RuntimeException( "IO problem while opening chunk readers", e );
}
}