Skip to content

feat: shared container feature#400

Draft
matheusandre1 wants to merge 3 commits into
quarkiverse:mainfrom
matheusandre1:issue-282
Draft

feat: shared container feature#400
matheusandre1 wants to merge 3 commits into
quarkiverse:mainfrom
matheusandre1:issue-282

Conversation

@matheusandre1
Copy link
Copy Markdown

This is Pr Closes: #282

@matheusandre1
Copy link
Copy Markdown
Author

I forgetting something? Some requirement may have changed.

cc: @mathecruz

@matheusandre1 matheusandre1 marked this pull request as ready for review March 10, 2026 03:22
@matheusandre1 matheusandre1 requested a review from a team as a code owner March 10, 2026 03:22
@mcruzdev
Copy link
Copy Markdown
Member

I forgetting something? Some requirement may have changed.

cc: @mathecruz

Hi @matheusandre1, I gonna take a look today. Sorry for the delay 😃

Copy link
Copy Markdown
Member

@mcruzdev mcruzdev left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hi @matheusandre1, I tested it locally with two applications and the second was not started.

Details 2026-04-10 21:52:04,950 ERROR [io.quarkus.deployment.dev.IsolatedDevModeMain] (main) Failed to start quarkus: java.lang.RuntimeException: io.quarkus.builder.BuildException: Build failure: Build failed due to errors [error]: Build step io.quarkus.deployment.steps.DevServicesConfigBuildStep#setup threw an exception: java.lang.NullPointerException: Cannot invoke "java.util.Map.size()" because "m" is null at java.base/java.util.HashMap.putMapEntries(HashMap.java:503) at java.base/java.util.HashMap.putAll(HashMap.java:791) at io.quarkus.deployment.steps.DevServicesConfigBuildStep.setup(DevServicesConfigBuildStep.java:32) at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:733) at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:898) at io.quarkus.builder.BuildContext.run(BuildContext.java:242) at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18) at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2651) at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2630) at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1622) at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1589) at java.base/java.lang.Thread.run(Thread.java:1583) at org.jboss.threads.JBossThread.run(JBossThread.java:501)
at io.quarkus.runner.bootstrap.AugmentActionImpl.runAugment(AugmentActionImpl.java:441)
at io.quarkus.runner.bootstrap.AugmentActionImpl.createInitialRuntimeApplication(AugmentActionImpl.java:355)
at io.quarkus.runner.bootstrap.AugmentActionImpl.createInitialRuntimeApplication(AugmentActionImpl.java:65)
at io.quarkus.deployment.dev.IsolatedDevModeMain.firstStart(IsolatedDevModeMain.java:90)
at io.quarkus.deployment.dev.IsolatedDevModeMain.accept(IsolatedDevModeMain.java:436)
at io.quarkus.deployment.dev.IsolatedDevModeMain.accept(IsolatedDevModeMain.java:56)
at io.quarkus.bootstrap.app.CuratedApplication.runInCl(CuratedApplication.java:157)
at io.quarkus.bootstrap.app.CuratedApplication.runInAugmentClassLoader(CuratedApplication.java:98)
at io.quarkus.deployment.dev.DevModeMain.start(DevModeMain.java:106)
at io.quarkus.deployment.dev.DevModeMain.main(DevModeMain.java:68)

Caused by: io.quarkus.builder.BuildException: Build failure: Build failed due to errors
[error]: Build step io.quarkus.deployment.steps.DevServicesConfigBuildStep#setup threw an exception: java.lang.NullPointerException: Cannot invoke "java.util.Map.size()" because "m" is null
at java.base/java.util.HashMap.putMapEntries(HashMap.java:503)
at java.base/java.util.HashMap.putAll(HashMap.java:791)
at io.quarkus.deployment.steps.DevServicesConfigBuildStep.setup(DevServicesConfigBuildStep.java:32)
at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:733)
at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:898)
at io.quarkus.builder.BuildContext.run(BuildContext.java:242)
at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2651)
at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2630)
at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1622)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1589)
at java.base/java.lang.Thread.run(Thread.java:1583)
at org.jboss.threads.JBossThread.run(JBossThread.java:501)

at io.quarkus.builder.Execution.run(Execution.java:139)
at io.quarkus.builder.BuildExecutionBuilder.execute(BuildExecutionBuilder.java:76)
at io.quarkus.deployment.QuarkusAugmentor.run(QuarkusAugmentor.java:182)
at io.quarkus.runner.bootstrap.AugmentActionImpl.runAugment(AugmentActionImpl.java:437)
... 9 more

Caused by: java.lang.NullPointerException: Cannot invoke "java.util.Map.size()" because "m" is null
at java.base/java.util.HashMap.putMapEntries(HashMap.java:503)
at java.base/java.util.HashMap.putAll(HashMap.java:791)
at io.quarkus.deployment.steps.DevServicesConfigBuildStep.setup(DevServicesConfigBuildStep.java:32)
at java.base/java.lang.invoke.MethodHandle.invokeWithArguments(MethodHandle.java:733)
at io.quarkus.deployment.ExtensionLoader$3.execute(ExtensionLoader.java:898)
at io.quarkus.builder.BuildContext.run(BuildContext.java:242)
at org.jboss.threads.ContextHandler$1.runWith(ContextHandler.java:18)
at org.jboss.threads.EnhancedQueueExecutor$Task.doRunWith(EnhancedQueueExecutor.java:2651)
at org.jboss.threads.EnhancedQueueExecutor$Task.run(EnhancedQueueExecutor.java:2630)
at org.jboss.threads.EnhancedQueueExecutor.runThreadBody(EnhancedQueueExecutor.java:1622)
at org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1589)
at java.base/java.lang.Thread.run(Thread.java:1583)
at org.jboss.threads.JBossThread.run(JBossThread.java:501)

I am investigating here, probably it happens when the DAPR_CONTAINER_LOCATOR returns a non-empty Optional.

EDIT: Another issue is the dashboard url, if the shared is true we need to configure the property quarkus.dapr.devservices.dashboard.url.

@mcruzdev
Copy link
Copy Markdown
Member

I found some issues, we need to do:

  1. Configure Dapr Dashboard container (configuring label through configureSharedServiceLabel(this, launchMode, DevServicesDaprProcessor.DASHBOARD_WORKFLOW_LABEL serviceName);
  2. We need to do the same process (locate before creating) for Dapr Dashboard if dashboard is enabled
  3. And to configure the property quarkus.dapr.devservices.dashboard.url

I think it is all, please after a mvn clean install, try to create two app with 999-SNAPSHOT dapr extension version to see if the shared is working.

@matheusandre1
Copy link
Copy Markdown
Author

Okay, I'll run a regression test here and adjust accordingly.

@matheusandre1 matheusandre1 marked this pull request as draft April 15, 2026 16:53
@matheusandre1 matheusandre1 requested a review from mcruzdev April 15, 2026 16:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add shared container feature

2 participants