[ https://issues.apache.org/jira/browse/LOG4J2-745?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14078358#comment-14078358 ]
Matt Sicker commented on LOG4J2-745: ------------------------------------ I feel like plugins should all be registered as services (or managed services or similar) in OSGi and provide this as an OSGi-only feature. ;P But anyway, would it work to use an unmodifiable map? > 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_and_locks.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.2#6252) --------------------------------------------------------------------- To unsubscribe, e-mail: log4j-dev-unsubscr...@logging.apache.org For additional commands, e-mail: log4j-dev-h...@logging.apache.org