This is an automated email from the ASF dual-hosted git repository.

reschke pushed a commit to branch SLING-12402
in repository 
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-resourceresolver.git


The following commit(s) were added to refs/heads/SLING-12402 by this push:
     new 5da86c1  SLING-12402: metrics for conflicting aliases (WIP)
5da86c1 is described below

commit 5da86c1f412e0faf87caf7988b8de50acd2302bc
Author: Julian Reschke <[email protected]>
AuthorDate: Fri Sep 13 10:51:45 2024 +0100

    SLING-12402: metrics for conflicting aliases (WIP)
---
 .../apache/sling/resourceresolver/impl/mapping/MapEntries.java    | 7 ++++---
 .../sling/resourceresolver/impl/mapping/MapEntriesTest.java       | 8 +++++++-
 2 files changed, 11 insertions(+), 4 deletions(-)

diff --git 
a/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntries.java 
b/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntries.java
index 94b1111..157449a 100644
--- 
a/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntries.java
+++ 
b/src/main/java/org/apache/sling/resourceresolver/impl/mapping/MapEntries.java
@@ -1275,7 +1275,7 @@ public class MapEntries implements
                 for (final String alias : aliasArray) {
                     if (isAliasInvalid(alias)) {
                         long invalids = 
detectedInvalidAliases.incrementAndGet();
-                        log.warn("Encountered invalid alias '{}' under parent 
path '{}' (total {}). Refusing to use it.", alias, parentPath, invalids);
+                        log.warn("Encountered invalid alias '{}' under parent 
path '{}' (total so far: {}). Refusing to use it.", alias, parentPath, 
invalids);
                     } else {
                         Map<String, Collection<String>> parentMap = 
map.computeIfAbsent(parentPath, key -> new ConcurrentHashMap<>());
                         Optional<String> siblingResourceNameWithDuplicateAlias 
= parentMap.entrySet().stream()
@@ -1283,9 +1283,10 @@ public class MapEntries implements
                                 .filter(entry -> 
entry.getValue().contains(alias))
                                 .findFirst().map(Map.Entry::getKey);
                         if (siblingResourceNameWithDuplicateAlias.isPresent()) 
{
+                            long conflicting = 
detectedConflictingAliases.incrementAndGet();
                             log.warn(
-                                    "Encountered duplicate alias '{}' under 
parent path '{}'. Refusing to replace current target {} with {}.",
-                                    alias, parentPath, 
siblingResourceNameWithDuplicateAlias.get(), resourceName);
+                                    "Encountered duplicate alias '{}' under 
parent path '{}'. Refusing to replace current target {} with {}  (total so far: 
{}).",
+                                    alias, parentPath, 
siblingResourceNameWithDuplicateAlias.get(), resourceName, conflicting);
                         } else {
                             Collection<String> existingAliases = 
parentMap.computeIfAbsent(resourceName, name -> new CopyOnWriteArrayList<>());
                             existingAliases.add(alias);
diff --git 
a/src/test/java/org/apache/sling/resourceresolver/impl/mapping/MapEntriesTest.java
 
b/src/test/java/org/apache/sling/resourceresolver/impl/mapping/MapEntriesTest.java
index dce8d3a..1cbe498 100644
--- 
a/src/test/java/org/apache/sling/resourceresolver/impl/mapping/MapEntriesTest.java
+++ 
b/src/test/java/org/apache/sling/resourceresolver/impl/mapping/MapEntriesTest.java
@@ -101,6 +101,7 @@ public class MapEntriesTest extends 
AbstractMappingMapEntriesTest {
 
     private Map<String, Map<String, String>> aliasMap;
     private AtomicLong detectedInvalidAliases;
+    private AtomicLong detectedConflictingAliases;
 
     private int testSize = 5;
 
@@ -172,7 +173,11 @@ public class MapEntriesTest extends 
AbstractMappingMapEntriesTest {
         final Field detectedInvalidAliasesField = 
MapEntries.class.getDeclaredField("detectedInvalidAliases");
         detectedInvalidAliasesField.setAccessible(true);
         this.detectedInvalidAliases = (AtomicLong) 
detectedInvalidAliasesField.get(mapEntries);
-    }
+
+        final Field detectedConflictingAliasesField = 
MapEntries.class.getDeclaredField("detectedConflictingAliases");
+        detectedConflictingAliasesField.setAccessible(true);
+        this.detectedConflictingAliases = (AtomicLong) 
detectedConflictingAliasesField.get(mapEntries);
+}
 
     @Override
     @After
@@ -319,6 +324,7 @@ public class MapEntriesTest extends 
AbstractMappingMapEntriesTest {
         assertNotNull(aliasMap);
         assertTrue(aliasMap.containsKey("child"));
         assertEquals(Collections.singletonList("alias"), 
aliasMap.get("child"));
+        assertEquals(1, detectedConflictingAliases.get());
     }
 
     @Test

Reply via email to