Skip to content

Commit 5a3d893

Browse files
ATLAS-5056: Entity audit should not be created for instances of internal entity-types
1 parent e1fdc6b commit 5a3d893

File tree

1 file changed

+20
-3
lines changed

1 file changed

+20
-3
lines changed

repository/src/main/java/org/apache/atlas/repository/store/graph/v2/AtlasEntityChangeNotifier.java

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,8 +69,6 @@
6969
public class AtlasEntityChangeNotifier implements IAtlasEntityChangeNotifier {
7070
private static final Logger LOG = LoggerFactory.getLogger(AtlasEntityChangeNotifier.class);
7171

72-
private static final Predicate<AtlasEntityHeader> PRED_IS_NOT_TYPE_AUDIT_ENTITY = obj -> !obj.getTypeName().equals(AtlasAuditService.ENTITY_TYPE_AUDIT_ENTRY);
73-
7472
private final Set<EntityChangeListener> entityChangeListeners;
7573
private final Set<EntityChangeListenerV2> entityChangeListenersV2;
7674
private final AtlasInstanceConverter instanceConverter;
@@ -401,7 +399,26 @@ private String getListenerName(EntityChangeListener listener) {
401399
}
402400

403401
private boolean skipAuditEntries(List<AtlasEntityHeader> entityHeaders) {
404-
return CollectionUtils.isEmpty(entityHeaders) || entityHeaders.stream().noneMatch(PRED_IS_NOT_TYPE_AUDIT_ENTITY);
402+
if (CollectionUtils.isEmpty(entityHeaders)) {
403+
return true;
404+
}
405+
406+
// Skip audit if ALL entities are internal types (__AtlasAuditEntry, __AtlasMetricsStat, etc.)
407+
// Return true (skip) only if ALL entities are internal types
408+
// Return false (don't skip) if at least one entity is NOT an internal type
409+
boolean allInternal = entityHeaders.stream().allMatch(entityHeader -> {
410+
String typeName = entityHeader.getTypeName();
411+
AtlasEntityType entityType = atlasTypeRegistry.getEntityTypeByName(typeName);
412+
413+
if (entityType != null) {
414+
return entityType.isInternalType(); //return true if its -> internal type else return false
415+
}
416+
417+
// Fallback: if type not found in registry, check if it starts with "__" (like GraphHelper.isInternalType)
418+
return GraphHelper.isInternalType(typeName);
419+
});
420+
421+
return allInternal;
405422
}
406423

407424
private void notifyListeners(List<AtlasEntityHeader> entityHeaders, EntityOperation operation, boolean isImport) throws AtlasBaseException {

0 commit comments

Comments
 (0)