diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/route/ConfigurationChangedDataRouter.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/route/ConfigurationChangedDataRouter.java index f8e81acd9f..57a111cfd0 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/route/ConfigurationChangedDataRouter.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/route/ConfigurationChangedDataRouter.java @@ -95,6 +95,9 @@ public class ConfigurationChangedDataRouter extends AbstractDataRouter implement final String CTX_KEY_FLUSHED_TRIGGER_ROUTERS = "FlushedTriggerRouters." + ConfigurationChangedDataRouter.class.getSimpleName() + hashCode(); + + final String CTX_KEY_FLUSH_NODE_GROUP_LINK_NEEDED = "FlushNodeGroupLink." + + ConfigurationChangedDataRouter.class.getSimpleName() + hashCode(); public final static String KEY = "symconfig"; @@ -239,6 +242,10 @@ public Set routeToNodes(SimpleRouterContext routingContext, DataMetaData if (tableMatches(dataMetaData, TableConstants.SYM_NOTIFICATION)) { routingContext.put(CTX_KEY_FLUSH_NOTIFICATIONS_NEEDED, Boolean.TRUE); } + + if (tableMatches(dataMetaData, TableConstants.SYM_NODE_GROUP_LINK)) { + routingContext.put(CTX_KEY_FLUSH_NODE_GROUP_LINK_NEEDED, Boolean.TRUE); + } } } @@ -633,6 +640,12 @@ public void contextCommitted(SimpleRouterContext routingContext) { log.info("About to refresh the cache of node security because new configuration came through the data router"); engine.getNodeService().flushNodeAuthorizedCache(); } + + if (routingContext.get(CTX_KEY_FLUSH_NODE_GROUP_LINK_NEEDED) != null) { + log.info("About to refresh the cache of node group link because new configuration came through the data router"); + engine.getConfigurationService().clearCache(); + engine.getNodeService().flushNodeGroupCache(); + } } }