Skip to content

Commit dad5789

Browse files
Merge pull request #6897 from popa-raluca/dedup-connector
Deduplication - performance fixes
2 parents a21908d + 234b38b commit dad5789

File tree

2 files changed

+19
-9
lines changed

2 files changed

+19
-9
lines changed

open-metadata-implementation/adapters/open-connectors/governance-action-connectors/src/main/java/org/odpi/openmetadata/adapters/connectors/governanceactions/remediation/QualifiedNamePeerDuplicateGovernanceActionConnector.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,7 @@ public void start() throws ConnectorCheckedException {
7878
null, null, null, null, null, true);
7979
outputGuards.add(QualifiedNamePeerDuplicateGovernanceActionProvider.DUPLICATE_ASSIGNED_GUARD);
8080
completionStatus = CompletionStatus.ACTIONED;
81+
break;
8182
}
8283
}
8384
}

open-metadata-implementation/common-services/repository-handler/src/main/java/org/odpi/openmetadata/commonservices/repositoryhandler/DuplicateEntityIterator.java

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import org.odpi.openmetadata.repositoryservices.connectors.stores.metadatacollectionstore.properties.instances.Classification;
1111
import org.odpi.openmetadata.repositoryservices.connectors.stores.metadatacollectionstore.properties.instances.EntityDetail;
1212
import org.odpi.openmetadata.repositoryservices.connectors.stores.metadatacollectionstore.properties.instances.EntityProxy;
13+
import org.odpi.openmetadata.repositoryservices.connectors.stores.metadatacollectionstore.properties.instances.InstanceHeader;
1314
import org.odpi.openmetadata.repositoryservices.connectors.stores.metadatacollectionstore.properties.instances.Relationship;
1415
import org.slf4j.Logger;
1516
import org.slf4j.LoggerFactory;
@@ -19,6 +20,7 @@
1920
import java.util.HashSet;
2021
import java.util.List;
2122
import java.util.Set;
23+
import java.util.stream.Collectors;
2224

2325
/**
2426
* DuplicateEntityIterator retrieves the list of entities that need to be processed for a specific entity.
@@ -180,6 +182,7 @@ private void getNextEntity() throws InvalidParameterException,
180182
{
181183
log.debug("KnownDuplicate classification detected");
182184
deduplicationNeeded = true;
185+
break;
183186
}
184187
}
185188
}
@@ -269,17 +272,23 @@ private void getNextEntity() throws InvalidParameterException,
269272
*/
270273
final String guidParameterName = "peerProxy.getGUID()";
271274

272-
EntityDetail peerEntity = repositoryHandler.validateEntityGUID(userId,
273-
peerProxy.getGUID(),
274-
guidParameterName,
275-
entityTypeName,
276-
methodName);
277-
278275
/*
279-
* Save the entity for later processing since it may link to peer entities that the current processing entity
280-
* does not know about.
276+
* Filter out the peers that were already added to the list of unprocessed peers.
281277
*/
282-
unprocessedPeers.add(peerEntity);
278+
if(!unprocessedPeers.stream().map(InstanceHeader::getGUID).collect(Collectors.toList()).contains(peerProxy.getGUID()))
279+
{
280+
EntityDetail peerEntity = repositoryHandler.validateEntityGUID(userId,
281+
peerProxy.getGUID(),
282+
guidParameterName,
283+
entityTypeName,
284+
methodName);
285+
286+
/*
287+
* Save the entity for later processing since it may link to peer entities that the current processing entity
288+
* does not know about.
289+
*/
290+
unprocessedPeers.add(peerEntity);
291+
}
283292
}
284293
}
285294
}

0 commit comments

Comments
 (0)