Skip to content

The start-domain --upgrade command fails when the domain includes clusters #26068

Description

@OndroMih

GlassFish Version (and build number)

8.0.2

JDK version

21

OS

Ubuntu

Database

No response

Problem Description

When upgrading from an older GlassFish domain and the domain contains cluster configuration, the asadmin start-domain --upgrade command fails with the following exception:

[#|2026-06-08T18:02:16.935140+02:00|SEVERE|GF 8.0.2|org.glassfish.gms.GMSConfigUpgrade|_ThreadID=1;_ThreadName=main;_LevelValue=1000;|
  Failure while upgrading cluster data.
org.jvnet.hk2.config.TransactionFailure: A Property with the same key "GMS_LISTENER_PORT" already exists in Cluster cluster1
        at org.jvnet.hk2.config.ConfigSupport._apply(ConfigSupport.java:189)
        at org.jvnet.hk2.config.ConfigSupport.apply(ConfigSupport.java:117)
        at org.jvnet.hk2.config.ConfigSupport.apply(ConfigSupport.java:95)
        at org.glassfish.gms.GMSConfigUpgrade.upgradeClusterElements(GMSConfigUpgrade.java:76)
        at org.glassfish.gms.GMSConfigUpgrade.postConstruct(GMSConfigUpgrade.java:63)
        at org.jvnet.hk2.internal.ClazzCreator.postConstructMe(ClazzCreator.java:356)
        at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:410)
        at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:479)
        at org.jvnet.hk2.internal.SingletonContext$1.compute(SingletonContext.java:67)
        at org.jvnet.hk2.internal.SingletonContext$1.compute(SingletonContext.java:50)
        at org.glassfish.hk2.utilities.cache.Cache$OriginThreadAwareFuture$1.call(Cache.java:74)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
        at org.glassfish.hk2.utilities.cache.Cache$OriginThreadAwareFuture.run(Cache.java:131)
        at org.glassfish.hk2.utilities.cache.Cache.compute(Cache.java:176)
        at org.jvnet.hk2.internal.SingletonContext.findOrCreate(SingletonContext.java:107)
        at org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2111)
        at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:98)
        at org.jvnet.hk2.internal.ServiceLocatorImpl.getService(ServiceLocatorImpl.java:696)
        at org.jvnet.hk2.internal.ThreeThirtyResolver.resolve(ThreeThirtyResolver.java:55)
        at org.jvnet.hk2.internal.ClazzCreator.resolve(ClazzCreator.java:197)
        at org.jvnet.hk2.internal.ClazzCreator.resolveAllDependencies(ClazzCreator.java:234)
        at org.jvnet.hk2.internal.ClazzCreator.create(ClazzCreator.java:387)
        at org.jvnet.hk2.internal.SystemDescriptor.create(SystemDescriptor.java:479)
        at org.jvnet.hk2.internal.SingletonContext$1.compute(SingletonContext.java:67)
        at org.jvnet.hk2.internal.SingletonContext$1.compute(SingletonContext.java:50)
        at org.glassfish.hk2.utilities.cache.Cache$OriginThreadAwareFuture$1.call(Cache.java:74)
        at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
        at org.glassfish.hk2.utilities.cache.Cache$OriginThreadAwareFuture.run(Cache.java:131)
        at org.glassfish.hk2.utilities.cache.Cache.compute(Cache.java:176)
        at org.jvnet.hk2.internal.SingletonContext.findOrCreate(SingletonContext.java:107)
        at org.jvnet.hk2.internal.Utilities.createService(Utilities.java:2111)
        at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:98)
        at org.jvnet.hk2.internal.ServiceHandleImpl.getService(ServiceHandleImpl.java:68)
        at org.glassfish.config.support.DomainXml.upgrade(DomainXml.java:184)
        at org.glassfish.config.support.DomainXml.run(DomainXml.java:141)

Steps to reproduce

  1. Start older version of GlassFish (e.g. 7.0.24) with the default domain1 domain
  2. Create a cluster with 1 local instance
  3. Stop GlassFish
  4. Copy the domain1 domain to GlassFish 8.0.2, e.g. to olddomain
  5. Run asadmin start-domain --upgrade olddomain with GlassFish 8.0.2

This command will complete succesfully but will produce the above exception.

Impact of Issue

There's currently no known impact in simple scenarios. But this may possibly lead to a corrupted domain.xml in more complex setups or at least that some upgrade steps are not executed.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions