From c2d4f8bce1588f39ed80078c89939b3df746f9be Mon Sep 17 00:00:00 2001 From: Olivier Lamy Date: Mon, 16 Dec 2013 06:53:09 +0000 Subject: [PATCH] prevent possible file limit issue git-svn-id: https://svn.apache.org/repos/asf/archiva/trunk@1551121 13f79535-47bb-0310-9956-ffa450edef68 --- .../filelock/DefaultFileLockManager.java | 26 ++++++++++++++----- .../apache/archiva/common/filelock/Lock.java | 4 +++ 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/archiva-modules/archiva-base/archiva-filelock/src/main/java/org/apache/archiva/common/filelock/DefaultFileLockManager.java b/archiva-modules/archiva-base/archiva-filelock/src/main/java/org/apache/archiva/common/filelock/DefaultFileLockManager.java index e97d3e141..db26076b9 100644 --- a/archiva-modules/archiva-base/archiva-filelock/src/main/java/org/apache/archiva/common/filelock/DefaultFileLockManager.java +++ b/archiva-modules/archiva-base/archiva-filelock/src/main/java/org/apache/archiva/common/filelock/DefaultFileLockManager.java @@ -27,6 +27,7 @@ import org.springframework.stereotype.Service; import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; +import java.io.RandomAccessFile; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; @@ -91,6 +92,12 @@ public class DefaultFileLockManager if ( current != null ) { log.debug( "read lock file exist continue wait" ); + // close RandomAccessFile!!! + RandomAccessFile raf = lock.getRandomAccessFile(); + if (raf != null) + { + raf.close(); + } continue; } @@ -168,14 +175,21 @@ public class DefaultFileLockManager Lock current = lockFiles.get( file ); - if ( current != null ) - { - log.debug( "write lock file exist continue wait" ); - continue; - } - try { + + if ( current != null ) + { + log.debug( "write lock file exist continue wait" ); + // close RandomAccessFile!!! + RandomAccessFile raf = lock.getRandomAccessFile(); + if (raf != null) + { + raf.close(); + } + continue; + } + createNewFileQuietly( file ); lock.openLock( true, timeout > 0 ); acquired = true; diff --git a/archiva-modules/archiva-base/archiva-filelock/src/main/java/org/apache/archiva/common/filelock/Lock.java b/archiva-modules/archiva-base/archiva-filelock/src/main/java/org/apache/archiva/common/filelock/Lock.java index a05d7d2c5..0922a7495 100644 --- a/archiva-modules/archiva-base/archiva-filelock/src/main/java/org/apache/archiva/common/filelock/Lock.java +++ b/archiva-modules/archiva-base/archiva-filelock/src/main/java/org/apache/archiva/common/filelock/Lock.java @@ -144,6 +144,10 @@ public class Lock } + protected RandomAccessFile getRandomAccessFile() + { + return randomAccessFile; + } private void closeQuietly( Closeable closeable ) { -- 2.39.5