This is an automated email from the ASF dual-hosted git repository.
pauls pushed a commit to branch SLING-7371
in repository
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-resourceresolver.git
The following commit(s) were added to refs/heads/SLING-7371 by this push:
new ca9bf3a SLING-7371: synchronize access to the handlers inside
ResourceProviderTracker to avoid a ConcurrentModificationException.
ca9bf3a is described below
commit ca9bf3a48bd4bd7ccb44dd5b98b734580e0ce62d
Author: Karl Pauls <[email protected]>
AuthorDate: Wed Jan 10 17:44:32 2018 +0100
SLING-7371: synchronize access to the handlers inside
ResourceProviderTracker to avoid a ConcurrentModificationException.
---
.../impl/providers/ResourceProviderTracker.java | 14 ++++++++------
1 file changed, 8 insertions(+), 6 deletions(-)
diff --git
a/src/main/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderTracker.java
b/src/main/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderTracker.java
index 2b04a64..85cc1c3 100644
---
a/src/main/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderTracker.java
+++
b/src/main/java/org/apache/sling/resourceresolver/impl/providers/ResourceProviderTracker.java
@@ -349,7 +349,9 @@ public class ResourceProviderTracker implements
ResourceProviderStorageProvider
* @param handler The provider handler
*/
private boolean activate(final ResourceProviderHandler handler) {
- updateProviderContext(handler);
+ synchronized (this.handlers) {
+ updateProviderContext(handler);
+ }
if ( !handler.activate() ) {
logger.warn("Activating resource provider {} failed",
handler.getInfo());
this.invalidProviders.put(handler.getInfo(),
FailureReason.service_not_gettable);
@@ -481,13 +483,13 @@ public class ResourceProviderTracker implements
ResourceProviderStorageProvider
private void updateProviderContext(final ResourceProviderHandler handler) {
final Set<String> excludedPaths = new HashSet<>();
final Path handlerPath = new Path(handler.getPath());
- synchronized (handlers) {
- for(final String otherPath : handlers.keySet()) {
- if ( !handler.getPath().equals(otherPath) &&
handlerPath.matches(otherPath) ) {
- excludedPaths.add(otherPath);
- }
+
+ for(final String otherPath : handlers.keySet()) {
+ if ( !handler.getPath().equals(otherPath) &&
handlerPath.matches(otherPath) ) {
+ excludedPaths.add(otherPath);
}
}
+
final PathSet excludedPathSet =
PathSet.fromStringCollection(excludedPaths);
handler.getProviderContext().update(
reporterGenerator.create(handlerPath, excludedPathSet),
--
To stop receiving notification emails like this one, please contact
['"[email protected]" <[email protected]>'].