quarkus: [2.12.0.CR1]: `/q/dev` UI throws an error when navigating to "Configuration" -> "Config Editor", and "Devservices" is empty
Describe the bug
- Starting here:
- Click
Config Editor
, see this:
CLICK TO VIEW STACKTRACE
java.lang.StringIndexOutOfBoundsException: begin 1, end 0, length 1
at java.base/java.lang.String.checkBoundsBeginEnd(String.java:4604)
at java.base/java.lang.String.substring(String.java:2707)
at io.quarkus.vertx.http.runtime.devmode.ConfigDescriptionsManager.calculate(ConfigDescriptionsManager.java:100)
at io.quarkus.vertx.http.runtime.devmode.ConfigDescriptionsManager.values(ConfigDescriptionsManager.java:59)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at io.quarkus.qute.GetterAccessor.getValue(GetterAccessor.java:22)
at io.quarkus.qute.ReflectionValueResolver.resolve(ReflectionValueResolver.java:59)
at io.quarkus.qute.EvaluatorImpl.resolve(EvaluatorImpl.java:207)
at io.quarkus.qute.EvaluatorImpl.resolveReference(EvaluatorImpl.java:127)
at io.quarkus.qute.EvaluatorImpl.lambda$evaluate$0(EvaluatorImpl.java:74)
at io.quarkus.qute.CompletedStage.thenCompose(CompletedStage.java:232)
at io.quarkus.qute.EvaluatorImpl.evaluate(EvaluatorImpl.java:72)
at io.quarkus.qute.ResolutionContextImpl$ChildResolutionContext.evaluate(ResolutionContextImpl.java:87)
at io.quarkus.qute.LoopSectionHelper.resolve(LoopSectionHelper.java:44)
at io.quarkus.qute.SectionNode.resolve(SectionNode.java:48)
at io.quarkus.qute.SectionNode$SectionResolutionContextImpl.execute(SectionNode.java:182)
at io.quarkus.qute.InsertSectionHelper.resolve(InsertSectionHelper.java:20)
at io.quarkus.qute.SectionNode.resolve(SectionNode.java:48)
at io.quarkus.qute.SectionNode$SectionResolutionContextImpl.execute(SectionNode.java:182)
at io.quarkus.qute.SectionHelper$SectionResolutionContext.execute(SectionHelper.java:46)
at io.quarkus.qute.Parser$1.resolve(Parser.java:1230)
at io.quarkus.qute.SectionNode.resolve(SectionNode.java:48)
at io.quarkus.qute.IncludeSectionHelper.lambda$resolve$1(IncludeSectionHelper.java:63)
at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863)
at java.base/java.util.concurrent.CompletableFuture.uniWhenCompleteStage(CompletableFuture.java:887)
at java.base/java.util.concurrent.CompletableFuture.whenComplete(CompletableFuture.java:2325)
at java.base/java.util.concurrent.CompletableFuture.whenComplete(CompletableFuture.java:144)
at io.quarkus.qute.IncludeSectionHelper.resolve(IncludeSectionHelper.java:47)
at io.quarkus.qute.SectionNode.resolve(SectionNode.java:48)
at io.quarkus.qute.SectionNode$SectionResolutionContextImpl.execute(SectionNode.java:178)
at io.quarkus.qute.SectionHelper$SectionResolutionContext.execute(SectionHelper.java:46)
at io.quarkus.qute.Parser$1.resolve(Parser.java:1230)
at io.quarkus.qute.SectionNode.resolve(SectionNode.java:48)
at io.quarkus.qute.TemplateImpl$TemplateInstanceImpl.renderData(TemplateImpl.java:176)
at io.quarkus.qute.TemplateImpl$TemplateInstanceImpl.renderAsyncNoTimeout(TemplateImpl.java:167)
at io.quarkus.qute.TemplateImpl$TemplateInstanceImpl.renderAsync(TemplateImpl.java:140)
at io.quarkus.vertx.http.deployment.devmode.console.DevConsole.renderTemplate(DevConsole.java:173)
at io.quarkus.vertx.http.deployment.devmode.console.DevConsole.handle(DevConsole.java:137)
at io.quarkus.vertx.http.deployment.devmode.console.DevConsole.handle(DevConsole.java:39)
at io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1284)
at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:173)
at io.vertx.ext.web.impl.RoutingContextWrapper.next(RoutingContextWrapper.java:200)
at io.quarkus.vertx.http.deployment.devmode.console.FlashScopeHandler.handle(FlashScopeHandler.java:12)
at io.quarkus.vertx.http.deployment.devmode.console.FlashScopeHandler.handle(FlashScopeHandler.java:7)
at io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1284)
at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:173)
at io.vertx.ext.web.impl.RoutingContextWrapper.next(RoutingContextWrapper.java:200)
at io.vertx.ext.web.impl.RouterImpl.handleContext(RouterImpl.java:250)
at io.vertx.ext.web.impl.RouteState.handleContext(RouteState.java:1284)
at io.vertx.ext.web.impl.RoutingContextImplBase.iterateNext(RoutingContextImplBase.java:173)
at io.vertx.ext.web.impl.RoutingContextImpl.next(RoutingContextImpl.java:140)
at io.vertx.ext.web.impl.RouterImpl.handle(RouterImpl.java:68)
at io.vertx.ext.web.impl.RouterImpl.handle(RouterImpl.java:37)
at io.quarkus.vertx.http.deployment.devmode.console.DevConsoleProcessor$2$1.handle(DevConsoleProcessor.java:193)
at io.quarkus.vertx.http.deployment.devmode.console.DevConsoleProcessor$2$1.handle(DevConsoleProcessor.java:190)
at io.vertx.core.impl.EventLoopContext.emit(EventLoopContext.java:55)
at io.vertx.core.impl.EventLoopContext.lambda$emit$1(EventLoopContext.java:62)
at io.netty.util.concurrent.AbstractEventExecutor.runTask(AbstractEventExecutor.java:174)
at io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:167)
at io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:470)
at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:503)
at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:997)
at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:833)
Resulted in: java.lang.reflect.InvocationTargetException
... 64 more
Resulted in: java.lang.IllegalStateException: Reflection invocation error
at io.quarkus.qute.GetterAccessor.getValue(GetterAccessor.java:29)
... 59 more
Resulted in: io.quarkus.qute.TemplateException
at io.quarkus.qute.CompletedStage.get(CompletedStage.java:48)
at io.quarkus.qute.MultiResultNode.process(MultiResultNode.java:20)
at io.quarkus.qute.MultiResultNode.process(MultiResultNode.java:20)
at io.quarkus.qute.TemplateImpl$TemplateInstanceImpl.lambda$renderData$5(TemplateImpl.java:182)
at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(CompletableFuture.java:863)
at java.base/java.util.concurrent.CompletableFuture.uniWhenCompleteStage(CompletableFuture.java:887)
at java.base/java.util.concurrent.CompletableFuture.whenComplete(CompletableFuture.java:2325)
at java.base/java.util.concurrent.CompletableFuture.whenComplete(CompletableFuture.java:144)
... 32 more
Resulted in: java.util.concurrent.CompletionException: io.quarkus.qute.TemplateException
at java.base/java.util.concurrent.CompletableFuture.encodeThrowable(CompletableFuture.java:332)
at java.base/java.util.concurrent.CompletableFuture.uniApplyNow(CompletableFuture.java:674)
at java.base/java.util.concurrent.CompletableFuture.uniApplyStage(CompletableFuture.java:662)
at java.base/java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:2168)
at java.base/java.util.concurrent.CompletableFuture.thenApply(CompletableFuture.java:144)
... 31 more
- Click
Dev Services
, receive empty page:
Expected behavior
No response
Actual behavior
No response
How to Reproduce?
Here are the Quarkus-related deps:
dependencies {
implementation(platform("${quarkusPlatformGroupId}:${quarkusPlatformArtifactId}:${quarkusPlatformVersion}"))
implementation("io.quarkus:quarkus-agroal")
implementation("io.quarkus:quarkus-arc")
implementation("io.quarkus:quarkus-cache")
implementation("io.quarkus:quarkus-container-image-docker")
implementation("io.quarkus:quarkus-kotlin")
implementation("io.quarkus:quarkus-reactive-routes")
implementation("io.quarkus:quarkus-resteasy-reactive")
implementation("io.quarkus:quarkus-resteasy-reactive-jackson")
implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.13.3")
implementation("io.quarkus:quarkus-smallrye-fault-tolerance")
implementation("io.quarkus:quarkus-smallrye-openapi")
implementation("io.quarkus:quarkus-smallrye-opentracing")
implementation("io.quarkus:quarkus-vertx")
implementation("io.quarkus:quarkus-vertx-graphql")
implementation("io.quarkiverse.loggingmanager:quarkus-logging-manager:2.1.4")
implementation("io.opentracing.contrib:opentracing-jdbc")
listOf("h2", "mariadb", "mssql", "mysql", "oracle", "postgresql").forEach {
implementation("io.quarkus:quarkus-jdbc-${it}")
}
}
Output of uname -a
or ver
No response
Output of java -version
17
GraalVM version (if different from Java)
No response
Quarkus version or git rev
2.12.0.CR1
Build tool (ie. output of mvnw --version
or gradlew --version
)
No response
Additional information
No response
About this issue
- Original URL
- State: closed
- Created 2 years ago
- Comments: 22 (21 by maintainers)
Ok I think I found a case where this happens. See PR #27490 for a fix. @GavinRay97 if you can test against this PR that would be great. Basically if you have a quoted dot this error happens, example a config like
bla.bla."."=foo
will create this error.The empty page in DevService is when there are no dev services. I’ll do a PR to either add some info there, or remove the button)
@phillip-kruger could you have a look now that we have a reproducer? ^