oracle/weblogic-deploy-tooling

cannot delete JMS Module, JMS Server and Filestore together using the Update Domain Tool in online mode

Opened this issue · 2 comments

I cannot delete JMS Module, JMS Server and Filestore together using the Update Domain Tool in online mode.

For example, I have a domain with an admin server and a managed server called node1

To add these resources, I can use this config below and Update Domain Tool in online mode (it works)

resources:
  FileStore:
    MyFileStore2:
      Target: node1
      Directory: tmp2
  JMSServer:
    MyJMSServer2:
      PersistentStore: MyFileStore2
      Target: 'node1'
  JMSSystemResource:
    MyJMSModule2:
      SubDeployment:
        MySubDep2:
          Target: 'MyJMSServer2'
      Target: 'node1'
      JmsResource:
        UniformDistributedQueue:
          MyQueue2:
            SubDeploymentName: MySubDep2
            JNDIName: 'jms/MyQueue2Jndi'
        ConnectionFactory:
          MyCF2:
            DefaultTargetingEnabled: true
            JNDIName: 'jms/MyCF2Jndi'      

To delete, I use this configuration my_diff_model.yaml, it can be also be generated using Compare Model Tool with full model.

resources:
  JMSSystemResource:
    '!MyJMSModule2':
  JMSServer:
    '!MyJMSServer2':
  FileStore:
    '!MyFileStore2':

After running the updateDomain.sh in online mode, as below, I get the output as shown:

updateDomain.sh -admin_user myadmin -admin_pass_file my_pass_file -admin_url t3://${ADMIN_LISTEN_ADDRESS_HTTP}:${ADMIN_LISTEN_PORT_HTTP} -model_file my_diff_model.yaml

Output:

...
####<Oct 28, 2025 1:38:00 PM> <INFO> <update> <__update_online> <WLSDPLY-09005> <Connecting to domain at t3://myserver:9051 with timeout value of 120000 ...>

####<Oct 28, 2025 1:38:01 PM> <INFO> <update> <__update_online> <WLSDPLY-09007> <Connected to domain at t3://myserver:9051>
####<Oct 28, 2025 1:38:01 PM> <INFO> <LibraryHelper> <install_domain_libraries> <WLSDPLY-12213> <The model did not specify any domain libraries to install>
####<Oct 28, 2025 1:38:01 PM> <INFO> <LibraryHelper> <extract_classpath_libraries> <WLSDPLY-12216> <The archive file was not provided so there are no classpath libraries to extract>
####<Oct 28, 2025 1:38:01 PM> <INFO> <LibraryHelper> <install_domain_scripts> <WLSDPLY-12241> <The model did not specify any domain scripts to install>
####<Oct 28, 2025 1:38:01 PM> <INFO> <deployer_utils> <delete_named_element> <WLSDPLY-09110> <Deleting FileStores MyFileStore2>
####<Oct 28, 2025 1:38:02 PM> <SEVERE> <update> <main> <WLSDPLY-09015> <updateDomain deployment failed: Unable to delete(MyFileStore2, FileStores) in online mode: Bean weblogic.management.configuration.FileStoreMBeanImpl@dd3f9b2c([WLS-1411-1MGMT-ORA11]/FileStores[MyFileStore2]) references [MyFileStore2 by [WLS-1411-1MGMT-ORA11]/JMSServers[MyJMSServer2]/PersistentStore]>

Issue Log for updateDomain version 4.3.8 running WebLogic version 14.1.1.0.0.250630 in online mode against server using WebLogic version 14.1.1.0.0:

SEVERE Messages:

        1. WLSDPLY-09015: updateDomain deployment failed: Unable to delete(MyFileStore2, FileStores) in online mode: Bean weblogic.management.configuration.FileStoreMBeanImpl@dd3f9b2c([WLS-1411-1MGMT-ORA11]/FileStores[MyFileStore2]) references [MyFileStore2 by [WLS-1411-1MGMT-ORA11]/JMSServers[MyJMSServer2]/PersistentStore]

Total:   SEVERE :    1  WARNING :    0

updateDomain.sh failed (exit code = 2)

I can delete the same resources individually, for example, it works if I do in the following order, 3 times (JMSSystemResource -> JMSServer -> FileStore):

  1. JMSSystemResource
resources:
  JMSSystemResource:
    '!MyJMSModule2':
  1. JMSServer
resources:
  JMSServer:
    '!MyJMSServer2':
  1. FileStore
resources:
  FileStore:
    '!MyFileStore2':

So, for me, it is a bug, the tool should choose the right order of deletion itself to make it work successfully.

I have tried using the latest weblogic-deploy-tooling version 4.3.8 along with fewer older versions too, but with the same result.
Weblogic 14.1.1 with Java 11 is used above, but I guess the result would be the same with other combinations too.

I have tried both: domain with single managed node (without cluster) as above and with two managed nodes (in cluster).

@rjnkmr While I understand your perspective and agree that this should work, this is a hard problem. We would need to restructure how deletes are processed so this is not something that will happen soon...

In thinking about the general case, there are multiple complicating factors for online deletion:

  • Some objects can have circular dependencies based on their configuration. For example, DataSources can be targeted to a Server and Servers can reference DataSources. Deleting the DataSource in one of these situations could require making changes to the Server configuration that was not specified in the model.
  • Models can be sparse. That means that we cannot rely solely on the model to determine dependencies and deletion ordering. We would need to anaylze the existing domain, which could require making changes not specified in the model provided by the user.

To me, making changes not specified by the model is a non-starter. We could consider scanning and processing all deletions first in a specified order and let WLST tell us when something failed. In your simple case, this would allow it to work but there would be a lot of other potential cases where it would not.

WDT Jira WDT-472