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 );
             }
         }