RosiKyu opened a new issue, #12523:
URL: https://github.com/apache/cloudstack/issues/12523

   ### 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
   ```
   3. Enable the js.interpretation.enabled setting:
   ```
      mysql -u root -p cloud -e "UPDATE configuration SET value='true' WHERE 
name='js.interpretation.enabled';"
   ```
   4. Restart management server:
   ```
      systemctl restart cloudstack-management
   ```
   5. 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 #10957 and any other functionality that depends on 
this feature
   - **Must be fixed before 4.20.3.0 release**
   
   #### Related
   - Commit: https://github.com/apache/cloudstack/commit/03a4b9f
   - Blocks PR: #10957
   
   ### What to do about it?
   
   _No response_


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to