xmlgraphics-general mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "simon steiner (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (XGC-117) ConcurrentModificationException in ImageCache / ImageCache not thread-safe
Date Tue, 11 Dec 2018 08:22:00 GMT

    [ https://issues.apache.org/jira/browse/XGC-117?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16716521#comment-16716521
] 

simon steiner commented on XGC-117:
-----------------------------------

You should use 1 fopfactory per thread

> ConcurrentModificationException in ImageCache / ImageCache not thread-safe
> --------------------------------------------------------------------------
>
>                 Key: XGC-117
>                 URL: https://issues.apache.org/jira/browse/XGC-117
>             Project: XMLGraphicsCommons
>          Issue Type: Bug
>          Components: general
>    Affects Versions: 2.3
>            Reporter: Torsten Kuhnhenne
>            Priority: Major
>
> When using a single {{FopFactory}} to create multiple {{Fop}} instances that are used
in different threads I get an {{ConcurrentModificationException}} in {{ImageCache#doInvalidURIHouseKeeping}}
in line 294.
>  
> Source of the problem is the that new HashSet(this.invalidURIs.keySet()) internaly iterates
over the key-set that is backed by the {{HashMap}} and when another thread changes the {{HashMap}}
the {{ConcurrentModificationException}} occurs.
>  
> In my opinion there must be synchronized-blocks around each access of the {{invalidURIs}}
map  to solve this problem. The use of a synchronized map can not solve this problem.
>  
> Stacktrace:
> {code:java}
> Caused by: java.util.ConcurrentModificationException: null
> at java.util.HashMap$HashIterator.nextNode(HashMap.java:1437)
> at java.util.HashMap$KeyIterator.next(HashMap.java:1461)
> at java.util.AbstractCollection.addAll(AbstractCollection.java:343)
> at java.util.HashSet.<init>(HashSet.java:119)
> at org.apache.xmlgraphics.image.loader.cache.ImageCache.doInvalidURIHouseKeeping(ImageCache.java:294)
> at org.apache.xmlgraphics.image.loader.cache.ImageCache.doHouseKeeping(ImageCache.java:290)
> at org.apache.xmlgraphics.image.loader.cache.ImageCache.considerHouseKeeping(ImageCache.java:280)
> at org.apache.xmlgraphics.image.loader.cache.ImageCache.registerInvalidURI(ImageCache.java:209)
> at org.apache.xmlgraphics.image.loader.cache.ImageCache.needImageInfo(ImageCache.java:130)
> at org.apache.xmlgraphics.image.loader.ImageManager.getImageInfo(ImageManager.java:123)
> at org.apache.fop.fo.flow.ExternalGraphic.bind(ExternalGraphic.java:81)
> at org.apache.fop.fo.FObj.processNode(FObj.java:126)
> at org.apache.fop.fo.FOTreeBuilder$MainFOHandler.startElement(FOTreeBuilder.java:291)
> at org.apache.fop.fo.FOTreeBuilder.startElement(FOTreeBuilder.java:179)
> {code}
> The issue XGC-30 sounds similiar but does not solve the problem.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: general-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: general-help@xmlgraphics.apache.org


Mime
View raw message