You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@archiva.apache.org by ma...@apache.org on 2016/10/27 21:12:51 UTC
[1/2] archiva git commit: Reverting locking modifications
Repository: archiva
Updated Branches:
refs/heads/master d380bc677 -> 367997a30
Reverting locking modifications
Project: http://git-wip-us.apache.org/repos/asf/archiva/repo
Commit: http://git-wip-us.apache.org/repos/asf/archiva/commit/5780110b
Tree: http://git-wip-us.apache.org/repos/asf/archiva/tree/5780110b
Diff: http://git-wip-us.apache.org/repos/asf/archiva/diff/5780110b
Branch: refs/heads/master
Commit: 5780110b79b9a794c420873ffb0dc447218fbf7b
Parents: d380bc6
Author: Martin Stockhammer <ma...@apache.org>
Authored: Thu Oct 27 17:36:27 2016 +0200
Committer: Martin Stockhammer <ma...@apache.org>
Committed: Thu Oct 27 17:44:10 2016 +0200
----------------------------------------------------------------------
.../common/filelock/DefaultFileLockManager.java | 39 ++++----------------
1 file changed, 7 insertions(+), 32 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/archiva/blob/5780110b/archiva-modules/archiva-base/archiva-filelock/src/main/java/org/apache/archiva/common/filelock/DefaultFileLockManager.java
----------------------------------------------------------------------
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 258366a..ee4fb35 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
@@ -31,7 +31,6 @@ import java.io.RandomAccessFile;
import java.nio.channels.ClosedChannelException;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
/**
* @author Olivier Lamy
@@ -52,6 +51,7 @@ public class DefaultFileLockManager
private int timeout = 0;
+
@Override
public Lock readFileLock( File file )
throws FileLockException, FileLockTimeoutException
@@ -162,18 +162,20 @@ public class DefaultFileLockManager
}
}
+ Lock current = lockFiles.get( file );
+
try
{
- Lock current = lockFiles.get( file );
+
if ( current != null )
{
log.debug( "write lock file exist continue wait" );
continue;
}
- lock = new Lock(file, true);
- createNewFileQuietly(file);
- lock.openLock(true, timeout > 0);
+ lock = new Lock( file, true );
+ createNewFileQuietly( file );
+ lock.openLock( true, timeout > 0 );
acquired = true;
}
catch ( FileNotFoundException e )
@@ -189,47 +191,20 @@ public class DefaultFileLockManager
}
catch ( IOException e )
{
- if (lock!=null && lock.isValid()) {
- try {
- lock.close();
- } catch (IOException ex) {
- // Ignore
- }
- }
throw new FileLockException( e.getMessage(), e );
}
catch ( IllegalStateException e )
{
- // Ignore this
log.debug( "openLock {}:{}", e.getClass(), e.getMessage() );
- } catch (Throwable t) {
- if (lock!=null && lock.isValid()) {
- try {
- lock.close();
- } catch (IOException ex) {
- // Ignore
- }
- }
- throw t;
}
-
}
Lock current = lockFiles.putIfAbsent( file, lock );
- if (lock!=null && lock != current) {
- try {
- lock.close();
- } catch (IOException e) {
- // ignore
- }
-
- }
if ( current != null )
{
lock = current;
}
-
return lock;
[2/2] archiva git commit: Add additional checks for file lock tests
Posted by ma...@apache.org.
Add additional checks for file lock tests
Project: http://git-wip-us.apache.org/repos/asf/archiva/repo
Commit: http://git-wip-us.apache.org/repos/asf/archiva/commit/367997a3
Tree: http://git-wip-us.apache.org/repos/asf/archiva/tree/367997a3
Diff: http://git-wip-us.apache.org/repos/asf/archiva/diff/367997a3
Branch: refs/heads/master
Commit: 367997a308c7405f340c244bee2f8fa898f77c95
Parents: 5780110
Author: Martin Stockhammer <ma...@apache.org>
Authored: Thu Oct 27 17:43:31 2016 +0200
Committer: Martin Stockhammer <ma...@apache.org>
Committed: Thu Oct 27 23:12:12 2016 +0200
----------------------------------------------------------------------
.../filelock/DefaultFileLockManagerTest.java | 349 ++++++++++---------
1 file changed, 186 insertions(+), 163 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/archiva/blob/367997a3/archiva-modules/archiva-base/archiva-filelock/src/test/java/org/apache/archiva/common/filelock/DefaultFileLockManagerTest.java
----------------------------------------------------------------------
diff --git a/archiva-modules/archiva-base/archiva-filelock/src/test/java/org/apache/archiva/common/filelock/DefaultFileLockManagerTest.java b/archiva-modules/archiva-base/archiva-filelock/src/test/java/org/apache/archiva/common/filelock/DefaultFileLockManagerTest.java
index 19f836d..7fa30b5 100644
--- a/archiva-modules/archiva-base/archiva-filelock/src/test/java/org/apache/archiva/common/filelock/DefaultFileLockManagerTest.java
+++ b/archiva-modules/archiva-base/archiva-filelock/src/test/java/org/apache/archiva/common/filelock/DefaultFileLockManagerTest.java
@@ -33,6 +33,7 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import javax.inject.Inject;
import javax.inject.Named;
import java.io.File;
+import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.file.FileAlreadyExistsException;
@@ -48,53 +49,49 @@ import java.util.concurrent.atomic.AtomicInteger;
* @author Olivier Lamy
*/
@RunWith(SpringJUnit4ClassRunner.class)
-@ContextConfiguration(locations = { "classpath*:/META-INF/spring-context.xml" })
-public class DefaultFileLockManagerTest
-{
+@ContextConfiguration(locations = {"classpath*:/META-INF/spring-context.xml"})
+public class DefaultFileLockManagerTest {
- final Logger logger = LoggerFactory.getLogger( getClass() );
+ final Logger logger = LoggerFactory.getLogger(getClass());
@Inject
@Named(value = "fileLockManager#default")
FileLockManager fileLockManager;
class ConcurrentFileWrite
- extends MultithreadedTestCase
- {
+ extends MultithreadedTestCase {
- AtomicInteger success = new AtomicInteger( 0 );
+ AtomicInteger success = new AtomicInteger(0);
FileLockManager fileLockManager;
- File file = new File( System.getProperty( "buildDirectory" ), "foo.txt" );
+ File file = new File(System.getProperty("buildDirectory"), "foo.txt");
- File largeJar = new File( System.getProperty( "basedir" ), "src/test/cassandra-all-2.0.3.jar" );
+ File largeJar = new File(System.getProperty("basedir"), "src/test/cassandra-all-2.0.3.jar");
- ConcurrentFileWrite( FileLockManager fileLockManager )
- throws IOException
- {
+ ConcurrentFileWrite(FileLockManager fileLockManager)
+ throws IOException {
this.fileLockManager = fileLockManager;
//file.createNewFile();
}
@Override
- public void initialize()
- {
+ public void initialize() {
}
// Files.copy is not atomic so have to try several times in
// a multithreaded test
private void copyFile(Path source, Path destination) {
- int attempts=10;
+ int attempts = 10;
boolean finished = false;
- while(!finished && attempts-->0) {
+ while (!finished && attempts-- > 0) {
try {
Files.copy(source, destination, StandardCopyOption.REPLACE_EXISTING,
StandardCopyOption.COPY_ATTRIBUTES);
- finished=true;
+ finished = true;
} catch (IOException ex) {
//
}
@@ -102,180 +99,208 @@ public class DefaultFileLockManagerTest
}
public void thread1()
- throws FileLockException, FileLockTimeoutException, IOException
- {
- logger.info( "thread1" );
- Lock lock = fileLockManager.writeFileLock( this.file );
- try
- {
- lock.getFile().delete();
- copyFile( largeJar.toPath(), lock.getFile().toPath());
- }
- finally
- {
- fileLockManager.release( lock );
+ throws FileLockException, FileLockTimeoutException, IOException {
+ try {
+ logger.info("thread1");
+ Lock lock = fileLockManager.writeFileLock(this.file);
+ try {
+ lock.getFile().delete();
+ copyFile(largeJar.toPath(), lock.getFile().toPath());
+ } finally {
+ fileLockManager.release(lock);
+ }
+ logger.info("thread1 ok");
+ success.incrementAndGet();
+ } catch (Throwable e) {
+ logger.error("Error occured " + e.getMessage());
+ e.printStackTrace();
+ throw e;
}
- logger.info( "thread1 ok" );
- success.incrementAndGet();
}
public void thread2()
- throws FileLockException, FileLockTimeoutException, IOException
- {
- logger.info( "thread2" );
- Lock lock = fileLockManager.writeFileLock( this.file );
- try
- {
- lock.getFile().delete();
- copyFile( largeJar.toPath(), lock.getFile().toPath());
- }
- finally
- {
- fileLockManager.release( lock );
+ throws FileLockException, FileLockTimeoutException, IOException {
+ try {
+ logger.info("thread2");
+ Lock lock = fileLockManager.writeFileLock(this.file);
+ try {
+ lock.getFile().delete();
+ copyFile(largeJar.toPath(), lock.getFile().toPath());
+ } finally {
+ fileLockManager.release(lock);
+ }
+ logger.info("thread2 ok");
+ success.incrementAndGet();
+ } catch (Throwable e) {
+ logger.error("Error occured " + e.getMessage());
+ e.printStackTrace();
+ throw e;
}
- logger.info( "thread2 ok" );
- success.incrementAndGet();
+
}
public void thread3()
- throws FileLockException, FileLockTimeoutException, IOException
- {
- logger.info( "thread3" );
- Lock lock = fileLockManager.readFileLock( this.file );
- try
- {
- Files.copy( Paths.get( lock.getFile().getPath() ),
- new FileOutputStream( File.createTempFile( "foo", ".jar" ) ) );
- }
- finally
- {
- fileLockManager.release( lock );
+ throws FileLockException, FileLockTimeoutException, IOException {
+ try {
+ logger.info("thread3");
+ Lock lock = fileLockManager.readFileLock(this.file);
+ try {
+ Files.copy(Paths.get(lock.getFile().getPath()),
+ new FileOutputStream(File.createTempFile("foo", ".jar")));
+ } finally {
+ fileLockManager.release(lock);
+ }
+ logger.info("thread3 ok");
+ success.incrementAndGet();
+ } catch (Throwable e) {
+ logger.error("Error occured " + e.getMessage());
+ e.printStackTrace();
+ throw e;
}
- logger.info( "thread3 ok" );
- success.incrementAndGet();
+
}
public void thread4()
- throws FileLockException, FileLockTimeoutException, IOException
- {
- logger.info( "thread4" );
- Lock lock = fileLockManager.writeFileLock( this.file );
- try
- {
- lock.getFile().delete();
- copyFile( largeJar.toPath(), lock.getFile().toPath());
- }
- finally
- {
- fileLockManager.release( lock );
+ throws FileLockException, FileLockTimeoutException, IOException {
+ try {
+ logger.info("thread4");
+ Lock lock = fileLockManager.writeFileLock(this.file);
+ try {
+ lock.getFile().delete();
+ copyFile(largeJar.toPath(), lock.getFile().toPath());
+ } finally {
+ fileLockManager.release(lock);
+ }
+ logger.info("thread4 ok");
+ success.incrementAndGet();
+ } catch (Throwable e) {
+ logger.error("Error occured " + e.getMessage());
+ e.printStackTrace();
+ throw e;
}
- logger.info( "thread4 ok" );
- success.incrementAndGet();
+
}
public void thread5()
- throws FileLockException, FileLockTimeoutException, IOException
- {
- logger.info( "thread5" );
- Lock lock = fileLockManager.writeFileLock( this.file );
- try
- {
- lock.getFile().delete();
- copyFile( largeJar.toPath(), lock.getFile().toPath());
- }
- finally
- {
- fileLockManager.release( lock );
+ throws FileLockException, FileLockTimeoutException, IOException {
+ try {
+ logger.info("thread5");
+ Lock lock = fileLockManager.writeFileLock(this.file);
+ try {
+ lock.getFile().delete();
+ copyFile(largeJar.toPath(), lock.getFile().toPath());
+ } finally {
+ fileLockManager.release(lock);
+ }
+ logger.info("thread5 ok");
+ success.incrementAndGet();
+ } catch (Throwable e) {
+ logger.error("Error occured " + e.getMessage());
+ e.printStackTrace();
+ throw e;
}
- logger.info( "thread5 ok" );
- success.incrementAndGet();
+
}
public void thread6()
- throws FileLockException, FileLockTimeoutException, IOException
- {
- logger.info( "thread6" );
- Lock lock = fileLockManager.readFileLock( this.file );
- try
- {
- Files.copy( lock.getFile().toPath(), new FileOutputStream( File.createTempFile( "foo", ".jar" ) ) );
- }
- finally
- {
- fileLockManager.release( lock );
+ throws FileLockException, FileLockTimeoutException, IOException {
+ try {
+ logger.info("thread6");
+ Lock lock = fileLockManager.readFileLock(this.file);
+ try {
+ Files.copy(lock.getFile().toPath(), new FileOutputStream(File.createTempFile("foo", ".jar")));
+ } finally {
+ fileLockManager.release(lock);
+ }
+ logger.info("thread6 ok");
+ success.incrementAndGet();
+ } catch (Throwable e) {
+ logger.error("Error occured " + e.getMessage());
+ e.printStackTrace();
+ throw e;
}
- logger.info( "thread6 ok" );
- success.incrementAndGet();
+
}
public void thread7()
- throws FileLockException, FileLockTimeoutException, IOException
- {
- logger.info( "thread7" );
- Lock lock = fileLockManager.writeFileLock( this.file );
- try
- {
- lock.getFile().delete();
- copyFile( largeJar.toPath(), lock.getFile().toPath());
- }
- finally
- {
- fileLockManager.release( lock );
+ throws FileLockException, FileLockTimeoutException, IOException {
+ try {
+ logger.info("thread7");
+ Lock lock = fileLockManager.writeFileLock(this.file);
+ try {
+ lock.getFile().delete();
+ copyFile(largeJar.toPath(), lock.getFile().toPath());
+ } finally {
+ fileLockManager.release(lock);
+ }
+ logger.info("thread7 ok");
+ success.incrementAndGet();
+ } catch (Throwable e) {
+ logger.error("Error occured " + e.getMessage());
+ e.printStackTrace();
+ throw e;
}
- logger.info( "thread7 ok" );
- success.incrementAndGet();
+
}
public void thread8()
- throws FileLockException, FileLockTimeoutException, IOException
- {
- logger.info( "thread8" );
- Lock lock = fileLockManager.readFileLock( this.file );
- try
- {
- Files.copy( lock.getFile().toPath(), new FileOutputStream( File.createTempFile( "foo", ".jar" ) ) );
- }
- finally
- {
- fileLockManager.release( lock );
+ throws FileLockException, FileLockTimeoutException, IOException {
+ try {
+ logger.info("thread8");
+ Lock lock = fileLockManager.readFileLock(this.file);
+ try {
+ Files.copy(lock.getFile().toPath(), new FileOutputStream(File.createTempFile("foo", ".jar")));
+ } finally {
+ fileLockManager.release(lock);
+ }
+ logger.info("thread8 ok");
+ success.incrementAndGet();
+ } catch (Throwable e) {
+ logger.error("Error occured " + e.getMessage());
+ e.printStackTrace();
+ throw e;
}
- logger.info( "thread8 ok" );
- success.incrementAndGet();
+
}
public void thread9()
- throws FileLockException, FileLockTimeoutException, IOException
- {
- logger.info( "thread9" );
- Lock lock = fileLockManager.writeFileLock( this.file );
- try
- {
- lock.getFile().delete();
- copyFile( largeJar.toPath(), lock.getFile().toPath());
- }
- finally
- {
- fileLockManager.release( lock );
+ throws FileLockException, FileLockTimeoutException, IOException {
+ try {
+ logger.info("thread9");
+ Lock lock = fileLockManager.writeFileLock(this.file);
+ try {
+ lock.getFile().delete();
+ copyFile(largeJar.toPath(), lock.getFile().toPath());
+ } finally {
+ fileLockManager.release(lock);
+ }
+ logger.info("thread9 ok");
+ success.incrementAndGet();
+ } catch (Throwable e) {
+ logger.error("Error occured " + e.getMessage());
+ e.printStackTrace();
+ throw e;
}
- logger.info( "thread9 ok" );
- success.incrementAndGet();
}
public void thread10()
- throws FileLockException, FileLockTimeoutException, IOException
- {
- logger.info( "thread10" );
- Lock lock = fileLockManager.readFileLock( this.file );
- try
- {
- Files.copy( lock.getFile().toPath(), new FileOutputStream( File.createTempFile( "foo", ".jar" ) ) );
- }
- finally
- {
- fileLockManager.release( lock );
+ throws FileLockException, FileLockTimeoutException, IOException {
+ try {
+ logger.info("thread10");
+ Lock lock = fileLockManager.readFileLock(this.file);
+ try {
+ Files.copy(lock.getFile().toPath(), new FileOutputStream(File.createTempFile("foo", ".jar")));
+ } finally {
+ fileLockManager.release(lock);
+ }
+ logger.info("thread10 ok");
+ success.incrementAndGet();
+ } catch (Throwable e) {
+ logger.error("Error occured " + e.getMessage());
+ e.printStackTrace();
+ throw e;
}
- logger.info( "thread10 ok" );
- success.incrementAndGet();
+
}
@@ -283,21 +308,19 @@ public class DefaultFileLockManagerTest
@Before
- public void initialize()
- {
- fileLockManager.setSkipLocking( false );
+ public void initialize() {
+ fileLockManager.setSkipLocking(false);
fileLockManager.clearLockFiles();
}
@Test
public void testWrite()
- throws Throwable
- {
- ConcurrentFileWrite concurrentFileWrite = new ConcurrentFileWrite( fileLockManager );
+ throws Throwable {
+ ConcurrentFileWrite concurrentFileWrite = new ConcurrentFileWrite(fileLockManager);
//concurrentFileWrite.setTrace( true );
- TestFramework.runManyTimes( concurrentFileWrite, 10);
- logger.info( "success: {}", concurrentFileWrite.success );
- Assert.assertEquals( 100, concurrentFileWrite.success.intValue() );
+ TestFramework.runManyTimes(concurrentFileWrite, 10, TestFramework.DEFAULT_CLOCKPERIOD, 20);
+ logger.info("success: {}", concurrentFileWrite.success);
+ Assert.assertEquals(100, concurrentFileWrite.success.intValue());
}