summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/main/java/org/openslx/filetransfer/FileRange.java8
-rw-r--r--src/main/java/org/openslx/filetransfer/util/HashChecker.java16
-rw-r--r--src/main/java/org/openslx/filetransfer/util/IncomingTransferBase.java1
-rw-r--r--src/main/java/org/openslx/filetransfer/util/LocalCopyManager.java14
-rw-r--r--src/main/java/org/openslx/util/Util.java4
-rw-r--r--src/main/java/org/openslx/util/vm/QemuMetaData.java5
-rw-r--r--src/main/java/org/openslx/util/vm/VmwareConfig.java2
7 files changed, 39 insertions, 11 deletions
diff --git a/src/main/java/org/openslx/filetransfer/FileRange.java b/src/main/java/org/openslx/filetransfer/FileRange.java
index 5de9d04..e8a7d12 100644
--- a/src/main/java/org/openslx/filetransfer/FileRange.java
+++ b/src/main/java/org/openslx/filetransfer/FileRange.java
@@ -50,10 +50,18 @@ public class FileRange
@Override
public boolean equals( Object other )
{
+ if ( other == this )
+ return true;
if ( other == null || ! ( other instanceof FileRange ) )
return false;
FileRange o = (FileRange)other;
return o.startOffset == this.startOffset && o.endOffset == this.endOffset;
}
+ @Override
+ public int hashCode()
+ {
+ return (int)startOffset ^ Integer.rotateLeft( (int)endOffset, 16 ) ^ (int)(startOffset >> 32);
+ }
+
}
diff --git a/src/main/java/org/openslx/filetransfer/util/HashChecker.java b/src/main/java/org/openslx/filetransfer/util/HashChecker.java
index 2c404db..bddf829 100644
--- a/src/main/java/org/openslx/filetransfer/util/HashChecker.java
+++ b/src/main/java/org/openslx/filetransfer/util/HashChecker.java
@@ -39,9 +39,6 @@ public class HashChecker
this.algorithm = algorithm;
this.queueCapacity = queueLen;
this.queue = new LinkedBlockingQueue<>( queueLen );
- CheckThread thread = new CheckThread( false );
- thread.start();
- threads.add( thread );
}
private void threadFailed( CheckThread thread )
@@ -109,6 +106,19 @@ public class HashChecker
execCallback( task, HashResult.FAILURE );
return true;
}
+ if ( queue.isEmpty() ) {
+ CheckThread thread;
+ try {
+ thread = new CheckThread( false );
+ thread.start();
+ threads.add( thread );
+ } catch ( NoSuchAlgorithmException e1 ) {
+ LOGGER.warn( "Cannot spawn hash thread", e1 );
+ invalid = true;
+ execCallback( task, HashResult.FAILURE );
+ return true;
+ }
+ }
if ( queue.remainingCapacity() <= 1 && threads.size() < Runtime.getRuntime().availableProcessors() ) {
try {
CheckThread thread = new CheckThread( true );
diff --git a/src/main/java/org/openslx/filetransfer/util/IncomingTransferBase.java b/src/main/java/org/openslx/filetransfer/util/IncomingTransferBase.java
index 0e901e5..a1d3548 100644
--- a/src/main/java/org/openslx/filetransfer/util/IncomingTransferBase.java
+++ b/src/main/java/org/openslx/filetransfer/util/IncomingTransferBase.java
@@ -117,7 +117,6 @@ public abstract class IncomingTransferBase extends AbstractTransfer implements H
chunks = new ChunkList( fileSize, blockHashes );
if ( this.localChunkSource != null ) {
this.localCopyManager = new LocalCopyManager( this, this.chunks );
- this.localCopyManager.start();
checkLocalCopyCandidates( blockHashes, 0 );
} else {
this.localCopyManager = null;
diff --git a/src/main/java/org/openslx/filetransfer/util/LocalCopyManager.java b/src/main/java/org/openslx/filetransfer/util/LocalCopyManager.java
index 8943524..54dd2d0 100644
--- a/src/main/java/org/openslx/filetransfer/util/LocalCopyManager.java
+++ b/src/main/java/org/openslx/filetransfer/util/LocalCopyManager.java
@@ -47,6 +47,16 @@ public class LocalCopyManager extends Thread
{
if ( this.paused )
return;
+ if ( this.getState() == State.NEW ) {
+ start();
+ }
+ triggerInternal();
+ }
+
+ private synchronized void triggerInternal()
+ {
+ if ( this.paused )
+ return;
if ( !isAlive() ) {
LOGGER.warn( "Cannot be triggered when Thread is not running." );
if ( currentChunk != null ) {
@@ -77,7 +87,7 @@ public class LocalCopyManager extends Thread
} else if ( !transfer.isActive() ) {
break;
} else {
- trigger();
+ triggerInternal();
}
}
}
@@ -149,7 +159,7 @@ public class LocalCopyManager extends Thread
currentChunk = null;
}
copyCount.incrementAndGet();
- trigger();
+ triggerInternal();
return;
}
// Reaching here means failure
diff --git a/src/main/java/org/openslx/util/Util.java b/src/main/java/org/openslx/util/Util.java
index d8048cd..441bc88 100644
--- a/src/main/java/org/openslx/util/Util.java
+++ b/src/main/java/org/openslx/util/Util.java
@@ -25,7 +25,7 @@ public class Util
if ( something == null ) {
if ( message != null )
log.fatal( "[NOTNULL] " + message );
- log.warn( Thread.currentThread().getStackTrace().toString() );
+ log.warn( "Fatal null pointer exception", new NullPointerException() );
System.exit( 2 );
}
}
@@ -61,7 +61,7 @@ public class Util
if ( isEmptyString( something ) ) {
if ( message != null )
log.fatal( "[NOTNULL] " + message );
- log.warn( Thread.currentThread().getStackTrace().toString() );
+ log.warn( "Fatal null pointer or empty exception", new NullPointerException() );
System.exit( 2 );
}
}
diff --git a/src/main/java/org/openslx/util/vm/QemuMetaData.java b/src/main/java/org/openslx/util/vm/QemuMetaData.java
index 742fa40..ad02a96 100644
--- a/src/main/java/org/openslx/util/vm/QemuMetaData.java
+++ b/src/main/java/org/openslx/util/vm/QemuMetaData.java
@@ -14,9 +14,9 @@ import org.openslx.thrifthelper.TConst;
public class QemuMetaData extends VmMetaData<VBoxSoundCardMeta, VBoxDDAccelMeta, VBoxHWVersionMeta, VBoxEthernetDevTypeMeta>
{
- private Map<String, String> arguments = new HashMap<String, String>();
+ private final Map<String, String> arguments = new HashMap<String, String>();
// the above map's elements will take the place of <args> in the config string
- private static String config = "qemu-system-i386 <args> <image> -enable-kvm \n\r qemu-system-x86_64 <args> <image> -enable-kvm";
+ private String config;
private static final Logger LOGGER = Logger.getLogger( QemuMetaData.class );
private static final Virtualizer virtualizer = new Virtualizer( TConst.VIRT_QEMU, "QEMU-KVM" );
@@ -24,6 +24,7 @@ public class QemuMetaData extends VmMetaData<VBoxSoundCardMeta, VBoxDDAccelMeta,
public QemuMetaData( List<OperatingSystem> osList, File file )
{
super( osList );
+ config = "qemu-system-i386 <args> <image> -enable-kvm \n\r qemu-system-x86_64 <args> <image> -enable-kvm";
displayName = file.getName().substring( 0, file.getName().indexOf( "." ) );
setOs( "anyOs" );
hdds.add( new HardDisk( "anychipset", DriveBusType.IDE, file.getAbsolutePath() ) );
diff --git a/src/main/java/org/openslx/util/vm/VmwareConfig.java b/src/main/java/org/openslx/util/vm/VmwareConfig.java
index ac13e4f..20ab3ab 100644
--- a/src/main/java/org/openslx/util/vm/VmwareConfig.java
+++ b/src/main/java/org/openslx/util/vm/VmwareConfig.java
@@ -125,7 +125,7 @@ public class VmwareConfig
ret = ret.replace( "|22", "\"" );
}
if ( ret.contains( "|7C" ) ) {
- ret.replace( "|7C", "|" );
+ ret = ret.replace( "|7C", "|" );
}
return ret;
}