This is an automated email from the ASF dual-hosted git repository. reschke pushed a commit to branch SLING-12738 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-resourceresolver.git
commit 271cf0ad09ba1aa8b4faa4b70ece17ea334ce33d Author: Julian Reschke <[email protected]> AuthorDate: Sun Apr 6 11:03:36 2025 +0100 Revert "ResourceResolver is not closed by AliasHandler" This reverts commit ffb1432c7cdfa52819a1ee6a03195f8cf6ff5402. --- .../impl/mapping/AliasHandler.java | 85 +++++++++++----------- 1 file changed, 41 insertions(+), 44 deletions(-) diff --git a/src/main/java/org/apache/sling/resourceresolver/impl/mapping/AliasHandler.java b/src/main/java/org/apache/sling/resourceresolver/impl/mapping/AliasHandler.java index f268d88a..d83c7135 100644 --- a/src/main/java/org/apache/sling/resourceresolver/impl/mapping/AliasHandler.java +++ b/src/main/java/org/apache/sling/resourceresolver/impl/mapping/AliasHandler.java @@ -281,60 +281,57 @@ class AliasHandler { * configured alias locations having the sling:alias property */ private Map<String, Map<String, Collection<String>>> loadAliases( - List<String> conflictingAliases, List<String> invalidAliases) { + List<String> conflictingAliases, List<String> invalidAliases) throws LoginException { - final Map<String, Map<String, Collection<String>>> map = new ConcurrentHashMap<>(); + final ResourceResolver resolver = + factory.getServiceResourceResolver(factory.getServiceUserAuthenticationInfo("mapping")); - try (final ResourceResolver resolver = - factory.getServiceResourceResolver(factory.getServiceUserAuthenticationInfo("mapping"))) { - final String baseQueryString = generateAliasQuery(); - - Iterator<Resource> it; - try { - final String queryStringWithSort = - baseQueryString + " AND FIRST([sling:alias]) >= '%s' ORDER BY FIRST([sling:alias])"; - it = new PagedQueryIterator("alias", "sling:alias", resolver, queryStringWithSort, 2000); - } catch (QuerySyntaxException ex) { - log.debug("sort with first() not supported, falling back to base query", ex); - it = queryUnpaged(baseQueryString, resolver); - } catch (UnsupportedOperationException ex) { - log.debug("query failed as unsupported, retrying without paging/sorting", ex); - it = queryUnpaged(baseQueryString, resolver); - } + final Map<String, Map<String, Collection<String>>> map = new ConcurrentHashMap<>(); + final String baseQueryString = generateAliasQuery(); - log.debug("alias initialization - start"); - long count = 0; - long processStart = System.nanoTime(); - while (it.hasNext()) { - count += 1; - loadAlias(it.next(), map, conflictingAliases, invalidAliases); - } - long processElapsed = System.nanoTime() - processStart; - long resourcePerSecond = (count * TimeUnit.SECONDS.toNanos(1) / (processElapsed == 0 ? 1 : processElapsed)); + Iterator<Resource> it; + try { + final String queryStringWithSort = + baseQueryString + " AND FIRST([sling:alias]) >= '%s' ORDER BY FIRST([sling:alias])"; + it = new PagedQueryIterator("alias", "sling:alias", resolver, queryStringWithSort, 2000); + } catch (QuerySyntaxException ex) { + log.debug("sort with first() not supported, falling back to base query", ex); + it = queryUnpaged(baseQueryString, resolver); + } catch (UnsupportedOperationException ex) { + log.debug("query failed as unsupported, retrying without paging/sorting", ex); + it = queryUnpaged(baseQueryString, resolver); + } - String diagnostics = ""; - if (it instanceof PagedQueryIterator) { - PagedQueryIterator pit = (PagedQueryIterator) it; + log.debug("alias initialization - start"); + long count = 0; + long processStart = System.nanoTime(); + while (it.hasNext()) { + count += 1; + loadAlias(it.next(), map, conflictingAliases, invalidAliases); + } + long processElapsed = System.nanoTime() - processStart; + long resourcePerSecond = (count * TimeUnit.SECONDS.toNanos(1) / (processElapsed == 0 ? 1 : processElapsed)); - if (!pit.getWarning().isEmpty()) { - log.warn(pit.getWarning()); - } + String diagnostics = ""; + if (it instanceof PagedQueryIterator) { + PagedQueryIterator pit = (PagedQueryIterator) it; - diagnostics = pit.getStatistics(); + if (!pit.getWarning().isEmpty()) { + log.warn(pit.getWarning()); } - log.info( - "alias initialization - completed, processed {} resources with sling:alias properties in {}ms (~{} resource/s){}", - count, - TimeUnit.NANOSECONDS.toMillis(processElapsed), - resourcePerSecond, - diagnostics); - - this.aliasResourcesOnStartup.set(count); - } catch (LoginException ex) { - log.error("Alias init failed", ex); + diagnostics = pit.getStatistics(); } + log.info( + "alias initialization - completed, processed {} resources with sling:alias properties in {}ms (~{} resource/s){}", + count, + TimeUnit.NANOSECONDS.toMillis(processElapsed), + resourcePerSecond, + diagnostics); + + this.aliasResourcesOnStartup.set(count); + return map; }
