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