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

dgriffon pushed a commit to branch backport-groovy-actions-concurrency-issue
in repository https://gitbox.apache.org/repos/asf/unomi.git

commit d4a782b04ff6b7b46f6b965bb4718219131e7d58
Author: David Griffon <dgrif...@jahia.com>
AuthorDate: Tue Aug 30 11:37:28 2022 +0200

    UNOMI-652 : fix concurrency issue while loading groovy actions (#482)
---
 .../groovy/actions/services/impl/GroovyActionsServiceImpl.java   | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git 
a/extensions/groovy-actions/services/src/main/java/org/apache/unomi/groovy/actions/services/impl/GroovyActionsServiceImpl.java
 
b/extensions/groovy-actions/services/src/main/java/org/apache/unomi/groovy/actions/services/impl/GroovyActionsServiceImpl.java
index fc2f62c1f..b72a089b4 100644
--- 
a/extensions/groovy-actions/services/src/main/java/org/apache/unomi/groovy/actions/services/impl/GroovyActionsServiceImpl.java
+++ 
b/extensions/groovy-actions/services/src/main/java/org/apache/unomi/groovy/actions/services/impl/GroovyActionsServiceImpl.java
@@ -131,7 +131,7 @@ public class GroovyActionsServiceImpl implements 
GroovyActionsService {
         logger.info("Groovy action service initialized.");
     }
 
-    public void onDestroy(){
+    public void onDestroy() {
         logger.debug("onDestroy Method called");
         scheduledFuture.cancel(true);
     }
@@ -251,11 +251,12 @@ public class GroovyActionsServiceImpl implements 
GroovyActionsService {
     }
 
     private void refreshGroovyActions() {
+        Map<String, GroovyCodeSource> refreshedGroovyCodeSourceMap = new 
HashMap<>();
         GroovyCodeSource baseScript = 
groovyCodeSourceMap.get(BASE_SCRIPT_NAME);
-        groovyCodeSourceMap = new HashMap<>();
-        groovyCodeSourceMap.put(BASE_SCRIPT_NAME, baseScript);
-        
persistenceService.getAllItems(GroovyAction.class).forEach(groovyAction -> 
groovyCodeSourceMap
+        refreshedGroovyCodeSourceMap.put(BASE_SCRIPT_NAME, baseScript);
+        
persistenceService.getAllItems(GroovyAction.class).forEach(groovyAction -> 
refreshedGroovyCodeSourceMap
                 .put(groovyAction.getName(), 
buildClassScript(groovyAction.getScript(), groovyAction.getName())));
+        groovyCodeSourceMap = refreshedGroovyCodeSourceMap;
     }
 
     private void initializeTimers() {

Reply via email to