anon-iclr-submission/benchname-bug-localization huggingface dataset:
Repository: prestodb/presto
Issue: Running queries counter leaks queries

Queries that fail before they get to run cause the running queries counter to increment but never decrement. This is caused by 516801ab482c9189344304b97ff4e4429488dfc7, which calls queryStarted but not queryStopped.


Changed files:
presto-main/src/main/java/com/facebook/presto/execution/SqlQueryManager.java

diff --git a/presto-main/src/main/java/com/facebook/presto/execution/SqlQueryManager.java b/presto-main/src/main/java/com/facebook/presto/execution/SqlQueryManager.java
index c2fa751646..43f442ff32 100644
--- a/presto-main/src/main/java/com/facebook/presto/execution/SqlQueryManager.java
+++ b/presto-main/src/main/java/com/facebook/presto/execution/SqlQueryManager.java
@@ -421,6 +421,7 @@ public class SqlQueryManager
                 queryMonitor.queryCreatedEvent(queryInfo);
                 queryMonitor.queryCompletedEvent(queryInfo);
                 stats.queryStarted();
+                stats.queryStopped();
                 stats.queryFinished(queryInfo);
             }
             finally {
Repository: prestodb/presto
Issue: Query input rows/size stats not tracked properly for JOIN queries

The query-level stats only include the row/size from the leaf stage. The should include the inputs for all stages that perform table scans.

For example:

```
1:20 [ 130M rows, 14.1GB] [1.64M rows/s,  182MB/s] [  <=>                                     ]

     STAGES   ROWS  ROWS/s  BYTES  BYTES/s  QUEUED    RUN   DONE
0.........R      0       0     0B       0B       0      1      0
  1.......R      0       0     0B       0B       0     20      0
    2.....S    13B    163M  1.82T    23.4G    1478   8870  27560
      3...F  43.1M       0  2.38G       0B       0      0     20
        4.F   130M       0  14.1G       0B       0      0   2363
```

The bug is possibly due to the following check in `QueryStateMachine.getQueryInfo()`, line 193:

``` java
if (stageInfo.getSubStages().isEmpty()) {
```


Changed files:
presto-main/src/main/java/com/facebook/presto/execution/QueryStateMachine.java

diff --git a/presto-main/src/main/java/com/facebook/presto/execution/QueryStateMachine.java b/presto-main/src/main/java/com/facebook/presto/execution/QueryStateMachine.java
index b909d8c410..67578efa87 100644
--- a/presto-main/src/main/java/com/facebook/presto/execution/QueryStateMachine.java
+++ b/presto-main/src/main/java/com/facebook/presto/execution/QueryStateMachine.java
@@ -19,12 +19,14 @@ import com.facebook.presto.client.FailureInfo;
 import com.facebook.presto.execution.StateMachine.StateChangeListener;
 import com.facebook.presto.spi.ErrorCode;
 import com.facebook.presto.spi.PrestoException;
+import com.facebook.presto.sql.planner.plan.TableScanNode;
 import com.google.common.base.Preconditions;
 import com.google.common.base.Predicate;
 import com.google.common.base.Predicates;
 import com.google.common.collect.FluentIterable;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Iterables;
 import io.airlift.log.Logger;
 import io.airlift.units.DataSize;
 import io.airlift.units.Duration;
@@ -190,7 +192,7 @@ public class QueryStateMachine
                 totalUserTime += stageStats.getTotalUserTime().roundTo(NANOSECONDS);
                 totalBlockedTime += stageStats.getTotalBlockedTime().roundTo(NANOSECONDS);
 
-                if (stageInfo.getSubStages().isEmpty()) {
+                if (Iterables.any(stageInfo.getPlan().getSources(), Predicates.instanceOf(TableScanNode.class))) {
                     rawInputDataSize += stageStats.getRawInputDataSize().toBytes();
                     rawInputPositions += stageStats.getRawInputPositions();
Repository: prestodb/presto
Issue: Unbounded varchar should not be serialized with length

The fact that `varchar` is internally represented as `varchar(MAX_INT)` is an implementation detail that should not leak out and be permanently stored in external systems. It also breaks backwards compatibility with older clients, causes issues in clients that try to allocate a buffer of that size, etc.


Changed files:
presto-spi/src/test/java/com/facebook/presto/spi/type/TestTypeSignature.java, presto-spi/src/main/java/com/facebook/presto/spi/type/TypeSignature.java

diff --git a/presto-spi/src/main/java/com/facebook/presto/spi/type/TypeSignature.java b/presto-spi/src/main/java/com/facebook/presto/spi/type/TypeSignature.java
index 6378252088..24959ed22c 100644
--- a/presto-spi/src/main/java/com/facebook/presto/spi/type/TypeSignature.java
+++ b/presto-spi/src/main/java/com/facebook/presto/spi/type/TypeSignature.java
@@ -272,9 +272,16 @@ public class TypeSignature
     @JsonValue
     public String toString()
     {
+        // TODO: remove these hacks
         if (base.equalsIgnoreCase(StandardTypes.ROW)) {
             return rowToString();
         }
+        else if (base.equalsIgnoreCase(StandardTypes.VARCHAR) &&
+                (parameters.size() == 1) &&
+                parameters.get(0).isLongLiteral() &&
+                parameters.get(0).getLongLiteral() == VarcharType.MAX_LENGTH) {
+            return base;
+        }
         else {
             StringBuilder typeName = new StringBuilder(base);
             if (!parameters.isEmpty()) {
diff --git a/presto-spi/src/test/java/com/facebook/presto/spi/type/TestTypeSignature.java b/presto-spi/src/test/java/com/facebook/presto/spi/type/TestTypeSignature.java
index aa16aebabf..720d5dc840 100644
--- a/presto-spi/src/test/java/com/facebook/presto/spi/type/TestTypeSignature.java
+++ b/presto-spi/src/test/java/com/facebook/presto/spi/type/TestTypeSignature.java
@@ -22,6 +22,8 @@ import java.util.List;
 import java.util.Map;
 
 import static com.facebook.presto.spi.type.TypeSignature.parseTypeSignature;
+import static com.facebook.presto.spi.type.VarcharType.VARCHAR;
+import static com.facebook.presto.spi.type.VarcharType.createVarcharType;
 import static org.testng.Assert.assertEquals;
 import static org.testng.Assert.fail;
 
@@ -144,6 +146,14 @@ public class TestTypeSignature
         assertSignature("varchar(10)", "varchar", ImmutableList.<String>of("10"));
     }
 
+    @Test
+    public void testVarchar()
+            throws Exception
+    {
+        assertEquals(VARCHAR.getTypeSignature().toString(), "varchar");
+        assertEquals(createVarcharType(42).getTypeSignature().toString(), "varchar(42)");
+    }
+
     private static void assertRowSignature(
             String typeName,
             String base,
Repository: prestodb/presto
Issue: round(nan(), 2) returns 0.0

`SELECT round(nan(), 2)` results in `0.0`, but should be `NaN`. This is a regression since 0.144.5.


Changed files:
presto-main/src/main/java/com/facebook/presto/operator/scalar/MathFunctions.java
presto-main/src/test/java/com/facebook/presto/operator/scalar/TestMathFunctions.java

diff --git a/presto-main/src/main/java/com/facebook/presto/operator/scalar/MathFunctions.java b/presto-main/src/main/java/com/facebook/presto/operator/scalar/MathFunctions.java
index c7a1031919..de0796209f 100644
--- a/presto-main/src/main/java/com/facebook/presto/operator/scalar/MathFunctions.java
+++ b/presto-main/src/main/java/com/facebook/presto/operator/scalar/MathFunctions.java
@@ -465,6 +465,10 @@ public final class MathFunctions
     @SqlType(StandardTypes.DOUBLE)
     public static double round(@SqlType(StandardTypes.DOUBLE) double num, @SqlType(StandardTypes.BIGINT) long decimals)
     {
+        if (Double.isNaN(num)) {
+            return num;
+        }
+
         double factor = Math.pow(10, decimals);
         return Math.round(num * factor) / factor;
     }
diff --git a/presto-main/src/test/java/com/facebook/presto/operator/scalar/TestMathFunctions.java b/presto-main/src/test/java/com/facebook/presto/operator/scalar/TestMathFunctions.java
index 4a937b84e4..8b05ad68ac 100644
--- a/presto-main/src/test/java/com/facebook/presto/operator/scalar/TestMathFunctions.java
+++ b/presto-main/src/test/java/com/facebook/presto/operator/scalar/TestMathFunctions.java
@@ -485,6 +485,8 @@ public class TestMathFunctions
         assertFunction("round(CAST(NULL as DOUBLE), CAST(NULL as BIGINT))", DOUBLE, null);
         assertFunction("round(-3.0, CAST(NULL as BIGINT))", DOUBLE, null);
         assertFunction("round(CAST(NULL as DOUBLE), 1)", DOUBLE, null);
+
+        assertFunction("round(nan(), 2)", DOUBLE, Double.NaN);
     }
 
     @Test
Repository: prestodb/presto
Issue: Null partition keys break Hive partition pruning

If the table has a partition key like `key=__HIVE_DEFAULT_PARTITION__`, the following query:

```
SELECT 
  key
, count(*)
from TABLE
GROUP BY 1
```

returns results like:

```
   key   | _col1  
---------+--------
 windows | 1 
 NULL    | 2 
 ios     | 3 
 android | 4 
(4 rows)
```

But the following query return no rows:

```
SELECT 
  key
, count(*)
from TABLE
WHERE key is null 
GROUP BY 1
```


Changed files:
presto-hive/src/main/java/com/facebook/presto/hive/HiveUtil.java

diff --git a/presto-hive/src/main/java/com/facebook/presto/hive/HiveUtil.java b/presto-hive/src/main/java/com/facebook/presto/hive/HiveUtil.java
index 5291b65c4c..a53f35414e 100644
--- a/presto-hive/src/main/java/com/facebook/presto/hive/HiveUtil.java
+++ b/presto-hive/src/main/java/com/facebook/presto/hive/HiveUtil.java
@@ -62,6 +62,7 @@ import java.util.concurrent.Callable;
 import static com.facebook.presto.hive.HiveColumnHandle.hiveColumnIndexGetter;
 import static com.facebook.presto.hive.HiveColumnHandle.isPartitionKeyPredicate;
 import static com.facebook.presto.hive.HiveErrorCode.HIVE_CANNOT_OPEN_SPLIT;
+import static com.facebook.presto.hive.HivePartitionKey.HIVE_DEFAULT_DYNAMIC_PARTITION;
 import static com.facebook.presto.hive.HiveType.HIVE_BOOLEAN;
 import static com.facebook.presto.hive.HiveType.HIVE_BYTE;
 import static com.facebook.presto.hive.HiveType.HIVE_DATE;
@@ -321,7 +322,7 @@ public final class HiveUtil
 
     public static SerializableNativeValue parsePartitionValue(String partitionName, String value, HiveType hiveType, DateTimeZone timeZone)
     {
-        boolean isNull = isHiveNull(value.getBytes(UTF_8));
+        boolean isNull = HIVE_DEFAULT_DYNAMIC_PARTITION.equals(value);
 
         if (HIVE_BOOLEAN.equals(hiveType)) {
             if (isNull) {
Repository: prestodb/presto
Issue: The node_id column in deleted_shard_nodes should not be nullable

The table tracks shards for a node, so it should be `NOT NULL`. Being nullable is probably a leftover from when the same table was used for local and global shards (during development of the feature).


Changed files:
presto-raptor/src/main/java/com/facebook/presto/raptor/metadata/SchemaDao.java

diff --git a/presto-raptor/src/main/java/com/facebook/presto/raptor/metadata/SchemaDao.java b/presto-raptor/src/main/java/com/facebook/presto/raptor/metadata/SchemaDao.java
index ab13aa5c8d..59efccbe72 100644
--- a/presto-raptor/src/main/java/com/facebook/presto/raptor/metadata/SchemaDao.java
+++ b/presto-raptor/src/main/java/com/facebook/presto/raptor/metadata/SchemaDao.java
@@ -94,7 +94,7 @@ public interface SchemaDao
 
     @SqlUpdate("CREATE TABLE IF NOT EXISTS created_shards (\\n" +
             "  shard_uuid BINARY(16) NOT NULL,\\n" +
-            "  transaction_id bigint NOT NULL,\\n" +
+            "  transaction_id BIGINT NOT NULL,\\n" +
             "  PRIMARY KEY (shard_uuid),\\n" +
             "  FOREIGN KEY (transaction_id) REFERENCES transactions (transaction_id)\\n" +
             ")")
@@ -103,7 +103,7 @@ public interface SchemaDao
     @SqlUpdate("CREATE TABLE IF NOT EXISTS created_shard_nodes (\\n" +
             "  shard_uuid BINARY(16) NOT NULL,\\n" +
             "  node_id INT NOT NULL,\\n" +
-            "  transaction_id bigint NOT NULL,\\n" +
+            "  transaction_id BIGINT NOT NULL,\\n" +
             "  PRIMARY KEY (shard_uuid, node_id),\\n" +
             "  FOREIGN KEY (node_id) REFERENCES nodes (node_id),\\n" +
             "  FOREIGN KEY (transaction_id) REFERENCES transactions (transaction_id)\\n" +
@@ -120,7 +120,7 @@ public interface SchemaDao
 
     @SqlUpdate("CREATE TABLE IF NOT EXISTS deleted_shard_nodes (\\n" +
             "  shard_uuid BINARY(16) NOT NULL,\\n" +
-            "  node_id INT,\\n" +
+            "  node_id INT NOT NULL,\\n" +
             "  delete_time DATETIME NOT NULL,\\n" +
             "  clean_time DATETIME,\\n" +
             "  purge_time DATETIME,\\n" +
Repository: deeplearning4j/deeplearning4j
Issue: Unable to load pre-trained weights on dl4j from keras

#### Issue Description

I am trying to load pretrained wieghts from python on dl4j ComputationGraph org.deeplearning4j.nn.modelimport.keras.KerasModelImport.importKerasModelAndWeights(KerasModelImport.java:193)
here is the error:
HDF5-DIAG: Error detected in HDF5 (1.10.1) thread 0:
#000: H5A.c line 436 in H5Aopen(): unable to load attribute info from object header for attribute: 'weight_names'
major: Attribute
minor: Unable to initialize object
#001: H5Oattribute.c line 528 in H5O_attr_open_by_name(): can't locate attribute: 'weight_names'
major: Attribute
minor: Object not found

#### Version Information

* Deeplearning4j 1.0.0-alpha
* MacOS Sierra
* keras (2.1.4)
* TF(1.3.0)
* cpu

#### Contributing
       // loading the model 
        try{
           model = KerasModelImport.importKerasModelAndWeights(model_json, model_weights);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }


Changed files:
deeplearning4j-modelimport/src/main/java/org/deeplearning4j/nn/modelimport/keras/utils/KerasModelBuilder.java

diff --git a/deeplearning4j-modelimport/src/main/java/org/deeplearning4j/nn/modelimport/keras/utils/KerasModelBuilder.java b/deeplearning4j-modelimport/src/main/java/org/deeplearning4j/nn/modelimport/keras/utils/KerasModelBuilder.java
index 5fda8bd49a..ae0912b255 100644
--- a/deeplearning4j-modelimport/src/main/java/org/deeplearning4j/nn/modelimport/keras/utils/KerasModelBuilder.java
+++ b/deeplearning4j-modelimport/src/main/java/org/deeplearning4j/nn/modelimport/keras/utils/KerasModelBuilder.java
@@ -118,8 +118,13 @@ public class KerasModelBuilder implements Cloneable, Closeable {
         return this;
     }
 
-    public KerasModelBuilder weightsHdf5Filename(String weightsHdf5Filename) {
+    public KerasModelBuilder weightsHdf5Filename(String weightsHdf5Filename)
+            throws InvalidKerasConfigurationException {
         this.weightsArchive = new Hdf5Archive(weightsHdf5Filename);
+        this.weightsRoot = config.getTrainingWeightsRoot();
+        if (!this.weightsArchive.hasAttribute(config.getTrainingModelConfigAttribute()))
+            throw new InvalidKerasConfigurationException(
+                    "Model configuration attribute missing from " + weightsHdf5Filename + " archive.");
         return this;
     }
 
@@ -143,7 +148,8 @@ public class KerasModelBuilder implements Cloneable, Closeable {
         return sequentialModel;
     }
 
-    @Override public void close() {
+    @Override
+    public void close() {
         if (trainingArchive != null && trainingArchive != weightsArchive) {
             trainingArchive.close();
             trainingArchive = null;
Repository: pinpoint-apm/pinpoint
Issue: Tomcat plugin fails to trace when profiler.tomcat.excludeurl is empty

Tomcat plugin fails to inject interceptor to `StandardHostValve.invoke(...)` when _pinpoint.config_'s `profiler.tomcat.excludeurl` option is empty.


Changed files:
plugins/tomcat/src/main/java/com/navercorp/pinpoint/plugin/tomcat/TomcatConfiguration.java

diff --git a/plugins/tomcat/src/main/java/com/navercorp/pinpoint/plugin/tomcat/TomcatConfiguration.java b/plugins/tomcat/src/main/java/com/navercorp/pinpoint/plugin/tomcat/TomcatConfiguration.java
index 0c0ba3bfcf..3f7e8089f6 100644
--- a/plugins/tomcat/src/main/java/com/navercorp/pinpoint/plugin/tomcat/TomcatConfiguration.java
+++ b/plugins/tomcat/src/main/java/com/navercorp/pinpoint/plugin/tomcat/TomcatConfiguration.java
@@ -14,9 +14,9 @@
  */
 package com.navercorp.pinpoint.plugin.tomcat;
 
-import com.navercorp.pinpoint.bootstrap.config.ExcludePathFilter;
 import com.navercorp.pinpoint.bootstrap.config.Filter;
 import com.navercorp.pinpoint.bootstrap.config.ProfilerConfig;
+import com.navercorp.pinpoint.bootstrap.config.SkipFilter;
 
 /**
  * @author Jongho Moon
@@ -24,14 +24,14 @@ import com.navercorp.pinpoint.bootstrap.config.ProfilerConfig;
  */
 public class TomcatConfiguration {
     private final boolean tomcatHidePinpointHeader;
-    private Filter<String> tomcatExcludeUrlFilter;
+    private final Filter<String> tomcatExcludeUrlFilter;
 
     public TomcatConfiguration(ProfilerConfig config) {
         this.tomcatHidePinpointHeader = config.readBoolean("profiler.tomcat.hidepinpointheader", true);
-        final String tomcatExcludeURL = config.readString("profiler.tomcat.excludeurl", "");
-        
-        if (!tomcatExcludeURL.isEmpty()) {
-            this.tomcatExcludeUrlFilter = new ExcludePathFilter(tomcatExcludeURL);
+        if (config.getTomcatExcludeProfileMethodFilter() == null) {
+            this.tomcatExcludeUrlFilter = new SkipFilter<String>();
+        } else {
+            this.tomcatExcludeUrlFilter = config.getTomcatExcludeUrlFilter();
         }
     }
Repository: pinpoint-apm/pinpoint
Issue: Jdk's HttpUrlConnection's target nodes are not rendered in the server map

Http calls made using `HttpUrlConnection` is currently being traced, but the server map does not seem to be rendering the target nodes,

Related google groups post - https://groups.google.com/forum/#!topic/pinpoint_user/OgwAB9sPnak


Changed files:
plugins/jdk-http/src/main/java/com/navercorp/pinpoint/plugin/jdk/http/JdkHttpConstants.java

diff --git a/plugins/jdk-http/src/main/java/com/navercorp/pinpoint/plugin/jdk/http/JdkHttpConstants.java b/plugins/jdk-http/src/main/java/com/navercorp/pinpoint/plugin/jdk/http/JdkHttpConstants.java
index 184baf89b5..3a6bfa4ea7 100644
--- a/plugins/jdk-http/src/main/java/com/navercorp/pinpoint/plugin/jdk/http/JdkHttpConstants.java
+++ b/plugins/jdk-http/src/main/java/com/navercorp/pinpoint/plugin/jdk/http/JdkHttpConstants.java
@@ -17,6 +17,8 @@ package com.navercorp.pinpoint.plugin.jdk.http;
 import com.navercorp.pinpoint.common.trace.ServiceType;
 import com.navercorp.pinpoint.common.trace.ServiceTypeFactory;
 
+import static com.navercorp.pinpoint.common.trace.ServiceTypeProperty.RECORD_STATISTICS;
+
 /**
  * @author Jongho Moon
  *
@@ -25,5 +27,5 @@ public final class JdkHttpConstants {
     private JdkHttpConstants() {
     }
 
-    public static final ServiceType SERVICE_TYPE = ServiceTypeFactory.of(9055, "JDK_HTTPURLCONNECTOR", "JDK_HTTPCONNECTOR");
+    public static final ServiceType SERVICE_TYPE = ServiceTypeFactory.of(9055, "JDK_HTTPURLCONNECTOR", "JDK_HTTPCONNECTOR", RECORD_STATISTICS);
 }
Repository: pinpoint-apm/pinpoint
Issue: Unsampled Continuation is not collected for transaction metric.

Metric Gauge for TRANSACTION_UNSAMPLED_CONTINUATION is missing.
Unsampled continuation gauge instead uses TRANSACTION_UNSAMPLED_NEW, which is wrong.


Changed files:
profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/codahale/tps/TransactionMetricCollector.java

diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/codahale/tps/TransactionMetricCollector.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/codahale/tps/TransactionMetricCollector.java
index d505a228f8..f52520d703 100644
--- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/codahale/tps/TransactionMetricCollector.java
+++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/codahale/tps/TransactionMetricCollector.java
@@ -49,7 +49,7 @@ public class TransactionMetricCollector implements AgentStatCollector<TTransacti
         this.sampledNewGauge = (Gauge<Long>)MetricMonitorValues.getMetric(metrics, TRANSACTION_SAMPLED_NEW, UNSUPPORTED_GAUGE);
         this.sampledContinuationGauge = (Gauge<Long>)MetricMonitorValues.getMetric(metrics, TRANSACTION_SAMPLED_CONTINUATION, UNSUPPORTED_GAUGE);
         this.unsampledNewGauge = (Gauge<Long>)MetricMonitorValues.getMetric(metrics, TRANSACTION_UNSAMPLED_NEW, UNSUPPORTED_GAUGE);
-        this.unsampledContinuationGuage = (Gauge<Long>)MetricMonitorValues.getMetric(metrics, TRANSACTION_UNSAMPLED_NEW, UNSUPPORTED_GAUGE);
+        this.unsampledContinuationGuage = (Gauge<Long>)MetricMonitorValues.getMetric(metrics, TRANSACTION_UNSAMPLED_CONTINUATION, UNSUPPORTED_GAUGE);
     }
 
     @Override
Repository: pinpoint-apm/pinpoint
Issue: Handle cases where collected cpu load is NaN

There was a case where calling `OperatingSystemMXBean.getSystemCpuLoad()` returned Double.NaN (the agent was ran on a virtual machine).

The data collected was as follows:

```
TAgentStatBatch(agentId:test-agent, startTimestamp:1441085794300, agentStats:[
    TAgentStat(timestamp:1441087205292, cpuLoad:TCpuLoad(systemCpuLoad:0.026276276276276277, jvmCpuLoad:5.983020928131048E-4), gc:TJvmGc(...)), 
    TAgentStat(timestamp:1441087802597, cpuLoad:TCpuLoad(systemCpuLoad:0.13733025877530106, jvmCpuLoad:9.909711377187762E-6), gc:TJvmGc(...)), 
    TAgentStat(timestamp:1441087802597, cpuLoad:TCpuLoad(systemCpuLoad:NaN, jvmCpuLoad:0.14527027027027026), gc:TJvmGc(...)), 
    TAgentStat(timestamp:1441087802597, cpuLoad:TCpuLoad(systemCpuLoad:NaN, jvmCpuLoad:0.1275), gc:TJvmGc(...)), 
    TAgentStat(timestamp:1441087802597, cpuLoad:TCpuLoad(systemCpuLoad:NaNjvmCpuLoad:0.125), gc:TJvmGc(...)), 
    TAgentStat(timestamp:1441087802597, cpuLoad:TCpuLoad(systemCpuLoad:0.0jvmCpuLoad:0.125), gc:TJvmGc(...))
])
```

Need a NaN check - use `Double.isNaN()`.
(equals check does not work on NaNs as `Double.NaN != Double.NaN`)


Changed files:
profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/codahale/cpu/CpuLoadCollector.java

diff --git a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/codahale/cpu/CpuLoadCollector.java b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/codahale/cpu/CpuLoadCollector.java
index 3b47af433e..547864abe1 100644
--- a/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/codahale/cpu/CpuLoadCollector.java
+++ b/profiler/src/main/java/com/navercorp/pinpoint/profiler/monitor/codahale/cpu/CpuLoadCollector.java
@@ -61,6 +61,6 @@ public class CpuLoadCollector {
     }
 
     private boolean notCollected(double cpuLoad) {
-        return cpuLoad < 0;
+        return cpuLoad < 0 || Double.isNaN(cpuLoad);
     }
 }
Repository: quarkusio/quarkus
Issue: Native build fails if quarkus.package.output-directory is set

### Describe the bug

Im my project, we generate several native executables using several executions with several quarkus.package.output-directory.
Since Quarkus 3, each native generation fails if quarkus.package.output-directory is set.


### Expected behavior

We expect to have as many binares as executions nodes in quarkus-maven-plugin.

### Actual behavior

The native executable generation fails with :
```[ERROR] Failed to execute goal io.quarkus.platform:quarkus-maven-plugin:3.0.3.Final:build (oracle) on project getting-started: Failed to build quarkus application: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
[ERROR] 	[error]: Build step io.quarkus.deployment.pkg.steps.JarResultBuildStep#buildNativeImageJar threw an exception: java.io.UncheckedIOException: Unable to copy json config file from /resources-config.json to /home/osboxes/Documents/Formations/quarkus/getting-started/target/oracle-quarkus-app/getting-started-1.0.0-SNAPSHOT-native-image-source-jar
```

In our real project we also have reflection-config.json and other properties with just this file it fails



### How to Reproduce?

Here is a little project done with getting-started quarkus project to rerpduce.
[getting-started.zip](https://github.com/quarkusio/quarkus/files/11500033/getting-started.zip)

### Output of `uname -a` or `ver`

Linux localhost.localdomain 6.2.14-300.fc38.x86_64 #1 SMP PREEMPT_DYNAMIC Mon May  1 00:55:28 UTC 2023 x86_64 GNU/Linux

### Output of `java -version`

Java HotSpot(TM) 64-Bit Server VM (build 17.0.1+12-LTS-39, mixed mode, sharing)

### GraalVM version (if different from Java)

_No response_

### Quarkus version or git rev

3.0.3.Final

### Build tool (ie. output of `mvnw --version` or `gradlew --version`)

Apache Maven 3.8.2 (ea98e05a04480131370aa0c110b8c54cf726c06f)

### Additional information

_No response_

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

diff --git a/core/deployment/src/main/java/io/quarkus/deployment/pkg/steps/JarResultBuildStep.java b/core/deployment/src/main/java/io/quarkus/deployment/pkg/steps/JarResultBuildStep.java
index 9fac9e84a25..3936e20529b 100644
--- a/core/deployment/src/main/java/io/quarkus/deployment/pkg/steps/JarResultBuildStep.java
+++ b/core/deployment/src/main/java/io/quarkus/deployment/pkg/steps/JarResultBuildStep.java
@@ -1030,6 +1030,7 @@ private void copyJsonConfigFiles(ApplicationArchivesBuildItem applicationArchive
                     @Override
                     public void accept(Path jsonPath) {
                         try {
+                            Files.createDirectories(thinJarDirectory);
                             Files.copy(jsonPath, thinJarDirectory.resolve(jsonPath.getFileName().toString()));
                         } catch (IOException e) {
                             throw new UncheckedIOException(
Repository: quarkusio/quarkus
Issue: Custom cdi context not applied for certain bean types

### Describe the bug

When using a custom `InjectableContext` the context implementation is not beeing used for all bean types.

### Expected behavior

Either all beans that are annotated with my scope annotation should be handled over my context implementation or if not a clear feedback (visible log or exception) should be given from Quarkus.

### Actual behavior

When having certain beantype e.g. `AtomicBoolean `, the context implementation is ignored
```
@MyCustomScoped
@Produces
AtomicBoolean atomicBoolean(){
    return new AtomicBoolean();
```

It is still scoped as `@MyCustomScoped` when checking with `Arc.container().instance(AtomicBoolean.class).getBean().getScope();` but the bean is not beeing handled over my context implementation.

### How to Reproduce?

https://github.com/HerrDerb/extension-issues/tree/custom-context-issue

### Quarkus version or git rev

3.0.3Final



Changed files:
independent-projects/arc/processor/src/main/java/io/quarkus/arc/processor/Methods.java

diff --git a/independent-projects/arc/processor/src/main/java/io/quarkus/arc/processor/Methods.java b/independent-projects/arc/processor/src/main/java/io/quarkus/arc/processor/Methods.java
index cfede763330..c6c3c7e4df9 100644
--- a/independent-projects/arc/processor/src/main/java/io/quarkus/arc/processor/Methods.java
+++ b/independent-projects/arc/processor/src/main/java/io/quarkus/arc/processor/Methods.java
@@ -123,10 +123,16 @@ private static boolean skipForClientProxy(MethodInfo method, boolean transformUn
                             .add(NameAndDescriptor.fromMethodInfo(method));
                     return false;
                 }
-
+                // in case we want to transform classes but are unable to, we log a WARN
                 LOGGER.warn(String.format(
                         "Final method %s.%s() is ignored during proxy generation and should never be invoked upon the proxy instance!",
                         className, method.name()));
+            } else {
+                // JDK classes with final method are not proxyable and not transformable, we skip those methods and log a WARN
+                LOGGER.warn(String.format(
+                        "JDK class %s with final method %s() cannot be proxied and is not transformable. " +
+                                "This method will be ignored during proxy generation and should never be invoked upon the proxy instance!",
+                        className, method.name()));
             }
             return true;
         }
Repository: quarkusio/quarkus
Issue: `ConsoleProcessor.java` references `quarkus.log.console.color`, which was deprecated in Quarkus 2.1

### Describe the bug

[Line 77 in core/deployment/src/main/java/io/quarkus/deployment/console/ConsoleProcessor.java](https://github.com/quarkusio/quarkus/blob/78c3e36b846168b6cce37c92aa642164436c7228/core/deployment/src/main/java/io/quarkus/deployment/console/ConsoleProcessor.java#L77) references `quarkus.log.console.color`, which [was deprecated in Quarkus 2.1](https://github.com/quarkusio/quarkus/pull/18506):

E.g.,:
```
ConfigProvider.getConfig().getOptionalValue("quarkus.log.console.color",
```

Should it reference `quarkus.console.color` instead?

### Expected behavior

_No response_

### Actual behavior

_No response_

### How to Reproduce?

_No response_

### Output of `uname -a` or `ver`

_No response_

### Output of `java -version`

_No response_

### GraalVM version (if different from Java)

_No response_

### Quarkus version or git rev

_No response_

### Build tool (ie. output of `mvnw --version` or `gradlew --version`)

_No response_

### Additional information

_No response_

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

diff --git a/core/deployment/src/main/java/io/quarkus/deployment/console/ConsoleProcessor.java b/core/deployment/src/main/java/io/quarkus/deployment/console/ConsoleProcessor.java
index ee2838f9481..83389f7902a 100644
--- a/core/deployment/src/main/java/io/quarkus/deployment/console/ConsoleProcessor.java
+++ b/core/deployment/src/main/java/io/quarkus/deployment/console/ConsoleProcessor.java
@@ -74,7 +74,7 @@ ConsoleInstalledBuildItem setupConsole(TestConfig config,
             ConsoleRuntimeConfig consoleRuntimeConfig = new ConsoleRuntimeConfig();
             consoleRuntimeConfig.color = ConfigProvider.getConfig().getOptionalValue("quarkus.console.color", Boolean.class);
             io.quarkus.runtime.logging.ConsoleConfig loggingConsoleConfig = new io.quarkus.runtime.logging.ConsoleConfig();
-            loggingConsoleConfig.color = ConfigProvider.getConfig().getOptionalValue("quarkus.log.console.color",
+            loggingConsoleConfig.color = ConfigProvider.getConfig().getOptionalValue("quarkus.console.color",
                     Boolean.class);
             ConsoleHelper.installConsole(config, consoleConfig, consoleRuntimeConfig, loggingConsoleConfig,
                     launchModeBuildItem.isTest());
Repository: quarkusio/quarkus
Issue: disableTrustManager is not used in ResteasyReactiveClientProvider

### Describe the bug

The parameter `disableTrustManager` is not passed to `clientBuilder`.

https://github.com/quarkusio/quarkus/blob/071a89c3b8acc50eb760b6740a547851e8032a0c/extensions/keycloak-admin-client-reactive/runtime/src/main/java/io/quarkus/keycloak/admin/client/reactive/runtime/ResteasyReactiveClientProvider.java#L32-L36


Changed files:
extensions/keycloak-admin-client-reactive/runtime/src/main/java/io/quarkus/keycloak/admin/client/reactive/runtime/ResteasyReactiveClientProvider.java

diff --git a/extensions/keycloak-admin-client-reactive/runtime/src/main/java/io/quarkus/keycloak/admin/client/reactive/runtime/ResteasyReactiveClientProvider.java b/extensions/keycloak-admin-client-reactive/runtime/src/main/java/io/quarkus/keycloak/admin/client/reactive/runtime/ResteasyReactiveClientProvider.java
index 275fc580fb2..26cd9782d31 100644
--- a/extensions/keycloak-admin-client-reactive/runtime/src/main/java/io/quarkus/keycloak/admin/client/reactive/runtime/ResteasyReactiveClientProvider.java
+++ b/extensions/keycloak-admin-client-reactive/runtime/src/main/java/io/quarkus/keycloak/admin/client/reactive/runtime/ResteasyReactiveClientProvider.java
@@ -31,7 +31,7 @@ public class ResteasyReactiveClientProvider implements ResteasyClientProvider {
 
     @Override
     public Client newRestEasyClient(Object messageHandler, SSLContext sslContext, boolean disableTrustManager) {
-        ClientBuilderImpl clientBuilder = new ClientBuilderImpl();
+        ClientBuilderImpl clientBuilder = new ClientBuilderImpl().trustAll(disableTrustManager);
         return registerJacksonProviders(clientBuilder).build();
     }
Repository: quarkusio/quarkus
Issue: redirect of /q/dev too permanent?

### Describe the bug

was using quarkus dev with quarkus 3 using dev UI all good.

now switch to quarkus 2.x by running quarkus dev in https://github.com/quarkusio/todo-demo-app

pressing 'd' gets me to http://localhost:8080/dev which then redirects to http://localhost:8080/dev-ui presumably because of previous quarkus 3 returned a permanent redirect?

### Expected behavior

dont break quarkus 2 dev ui just because I ran a quarkus 3 dev mode app

### Actual behavior

_No response_

### How to Reproduce?

_No response_

### Output of `uname -a` or `ver`

_No response_

### Output of `java -version`

_No response_

### GraalVM version (if different from Java)

_No response_

### Quarkus version or git rev

_No response_

### Build tool (ie. output of `mvnw --version` or `gradlew --version`)

_No response_

### Additional information

_No response_

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

diff --git a/extensions/vertx-http/runtime/src/main/java/io/quarkus/devui/runtime/DevUIRecorder.java b/extensions/vertx-http/runtime/src/main/java/io/quarkus/devui/runtime/DevUIRecorder.java
index 4b8eca0d506..57fc606b1b7 100644
--- a/extensions/vertx-http/runtime/src/main/java/io/quarkus/devui/runtime/DevUIRecorder.java
+++ b/extensions/vertx-http/runtime/src/main/java/io/quarkus/devui/runtime/DevUIRecorder.java
@@ -17,6 +17,7 @@
 
 import org.jboss.logging.Logger;
 
+import io.netty.handler.codec.http.HttpResponseStatus;
 import io.quarkus.arc.runtime.BeanContainer;
 import io.quarkus.dev.console.DevConsoleManager;
 import io.quarkus.devui.runtime.comms.JsonRpcRouter;
@@ -98,8 +99,14 @@ public Handler<RoutingContext> redirect(String contextRoot) {
         return new Handler<RoutingContext>() {
             @Override
             public void handle(RoutingContext rc) {
-                // 308 because we also want to redirect other HTTP Methods (and not only GET).
-                rc.response().putHeader("Location", contextRoot + "dev-ui").setStatusCode(308).end();
+                // Initially we were using 308 (MOVED PERMANENTLY) because we also want to redirect other HTTP Methods
+                // (and not only GET).
+                // However, it caused issues with browser caches and prevented users to have applications using Quarkus 2
+                // and Quarkus 3 at the same time. So, we decided to switch to FOUND (302)
+                // See https://github.com/quarkusio/quarkus/issues/33658 for more context.
+                rc.response()
+                        .putHeader("Location", contextRoot + "dev-ui")
+                        .setStatusCode(HttpResponseStatus.FOUND.code()).end();
             }
         };
     }
Repository: quarkusio/quarkus
Issue: Tests run in DEV mode are now logged with short names, previously signature was present

### Describe the bug

Before https://github.com/quarkusio/quarkus/pull/33685 our DEV mode test contained: 
```
17:45:10,608 INFO  [app] Running 1/1. Running: io.quarkus.ts.http.minimum.HelloResourceTest#HelloResourceTest
```
now it contains
```
17:53:53,032 INFO  [app] Running 1/1. Running: #HelloResourceTest
```

I can so no information about this in PR description or note in migration guide or anything, therefore there is no way to tell whether this change is intentional or side effect.

### Expected behavior

Previous behavior was clearer, but I just need a confirmation this was intentional change, that's all.

### Actual behavior

`io.quarkus.ts.http.minimum.HelloResourceTest#HelloResourceTest` => `HelloResourceTest`

### How to Reproduce?

Reproducer:

1. `git clone git@github.com:michalvavrik/quarkus-test-suite.git`
2. `cd quarkus-test-suite/http/http-minimum-reactive`
3.  `git checkout -b reproducer/domain-socket-vertx-bump`
4. `mvn clean verify -Dit.test=DevModeHttpMinimumReactiveIT`

### Output of `uname -a` or `ver`

Fedora 38

### Output of `java -version`

17

### GraalVM version (if different from Java)

22.3

### Quarkus version or git rev

999-SNAPSHOT

### Build tool (ie. output of `mvnw --version` or `gradlew --version`)

Apache Maven 3.9.1

### Additional information

_No response_

Changed files:
core/deployment/src/main/java/io/quarkus/deployment/dev/testing/JunitTestRunner.java

diff --git a/core/deployment/src/main/java/io/quarkus/deployment/dev/testing/JunitTestRunner.java b/core/deployment/src/main/java/io/quarkus/deployment/dev/testing/JunitTestRunner.java
index 51fddadc5f5..88453151ec3 100644
--- a/core/deployment/src/main/java/io/quarkus/deployment/dev/testing/JunitTestRunner.java
+++ b/core/deployment/src/main/java/io/quarkus/deployment/dev/testing/JunitTestRunner.java
@@ -235,6 +235,9 @@ public void executionStarted(TestIdentifier testIdentifier) {
                                 startTimes.put(testIdentifier, System.currentTimeMillis());
                                 String testClassName = "";
                                 Class<?> testClass = getTestClassFromSource(testIdentifier.getSource());
+                                if (testClass != null) {
+                                    testClassName = testClass.getName();
+                                }
                                 for (TestRunListener listener : listeners) {
                                     listener.testStarted(testIdentifier, testClassName);
                                 }
Repository: quarkusio/quarkus
Issue: OIDC closes its client after a successful JWK set read when the discovery is disabled

### Describe the bug

@FroMage has discovered this bug.

As it happens this very code is tested to verify that if the JWK set read fails when the discovery is disabled then the recovery will be attempted during the client request. And all works - because an OIDC `service` application is tested and once JWKs are in, nothing else is needed if no further introspection is required.

But Steph tried it for Quarkus `web-app`... and also recommended how to fix it 

### Expected behavior

_No response_

### Actual behavior

_No response_

### How to Reproduce?

_No response_

### Output of `uname -a` or `ver`

_No response_

### Output of `java -version`

_No response_

### GraalVM version (if different from Java)

_No response_

### Quarkus version or git rev

_No response_

### Build tool (ie. output of `mvnw --version` or `gradlew --version`)

_No response_

### Additional information

_No response_

Changed files:
extensions/oidc/runtime/src/main/java/io/quarkus/oidc/runtime/OidcRecorder.java
extensions/oidc-client/runtime/src/main/java/io/quarkus/oidc/client/runtime/OidcClientRecorder.java

diff --git a/extensions/oidc-client/runtime/src/main/java/io/quarkus/oidc/client/runtime/OidcClientRecorder.java b/extensions/oidc-client/runtime/src/main/java/io/quarkus/oidc/client/runtime/OidcClientRecorder.java
index 051fdbe3a86..2d4cf94ef62 100644
--- a/extensions/oidc-client/runtime/src/main/java/io/quarkus/oidc/client/runtime/OidcClientRecorder.java
+++ b/extensions/oidc-client/runtime/src/main/java/io/quarkus/oidc/client/runtime/OidcClientRecorder.java
@@ -1,7 +1,6 @@
 package io.quarkus.oidc.client.runtime;
 
 import java.io.IOException;
-import java.time.Duration;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.function.BiFunction;
@@ -34,7 +33,6 @@ public class OidcClientRecorder {
 
     private static final Logger LOG = Logger.getLogger(OidcClientRecorder.class);
     private static final String DEFAULT_OIDC_CLIENT_ID = "Default";
-    private static final Duration CONNECTION_BACKOFF_DURATION = Duration.ofSeconds(2);
 
     public OidcClients setup(OidcClientsConfig oidcClientsConfig, TlsConfig tlsConfig, Supplier<Vertx> vertx) {
 
diff --git a/extensions/oidc/runtime/src/main/java/io/quarkus/oidc/runtime/OidcRecorder.java b/extensions/oidc/runtime/src/main/java/io/quarkus/oidc/runtime/OidcRecorder.java
index 502554a93fc..5f6fbcccc38 100644
--- a/extensions/oidc/runtime/src/main/java/io/quarkus/oidc/runtime/OidcRecorder.java
+++ b/extensions/oidc/runtime/src/main/java/io/quarkus/oidc/runtime/OidcRecorder.java
@@ -259,6 +259,7 @@ protected static Uni<JsonWebKeySet> getJsonWebSetUni(OidcProviderClient client,
                     .expireIn(connectionDelayInMillisecs)
                     .onFailure()
                     .transform(t -> toOidcException(t, oidcConfig.authServerUrl.get()))
+                    .onFailure()
                     .invoke(client::close);
         } else {
             return client.getJsonWebKeySet();
Repository: quarkusio/quarkus
Issue: Quarkus returns 404 on OPTIONS request for the static resources

### Describe the bug

I have static resources under the `/src/resources/META-INF/resources` folder (ex.: /src/resources/META-INF/resources/img/document.png.

When I make a GET call for the resource - Qurkus responds with 200 OK and returns the resource
But when I make an OPTIONS call for the same resource - Quarkus responds with 404 Not found

### Expected behavior

I expected 200 OK on the OPTIONS request for the static resources.

### Actual behavior

Quarkus responds with 404 Not found on the OPTIONS request for the static resources

### How to Reproduce?

1. Add a static resource to the sample Quarkus project under the `/src/resources/META-INF/resources` folder
2. Try to call this resource with GET and OPTIONS requests.

Sample of RestAssured @QuarkusTest
 - the following example returns image
```
RestAssured.given()
            .contentType(ContentType.JSON)
            .get("/img/document.png")
            .then()
            .statusCode(Matchers.equalTo(200))
```
- the following example failed with the error message [java.lang.AssertionError: 1 expectation failed. Expected status code <200> but was <404>.]
```
RestAssured.given()
            .contentType(ContentType.JSON)
            .options("/img/document.png")
            .then()
            .statusCode(Matchers.equalTo(200))
```

### Output of `uname -a` or `ver`

linux, macOS, Windows

### Output of `java -version`

openjdk 17.0.2 2022-01-18

### GraalVM version (if different from Java)

_No response_

### Quarkus version or git rev

2.16.5.Final

### Build tool (ie. output of `mvnw --version` or `gradlew --version`)

Apache Maven 3.8.1 (05c21c65bdfed0f71a2f2ada8b84da59348c4c5d)

### Additional information

_No response_

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

diff --git a/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/StaticResourcesRecorder.java b/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/StaticResourcesRecorder.java
index a6a841e585b..7738d9bfe34 100644
--- a/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/StaticResourcesRecorder.java
+++ b/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/StaticResourcesRecorder.java
@@ -113,6 +113,7 @@ public void accept(Route route) {
                 // No other HTTP methods should be used
                 route.method(HttpMethod.GET);
                 route.method(HttpMethod.HEAD);
+                route.method(HttpMethod.OPTIONS);
                 for (Handler<RoutingContext> i : handlers) {
                     route.handler(i);
                 }
Repository: quarkusio/quarkus
Issue: quarkus run not working for gradle

### Describe the bug

quarkus run does not work with gradle apps.



### Expected behavior

_No response_

### Actual behavior

_No response_

### How to Reproduce?

```
jbang app install --name qss io.quarkus:quarkus-cli:999-SNAPSHOT:runner
qss create app --gradle -P io.quarkus:quarkus-bom:999-SNAPSHOT latestapp
cd latestapp
gradle build
qss run
```

fails. 

should actually run the app.

`gradle quarkusRun` does work.


### Output of `uname -a` or `ver`

_No response_

### Output of `java -version`

_No response_

### GraalVM version (if different from Java)

_No response_

### Quarkus version or git rev

_No response_

### Build tool (ie. output of `mvnw --version` or `gradlew --version`)

_No response_

### Additional information

_No response_

Changed files:
devtools/cli/src/main/java/io/quarkus/cli/Run.java

diff --git a/devtools/cli/src/main/java/io/quarkus/cli/Run.java b/devtools/cli/src/main/java/io/quarkus/cli/Run.java
index 34a5e3edfb1..de6553f6217 100644
--- a/devtools/cli/src/main/java/io/quarkus/cli/Run.java
+++ b/devtools/cli/src/main/java/io/quarkus/cli/Run.java
@@ -9,7 +9,7 @@
 public class Run extends BuildToolDelegatingCommand {
 
     private static final Map<BuildTool, String> ACTION_MAPPING = Map.of(BuildTool.MAVEN, "quarkus:run",
-            BuildTool.GRADLE, "run");
+            BuildTool.GRADLE, "quarkusRun");
 
     @CommandLine.Option(names = { "--target" }, description = "Run target.")
     String target;
Repository: quarkusio/quarkus
Issue: NPE with shared Keycloak dev services when exiting Quarkus dev mode

### Describe the bug

I have two Quarkus apps with separate Gradle builds and I am using shared Keycloak dev services. When I exit the Quarkus dev mode with `q + ENTER` I get the following error message with the app that is reusing the shared Keycloak dev service from the other one:

```
2023-06-08 09:12:52,339 ERROR [io.qua.oid.dep.dev.key.KeycloakDevServicesProcessor] (Quarkus Shutdown Thread) Failed to stop Keycloak container [Error Occurred After Shutdown]: java.lang.NullPointerException: Cannot invoke "java.io.Closeable.close()" because "this.closeable" is null
        at io.quarkus.deployment.builditem.DevServicesResultBuildItem$RunningDevService.close(DevServicesResultBuildItem.java:90)
        at io.quarkus.oidc.deployment.devservices.keycloak.KeycloakDevServicesProcessor$1.run(KeycloakDevServicesProcessor.java:217)
        at io.quarkus.deployment.builditem.CuratedApplicationShutdownBuildItem$1.run(CuratedApplicationShutdownBuildItem.java:48)
        at io.quarkus.bootstrap.classloading.QuarkusClassLoader.close(QuarkusClassLoader.java:617)
        at io.quarkus.bootstrap.app.CuratedApplication.close(CuratedApplication.java:418)
        at io.quarkus.deployment.dev.IsolatedDevModeMain.close(IsolatedDevModeMain.java:356)
        at io.quarkus.deployment.dev.IsolatedDevModeMain$6.run(IsolatedDevModeMain.java:466)
        at java.base/java.lang.Thread.run(Thread.java:833)
```

### Expected behavior

I would not expect it to throw an exception.

### Actual behavior

It throws an NPE.

### How to Reproduce?

_No response_

### Output of `uname -a` or `ver`

_No response_

### Output of `java -version`

openjdk 17.0.7 2023-04-18 OpenJDK Runtime Environment Temurin-17.0.7+7 (build 17.0.7+7) OpenJDK 64-Bit Server VM Temurin-17.0.7+7 (build 17.0.7+7, mixed mode, sharing)

### GraalVM version (if different from Java)

_No response_

### Quarkus version or git rev

2.16.6.Final

### Build tool (ie. output of `mvnw --version` or `gradlew --version`)

Gradle 7.6.1

### Additional information

_No response_

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

diff --git a/core/deployment/src/main/java/io/quarkus/deployment/builditem/DevServicesResultBuildItem.java b/core/deployment/src/main/java/io/quarkus/deployment/builditem/DevServicesResultBuildItem.java
index 5ed1385142e..560a9d1f49e 100644
--- a/core/deployment/src/main/java/io/quarkus/deployment/builditem/DevServicesResultBuildItem.java
+++ b/core/deployment/src/main/java/io/quarkus/deployment/builditem/DevServicesResultBuildItem.java
@@ -87,7 +87,9 @@ public boolean isOwner() {
 
         @Override
         public void close() throws IOException {
-            this.closeable.close();
+            if (this.closeable != null) {
+                this.closeable.close();
+            }
         }
 
         public DevServicesResultBuildItem toBuildItem() {