cocoon-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ellis Pritchard (JIRA)" <>
Subject [jira] Created: (COCOON-1977) Unsynchronized access to HashMap in ResourceReader
Date Thu, 04 Jan 2007 15:24:27 GMT
Unsynchronized access to HashMap in ResourceReader

                 Key: COCOON-1977
             Project: Cocoon
          Issue Type: Bug
          Components: * Cocoon Core
    Affects Versions: 2.1.10, 2.1.9, 2.1.11-dev (current SVN)
            Reporter: Ellis Pritchard
            Priority: Critical

I've just had a production server lock up, and when I forced a stack trace I saw lots of these:

"TP-Processor30" daemon prio=5 tid=0x00ce2a50 nid=0x52 runnable [bccfd000..bccffc30]
        at java.util.HashMap.get(
        at org.apache.cocoon.reading.ResourceReader.getLastModified(
        at org.apache.cocoon.components.pipeline.AbstractProcessingPipeline.process(
        at org.apache.cocoon.components.treeprocessor.sitemap.ReadNode.invoke(

What I've noticed is that the 'documents' HashMap in ResourceReader (a static member) is accessed
in an unsynchronized fashion; neither is documents synchronized, or are the puts and gets
to it. This is a potential (and actual!!) hazard, and can lead to crashes or hangs.

Suggest that line 94 of is changed from:

    private static final Map documents = new HashMap();


    private static final Map documents = Collections.synchronizedMap(new HashMap());

enable quick-modified-test in configuration which by-passes use of the document URI cache:

<map:reader logger="sitemap.reader.resource" name="resource" pool-max="32" src="org.apache.cocoon.reading.ResourceReader">

This message is automatically generated by JIRA.
If you think it was sent incorrectly contact one of the administrators:
For more information on JIRA, see:


View raw message