@Test public void testCommonBatchPingback() { resetBatches(); // Route the data from table 1 to the client node group using default router // (Nodes 00001 and 00003 since 2 is disabled) final TriggerRouter trigger1 = getTestRoutingTableTrigger(TEST_TABLE_1); trigger1.getTrigger().setSyncOnIncomingBatch(true); trigger1.getRouter().setRouterExpression(null); trigger1.getRouter().setRouterType(null); trigger1.getTrigger().setChannelId(TestConstants.TEST_CHANNEL_ID); getTriggerRouterService().saveTriggerRouter(trigger1); // Route the data from table 2 to the client node group using default router // (Nodes 00001 and 00003 since 2 is disabled) final TriggerRouter trigger2 = getTestRoutingTableTrigger(TEST_TABLE_1); trigger2.getTrigger().setSyncOnIncomingBatch(true); trigger2.getRouter().setRouterExpression(null); trigger2.getRouter().setRouterType(null); trigger2.getTrigger().setChannelId(TestConstants.TEST_CHANNEL_ID); getTriggerRouterService().saveTriggerRouter(trigger2); // Use the same channel as this keeps a cached context from nodeId to batches // which causes the issue with batchIdToReuse NodeChannel testChannel = getConfigurationService().getNodeChannel( TestConstants.TEST_CHANNEL_ID, false); testChannel.setMaxBatchToSend(1000); testChannel.setMaxBatchSize(50); testChannel.setBatchAlgorithm("default"); getConfigurationService().saveChannel(testChannel, true); getTriggerRouterService().syncTriggers(); // Data to from node 3 should route to node 1 via sync_on_incoming_batch insert(TEST_TABLE_1, 1, true, NODE_GROUP_NODE_3.getNodeId()); // Data to from node 1 should route to node 3 via sync_on_incoming_batch insert(TEST_TABLE_1, 1, true, NODE_GROUP_NODE_1.getNodeId()); getRouterService().routeData(true); // Query for data that is pinged back List pingedBackData = getSqlTemplate().query("" + "SELECT NODE_ID, SOURCE_NODE_ID, sd.* FROM SYM_DATA_EVENT sde\n" + " JOIN SYM_OUTGOING_BATCH sob ON (sde.batch_id = sob.batch_id)\n" + " JOIN SYM_DATA sd ON (sde.data_id = sd.data_id)\n" + " WHERE sd.source_node_id = sob.node_id"); Assert.assertTrue("We should have no pingback data but we found: " + pingedBackData.size(), pingedBackData.isEmpty()); resetBatches(); }