logging-log4j-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Matt Sicker (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (LOG4J2-745) Plugins can cause ConverterKeys collisions with unpredictable results
Date Sun, 27 Jul 2014 23:09:39 GMT

     [ https://issues.apache.org/jira/browse/LOG4J2-745?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel

Matt Sicker updated LOG4J2-745:

    Attachment: LinkedHashMap_Plugin_Manager.patch

Here's a work in progress toward addressing the LinkedHashMap issue you mentioned. Note that
I don't have JDK 1.6 on this computer, so I wasn't able to test whether or not this still
compiles properly as JDK 1.8 added a ton of default interface methods.

> Plugins can cause ConverterKeys collisions with unpredictable results
> ---------------------------------------------------------------------
>                 Key: LOG4J2-745
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-745
>             Project: Log4j 2
>          Issue Type: Improvement
>            Reporter: Scott Harrington
>            Assignee: Matt Sicker
>            Priority: Minor
>         Attachments: LinkedHashMap_Plugin_Manager.patch
> If I create a Converter plugin with ConverterKeys of "d" or "m" then there will be a
collision with the built-in DatePatternConverter or MessagePatternConverter.
> It is unpredictable which plugin gets used.
> I see two resolutions:
> (1) detect collisions in PatternParser and emit a warning so we know which implementation
will be used
> (2) use whichever Log4j2Plugins.dat appeared first in the CLASSPATH
> Predictable iteration order is usually accomplished by replacing HashMaps with LinkedHashMaps.
Could easily do this for thie PluginManager.plugins field. But PluginRegistry uses a ConcurrentHashMap.
> Is there a good reason to use ConcurrentHashMaps in PluginRegistry? It doesn't really
give you any concurrency -- a caller to PluginManager.getPlugins could see a partially-loaded
map if collectPlugins was still running. Why not synchronize collectPlugins and/or loadPlugins,
and force any concurrent caller to getPlugins to wait until the loading was complete.
> I would give it a stab but I see other more important changes are probably underway for
LOG4J2-741 and LOG4J2-673 and this can probably wait.

This message was sent by Atlassian JIRA

To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org

View raw message