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() {