[ 
https://issues.apache.org/jira/browse/SOLR-972?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12666193#action_12666193
 ] 

Kay Kay commented on SOLR-972:
------------------------------

I agree with the comment regarding a custom scope for a Context . For those 
Context-s that need to be reused this could still be in scope before fetching 
to avoid recreating them again but I am more concerned about recreating 
EventListener-s . 

| It is still possible for you to share Objects in a static variable in your 
EventListener.
| The design is modeled like the servlet API. This is akin to storing and 
retrieving data from the servletContext,session,request etc . 

Sharing via static variables does not seem to be the cleanest way to design . 
(What if there are 2 eventListeners one for start and another for end 
inheriting from a common class that has shared attributes.  Sharing via static 
variables ( in the base class) brings unpredictable behavior / and a code 
difficult to maintain . )

Imagine a requesthandler in the Servlet having no state and being instantiated 
every time for every request. By recreating EventListener-s , we have a similar 
analogy . That would make (it already does and I am working on patched version 
of Solr) development harder to share any state between successive calls. 

> EventListener-s creation changed from a per request ( full / delta-imports) 
> scenario to once through the lifetime of the DIH plugin.
> ------------------------------------------------------------------------------------------------------------------------------------
>
>                 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
>             Fix For: 1.4
>
>         Attachments: SOLR-972.patch
>
>   Original Estimate: 2h
>  Remaining Estimate: 2h
>
> 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.

Reply via email to