You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ol...@apache.org on 2013/12/12 23:37:16 UTC

svn commit: r1550560 - in /archiva/trunk/archiva-modules/archiva-base/archiva-filelock/src: main/java/org/apache/archiva/common/filelock/ test/java/org/apache/archiva/common/filelock/

Author: olamy
Date: Thu Dec 12 22:37:16 2013
New Revision: 1550560

URL: http://svn.apache.org/r1550560
Log:
throw a timeout exception if not possible to get the lock after the timeout

Modified:
    archiva/trunk/archiva-modules/archiva-base/archiva-filelock/src/main/java/org/apache/archiva/common/filelock/DefaultFileLockManager.java
    archiva/trunk/archiva-modules/archiva-base/archiva-filelock/src/main/java/org/apache/archiva/common/filelock/FileLockManager.java
    archiva/trunk/archiva-modules/archiva-base/archiva-filelock/src/test/java/org/apache/archiva/common/filelock/DefaultFileLockManagerTest.java

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-filelock/src/main/java/org/apache/archiva/common/filelock/DefaultFileLockManager.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-filelock/src/main/java/org/apache/archiva/common/filelock/DefaultFileLockManager.java?rev=1550560&r1=1550559&r2=1550560&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-filelock/src/main/java/org/apache/archiva/common/filelock/DefaultFileLockManager.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-filelock/src/main/java/org/apache/archiva/common/filelock/DefaultFileLockManager.java Thu Dec 12 22:37:16 2013
@@ -47,7 +47,7 @@ public class DefaultFileLockManager
 
     @Override
     public Lock readFileLock( File file )
-        throws FileLockException, FileNotFoundException
+        throws FileLockException, FileLockTimeoutException
     {
         if ( skipLocking )
         {
@@ -57,43 +57,50 @@ public class DefaultFileLockManager
         StopWatch stopWatch = new StopWatch();
         boolean acquired = false;
 
-        Lock lock = new Lock( file, false );
+        try
+        {
+            Lock lock = new Lock( file, false );
 
-        stopWatch.start();
+            stopWatch.start();
 
-        while ( !acquired )
-        {
-            if ( timeout > 0 )
+            while ( !acquired )
             {
-                long delta = stopWatch.getTotalTimeMillis();
-                if ( delta > timeout )
+                if ( timeout > 0 )
                 {
-                    log.warn( "Cannot acquire read lock within {} millis. Will skip the file: {}", timeout, file );
-                    // we could not get the lock within the timeout period, so return null
-                    return null;
+                    long delta = stopWatch.getTotalTimeMillis();
+                    if ( delta > timeout )
+                    {
+                        log.warn( "Cannot acquire read lock within {} millis. Will skip the file: {}", timeout, file );
+                        // we could not get the lock within the timeout period, so  throw  FileLockTimeoutException
+                        throw new FileLockTimeoutException();
+                    }
+                }
+                try
+                {
+                    lock.openLock( false, timeout > 0 );
+                    acquired = true;
+                }
+                catch ( IOException e )
+                {
+                    throw new FileLockException( e.getMessage(), e );
+                }
+                catch ( IllegalStateException e )
+                {
+                    log.debug( "openLock {}:{}", e.getClass(), e.getMessage() );
                 }
             }
-            try
-            {
-                lock.openLock( false, timeout > 0 );
-                acquired = true;
-            }
-            catch ( IOException e )
-            {
-                throw new FileLockException( e.getMessage(), e );
-            }
-            catch ( IllegalStateException e )
-            {
-                log.debug( "openLock {}:{}", e.getClass(), e.getMessage() );
-            }
+            return lock;
+        }
+        catch ( FileNotFoundException e )
+        {
+            throw new FileLockException( e.getMessage(), e );
         }
-        return lock;
     }
 
 
     @Override
     public Lock writeFileLock( File file )
-        throws FileLockException, FileNotFoundException
+        throws FileLockException, FileLockTimeoutException
     {
         if ( skipLocking )
         {
@@ -103,37 +110,44 @@ public class DefaultFileLockManager
         StopWatch stopWatch = new StopWatch();
         boolean acquired = false;
 
-        Lock lock = new Lock( file, true );
+        try
+        {
+            Lock lock = new Lock( file, true );
 
-        stopWatch.start();
+            stopWatch.start();
 
-        while ( !acquired )
-        {
-            if ( timeout > 0 )
+            while ( !acquired )
             {
-                long delta = stopWatch.getTotalTimeMillis();
-                if ( delta > timeout )
+                if ( timeout > 0 )
                 {
-                    log.warn( "Cannot acquire read lock within {} millis. Will skip the file: {}", timeout, file );
-                    // we could not get the lock within the timeout period, so return null
-                    return null;
+                    long delta = stopWatch.getTotalTimeMillis();
+                    if ( delta > timeout )
+                    {
+                        log.warn( "Cannot acquire read lock within {} millis. Will skip the file: {}", timeout, file );
+                        // we could not get the lock within the timeout period, so throw FileLockTimeoutException
+                        throw new FileLockTimeoutException();
+                    }
+                }
+                try
+                {
+                    lock.openLock( true, timeout > 0 );
+                    acquired = true;
+                }
+                catch ( IOException e )
+                {
+                    throw new FileLockException( e.getMessage(), e );
+                }
+                catch ( IllegalStateException e )
+                {
+                    log.debug( "openLock {}:{}", e.getClass(), e.getMessage() );
                 }
             }
-            try
-            {
-                lock.openLock( true, timeout > 0 );
-                acquired = true;
-            }
-            catch ( IOException e )
-            {
-                throw new FileLockException( e.getMessage(), e );
-            }
-            catch ( IllegalStateException e )
-            {
-                log.debug( "openLock {}:{}", e.getClass(), e.getMessage() );
-            }
+            return lock;
+        }
+        catch ( FileNotFoundException e )
+        {
+            throw new FileLockException( e.getMessage(), e );
         }
-        return lock;
 
     }
 

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-filelock/src/main/java/org/apache/archiva/common/filelock/FileLockManager.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-filelock/src/main/java/org/apache/archiva/common/filelock/FileLockManager.java?rev=1550560&r1=1550559&r2=1550560&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-filelock/src/main/java/org/apache/archiva/common/filelock/FileLockManager.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-filelock/src/main/java/org/apache/archiva/common/filelock/FileLockManager.java Thu Dec 12 22:37:16 2013
@@ -28,10 +28,10 @@ import java.io.FileNotFoundException;
 public interface FileLockManager
 {
     Lock writeFileLock( File file )
-        throws FileLockException, FileNotFoundException;
+        throws FileLockException, FileLockTimeoutException;
 
     Lock readFileLock( File file )
-        throws FileLockException, FileNotFoundException;
+        throws FileLockException, FileLockTimeoutException;
 
     void release( Lock lock )
         throws FileLockException, FileNotFoundException;

Modified: archiva/trunk/archiva-modules/archiva-base/archiva-filelock/src/test/java/org/apache/archiva/common/filelock/DefaultFileLockManagerTest.java
URL: http://svn.apache.org/viewvc/archiva/trunk/archiva-modules/archiva-base/archiva-filelock/src/test/java/org/apache/archiva/common/filelock/DefaultFileLockManagerTest.java?rev=1550560&r1=1550559&r2=1550560&view=diff
==============================================================================
--- archiva/trunk/archiva-modules/archiva-base/archiva-filelock/src/test/java/org/apache/archiva/common/filelock/DefaultFileLockManagerTest.java (original)
+++ archiva/trunk/archiva-modules/archiva-base/archiva-filelock/src/test/java/org/apache/archiva/common/filelock/DefaultFileLockManagerTest.java Thu Dec 12 22:37:16 2013
@@ -81,7 +81,7 @@ public class DefaultFileLockManagerTest
         }
 
         public void thread1()
-            throws FileLockException, IOException
+            throws FileLockException, FileLockTimeoutException, IOException
         {
             logger.info( "thread1" );
             Lock lock = fileLockManager.writeFileLock( this.file );
@@ -99,7 +99,7 @@ public class DefaultFileLockManagerTest
         }
 
         public void thread2()
-            throws FileLockException, IOException
+            throws FileLockException, FileLockTimeoutException, IOException
         {
             logger.info( "thread2" );
             Lock lock = fileLockManager.writeFileLock( this.file );
@@ -117,7 +117,7 @@ public class DefaultFileLockManagerTest
         }
 
         public void thread3()
-            throws FileLockException, IOException
+            throws FileLockException, FileLockTimeoutException, IOException
         {
             logger.info( "thread3" );
             Lock lock = fileLockManager.readFileLock( this.file );
@@ -135,7 +135,7 @@ public class DefaultFileLockManagerTest
         }
 
         public void thread4()
-            throws FileLockException, IOException
+            throws FileLockException, FileLockTimeoutException, IOException
         {
             logger.info( "thread4" );
             Lock lock = fileLockManager.writeFileLock( this.file );
@@ -153,7 +153,7 @@ public class DefaultFileLockManagerTest
         }
 
         public void thread5()
-            throws FileLockException, IOException
+            throws FileLockException, FileLockTimeoutException, IOException
         {
             logger.info( "thread5" );
             Lock lock = fileLockManager.writeFileLock( this.file );
@@ -171,7 +171,7 @@ public class DefaultFileLockManagerTest
         }
 
         public void thread6()
-            throws FileLockException, IOException
+            throws FileLockException, FileLockTimeoutException, IOException
         {
             logger.info( "thread6" );
             Lock lock = fileLockManager.readFileLock( this.file );
@@ -189,7 +189,7 @@ public class DefaultFileLockManagerTest
         }
 
         public void thread7()
-            throws FileLockException, IOException
+            throws FileLockException, FileLockTimeoutException, IOException
         {
             logger.info( "thread7" );
             Lock lock = fileLockManager.writeFileLock( this.file );
@@ -207,7 +207,7 @@ public class DefaultFileLockManagerTest
         }
 
         public void thread8()
-            throws FileLockException, IOException
+            throws FileLockException, FileLockTimeoutException, IOException
         {
             logger.info( "thread8" );
             Lock lock = fileLockManager.readFileLock( this.file );
@@ -225,7 +225,7 @@ public class DefaultFileLockManagerTest
         }
 
         public void thread9()
-            throws FileLockException, IOException
+            throws FileLockException, FileLockTimeoutException, IOException
         {
             logger.info( "thread7" );
             Lock lock = fileLockManager.writeFileLock( this.file );
@@ -243,7 +243,7 @@ public class DefaultFileLockManagerTest
         }
 
         public void thread10()
-            throws FileLockException, IOException
+            throws FileLockException, FileLockTimeoutException, IOException
         {
             logger.info( "thread10" );
             Lock lock = fileLockManager.readFileLock( this.file );