-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Description
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:
- Added
js.interpretation.enabledas a hidden ConfigKey (default: false) - Made
CreateSecondaryStorageSelectorCmdandUpdateSecondaryStorageSelectorCmdconditional on this setting - 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
- Deploy CloudStack 4.20.3.0
- Verify server is running:
curl -s "http://localhost:8080/client/api?command=listZones" | head -5
- Enable the js.interpretation.enabled setting:
mysql -u root -p cloud -e "UPDATE configuration SET value='true' WHERE name='js.interpretation.enabled';"
- Restart management server:
systemctl restart cloudstack-management
- 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
- Secondary storage selector feature is unusable on current 4.20 branch
- Quota tariff activation rules may also be affected (uses same JsInterpreter)
- Blocks testing of PR Consider secondary storage selectors during cold volume migration #10957 and any other functionality that depends on this feature
Related
- Commit: 03a4b9f
- Blocks PR: Consider secondary storage selectors during cold volume migration #10957
What to do about it?
No response