mirror of https://github.com/apache/maven.git
[MNG-7756] The degree of concurrency does not support "2." as a factor
Also fix the thrown exception to report valid syntaxes without assuming the user intent (for example "0.5c" would say it's not an int...)
This commit is contained in:
parent
8421a36592
commit
26056b9b20
|
@ -48,7 +48,6 @@ import org.apache.commons.cli.CommandLine;
|
||||||
import org.apache.commons.cli.Option;
|
import org.apache.commons.cli.Option;
|
||||||
import org.apache.commons.cli.ParseException;
|
import org.apache.commons.cli.ParseException;
|
||||||
import org.apache.commons.cli.UnrecognizedOptionException;
|
import org.apache.commons.cli.UnrecognizedOptionException;
|
||||||
import org.apache.commons.lang3.math.NumberUtils;
|
|
||||||
import org.apache.maven.BuildAbort;
|
import org.apache.maven.BuildAbort;
|
||||||
import org.apache.maven.InternalErrorException;
|
import org.apache.maven.InternalErrorException;
|
||||||
import org.apache.maven.Maven;
|
import org.apache.maven.Maven;
|
||||||
|
@ -1422,43 +1421,30 @@ public class MavenCli {
|
||||||
}
|
}
|
||||||
|
|
||||||
int calculateDegreeOfConcurrency(String threadConfiguration) {
|
int calculateDegreeOfConcurrency(String threadConfiguration) {
|
||||||
if (threadConfiguration.endsWith("C")) {
|
try {
|
||||||
threadConfiguration = threadConfiguration.substring(0, threadConfiguration.length() - 1);
|
if (threadConfiguration.endsWith("C")) {
|
||||||
|
String str = threadConfiguration.substring(0, threadConfiguration.length() - 1);
|
||||||
|
float coreMultiplier = Float.parseFloat(str);
|
||||||
|
|
||||||
if (!NumberUtils.isParsable(threadConfiguration)) {
|
if (coreMultiplier <= 0.0f) {
|
||||||
throw new IllegalArgumentException("Invalid threads core multiplier value: '" + threadConfiguration
|
throw new IllegalArgumentException("Invalid threads core multiplier value: '" + threadConfiguration
|
||||||
+ "C'. Supported are int and float values ending with C.");
|
+ "'. Value must be positive.");
|
||||||
}
|
}
|
||||||
|
|
||||||
float coreMultiplier = Float.parseFloat(threadConfiguration);
|
int procs = Runtime.getRuntime().availableProcessors();
|
||||||
|
int threads = (int) (coreMultiplier * procs);
|
||||||
if (coreMultiplier <= 0.0f) {
|
return threads == 0 ? 1 : threads;
|
||||||
throw new IllegalArgumentException("Invalid threads core multiplier value: '" + threadConfiguration
|
} else {
|
||||||
+ "C'. Value must be positive.");
|
|
||||||
}
|
|
||||||
|
|
||||||
int procs = Runtime.getRuntime().availableProcessors();
|
|
||||||
int threads = (int) (coreMultiplier * procs);
|
|
||||||
return threads == 0 ? 1 : threads;
|
|
||||||
} else {
|
|
||||||
if (!NumberUtils.isParsable(threadConfiguration)) {
|
|
||||||
throw new IllegalArgumentException(
|
|
||||||
"Invalid threads value: '" + threadConfiguration + "'. Supported are int values.");
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
int threads = Integer.parseInt(threadConfiguration);
|
int threads = Integer.parseInt(threadConfiguration);
|
||||||
|
|
||||||
if (threads <= 0) {
|
if (threads <= 0) {
|
||||||
throw new IllegalArgumentException(
|
throw new IllegalArgumentException(
|
||||||
"Invalid threads value: '" + threadConfiguration + "'. Value must be positive.");
|
"Invalid threads value: '" + threadConfiguration + "'. Value must be positive.");
|
||||||
}
|
}
|
||||||
|
|
||||||
return threads;
|
return threads;
|
||||||
} catch (NumberFormatException e) {
|
|
||||||
throw new IllegalArgumentException(
|
|
||||||
"Invalid threads value: '" + threadConfiguration + "'. Supported are integer values.");
|
|
||||||
}
|
}
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
throw new IllegalArgumentException("Invalid threads value: '" + threadConfiguration
|
||||||
|
+ "'. Supported are int and float values ending with C.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -158,7 +158,6 @@ public class MavenCliTest {
|
||||||
int cpus = Runtime.getRuntime().availableProcessors();
|
int cpus = Runtime.getRuntime().availableProcessors();
|
||||||
assertEquals((int) (cpus * 2.2), cli.calculateDegreeOfConcurrency("2.2C"));
|
assertEquals((int) (cpus * 2.2), cli.calculateDegreeOfConcurrency("2.2C"));
|
||||||
assertEquals(1, cli.calculateDegreeOfConcurrency("0.0001C"));
|
assertEquals(1, cli.calculateDegreeOfConcurrency("0.0001C"));
|
||||||
assertThrows(IllegalArgumentException.class, () -> cli.calculateDegreeOfConcurrency("2.C"));
|
|
||||||
assertThrows(IllegalArgumentException.class, () -> cli.calculateDegreeOfConcurrency("-2.2C"));
|
assertThrows(IllegalArgumentException.class, () -> cli.calculateDegreeOfConcurrency("-2.2C"));
|
||||||
assertThrows(IllegalArgumentException.class, () -> cli.calculateDegreeOfConcurrency("0C"));
|
assertThrows(IllegalArgumentException.class, () -> cli.calculateDegreeOfConcurrency("0C"));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue