You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by "Matt Sicker (JIRA)" <ji...@apache.org> on 2014/09/01 18:35:21 UTC
[jira] [Commented] (LOG4J2-745) Plugins can cause ConverterKeys
collisions with unpredictable results
[ https://issues.apache.org/jira/browse/LOG4J2-745?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14117541#comment-14117541 ]
Matt Sicker commented on LOG4J2-745:
------------------------------------
I've pushed the changes from here into a branch called LOG4J2-745. You can [view it here|https://git-wip-us.apache.org/repos/asf?p=logging-log4j2.git;a=tree;h=refs/heads/LOG4J2-745;hb=LOG4J2-745]. There are still javadoc updates I'd like to do here, but that can be done in master instead.
[~seh4nc] could you take a quick look over this before we merge it? I may end up attempting to backport some things from the master branch into a 2.0.3 release if possible.
> 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: LOG4J2-745-patch-r1617171.txt, Safer_PluginManager.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
(v6.3.4#6332)
---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org