This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-vfs.git


The following commit(s) were added to refs/heads/master by this push:
     new 4e37bb6  Rework SoftRefFilesCache locking part 1 (#158)
4e37bb6 is described below

commit 4e37bb698b6c8d18e4e102a6ed6e6b35925ee35f
Author: Max Kellermann <m...@cm4all.com>
AuthorDate: Sun Feb 28 14:58:57 2021 +0100

    Rework SoftRefFilesCache locking part 1 (#158)
    
    * SoftRefFilesCache: don't call super.close()
    
    AbstractVfsComponent.close() is documented to do nothing, so there's
    no point in calling it.
    
    * SoftRefFilesCache: use isEmpty() instead of "size()<1"
    
    For some containers, size() is O(n), but isEmpty() is always O(1).
    
    * SoftRefFilesCache: remove redundant isInterrupted() check
    
    The following ReferenceQueue.remove() call will do that check again.
    
    * SoftRefFilesCache: simplify the InterruptedException catch block
    
    By reversing the order of "while" and "try/catch", we can simply omit
    the "break" pseudo-goto statement.
---
 .../apache/commons/vfs2/cache/SoftRefFilesCache.java  | 19 ++++++++-----------
 1 file changed, 8 insertions(+), 11 deletions(-)

diff --git 
a/commons-vfs2/src/main/java/org/apache/commons/vfs2/cache/SoftRefFilesCache.java
 
b/commons-vfs2/src/main/java/org/apache/commons/vfs2/cache/SoftRefFilesCache.java
index 8243380..1e597d8 100644
--- 
a/commons-vfs2/src/main/java/org/apache/commons/vfs2/cache/SoftRefFilesCache.java
+++ 
b/commons-vfs2/src/main/java/org/apache/commons/vfs2/cache/SoftRefFilesCache.java
@@ -69,8 +69,8 @@ public class SoftRefFilesCache extends AbstractFilesCache {
 
         @Override
         public void run() {
-            loop: while (!requestEnd && 
!Thread.currentThread().isInterrupted()) {
-                try {
+            try {
+                while (!requestEnd) {
                     final Reference<?> ref = refQueue.remove(TIMEOUT);
                     if (ref == null) {
                         continue;
@@ -86,12 +86,11 @@ public class SoftRefFilesCache extends AbstractFilesCache {
                     } finally {
                         lock.unlock();
                     }
-                } catch (final InterruptedException e) {
-                    if (!requestEnd) {
-                        VfsLog.warn(getLogger(), log,
+                }
+            } catch (final InterruptedException e) {
+                if (!requestEnd) {
+                    VfsLog.warn(getLogger(), log,
                                 
Messages.getString("vfs.impl/SoftRefReleaseThread-interrupt.info"));
-                    }
-                    break loop;
                 }
             }
         }
@@ -242,7 +241,7 @@ public class SoftRefFilesCache extends AbstractFilesCache {
         }
 
         fileSystemCache.remove(fileSystem);
-        if (fileSystemCache.size() < 1) {
+        if (fileSystemCache.isEmpty()) {
             endThread();
         }
         /*
@@ -253,8 +252,6 @@ public class SoftRefFilesCache extends AbstractFilesCache {
 
     @Override
     public void close() {
-        super.close();
-
         endThread();
 
         lock.lock();
@@ -295,7 +292,7 @@ public class SoftRefFilesCache extends AbstractFilesCache {
     }
 
     protected Map<FileName, Reference<FileObject>> 
getOrCreateFilesystemCache(final FileSystem fileSystem) {
-        if (fileSystemCache.size() < 1) {
+        if (fileSystemCache.isEmpty()) {
             startThread();
         }
 

Reply via email to