This is an automated email from the ASF dual-hosted git repository. dgriffon pushed a commit to branch unomi-1.9.x in repository https://gitbox.apache.org/repos/asf/unomi.git
commit 99f079afd46b6e252867e6e44503e33504b1eb17 Author: David Griffon <dgrif...@jahia.com> AuthorDate: Tue Jul 11 14:10:53 2023 +0200 UNOMI-652 : fix concurrency issue while loading groovy actions (#482) (#633) --- .../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() {