[jira] [Commented] (SLING-12160) ConcurrentModificationException in ResourceMapperImpl.readAliases()

2023-11-20 Thread Konrad Windszus (Jira)


[ 
https://issues.apache.org/jira/browse/SLING-12160?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17787921#comment-17787921
 ] 

Konrad Windszus commented on SLING-12160:
-

bq. The code in this area does not modify the hashmap (just traverses the 
entrySet), so there must be clash between iteration and modification of the 
internal Map (MapEntries.aliasMap).

Yes for sure. But this must not happen as in general one cannot prevent updates 
from happening at the same time (triggered through Resource Observation).

> ConcurrentModificationException in ResourceMapperImpl.readAliases()
> ---
>
> Key: SLING-12160
> URL: https://issues.apache.org/jira/browse/SLING-12160
> Project: Sling
>  Issue Type: Bug
>  Components: ResourceResolver
>Affects Versions: Resource Resolver 1.7.10
>Reporter: Konrad Windszus
>Priority: Major
>
> I have seen the following exception with Resource Resolver 1.7.10 triggered 
> by calling {{ResourceResolver.map(...)}}
> {code}
> java.util.ConcurrentModificationException
>   at 
> java.base/java.util.LinkedHashMap$LinkedHashIterator.nextNode(LinkedHashMap.java:719)
>   at 
> java.base/java.util.LinkedHashMap$LinkedEntryIterator.next(LinkedHashMap.java:751)
>   at 
> java.base/java.util.LinkedHashMap$LinkedEntryIterator.next(LinkedHashMap.java:749)
>   at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
>   at 
> java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
>   at 
> java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
>   at 
> java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
>   at 
> java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
>   at 
> java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
>   at 
> java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
>   at 
> org.apache.sling.resourceresolver.impl.mapping.ResourceMapperImpl.readAliases(ResourceMapperImpl.java:249)
>   at 
> org.apache.sling.resourceresolver.impl.mapping.ResourceMapperImpl.loadAliasesIfApplicable(ResourceMapperImpl.java:209)
>   at 
> org.apache.sling.resourceresolver.impl.mapping.ResourceMapperImpl.getAllMappings(ResourceMapperImpl.java:147)
>   at 
> org.apache.sling.resourceresolver.impl.mapping.ResourceMapperImpl.getMapping(ResourceMapperImpl.java:73)
>   at 
> org.apache.sling.resourceresolver.impl.ResourceResolverImpl.map(ResourceResolverImpl.java:444)
>   at 
> org.apache.sling.resourceresolver.impl.ResourceResolverImpl.map(ResourceResolverImpl.java:431)
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Commented] (SLING-12160) ConcurrentModificationException in ResourceMapperImpl.readAliases()

2023-11-20 Thread Robert Munteanu (Jira)


[ 
https://issues.apache.org/jira/browse/SLING-12160?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17787909#comment-17787909
 ] 

Robert Munteanu commented on SLING-12160:
-

Without looking at the code - unguarded traversal of a HashMap that is modified 
by another thread can lead to ill-effects and must not happen. The main problem 
is not reading stale data, but rather reading the iterators getting an 
inconsistent internal state and entering endless loops or throwing exceptions.



> ConcurrentModificationException in ResourceMapperImpl.readAliases()
> ---
>
> Key: SLING-12160
> URL: https://issues.apache.org/jira/browse/SLING-12160
> Project: Sling
>  Issue Type: Bug
>  Components: ResourceResolver
>Affects Versions: Resource Resolver 1.7.10
>Reporter: Konrad Windszus
>Priority: Major
>
> I have seen the following exception with Resource Resolver 1.7.10 triggered 
> by calling {{ResourceResolver.map(...)}}
> {code}
> java.util.ConcurrentModificationException
>   at 
> java.base/java.util.LinkedHashMap$LinkedHashIterator.nextNode(LinkedHashMap.java:719)
>   at 
> java.base/java.util.LinkedHashMap$LinkedEntryIterator.next(LinkedHashMap.java:751)
>   at 
> java.base/java.util.LinkedHashMap$LinkedEntryIterator.next(LinkedHashMap.java:749)
>   at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
>   at 
> java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
>   at 
> java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
>   at 
> java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
>   at 
> java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
>   at 
> java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
>   at 
> java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
>   at 
> org.apache.sling.resourceresolver.impl.mapping.ResourceMapperImpl.readAliases(ResourceMapperImpl.java:249)
>   at 
> org.apache.sling.resourceresolver.impl.mapping.ResourceMapperImpl.loadAliasesIfApplicable(ResourceMapperImpl.java:209)
>   at 
> org.apache.sling.resourceresolver.impl.mapping.ResourceMapperImpl.getAllMappings(ResourceMapperImpl.java:147)
>   at 
> org.apache.sling.resourceresolver.impl.mapping.ResourceMapperImpl.getMapping(ResourceMapperImpl.java:73)
>   at 
> org.apache.sling.resourceresolver.impl.ResourceResolverImpl.map(ResourceResolverImpl.java:444)
>   at 
> org.apache.sling.resourceresolver.impl.ResourceResolverImpl.map(ResourceResolverImpl.java:431)
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Commented] (SLING-12160) ConcurrentModificationException in ResourceMapperImpl.readAliases()

2023-11-19 Thread Joerg Hoh (Jira)


[ 
https://issues.apache.org/jira/browse/SLING-12160?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17787649#comment-17787649
 ] 

Joerg Hoh commented on SLING-12160:
---

Can you give me some context on that exception? The code in this area does not 
modify the hashmap (just traverses the entrySet), so there must be clash 
between iteration and modification of the internal Map (MapEntries.aliasMap).

Checking the MapEntries class itself, I would definitely say, that the aliasMap 
is not guarded against concurrent access.





> ConcurrentModificationException in ResourceMapperImpl.readAliases()
> ---
>
> Key: SLING-12160
> URL: https://issues.apache.org/jira/browse/SLING-12160
> Project: Sling
>  Issue Type: Bug
>  Components: ResourceResolver
>Affects Versions: Resource Resolver 1.7.10
>Reporter: Konrad Windszus
>Priority: Major
>
> I have seen the following exception with Resource Resolver 1.7.10 triggered 
> by calling {{ResourceResolver.map(...)}}
> {code}
> java.util.ConcurrentModificationException
>   at 
> java.base/java.util.LinkedHashMap$LinkedHashIterator.nextNode(LinkedHashMap.java:719)
>   at 
> java.base/java.util.LinkedHashMap$LinkedEntryIterator.next(LinkedHashMap.java:751)
>   at 
> java.base/java.util.LinkedHashMap$LinkedEntryIterator.next(LinkedHashMap.java:749)
>   at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
>   at 
> java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
>   at 
> java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
>   at 
> java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
>   at 
> java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
>   at 
> java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
>   at 
> java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
>   at 
> org.apache.sling.resourceresolver.impl.mapping.ResourceMapperImpl.readAliases(ResourceMapperImpl.java:249)
>   at 
> org.apache.sling.resourceresolver.impl.mapping.ResourceMapperImpl.loadAliasesIfApplicable(ResourceMapperImpl.java:209)
>   at 
> org.apache.sling.resourceresolver.impl.mapping.ResourceMapperImpl.getAllMappings(ResourceMapperImpl.java:147)
>   at 
> org.apache.sling.resourceresolver.impl.mapping.ResourceMapperImpl.getMapping(ResourceMapperImpl.java:73)
>   at 
> org.apache.sling.resourceresolver.impl.ResourceResolverImpl.map(ResourceResolverImpl.java:444)
>   at 
> org.apache.sling.resourceresolver.impl.ResourceResolverImpl.map(ResourceResolverImpl.java:431)
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Commented] (SLING-12160) ConcurrentModificationException in ResourceMapperImpl.readAliases()

2023-11-17 Thread Konrad Windszus (Jira)


[ 
https://issues.apache.org/jira/browse/SLING-12160?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17787141#comment-17787141
 ] 

Konrad Windszus commented on SLING-12160:
-

I think the easiest fix is to create a new map in 
https://github.com/apache/sling-org-apache-sling-resourceresolver/blob/938fbfd176c58a9fb5bc5d18a37b47eb5c3c53bd/src/main/java/org/apache/sling/resourceresolver/impl/mapping/ResourceMapperImpl.java#L289
 before iterating.

> ConcurrentModificationException in ResourceMapperImpl.readAliases()
> ---
>
> Key: SLING-12160
> URL: https://issues.apache.org/jira/browse/SLING-12160
> Project: Sling
>  Issue Type: Bug
>  Components: ResourceResolver
>Affects Versions: Resource Resolver 1.7.10
>Reporter: Konrad Windszus
>Priority: Major
>
> I have seen the following exception with Resource Resolver 1.7.10 triggered 
> by calling {{ResourceResolver.map(...)}}
> {code}
> java.util.ConcurrentModificationException
>   at 
> java.base/java.util.LinkedHashMap$LinkedHashIterator.nextNode(LinkedHashMap.java:719)
>   at 
> java.base/java.util.LinkedHashMap$LinkedEntryIterator.next(LinkedHashMap.java:751)
>   at 
> java.base/java.util.LinkedHashMap$LinkedEntryIterator.next(LinkedHashMap.java:749)
>   at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
>   at 
> java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
>   at 
> java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
>   at 
> java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
>   at 
> java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
>   at 
> java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
>   at 
> java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
>   at 
> org.apache.sling.resourceresolver.impl.mapping.ResourceMapperImpl.readAliases(ResourceMapperImpl.java:249)
>   at 
> org.apache.sling.resourceresolver.impl.mapping.ResourceMapperImpl.loadAliasesIfApplicable(ResourceMapperImpl.java:209)
>   at 
> org.apache.sling.resourceresolver.impl.mapping.ResourceMapperImpl.getAllMappings(ResourceMapperImpl.java:147)
>   at 
> org.apache.sling.resourceresolver.impl.mapping.ResourceMapperImpl.getMapping(ResourceMapperImpl.java:73)
>   at 
> org.apache.sling.resourceresolver.impl.ResourceResolverImpl.map(ResourceResolverImpl.java:444)
>   at 
> org.apache.sling.resourceresolver.impl.ResourceResolverImpl.map(ResourceResolverImpl.java:431)
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Commented] (SLING-12160) ConcurrentModificationException in ResourceMapperImpl.readAliases()

2023-11-17 Thread Konrad Windszus (Jira)


[ 
https://issues.apache.org/jira/browse/SLING-12160?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17787139#comment-17787139
 ] 

Konrad Windszus commented on SLING-12160:
-

[~joerghoh] Can you maybe look a that?

> ConcurrentModificationException in ResourceMapperImpl.readAliases()
> ---
>
> Key: SLING-12160
> URL: https://issues.apache.org/jira/browse/SLING-12160
> Project: Sling
>  Issue Type: Bug
>  Components: ResourceResolver
>Affects Versions: Resource Resolver 1.7.10
>Reporter: Konrad Windszus
>Priority: Major
>
> I have seen the following exception with Resource Resolver 1.7.10 triggered 
> by calling {{ResourceResolver.map(...)}}
> {code}
> java.util.ConcurrentModificationException
>   at 
> java.base/java.util.LinkedHashMap$LinkedHashIterator.nextNode(LinkedHashMap.java:719)
>   at 
> java.base/java.util.LinkedHashMap$LinkedEntryIterator.next(LinkedHashMap.java:751)
>   at 
> java.base/java.util.LinkedHashMap$LinkedEntryIterator.next(LinkedHashMap.java:749)
>   at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
>   at 
> java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
>   at 
> java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
>   at 
> java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
>   at 
> java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
>   at 
> java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
>   at 
> java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
>   at 
> org.apache.sling.resourceresolver.impl.mapping.ResourceMapperImpl.readAliases(ResourceMapperImpl.java:249)
>   at 
> org.apache.sling.resourceresolver.impl.mapping.ResourceMapperImpl.loadAliasesIfApplicable(ResourceMapperImpl.java:209)
>   at 
> org.apache.sling.resourceresolver.impl.mapping.ResourceMapperImpl.getAllMappings(ResourceMapperImpl.java:147)
>   at 
> org.apache.sling.resourceresolver.impl.mapping.ResourceMapperImpl.getMapping(ResourceMapperImpl.java:73)
>   at 
> org.apache.sling.resourceresolver.impl.ResourceResolverImpl.map(ResourceResolverImpl.java:444)
>   at 
> org.apache.sling.resourceresolver.impl.ResourceResolverImpl.map(ResourceResolverImpl.java:431)
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)


[jira] [Commented] (SLING-12160) ConcurrentModificationException in ResourceMapperImpl.readAliases()

2023-11-17 Thread Konrad Windszus (Jira)


[ 
https://issues.apache.org/jira/browse/SLING-12160?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=17787137#comment-17787137
 ] 

Konrad Windszus commented on SLING-12160:
-

I think this may happen when the {{MappingEntries}} are modified while 
iterating through 
https://github.com/apache/sling-org-apache-sling-resourceresolver/blob/a314ef3ce2e826bfde26493738ed94316c18bfbf/src/main/java/org/apache/sling/resourceresolver/impl/mapping/ResourceMapperImpl.java#L246

> ConcurrentModificationException in ResourceMapperImpl.readAliases()
> ---
>
> Key: SLING-12160
> URL: https://issues.apache.org/jira/browse/SLING-12160
> Project: Sling
>  Issue Type: Bug
>  Components: ResourceResolver
>Affects Versions: Resource Resolver 1.7.10
>Reporter: Konrad Windszus
>Priority: Major
>
> I have seen the following exception with Resource Resolver 1.7.10 triggered 
> by calling {{ResourceResolver.map(...)}}
> {code}
> java.util.ConcurrentModificationException
>   at 
> java.base/java.util.LinkedHashMap$LinkedHashIterator.nextNode(LinkedHashMap.java:719)
>   at 
> java.base/java.util.LinkedHashMap$LinkedEntryIterator.next(LinkedHashMap.java:751)
>   at 
> java.base/java.util.LinkedHashMap$LinkedEntryIterator.next(LinkedHashMap.java:749)
>   at java.base/java.util.Iterator.forEachRemaining(Iterator.java:133)
>   at 
> java.base/java.util.Spliterators$IteratorSpliterator.forEachRemaining(Spliterators.java:1801)
>   at 
> java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
>   at 
> java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
>   at 
> java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:913)
>   at 
> java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
>   at 
> java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:578)
>   at 
> org.apache.sling.resourceresolver.impl.mapping.ResourceMapperImpl.readAliases(ResourceMapperImpl.java:249)
>   at 
> org.apache.sling.resourceresolver.impl.mapping.ResourceMapperImpl.loadAliasesIfApplicable(ResourceMapperImpl.java:209)
>   at 
> org.apache.sling.resourceresolver.impl.mapping.ResourceMapperImpl.getAllMappings(ResourceMapperImpl.java:147)
>   at 
> org.apache.sling.resourceresolver.impl.mapping.ResourceMapperImpl.getMapping(ResourceMapperImpl.java:73)
>   at 
> org.apache.sling.resourceresolver.impl.ResourceResolverImpl.map(ResourceResolverImpl.java:444)
>   at 
> org.apache.sling.resourceresolver.impl.ResourceResolverImpl.map(ResourceResolverImpl.java:431)
> {code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)