Skip to content

Management server hangs when js.interpretation.enabled=true #12523

@RosiKyu

Description

@RosiKyu

problem

Enabling the global setting js.interpretation.enabled=true causes the CloudStack management server to hang during startup at the module loading phase. This prevents using the secondary storage selector feature (createSecondaryStorageSelector, updateSecondaryStorageSelector APIs).

versions

  • 4.20 branch (4.20.3.0-SNAPSHOT) - AFFECTED - needs fix before 4.20.3.0 release
  • 4.20.2.0 (released) - Not affected (commit not present, setting does not exist, APIs work unconditionally)

Introduced by commit 03a4b9f ("server,utils: improve js interpretation functionality") merged on Oct 16, 2025 into the 4.20 branch.

The commit:

  1. Added js.interpretation.enabled as a hidden ConfigKey (default: false)
  2. Made CreateSecondaryStorageSelectorCmd and UpdateSecondaryStorageSelectorCmd conditional on this setting
  3. Made significant changes to JsInterpreter.java (security hardening, daemon workers, etc.)

When the setting is enabled, something in the initialization causes the MS server to hang.

The steps to reproduce the bug

  1. Deploy CloudStack 4.20.3.0
  2. Verify server is running:
   curl -s "http://localhost:8080/client/api?command=listZones" | head -5
  1. Enable the js.interpretation.enabled setting:
   mysql -u root -p cloud -e "UPDATE configuration SET value='true' WHERE name='js.interpretation.enabled';"
  1. Restart management server:
   systemctl restart cloudstack-management
  1. Wait 3+ minutes and check server status:
   curl -s "http://localhost:8080/client/api?command=listZones" | head -5

Expected Result

Server starts successfully and createSecondaryStorageSelector API is available.

Actual Result

Server returns 503 Service Unavailable. Log shows server stuck at module loading phase:

2026-01-26 19:53:01,937 DEBUG [o.a.c.s.m.m.i.DefaultModuleDefinitionSet] (main:[]) (logid:) Trying to obtain module [redfish] context.
2026-01-26 19:53:01,937 WARN  [o.a.c.s.m.m.i.DefaultModuleDefinitionSet] (main:[]) (logid:) Application context not found for module definition [redfish]

Log timestamp remains static while current time progresses - server is hung.

Evidence

4.20 branch build (shapeblue18197) - Bug present:

[root@ref-trl-10730-k-Mol9-rositsa-kyuchukova-mgmt1 ~]# rpm -qa | grep cloudstack
cloudstack-common-4.20.3.0-shapeblue18197.noarch
cloudstack-management-4.20.3.0-shapeblue18197.noarch

[root@ref-trl-10730-k-Mol9-rositsa-kyuchukova-mgmt1 ~]# mysql -u root -p cloud -e "UPDATE configuration SET value='true' WHERE name='js.interpretation.enabled';"
[root@ref-trl-10730-k-Mol9-rositsa-kyuchukova-mgmt1 ~]# systemctl restart cloudstack-management
[root@ref-trl-10730-k-Mol9-rositsa-kyuchukova-mgmt1 ~]# sleep 180
[root@ref-trl-10730-k-Mol9-rositsa-kyuchukova-mgmt1 ~]# curl -s "http://localhost:8080/client/api?command=listZones" | head -5
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=ISO-8859-1"/>
<title>Error 503 Service Unavailable</title>
</head>

4.20.2.0 released version (shapeblue17631) - Works correctly:

[root@ref-trl-10714-k-Mol9-rositsa-kyuchukova-mgmt1 ~]# rpm -qa | grep cloudstack
cloudstack-common-4.20.2.0-shapeblue17631.noarch
cloudstack-management-4.20.2.0-shapeblue17631.noarch

mysql> SELECT name, value FROM configuration WHERE name LIKE '%interpret%';
Empty set (0.00 sec)

[root@ref-trl-10714-k-Mol9-rositsa-kyuchukova-mgmt1 ~]# cmk list apis 2>/dev/null | grep -i "name.*selector"
      "name": "createSecondaryStorageSelector",
      "name": "updateSecondaryStorageSelector",
      "name": "listSecondaryStorageSelectors",
      "name": "removeSecondaryStorageSelector",

Impact

Related

What to do about it?

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions