anon-iclr-submission/benchname-bug-localization huggingface dataset:
Repository: quarkusio/quarkus
Issue: Config option quarkus.thread-pool.core-threads is ignored

setting quarkus.thread-pool.core-threads has no effect on the core number of executor threads. The application is aways started with the default number of executor threads (1).

**Expected behavior**
Number of executor threads equal to the property quarkus.thread-pool.core-threads

**Actual behavior**
Only 1 executor thread is ever started at startup


Changed files:
core/runtime/src/main/java/io/quarkus/runtime/ThreadPoolConfig.java, core/runtime/src/main/java/io/quarkus/runtime/ExecutorRecorder.java

diff --git a/core/runtime/src/main/java/io/quarkus/runtime/ExecutorRecorder.java b/core/runtime/src/main/java/io/quarkus/runtime/ExecutorRecorder.java
index fadc8116df7..cc4805240a4 100644
--- a/core/runtime/src/main/java/io/quarkus/runtime/ExecutorRecorder.java
+++ b/core/runtime/src/main/java/io/quarkus/runtime/ExecutorRecorder.java
@@ -57,6 +57,9 @@ public void run() {
             shutdownContext.addShutdownTask(shutdownTask);
             executor = underlying;
         }
+        if (threadPoolConfig.prefill) {
+            underlying.prestartAllCoreThreads();
+        }
         current = executor;
         return executor;
     }
diff --git a/core/runtime/src/main/java/io/quarkus/runtime/ThreadPoolConfig.java b/core/runtime/src/main/java/io/quarkus/runtime/ThreadPoolConfig.java
index c4171e10e0e..748a56a0e9f 100644
--- a/core/runtime/src/main/java/io/quarkus/runtime/ThreadPoolConfig.java
+++ b/core/runtime/src/main/java/io/quarkus/runtime/ThreadPoolConfig.java
@@ -21,6 +21,13 @@ public class ThreadPoolConfig {
     @ConfigItem(defaultValue = "1")
     public int coreThreads;
 
+    /**
+     * Prefill core thread pool.
+     * The core thread pool will be initialised with the core number of threads at startup
+     */
+    @ConfigItem(defaultValue = "true")
+    public boolean prefill;
+
     /**
      * The maximum number of threads. If this is not specified then
      * it will be automatically sized to 8 * the number of available processors
Repository: quarkusio/quarkus
Issue: Wrong display name of gc.total base metric

https://github.com/quarkusio/quarkus/blob/1.3.0.Final/extensions/smallrye-metrics/runtime/src/main/java/io/quarkus/smallrye/metrics/runtime/SmallRyeMetricsRecorder.java#L232
Should be "Garbage Collection Count", not "Garbage Collection Time"

Changed files:
extensions/smallrye-metrics/runtime/src/main/java/io/quarkus/smallrye/metrics/runtime/SmallRyeMetricsRecorder.java

diff --git a/extensions/smallrye-metrics/runtime/src/main/java/io/quarkus/smallrye/metrics/runtime/SmallRyeMetricsRecorder.java b/extensions/smallrye-metrics/runtime/src/main/java/io/quarkus/smallrye/metrics/runtime/SmallRyeMetricsRecorder.java
index fded2620d16..0d1c0e535f2 100644
--- a/extensions/smallrye-metrics/runtime/src/main/java/io/quarkus/smallrye/metrics/runtime/SmallRyeMetricsRecorder.java
+++ b/extensions/smallrye-metrics/runtime/src/main/java/io/quarkus/smallrye/metrics/runtime/SmallRyeMetricsRecorder.java
@@ -229,7 +229,7 @@ private void garbageCollectionMetrics(MetricRegistry registry) {
         Metadata countMetadata = Metadata.builder()
                 .withName("gc.total")
                 .withType(MetricType.COUNTER)
-                .withDisplayName("Garbage Collection Time")
+                .withDisplayName("Garbage Collection Count")
                 .withUnit("none")
                 .withDescription(
                         "Displays the total number of collections that have occurred. This attribute lists -1 if the collection count is undefined for this collector.")
Repository: quarkusio/quarkus
Issue: Bootstrap resolver should log if it is accessing the network

When running tests or building for the first time the bootstrap resolver might need to download -deployment artifacts and their dependencies. If the network is slow this can appear that tests or the build are hanging. If we need to hit the network we should log a message and update the user on our progress in a similar way to a normal maven build,

Changed files:
independent-projects/bootstrap/core/src/main/java/io/quarkus/bootstrap/resolver/maven/MavenArtifactResolver.java

diff --git a/independent-projects/bootstrap/core/src/main/java/io/quarkus/bootstrap/resolver/maven/MavenArtifactResolver.java b/independent-projects/bootstrap/core/src/main/java/io/quarkus/bootstrap/resolver/maven/MavenArtifactResolver.java
index d880b4edf83..76e03df7caf 100644
--- a/independent-projects/bootstrap/core/src/main/java/io/quarkus/bootstrap/resolver/maven/MavenArtifactResolver.java
+++ b/independent-projects/bootstrap/core/src/main/java/io/quarkus/bootstrap/resolver/maven/MavenArtifactResolver.java
@@ -17,6 +17,7 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import org.apache.maven.cli.transfer.ConsoleMavenTransferListener;
 import org.apache.maven.repository.internal.MavenRepositorySystemUtils;
 import org.eclipse.aether.DefaultRepositoryCache;
 import org.eclipse.aether.DefaultRepositorySystemSession;
@@ -145,6 +146,9 @@ private MavenArtifactResolver(Builder builder) throws AppModelResolverException
         if (builder.offline != null) {
             newSession.setOffline(builder.offline);
         }
+        if (newSession.getTransferListener() == null) {
+            newSession.setTransferListener(new ConsoleMavenTransferListener(System.out, true));
+        }
         newSession.setSystemProperties(System.getProperties());
 
         MavenLocalRepositoryManager lrm = null;
Repository: quarkusio/quarkus
Issue: quarkus.container-image.registry is not reflected, docker.io is always used

Trying to push the image to quay.io, docker.io is always used

It seems quarkus.container-image.registry is not reflected in the push command

I will look into it and try to fix is.


Changed files:
extensions/container-image/container-image-docker/deployment/src/main/java/io/quarkus/container/image/docker/deployment/DockerProcessor.java

diff --git a/extensions/container-image/container-image-docker/deployment/src/main/java/io/quarkus/container/image/docker/deployment/DockerProcessor.java b/extensions/container-image/container-image-docker/deployment/src/main/java/io/quarkus/container/image/docker/deployment/DockerProcessor.java
index e25f53c01ee..eb186d74536 100644
--- a/extensions/container-image/container-image-docker/deployment/src/main/java/io/quarkus/container/image/docker/deployment/DockerProcessor.java
+++ b/extensions/container-image/container-image-docker/deployment/src/main/java/io/quarkus/container/image/docker/deployment/DockerProcessor.java
@@ -118,12 +118,15 @@ private void createContainerImage(ContainerImageConfig containerImageConfig, Doc
         log.infof("Pushed container image %s (%s)\\n", image, reader.getImageId());
 
         if (pushRequested || containerImageConfig.push) {
+            String registry = "docker.io";
             if (!containerImageConfig.registry.isPresent()) {
                 log.info("No container image registry was set, so 'docker.io' will be used");
+            } else {
+                registry = containerImageConfig.registry.get();
             }
             // Check if we need to login first
             if (containerImageConfig.username.isPresent() && containerImageConfig.password.isPresent()) {
-                boolean loginSuccessful = ExecUtil.exec("docker", "login", "-u", containerImageConfig.username.get(),
+                boolean loginSuccessful = ExecUtil.exec("docker", "login", registry, "-u", containerImageConfig.username.get(),
                         "-p" + containerImageConfig.password.get());
                 if (!loginSuccessful) {
                     throw dockerException(new String[] { "-u", containerImageConfig.username.get(), "-p", "********" });
Repository: quarkusio/quarkus
Issue: Class generation build items are screwy

We have a `GeneratedClassBuildItem` which accepts a class name, byte array, and a flag to indicate what "kind" of class it is.

At the same time, we have a pattern for generating classes, particularly with Gizmo: consume the `ClassOutputBuildItem` and then feed it to Gizmo and have it write the class directly to the `ClassOutput`.

On top of all this, we have two different kinds of `ClassOutput`.

The build item is not ideal because to use it with Gizmo, you have to create your own `ClassOutput` (the Gizmo one) and have it produce the generated classes (i.e. you can't just return a `GeneratedClassBuildItem` unless you stash the object somewhere).

The common Gizmo pattern of consuming the `ClassOutputBuildItem` is not ideal because nothing is produced - so the build step won't run unless you artificially produce something.

We should make the `ClassOutputBuildItem` work nicely with Gizmo and non-Gizmo usages.  Maybe Gizmo should emit classes to an array by default, or maybe `ClassOutputBuildItem` should accept a supplier for class bytes that the Gizmo class factory can produce (if we're worried about heap usage).  Maybe Gizmo's `ClassOutput` API should be replaced by a pull API like `ClassCreator.write(OutputStream)` or `ClassCreator.getBytes()` (or both).


Changed files:
core/deployment/src/main/java/io/quarkus/deployment/ClassOutput.java

diff --git a/core/deployment/src/main/java/io/quarkus/deployment/ClassOutput.java b/core/deployment/src/main/java/io/quarkus/deployment/ClassOutput.java
deleted file mode 100644
index daf3f819b06..00000000000
--- a/core/deployment/src/main/java/io/quarkus/deployment/ClassOutput.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package io.quarkus.deployment;
-
-import java.io.IOException;
-import java.io.Writer;
-
-import io.quarkus.gizmo.NullWriter;
-
-/**
- * Interface that represents a target for generated bytecode
- */
-public interface ClassOutput {
-
-    /**
-     * Writes some generate bytecode to an output target
-     *
-     * @param className The class name
-     * @param data The bytecode bytes
-     * @throws IOException If the class cannot be written
-     */
-    void writeClass(boolean applicationClass, String className, byte[] data) throws IOException;
-
-    void writeResource(String name, byte[] data) throws IOException;
-
-    default Writer writeSource(String className) {
-        return NullWriter.INSTANCE;
-    }
-
-}
Repository: quarkusio/quarkus
Issue: quarkus-grpc-protoc-plugin windows script fails with java.exe in Program Files

**Describe the bug**
protoc compilation fails with "'С:\\Program' is not recognized as an internal or external command, operable program or batch file."

**Expected behavior**
protoc compilation successfully runs

**Actual behavior**
protoc compilation fails with "'С:\\Program' is not recognized as an internal or external command, operable program or batch file."


**To Reproduce**
Steps to reproduce the behavior:
1. Have java in C:\\Program Files\\Java
2. Use quarkus gradle plugin with quarkus-grpc dependency to compile some protoc files
3. It will fail with exception from https://github.com/quarkusio/quarkus/blob/1.7/extensions/grpc/codegen/src/main/java/io/quarkus/grpc/deployment/GrpcCodeGen.java line 86 saying "Failed to generate Java classes from proto files:" which doesn't explain anything.
4. If you try to run generated command yourself you will get a real reason saying C:\\Program is not a command.
5. Further investigation will show that GrpcCodeGen.java generates a cmd sript on line 207 which contains a java command -
`C:\\Program Files\\AdoptOpenJDK\\jdk-11.0.7.10-hotspot\\bin\\java.EXE -cp "C:\\Users\\blablabla"`
6. Adding double quotes around java command fixes the issue

**Environment (please complete the following information):**
 - Quarkus version or git rev: 1.7.0.Final
 - Build tool (ie. output of `mvnw --version` or `gradlew --version`): 

Gradle 6.6

Build time:   2020-08-10 22:06:19 UTC
Revision:     d119144684a0c301aea027b79857815659e431b9

Kotlin:       1.3.72
Groovy:       2.5.12
Ant:          Apache Ant(TM) version 1.10.8 compiled on May 10 2020
JVM:          11.0.7 (AdoptOpenJDK 11.0.7+10)
OS:           Windows 10 10.0 amd64

Issue seems to be specific to quarkus 1.7.0.Final. At least changing version to 1.6.1.Final doesn't throw this exception, but it seems like it also doesn't try to compile proto files at all.

Changed files:
extensions/grpc/codegen/src/main/java/io/quarkus/grpc/deployment/GrpcCodeGen.java

diff --git a/extensions/grpc/codegen/src/main/java/io/quarkus/grpc/deployment/GrpcCodeGen.java b/extensions/grpc/codegen/src/main/java/io/quarkus/grpc/deployment/GrpcCodeGen.java
index dcdc158210b..049bcfe7a03 100644
--- a/extensions/grpc/codegen/src/main/java/io/quarkus/grpc/deployment/GrpcCodeGen.java
+++ b/extensions/grpc/codegen/src/main/java/io/quarkus/grpc/deployment/GrpcCodeGen.java
@@ -204,7 +204,7 @@ private static Path writeScript(Path buildDir, Path pluginPath, String shebang,
     }
 
     private static void writePluginExeCmd(Path pluginPath, BufferedWriter writer) throws IOException {
-        writer.write(JavaBinFinder.findBin() + " -cp \\"" +
+        writer.write("\\"" + JavaBinFinder.findBin() + "\\" -cp \\"" +
                 pluginPath.toAbsolutePath().toString() + "\\" " + quarkusProtocPluginMain);
         writer.newLine();
     }
Repository: quarkusio/quarkus
Issue: Kafka-streams dev mode broken

**Describe the bug**
Kafka-streams dev mode is not working anymore when an update of the application is detected.

**Expected behavior**
If a project source file is updated, the dev-mode recompiles the project and is able to relaunch the application to continue to work

**Actual behavior**
The PR #11540 introduced a [boolean flag](https://github.com/quarkusio/quarkus/pull/11540/files#diff-b1ea2a75cf0dc3e000fb088c2e58d4e8R55) to prevent kafka-streams to start if the application is stopping prematurely. Once this flag set kafka-streams won't be restarted in any situation.  

**To Reproduce**
This would be reproductible with the kafka-streams quickstart 


Changed files:
extensions/kafka-streams/runtime/src/main/java/io/quarkus/kafka/streams/runtime/KafkaStreamsProducer.java

diff --git a/extensions/kafka-streams/runtime/src/main/java/io/quarkus/kafka/streams/runtime/KafkaStreamsProducer.java b/extensions/kafka-streams/runtime/src/main/java/io/quarkus/kafka/streams/runtime/KafkaStreamsProducer.java
index 1037b6dc61f..b9587c916da 100644
--- a/extensions/kafka-streams/runtime/src/main/java/io/quarkus/kafka/streams/runtime/KafkaStreamsProducer.java
+++ b/extensions/kafka-streams/runtime/src/main/java/io/quarkus/kafka/streams/runtime/KafkaStreamsProducer.java
@@ -63,6 +63,7 @@ public class KafkaStreamsProducer {
     public KafkaStreamsProducer(KafkaStreamsSupport kafkaStreamsSupport, KafkaStreamsRuntimeConfig runtimeConfig,
             Instance<Topology> topology, Instance<KafkaClientSupplier> kafkaClientSupplier,
             Instance<StateListener> stateListener, Instance<StateRestoreListener> globalStateRestoreListener) {
+        shutdown = false;
         // No producer for Topology -> nothing to do
         if (topology.isUnsatisfied()) {
             LOGGER.debug("No Topology producer; Kafka Streams will not be started");
Repository: quarkusio/quarkus
Issue: Hang in build when upgrading to 1.8.0 when library class' superclass is not present on classpath

**Describe the bug**
My application builds with 1.7.3, but with 1.8.0 the quarkus:build step hangs after printing out a warning:
[WARNING] [io.quarkus.arc.processor.BeanArchives] Failed to index org.apache.cxf.phase.AbstractPhaseInterceptor: Class does not exist in ClassLoader QuarkusClassLoader:Deployment Class Loader


One of the libraries we depend on has an optional dependency on CXF. We do not use the XML parts of that library, so the AbstractPhaseInterceptor subclass the library defines is never loaded, and do not have CXF on the app classpath.


Stopping it in a debugger, the problem appears to be in the loop at https://github.com/quarkusio/quarkus/blob/master/extensions/arc/deployment/src/main/java/io/quarkus/arc/deployment/AutoAddScopeProcessor.java#L102

superName is "org.apache.cxf.phase.AbstractPhaseInterceptor", and superClass = index.getClassByName() return null. Since it is null, it skips the if block, and loops around again without changing superName, so the the same thing repeats. If getClassByName() it probably needs to break out of the loop, maybe returning false?


I can work around this by adding that library  (and the other couple of similar ones) as optional dependencies to my app as well, so they are on the build classpath.

**Expected behavior**
Build does not hang

**Actual behavior**
Build hangs


**To Reproduce**
I haven't manage to get it down to a simple reproducer yet

**Environment (please complete the following information):**
Quarkus 1.8.0.


Changed files:
extensions/arc/deployment/src/main/java/io/quarkus/arc/deployment/AutoAddScopeProcessor.java

diff --git a/extensions/arc/deployment/src/main/java/io/quarkus/arc/deployment/AutoAddScopeProcessor.java b/extensions/arc/deployment/src/main/java/io/quarkus/arc/deployment/AutoAddScopeProcessor.java
index ad84d645737..eb6eaf51c25 100644
--- a/extensions/arc/deployment/src/main/java/io/quarkus/arc/deployment/AutoAddScopeProcessor.java
+++ b/extensions/arc/deployment/src/main/java/io/quarkus/arc/deployment/AutoAddScopeProcessor.java
@@ -98,12 +98,14 @@ private boolean requiresContainerServices(ClassInfo clazz, Set<DotName> containe
         if (index != null) {
             DotName superName = clazz.superName();
             while (superName != null && !superName.equals(DotNames.OBJECT)) {
-                ClassInfo superClass = index.getClassByName(superName);
+                final ClassInfo superClass = index.getClassByName(superName);
                 if (superClass != null) {
-                    if (hasContainerAnnotation(clazz, containerAnnotationNames)) {
+                    if (hasContainerAnnotation(superClass, containerAnnotationNames)) {
                         return true;
                     }
                     superName = superClass.superName();
+                } else {
+                    superName = null;
                 }
             }
         }
Repository: quarkusio/quarkus
Issue: quarkus.debug.transformed-classes-dir does not work anymore

This regression was introduced in:
https://github.com/quarkusio/quarkus/commit/9d3fa16a74c1b9354352843aab28ce71b3c95350#diff-db1d39a812769ff88e14c8dd8e39c0c4

Changed files:
core/deployment/src/main/java/io/quarkus/deployment/steps/ClassTransformingBuildStep.java

diff --git a/core/deployment/src/main/java/io/quarkus/deployment/steps/ClassTransformingBuildStep.java b/core/deployment/src/main/java/io/quarkus/deployment/steps/ClassTransformingBuildStep.java
index b561d6ce92e..3277275a2d0 100644
--- a/core/deployment/src/main/java/io/quarkus/deployment/steps/ClassTransformingBuildStep.java
+++ b/core/deployment/src/main/java/io/quarkus/deployment/steps/ClassTransformingBuildStep.java
@@ -1,5 +1,7 @@
 package io.quarkus.deployment.steps;
 
+import java.io.File;
+import java.io.FileOutputStream;
 import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -22,6 +24,7 @@
 import org.objectweb.asm.ClassVisitor;
 import org.objectweb.asm.ClassWriter;
 
+import io.quarkus.bootstrap.BootstrapDebug;
 import io.quarkus.bootstrap.classloading.ClassPathElement;
 import io.quarkus.bootstrap.classloading.QuarkusClassLoader;
 import io.quarkus.deployment.QuarkusClassWriter;
@@ -104,7 +107,22 @@ public TransformedClassesBuildItem.TransformedClass call() throws Exception {
                                     visitor = i.apply(className, visitor);
                                 }
                                 cr.accept(visitor, 0);
-                                return new TransformedClassesBuildItem.TransformedClass(className, writer.toByteArray(),
+                                byte[] data = writer.toByteArray();
+                                if (BootstrapDebug.DEBUG_TRANSFORMED_CLASSES_DIR != null) {
+                                    File debugPath = new File(BootstrapDebug.DEBUG_TRANSFORMED_CLASSES_DIR);
+                                    if (!debugPath.exists()) {
+                                        debugPath.mkdir();
+                                    }
+                                    File classFile = new File(debugPath, className.replace(".", "/") + ".class");
+                                    classFile.getParentFile().mkdirs();
+                                    try (FileOutputStream classWriter = new FileOutputStream(classFile)) {
+                                        classWriter.write(data);
+                                    } catch (Exception e) {
+                                        log.errorf(e, "Failed to write transformed class %s", className);
+                                    }
+                                    log.infof("Wrote transformed class to %s", classFile.getAbsolutePath());
+                                }
+                                return new TransformedClassesBuildItem.TransformedClass(className, data,
                                         classFileName, eager.contains(className));
                             } finally {
                                 Thread.currentThread().setContextClassLoader(old);
Repository: quarkusio/quarkus
Issue: Range check makes the release fail

https://github.com/quarkusio/quarkus/pull/11259/files doesn't work when doing the release.

I will revert it for now in the 1.8 branch.

```
[ERROR]   AddExtensionMojoTest.testAddMultipleDependency:65 » MojoExecution Failed to in...
[ERROR]   AddExtensionMojoTest.testAddSingleDependency:51 » MojoExecution Failed to init...
[ERROR]   AddExtensionsMojoTest>AddExtensionMojoTest.testAddMultipleDependency:65 » MojoExecution
[ERROR]   AddExtensionsMojoTest>AddExtensionMojoTest.testAddSingleDependency:51 » MojoExecution
```

```
Caused by: java.lang.IllegalStateException: Failed to load the bundled platform artifacts
    at io.quarkus.platform.descriptor.resolver.json.QuarkusJsonPlatformDescriptorResolver.resolveJsonArtifactFromBom(QuarkusJsonPlatformDescriptorResolver.java:367)
    at io.quarkus.platform.descriptor.resolver.json.QuarkusJsonPlatformDescriptorResolver.resolveJsonDescriptor(QuarkusJsonPlatformDescriptorResolver.java:233)
    at io.quarkus.platform.descriptor.resolver.json.QuarkusJsonPlatformDescriptorResolver.resolve(QuarkusJsonPlatformDescriptorResolver.java:158)
    at io.quarkus.platform.descriptor.resolver.json.QuarkusJsonPlatformDescriptorResolver.resolveLatestFromBom(QuarkusJsonPlatformDescriptorResolver.java:128)
    at io.quarkus.maven.CreateUtils.resolvePlatformDescriptor(CreateUtils.java:101)
    at io.quarkus.maven.QuarkusProjectMojoBase.resolvePlatformDescriptor(QuarkusProjectMojoBase.java:112)
    ... 68 more
Caused by: io.quarkus.platform.descriptor.resolver.json.VersionNotAvailableException: Failed to resolve the latest version of io.quarkus:quarkus-bom::pom:[1.8-snapshot, 1.9)
    at io.quarkus.platform.descriptor.resolver.json.QuarkusJsonPlatformDescriptorResolver.loadFromBomCoords(QuarkusJsonPlatformDescriptorResolver.java:387)
    at io.quarkus.platform.descriptor.resolver.json.QuarkusJsonPlatformDescriptorResolver.resolveJsonArtifactFromBom(QuarkusJsonPlatformDescriptorResolver.java:364)
    ... 73 more
```

Changed files:
devtools/maven/src/main/java/io/quarkus/maven/CreateUtils.java

diff --git a/devtools/maven/src/main/java/io/quarkus/maven/CreateUtils.java b/devtools/maven/src/main/java/io/quarkus/maven/CreateUtils.java
index 20677c4ffcc..495267a6a7d 100644
--- a/devtools/maven/src/main/java/io/quarkus/maven/CreateUtils.java
+++ b/devtools/maven/src/main/java/io/quarkus/maven/CreateUtils.java
@@ -85,9 +85,8 @@ static QuarkusPlatformDescriptor resolvePlatformDescriptor(final String bomGroup
                 DefaultArtifactVersion pluginVersion = new DefaultArtifactVersion(baseVersion);
                 int majorVer = pluginVersion.getMajorVersion();
                 int minorVer = pluginVersion.getMinorVersion();
-                version = "[" + majorVer + "." + minorVer + "-snapshot, " + majorVer + "." + (minorVer + 1) + ")";
+                version = "[" + majorVer + "." + minorVer + "-alpha, " + majorVer + "." + (minorVer + 1) + ")";
             }
-
         }
 
         final QuarkusPlatformDescriptor platform;
Repository: quarkusio/quarkus
Issue: Concurrent requests for blocking reactive routes is limited by quarkus.vertx.event-loops-pool-size

**Describe the bug**

Concurrent requests for blocking reactive routes is limited by quarkus.vertx.event-loops-pool-size

**Expected behavior**

Concurrent requests for blocking reactive routes should be limited by quarkus.vertx.worker-pool-size

**Actual behavior**

When a blocking route is created with the the Route annotation.

`@Route(path = "/blocking-with-annotation", methods = HttpMethod.GET, type = Route.HandlerType.BLOCKING)`

Then the concurrent HTTP requests are limited by the number of event loops.

**To Reproduce**

See ReactiveRoutesTest.java in:

https://github.com/timoesk/quarkus-reactive-routes-issue



Changed files:
extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/VertxHttpRecorder.java

diff --git a/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/VertxHttpRecorder.java b/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/VertxHttpRecorder.java
index 3cd415b1ba1..136ac025bf7 100644
--- a/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/VertxHttpRecorder.java
+++ b/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/VertxHttpRecorder.java
@@ -734,7 +734,7 @@ public void addRoute(RuntimeValue<Router> router, Function<Router, Route> route,
 
         Handler<RoutingContext> requestHandler = handler;
         if (blocking == HandlerType.BLOCKING) {
-            vr.blockingHandler(requestHandler);
+            vr.blockingHandler(requestHandler, false);
         } else if (blocking == HandlerType.FAILURE) {
             vr.failureHandler(requestHandler);
         } else {
Repository: quarkusio/quarkus
Issue: -Dquarkus.args cannot handle more than one argument in command line

**Describe the bug**
When running applications in Maven with more than one command line argument for `-Dquarkus.args`, Quarkus is not capable of handling those arguments and passing them to the application

**Expected behavior**
In the example code linked below in reproduction steps, the expected behaviour is for the program to take 2 arguments (`--name` and `--day`) which should produce a message of `Hello {name}! Today is {day}`

**Actual behavior**
The console outputs help text for either Java or Maven


**To Reproduce**
Steps to reproduce the behavior:
1. Clone example [repo](https://github.com/rt-chang/quarkus-command-line-demo)
2. Enter the command `./mvnw quarkus:dev -Dquarkus.args="--name=Bob --day=Monday"` (or any other values for the arguments)

**Environment (please complete the following information):**
 - Output of `uname -a` or `ver`: `Microsoft Windows [Version 10.0.17763.1282]`
 - Output of `java -version`: 
```
openjdk version "11.0.7" 2020-04-14
OpenJDK Runtime Environment AdoptOpenJDK (build 11.0.7+10)
OpenJDK 64-Bit Server VM AdoptOpenJDK (build 11.0.7+10, mixed mode)
```
 - GraalVM version (if different from Java): `20.1.0`
 - Quarkus version or git rev: `Quarkus 1.5.2.Final`
 - Build tool (ie. output of `mvnw --version` or `gradlew --version`): `Apache Maven 3.6.3`

**Additional context**
Also tried the following:
- Attempted to escape the quotes as suggested by @geoand in the Zulip chat (ie. ` ./mvnw quarkus:dev -Dquarkus.args=\\"--name=Bob --day=Monday\\"`
- Attempted to use commas as delimiters between arguments


Changed files:
devtools/maven/src/main/java/io/quarkus/maven/DevMojo.java

diff --git a/devtools/maven/src/main/java/io/quarkus/maven/DevMojo.java b/devtools/maven/src/main/java/io/quarkus/maven/DevMojo.java
index 7aac5840e3f..867ab2ffe8e 100644
--- a/devtools/maven/src/main/java/io/quarkus/maven/DevMojo.java
+++ b/devtools/maven/src/main/java/io/quarkus/maven/DevMojo.java
@@ -310,7 +310,7 @@ public void execute() throws MojoFailureException, MojoExecutionException {
             }
 
             if (jvmArgs != null) {
-                args.addAll(Arrays.asList(jvmArgs.split(" ")));
+                args.addAll(Arrays.asList(CommandLineUtils.translateCommandline(jvmArgs)));
             }
 
             // the following flags reduce startup time and are acceptable only for dev purposes
Repository: quarkusio/quarkus
Issue: Quarkus LDAP Security - on loglevel DEBUG, the username & password are dumped

**Describe the bug**
The debug log dumps passwords. Maybe it is a good idea to censor them, or else at least give only a hash of that password?  An example:

2020-06-16 10:47:09,259 DEBUG [io.qua.ver.htt.run.sec.BasicAuthenticationMechanism] (vert.x-eventloop-thread-14) Found basic auth header USERNAME:PASSWORD (decoded using charset UTF-8)

**Expected behavior**
The password should not be logged

**To Reproduce**
Steps to reproduce the behavior:
1.  Create a project with security based on plain authentication
2.  Change application.propêrties to set the loglevel to debug
3.  Surf, log on, enter username and password



Changed files:
extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/security/BasicAuthenticationMechanism.java

diff --git a/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/security/BasicAuthenticationMechanism.java b/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/security/BasicAuthenticationMechanism.java
index 2ac35579f54..e641dc6bf33 100644
--- a/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/security/BasicAuthenticationMechanism.java
+++ b/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/security/BasicAuthenticationMechanism.java
@@ -139,11 +139,11 @@ public Uni<SecurityIdentity> authenticate(RoutingContext context,
                     }
 
                     plainChallenge = new String(decode, charset);
-                    log.debugf("Found basic auth header %s (decoded using charset %s)", plainChallenge, charset);
                     int colonPos;
                     if ((colonPos = plainChallenge.indexOf(COLON)) > -1) {
                         String userName = plainChallenge.substring(0, colonPos);
                         char[] password = plainChallenge.substring(colonPos + 1).toCharArray();
+                        log.debugf("Found basic auth header %s:***** (decoded using charset %s)", userName, charset);
 
                         UsernamePasswordAuthenticationRequest credential = new UsernamePasswordAuthenticationRequest(userName,
                                 new PasswordCredential(password));
Repository: quarkusio/quarkus
Issue: Qute dev-mode Classloader issue

**Describe the bug**
Getting java.lang.NoClassDefFoundError when running Qute project with a separate jar dependency in dev-mode.

Was OK in 1.5.2 but failing in 1.6.1 (1.6.0 not tested).

Reproducer attached.

**To Reproduce**
Reproducer is a parent pom with two modules. One is a jar library. The other is a Quarkus REST service:

- tar xvf qute-classloader-issue.tar
- cd qute-classloader-issue
- mvn clean install
- cd getting_started
- mvn quarkus:dev
- curl -w “\\n” http://localhost:8080/hello

It will fail. Change the quarkus version in getting-started/pom.xml to 1.5.2.Final and it works.

[qute-classloader-issue.tar.zip](https://github.com/quarkusio/quarkus/files/4985086/qute-classloader-issue.tar.zip)

Changed files:
extensions/qute/deployment/src/main/java/io/quarkus/qute/deployment/QuteProcessor.java

diff --git a/extensions/qute/deployment/src/main/java/io/quarkus/qute/deployment/QuteProcessor.java b/extensions/qute/deployment/src/main/java/io/quarkus/qute/deployment/QuteProcessor.java
index 5efef354c22..24fc53d6f55 100644
--- a/extensions/qute/deployment/src/main/java/io/quarkus/qute/deployment/QuteProcessor.java
+++ b/extensions/qute/deployment/src/main/java/io/quarkus/qute/deployment/QuteProcessor.java
@@ -56,6 +56,7 @@
 import io.quarkus.arc.processor.BuildExtension;
 import io.quarkus.arc.processor.DotNames;
 import io.quarkus.arc.processor.InjectionPointInfo;
+import io.quarkus.bootstrap.classloading.QuarkusClassLoader;
 import io.quarkus.deployment.ApplicationArchive;
 import io.quarkus.deployment.Feature;
 import io.quarkus.deployment.GeneratedClassGizmoAdaptor;
@@ -700,15 +701,13 @@ public boolean test(String name) {
                 if (idx == -1) {
                     idx = name.lastIndexOf(ValueResolverGenerator.SUFFIX);
                 }
-                String className = name.substring(0, idx).replace("/", ".");
+                String className = name.substring(0, idx);
                 if (className.contains(ValueResolverGenerator.NESTED_SEPARATOR)) {
                     className = className.replace(ValueResolverGenerator.NESTED_SEPARATOR, "$");
                 }
-                if (applicationArchivesBuildItem.getRootArchive().getIndex()
-                        .getClassByName(DotName.createSimple(className)) != null) {
-                    return true;
-                }
-                return false;
+                //if the class is (directly) in the TCCL (and not its parent) then it is an application class
+                QuarkusClassLoader cl = (QuarkusClassLoader) Thread.currentThread().getContextClassLoader();
+                return !cl.getElementsWithResource(className + ".class", true).isEmpty();
             }
         });
Repository: quarkusio/quarkus
Issue: JsonNode missing in Index

**Describe the bug**
I get a log output about missing `com.fasterxml.jackson.databind.JsonNode` in the jandex index.
That class comes from jackson.

**Expected behavior**
No warn log output about missing classes in the index.

**Actual behavior**
I get the following output:
```
03.03.2020 09:02:22 WARN  [io.quarkus.deployment.steps.ReflectiveHierarchyStep] Unable to properly register the hierarchy of the following classes for reflection as they are not in the Jandex index:
        - com.fasterxml.jackson.databind.JsonNode
Consider adding them to the index either by creating a Jandex index for your dependency via the Maven plugin, an empty META-INF/beans.xml or quarkus.index-dependency properties.");.
```


**To Reproduce**
Have JsonNode as part of a request body.


**Environment (please complete the following information):**
 - Output of `uname -a` or `ver`: 
MSYS_NT-10.0 SOMEHOST 2.10.0(0.325/5/3) 2018-06-13 23:34 x86_64 Msys
 - Output of `java -version`: 
java version "1.8.0_241"
Java(TM) SE Runtime Environment (build 1.8.0_241-b07)
Java HotSpot(TM) 64-Bit Server VM (build 25.241-b07, mixed mode)
 - Quarkus version or git rev: 
1.3.0.Alpha2
 - Build tool (ie. output of `mvnw --version` or `gradlew --version`): 
Apache Maven 3.5.3 (3383c37e1f9e9b3bc3df5050c29c8aff9f295297; 2018-02-24T20:49:05+01:00)
Maven home: C:\\eclipse\\tools\\apache-maven-3.5.3\\bin\\..
Java version: 1.8.0_181, vendor: Oracle Corporation
Java home: C:\\Program Files\\Java\\jdk1.8.0_181\\jre
Default locale: de_DE, platform encoding: Cp1252
OS name: "windows 10", version: "10.0", arch: "amd64", family: "windows"


Changed files:
extensions/resteasy-common/deployment/src/main/java/io/quarkus/resteasy/common/deployment/ResteasyDotNames.java

diff --git a/extensions/resteasy-common/deployment/src/main/java/io/quarkus/resteasy/common/deployment/ResteasyDotNames.java b/extensions/resteasy-common/deployment/src/main/java/io/quarkus/resteasy/common/deployment/ResteasyDotNames.java
index 5fbf042a842..03fdff754ac 100644
--- a/extensions/resteasy-common/deployment/src/main/java/io/quarkus/resteasy/common/deployment/ResteasyDotNames.java
+++ b/extensions/resteasy-common/deployment/src/main/java/io/quarkus/resteasy/common/deployment/ResteasyDotNames.java
@@ -73,11 +73,15 @@ private boolean isInIgnoredPackage(String name) {
             DotName.createSimple("javax.json.JsonObject"),
             DotName.createSimple("javax.json.JsonArray"),
 
+            // Jackson
+            DotName.createSimple("com.fasterxml.jackson.databind.JsonNode"),
+
             // JAX-RS
             DotName.createSimple("javax.ws.rs.core.Response"),
             DotName.createSimple("javax.ws.rs.container.AsyncResponse"),
             DotName.createSimple("javax.ws.rs.core.StreamingOutput"),
             DotName.createSimple("javax.ws.rs.core.Form"),
+            DotName.createSimple("javax.ws.rs.core.MultivaluedMap"),
 
             // RESTEasy
             DotName.createSimple("org.jboss.resteasy.plugins.providers.multipart.MultipartInput"),
Repository: quarkusio/quarkus
Issue: IllegalMonitorStateException in VertxBlockingOutput

**Describe the bug**

```
SEVERE [io.ver.cor.imp.ContextImpl] (vert.x-eventloop-thread-3) Unhandled exception: java.lang.IllegalMonitorStateException
        at java.base/java.lang.Object.notifyAll(Native Method)
        at io.quarkus.resteasy.runtime.standalone.VertxBlockingOutput$3.handle(VertxBlockingOutput.java:114)
        at io.quarkus.resteasy.runtime.standalone.VertxBlockingOutput$3.handle(VertxBlockingOutput.java:110)
        at io.vertx.core.http.impl.HttpServerResponseImpl.handleClosed(HttpServerResponseImpl.java:622)
        at io.vertx.core.http.impl.HttpServerResponseImpl.handleException(HttpServerResponseImpl.java:590)
        at io.vertx.core.http.impl.HttpServerRequestImpl.handleException(HttpServerRequestImpl.java:577)
        at io.vertx.core.http.impl.Http1xServerConnection.handleClosed(Http1xServerConnection.java:413)
        at io.vertx.core.net.impl.VertxHandler.lambda$channelInactive$4(VertxHandler.java:162)
```

**To Reproduce**
Can reproduce often if streaming a video via a Response.ok(File file) jaxrs request.

**Environment (please complete the following information):**
 - Quarkus version or git rev: 1.2.1.Final


Changed files:
extensions/resteasy/runtime/src/main/java/io/quarkus/resteasy/runtime/standalone/VertxBlockingOutput.java

diff --git a/extensions/resteasy/runtime/src/main/java/io/quarkus/resteasy/runtime/standalone/VertxBlockingOutput.java b/extensions/resteasy/runtime/src/main/java/io/quarkus/resteasy/runtime/standalone/VertxBlockingOutput.java
index fafae708f2f..e2775f5a0ce 100644
--- a/extensions/resteasy/runtime/src/main/java/io/quarkus/resteasy/runtime/standalone/VertxBlockingOutput.java
+++ b/extensions/resteasy/runtime/src/main/java/io/quarkus/resteasy/runtime/standalone/VertxBlockingOutput.java
@@ -9,6 +9,7 @@
 import io.vertx.core.Context;
 import io.vertx.core.Handler;
 import io.vertx.core.buffer.Buffer;
+import io.vertx.core.http.HttpConnection;
 import io.vertx.core.http.HttpServerRequest;
 
 public class VertxBlockingOutput implements VertxOutput {
@@ -111,7 +112,10 @@ private void awaitWriteable() throws IOException {
                     @Override
                     public void handle(Void event) {
                         if (waitingForDrain) {
-                            request.connection().notifyAll();
+                            HttpConnection connection = request.connection();
+                            synchronized (connection) {
+                                connection.notifyAll();
+                            }
                         }
                     }
                 };
Repository: quarkusio/quarkus
Issue: Setting of system property  java.io.tmpdir having no effect on VertxTemplate in native mode

**Describe the bug**
Setting of system property `java.io.tmpdir` in native mode has no effect for vert.x quickstart. This is part of the discussion [here](https://quarkusio.zulipchat.com/#narrow/stream/187030-users/topic/Native.20builds.3A.20JVM.20options.20at.20runtime/near/168516155). 

**Expected behavior**
Setting the `java.io.tmpdir` system property should work correctly since the `VertxTemplate` is a RuntTime init template

**Actual behavior**
The system property is ignored


**To Reproduce**
Steps to reproduce the behavior:
1. Use the vertx quickstart :https://github.com/quarkusio/quarkus-quickstarts/tree/master/using-vertx
2. Create a native binary
3. Attempt to set the system property by doing something like: `target/using-vertx-1.0-SNAPSHOT-runner -Djava.io.tmpdir=/dummy`. This should fail normally since the directory does not exist (and it of course does fail when running `java -Djava.io.tmpdir=/dummy -jar target/using-vertx-1.0-SNAPSHOT-runner.jar`).




Changed files:
extensions/vertx/runtime/src/main/java/io/quarkus/vertx/runtime/VertxTemplate.java

diff --git a/extensions/vertx/runtime/src/main/java/io/quarkus/vertx/runtime/VertxTemplate.java b/extensions/vertx/runtime/src/main/java/io/quarkus/vertx/runtime/VertxTemplate.java
index e75c5bdfd48..2fc0474df37 100644
--- a/extensions/vertx/runtime/src/main/java/io/quarkus/vertx/runtime/VertxTemplate.java
+++ b/extensions/vertx/runtime/src/main/java/io/quarkus/vertx/runtime/VertxTemplate.java
@@ -1,5 +1,8 @@
 package io.quarkus.vertx.runtime;
 
+import static io.vertx.core.file.impl.FileResolver.CACHE_DIR_BASE_PROP_NAME;
+
+import java.io.File;
 import java.lang.reflect.InvocationTargetException;
 import java.util.ArrayList;
 import java.util.List;
@@ -76,9 +79,7 @@ void initialize(VertxConfiguration conf) {
             System.setProperty("vertx.disableDnsResolver", "true");
         }
 
-        System.setProperty("vertx.cacheDirBase", System.getProperty("java.io.tmpdir"));
-
-        if (options.isClustered()) {
+        if (options.getEventBusOptions().isClustered()) {
             AtomicReference<Throwable> failure = new AtomicReference<>();
             CountDownLatch latch = new CountDownLatch(1);
             Vertx.clusteredVertx(options, ar -> {
@@ -111,8 +112,12 @@ private VertxOptions convertToVertxOptions(VertxConfiguration conf) {
         setEventBusOptions(conf, options);
         initializeClusterOptions(conf, options);
 
+        String fileCacheDir = System.getProperty(CACHE_DIR_BASE_PROP_NAME,
+                System.getProperty("java.io.tmpdir", ".") + File.separator + "vertx-cache");
+
         options.setFileSystemOptions(new FileSystemOptions()
                 .setFileCachingEnabled(conf.caching)
+                .setFileCacheDir(fileCacheDir)
                 .setClassPathResolvingEnabled(conf.classpathResolving));
         options.setWorkerPoolSize(conf.workerPoolSize);
         options.setBlockedThreadCheckInterval(conf.warningExceptionTime.toMillis());
Repository: quarkusio/quarkus
Issue: Native compilation again does't like spaces in project directory in 0.15.0 and 0.16.0 ver

**Describe the bug**
Native compilation doesn't like space in project directory. It is a old bug anf fixed in 0.13.0 release reference ticket no: #1673 . i am facing the samer issue with 0.15.0 and 0.16.0 releases.

**Expected behavior**
Native compilation should allow spaces in the project directory path.

**Actual behavior**
Throwing the below error
12:57:08 Caused by: java.lang.RuntimeException: java.io.FileNotFoundException: /home/jenkins/workspace/Online%20Service%20Name%20CRP/NameService/target/NameService-0.0.1-SNAPSHOT-runner.jar (No such file or directory)
12:57:08 	at io.quarkus.undertow.runtime.graal.URLResourceSubstitution$ResourceInfo.<clinit>(URLResourceSubstitution.java:103)
12:57:08 	... 40 more
12:57:08 Caused by: java.io.FileNotFoundException: /home/jenkins/workspace/Online%20Service%20Name%20CRP/NameService/target/NameService-0.0.1-SNAPSHOT-runner.jar (No such file or directory)



**To Reproduce**
Steps to reproduce the behavior:
1. Create project directory name with space and execute a native compile



Changed files:
extensions/undertow/runtime/src/main/java/io/quarkus/undertow/runtime/graal/URLResourceSubstitution.java

diff --git a/extensions/undertow/runtime/src/main/java/io/quarkus/undertow/runtime/graal/URLResourceSubstitution.java b/extensions/undertow/runtime/src/main/java/io/quarkus/undertow/runtime/graal/URLResourceSubstitution.java
index 09279327a7f..e3cb0d279ee 100644
--- a/extensions/undertow/runtime/src/main/java/io/quarkus/undertow/runtime/graal/URLResourceSubstitution.java
+++ b/extensions/undertow/runtime/src/main/java/io/quarkus/undertow/runtime/graal/URLResourceSubstitution.java
@@ -1,6 +1,7 @@
 package io.quarkus.undertow.runtime.graal;
 
 import java.io.IOException;
+import java.net.URISyntaxException;
 import java.net.URL;
 import java.net.URLClassLoader;
 import java.util.Collections;
@@ -73,7 +74,7 @@ static final class ResourceInfo {
             URLClassLoader ucl = (URLClassLoader) cl;
             for (URL res : ucl.getURLs()) {
                 if (res.getProtocol().equals("file") && res.getPath().endsWith(".jar")) {
-                    try (JarFile file = new JarFile(res.getPath())) {
+                    try (JarFile file = new JarFile(res.toURI().getPath())) {
                         Enumeration<JarEntry> e = file.entries();
                         while (e.hasMoreElements()) {
                             JarEntry entry = e.nextElement();
@@ -83,7 +84,7 @@ static final class ResourceInfo {
                             }
                         }
 
-                    } catch (IOException e) {
+                    } catch (IOException | URISyntaxException e) {
                         throw new RuntimeException(e);
                     }
                 }
Repository: quarkusio/quarkus
Issue: e.printStackTrace() in TransactionalInterceptorBase

**Describe the bug**
In da8212107dd210ebc0207273a755e4f3686ca82b e.printStackTrace() was added in TransactionalInterceptorBase#handleExceptionNoThrow(). Now every exception that causes a transaction rollback is printed in the log.

I assume this was added for debugging and then was committed accidentally. So just removing that line again should fix the issue.

**Expected behavior**
The exception and stack trace should not be printed by TransactionalInterceptorBase.

**Actual behavior**
The exception and stack trace are printed by TransactionalInterceptorBase.


**To Reproduce**
Steps to reproduce the behavior:
1. Throw a RuntimeException in a `@Transactional` method.
2. Catch it and handle it outside the `@Transactional` method without printing or logging it.
3. The exception is still printed.



**Environment:**
 - Output of `java -version`: openjdk version "1.8.0_212"
 - Quarkus version: 0.16.1


Changed files:
extensions/narayana-jta/runtime/src/main/java/io/quarkus/narayana/jta/runtime/interceptor/TransactionalInterceptorBase.java

diff --git a/extensions/narayana-jta/runtime/src/main/java/io/quarkus/narayana/jta/runtime/interceptor/TransactionalInterceptorBase.java b/extensions/narayana-jta/runtime/src/main/java/io/quarkus/narayana/jta/runtime/interceptor/TransactionalInterceptorBase.java
index 218f38c288b..fb4377d6e53 100644
--- a/extensions/narayana-jta/runtime/src/main/java/io/quarkus/narayana/jta/runtime/interceptor/TransactionalInterceptorBase.java
+++ b/extensions/narayana-jta/runtime/src/main/java/io/quarkus/narayana/jta/runtime/interceptor/TransactionalInterceptorBase.java
@@ -233,7 +233,6 @@ protected Object invokeInNoTx(InvocationContext ic) throws Exception {
 
     protected void handleExceptionNoThrow(InvocationContext ic, Throwable e, Transaction tx)
             throws IllegalStateException, SystemException {
-        e.printStackTrace();
 
         Transactional transactional = getTransactional(ic);