This is an automated email from the ASF dual-hosted git repository.
reschke pushed a commit to branch 1.x
in repository
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-resourceresolver.git
The following commit(s) were added to refs/heads/1.x by this push:
new 06d121f0 SLING-12738: ResourceResolver is not closed by AliasHandler
06d121f0 is described below
commit 06d121f0be7e528f392d0ebb93f980c2a33ef34d
Author: Julian Reschke <[email protected]>
AuthorDate: Sun Apr 6 11:04:04 2025 +0100
SLING-12738: ResourceResolver is not closed by AliasHandler
---
.../impl/mapping/AliasHandler.java | 85 +++++++++++-----------
1 file changed, 44 insertions(+), 41 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 bbb91f2a..6451d439 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
@@ -295,56 +295,59 @@ class AliasHandler {
* configured alias locations having the sling:alias property
*/
private Map<String, Map<String, Collection<String>>> loadAliases(
- List<String> conflictingAliases, List<String> invalidAliases)
throws LoginException {
-
- final ResourceResolver resolver =
-
factory.getServiceResourceResolver(factory.getServiceUserAuthenticationInfo("mapping"));
+ List<String> conflictingAliases, List<String> invalidAliases) {
final Map<String, Map<String, Collection<String>>> map = new
ConcurrentHashMap<>();
- 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);
- }
+ 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);
+ }
- 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));
+ 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));
- String diagnostics = "";
- if (it instanceof PagedQueryIterator) {
- PagedQueryIterator pit = (PagedQueryIterator) it;
+ String diagnostics = "";
+ if (it instanceof PagedQueryIterator) {
+ PagedQueryIterator pit = (PagedQueryIterator) it;
- if (!pit.getWarning().isEmpty()) {
- log.warn(pit.getWarning());
- }
+ if (!pit.getWarning().isEmpty()) {
+ log.warn(pit.getWarning());
+ }
- diagnostics = pit.getStatistics();
- }
+ 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);
+ 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);
+ this.aliasResourcesOnStartup.set(count);
+ } catch (LoginException ex) {
+ log.error("Alias init failed", ex);
+ }
return map;
}