From b1e9a1f403e364e16da0519d631d05fb4e3235dd Mon Sep 17 00:00:00 2001 From: Philip Marzullo Date: Wed, 18 Nov 2020 12:44:21 -0500 Subject: [PATCH] 0004254: Multi-master configuration with 3 nodes doesn't work (see note added to issue) --- .../symmetric/service/impl/TriggerRouterService.java | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/TriggerRouterService.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/TriggerRouterService.java index 0dc359bf39..3016f1003f 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/TriggerRouterService.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/TriggerRouterService.java @@ -477,10 +477,13 @@ protected Trigger buildTriggerForSymmetricTable(String tableName) { boolean syncChanges = !TableConstants.getTablesThatDoNotSync(tablePrefix).contains( tableName) && parameterService.is(ParameterConstants.AUTO_SYNC_CONFIGURATION); - boolean syncOnIncoming = !configurationService.isMasterToMaster() && (parameterService.is( - ParameterConstants.AUTO_SYNC_CONFIGURATION_ON_INCOMING, true) - || tableName.equals(TableConstants.getTableName(tablePrefix, - TableConstants.SYM_TABLE_RELOAD_REQUEST))); + // sync on incoming for symmetric tables are blocked from being synchronized to other nodes when + // master to master is set up. We need to allow sync on incoming at the registration server so that + // tables like sym_node and sym_node_security are delivered to other nodes in the master to master + // and the other nodes will then be able to synchronize with non-registration nodes. + boolean syncOnIncoming = (!configurationService.isMasterToMaster() || nodeService.isRegistrationServer()) + && (parameterService.is(ParameterConstants.AUTO_SYNC_CONFIGURATION_ON_INCOMING, true) + || tableName.equals(TableConstants.getTableName(tablePrefix,TableConstants.SYM_TABLE_RELOAD_REQUEST))); Trigger trigger = new Trigger(); trigger.setUseHandleKeyUpdates(false); trigger.setTriggerId(tableName);