From 55d943f4cf434c10fbc5698dd8390108194c41db Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lukas=20W=C3=B6hrl?= Date: Thu, 21 Dec 2017 15:30:36 +0100 Subject: [PATCH] 0003340: FileSyncExtractorService sets IG on non file batches --- .../service/impl/DataExtractorService.java | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataExtractorService.java b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataExtractorService.java index 8ad49c4630..8f15c4246e 100644 --- a/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataExtractorService.java +++ b/symmetric-core/src/main/java/org/jumpmind/symmetric/service/impl/DataExtractorService.java @@ -1738,6 +1738,28 @@ protected void updateExtractRequestStatus(ISqlTransaction transaction, long extr extractId); } + public boolean CanProcessExtractRequest(ExtractRequest request, CommunicationType communicationType){ + + boolean isFileExtractor = communicationType == CommunicationType.FILE_XTRCT; + + boolean isFileChannel = false; + if(request.getTriggerRouter() == null){ + isFileChannel = true; + }else { + Trigger trigger = this.triggerRouterService.getTriggerById(request.getTriggerRouter().getTriggerId()); + if(trigger == null){ + isFileChannel = true; + }else{ + Channel channel = configurationService.getChannel(trigger.getChannelId()); + if(channel == null || channel.isFileSyncFlag()){ + isFileChannel = true; + } + } + } + + return !isFileChannel ^ isFileExtractor; + } + /** * This is a callback method used by the NodeCommunicationService that extracts an initial load * in the background. @@ -1757,6 +1779,9 @@ public void execute(NodeCommunication nodeCommunication, RemoteNodeStatus status for (int i = 0; i < requests.size() && (System.currentTimeMillis() - ts) <= Constants.LONG_OPERATION_THRESHOLD; i++) { ExtractRequest request = requests.get(i); + if(!CanProcessExtractRequest(request, nodeCommunication.getCommunicationType())){ + continue; + } Node identity = nodeService.findIdentity(); Node targetNode = nodeService.findNode(nodeCommunication.getNodeId()); log.info(