EventListener are not created per request ( full / delta-imports) but rather
instantiated once per lifetime of the application - maintaining state +
efficient
---------------------------------------------------------------------------------------------------------------------------------------------------------------
Key: SOLR-972
URL: https://issues.apache.org/jira/browse/SOLR-972
Project: Solr
Issue Type: Improvement
Components: contrib - DataImportHandler
Environment: Java 6, Tomcat 6
Reporter: Kay Kay
Attachments: SOLR-972.patch
The EventListener plugin for notification of start / end import events
(SOLR-938) creates an instance of EventListener before every notification. This
has 2 drawbacks.
* No state is stored between successive invocations of events as it is a new
object
* When writing plugins for delta imports - it is very inefficient to do a class
loader lookup by reflection / instantiate an instance and call a method on the
same.
Attached patch has one EventListener through the lifetime of the DIH plugin .
Also EventListener is changed to an interface rather than an abstract class for
better decoupling (especially painful when the start/end eventlistener has an
independent hierarchy by itself ).
By default, a no-op listener is registered to avoid boiler plate code to check
if there is a start / end listener specified. Efficient JRE impls should be
able to optimize the no-op for minimum overhead compared to checking the
reference for null and branching out.
Specifying an onImportStart / onImportEnd overrides the default handler though.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.