commons-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Oliver Heger (JIRA)" <>
Subject [jira] [Commented] (CONFIGURATION-596) Allow event listener Collections to be lazily created in event.EventSource
Date Sat, 24 Jan 2015 19:09:34 GMT


Oliver Heger commented on CONFIGURATION-596:

Such error listeners are registered by configuration implementations which may encounter exceptions
on regular property access like {{DatabaseConfiguration}} or {{JndiConfiguration}}.

I agree with most of your points, but for sure the lazy initialization adds overhead to the
runtime of regular configuration operations. For instance, each time a property is added,
an event is fired. This would mean an additional check (which is somehow guarded by a *synchronized*
block or a read to a *volatile* field) to find out whether the event listeners collection
is initialized. There are some other places which have to be adapted as well, e.g. cloning.

I am just not sure whether all this is worth the effort to avoid the memory footprint of a
collection object. If you deal with a somewhat larger set of configuration properties, these
extra bytes won't make such a big difference, will they?

> Allow event listener Collections to be lazily created in event.EventSource
> --------------------------------------------------------------------------
>                 Key: CONFIGURATION-596
>                 URL:
>             Project: Commons Configuration
>          Issue Type: Improvement
>          Components: Events & Notifications
>    Affects Versions: 1.9
>            Reporter: Vladimir Sitnikov
>         Attachments: CoWArrayList1.jpg, dataflow_commons_configuration_cowarraylist.png
> It turns out every instance of {{AbstractConfiguration}} creates a couple of {{CopyOnWriteAraryLists}}
for {{event.EventSource}}.
> In our usage patterns in most of the cases the lists are not used.
> Can the lists be lazy-initialized? (that is created on the first addListener request)

This message was sent by Atlassian JIRA

View raw message