jackrabbit-oak-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Lukas Eder (JIRA)" <j...@apache.org>
Subject [jira] [Created] (OAK-808) Significant performance issue in TargetImportHandler's prefix mapping handling
Date Thu, 02 May 2013 14:58:16 GMT
Lukas Eder created OAK-808:

             Summary: Significant performance issue in TargetImportHandler's prefix mapping
                 Key: OAK-808
                 URL: https://issues.apache.org/jira/browse/OAK-808
             Project: Jackrabbit Oak
          Issue Type: Bug
          Components: jcr
    Affects Versions: 0.7
            Reporter: Lukas Eder

While playing around with Oak, I have observed a significant performance bottleneck in 


The problem can be seen in the attached Screenshot taken from a Yourkit profiling session.
The TargetImportHandler contains a reference to a "documentContext" ListMultimap, which acts
like a stack of prefix <-> namespace mappings. To the outside, however, it is exposed
as "documentPrefixMap", a regular prefix <-> namespace mapping map, which only references
the last namespace for a prefix.

What's problematic here: "documentPrefixMap" is eagerly copied from "documentContext" every
time the latter is modified, which may happen a lot in upstream products, such as Adobe CQ5.
Instead, "documentPrefixMap" should be a Map view exposing the desired data. An example implementation
using Guava:

// Create this view once, in the constructor
this.documentPrefixMap = Maps.transformValues(documentContext.asMap(),
    new Function<Collection<String>, String>() {
        public String apply(Collection<String> input) {
            return Iterables.getLast(input, null);

The above implementation might work, as "documentPrefixMap" is a read-only view of the "documentContext"
map. More explicit, verbose implementations may prove to be even faster.

Before I write a patch, please let me know what you think.

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

View raw message