You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by jl...@apache.org on 2021/03/12 08:00:43 UTC

[ofbiz-framework] branch release17.12 updated: Fixed: webtools/control/threadList no longer works on trunk (only) (OFBIZ-12195)

This is an automated email from the ASF dual-hosted git repository.

jleroux pushed a commit to branch release17.12
in repository https://gitbox.apache.org/repos/asf/ofbiz-framework.git


The following commit(s) were added to refs/heads/release17.12 by this push:
     new 9dd2a25  Fixed: webtools/control/threadList no longer works on trunk (only) (OFBIZ-12195)
9dd2a25 is described below

commit 9dd2a255e95c10588004e4fdfb794ab23d173103
Author: Jacques Le Roux <ja...@les7arts.com>
AuthorDate: Fri Mar 12 08:57:41 2021 +0100

    Fixed: webtools/control/threadList no longer works on trunk (only) (OFBIZ-12195)
    
    It works if we downgrade Freemarker to 2.3.28 as in R18 and even using 2.3.29,
    not 2.3.30.
    
    Handles things at the Groovy level, ie put in context, rather than creating
    in Freemarker template.
    
    It's backported, even if it's not a pb but in trunk, because it's a (low)
    security issue.
---
 framework/webtools/groovyScripts/service/Threads.groovy | 9 +++++++++
 framework/webtools/template/service/Threads.ftl         | 4 ++--
 2 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/framework/webtools/groovyScripts/service/Threads.groovy b/framework/webtools/groovyScripts/service/Threads.groovy
index b65f40f..fb222da 100644
--- a/framework/webtools/groovyScripts/service/Threads.groovy
+++ b/framework/webtools/groovyScripts/service/Threads.groovy
@@ -50,4 +50,13 @@ Thread[] allThreadArray = new Thread[1000]
 topThreadGroup.enumerate(allThreadArray)
 allThreadList = Arrays.asList(allThreadArray)
 
+allThreadStackTrace = [:]
+for (thread in allThreadList) {
+    if (thread) {
+        allThreadStackTrace.put(thread.getName(), thread.getStackTrace())
+    }
+}
+
+context.currentThread = currentThread
+context.allThreadStackTrace = allThreadStackTrace
 context.allThreadList = allThreadList
diff --git a/framework/webtools/template/service/Threads.ftl b/framework/webtools/template/service/Threads.ftl
index ff80f6e..0fc3c3f 100644
--- a/framework/webtools/template/service/Threads.ftl
+++ b/framework/webtools/template/service/Threads.ftl
@@ -18,7 +18,7 @@ under the License.
 -->
 <#if parameters.maxElements?has_content><#assign maxElements = parameters.maxElements?number/><#else><#assign maxElements = 10/></#if>
 
-    <p>${uiLabelMap.WebtoolsThisThread}<b> ${Static["java.lang.Thread"].currentThread().getName()} (${Static["java.lang.Thread"].currentThread().getId()})</b></p>
+    <p>${uiLabelMap.WebtoolsThisThread}<b> ${currentThread.getName()} (${currentThread.getId()})</b></p>
     <br />
     <table class="basic-table hover-bar" cellspacing="0">
       <tr class="header-row">
@@ -32,7 +32,7 @@ under the License.
       <#assign alt_row = false>
       <#list allThreadList as javaThread>
       <#if javaThread??>
-        <#assign stackTraceArray = javaThread.getStackTrace()/>
+        <#assign stackTraceArray = allThreadStackTrace.get(javaThread.getName())/>
         <tr valign="middle"<#if alt_row> class="alternate-row"</#if>>
           <td valign="top">${(javaThread.getThreadGroup().getName())!}</td>
           <td valign="top">${javaThread.getId()?string}</td>