> On Sept. 15, 2015, 5:44 a.m., Shwetha GS wrote:
> > notification/src/main/java/org/apache/atlas/notification/entity/EntityChangeConsumer.java,
> >  line 41
> > <https://reviews.apache.org/r/38341/diff/1/?file=1071266#file1071266line41>
> >
> >     why expose interface using threadpool and listeners. Why not expose 
> > NotificationInterface directly.
> >     
> >     Exposing through threadpool and listener creates following issues:
> >     1. Users may not be aware of threadpool created on client side. This 
> > may add to debugging complexity. They may even create their own thread pool 
> > as well.
> >     2. If users have another way of parallelism or another thread pool of 
> > their own, they can't combine both.
> >     3. Listeners are called synchronously. Users may not be ok with it
> >     
> >     
> >     In general, its better to provide thin clients to users so that they 
> > can implement their own usecases their own way. That way, maintenance on 
> > our end will be less. Makes sense?
> 
> Tom Beerbower wrote:
>     I see your point and don't disagree but there is no requirement for the 
> user to use this class.  With the code as it currently is, they can inject a 
> NotificationInterface, create the consumers themselves and manage their own 
> threads.  My main intent with introducing this class was to give the users an 
> easy to use interface out of the box.  It really just saves them from having 
> to write the same code.  
>     
>     Also, I basically copied most of the EntityChangeConsumer code from the 
> existing NotificationHookConsumer code, which does the same as far as 
> threadpool, etc.  Don't your arguments apply there as well?

The problem with giving more in client libraries is that it goes as a contract 
and it needs to be perfect, should work for all users, make sure that its 
backward compatible in all future releases. So, more maintenance. Its better to 
give the bare minimum and let users build on that. NotificationInterafce is not 
complicated, just create consumer and they get an iterator on message. If you 
think thats complicated, simplify it.

As for using the same in NotificationHookConsumer, NotificationHookConsumer is 
part of atlas server. Currently, atlas server doesn't have a thread pool and 
hence we need it. We can change it anytime without informing the users(not the 
admins who monitor the atlas service). Its part of server, hence not all users 
need to debug this(only the admins) and typically, all services will have 
thread pools.


- Shwetha


-----------------------------------------------------------
This is an automatically generated e-mail. To reply, visit:
https://reviews.apache.org/r/38341/#review98990
-----------------------------------------------------------


On Sept. 14, 2015, 4:08 a.m., Tom Beerbower wrote:
> 
> -----------------------------------------------------------
> This is an automatically generated e-mail. To reply, visit:
> https://reviews.apache.org/r/38341/
> -----------------------------------------------------------
> 
> (Updated Sept. 14, 2015, 4:08 a.m.)
> 
> 
> Review request for atlas, John Speidel and Shwetha GS.
> 
> 
> Bugs: ATLAS-158
>     https://issues.apache.org/jira/browse/ATLAS-158
> 
> 
> Repository: atlas
> 
> 
> Description
> -------
> 
> Add entity change notification to Atlas based using the existing 
> atlas-notification module.
> 
> First cut at a patch for the Atlas entity change notification.  Note that at 
> a minimum additional unit tests are required.  I'm putting up the review to 
> get some initial feedback.
> 
> 
> Diffs
> -----
> 
>   notification/src/main/java/org/apache/atlas/notification/entity/Entity.java 
> PRE-CREATION 
>   
> notification/src/main/java/org/apache/atlas/notification/entity/EntityChangeConsumer.java
>  PRE-CREATION 
>   
> notification/src/main/java/org/apache/atlas/notification/entity/EntityChangeListener.java
>  PRE-CREATION 
>   
> notification/src/main/java/org/apache/atlas/notification/entity/EntityImpl.java
>  PRE-CREATION 
>   
> notification/src/main/java/org/apache/atlas/notification/entity/EntityNotification.java
>  PRE-CREATION 
>   notification/src/main/java/org/apache/atlas/notification/entity/Trait.java 
> PRE-CREATION 
>   
> notification/src/main/java/org/apache/atlas/notification/entity/TraitImpl.java
>  PRE-CREATION 
>   
> notification/src/test/java/org/apache/atlas/notification/entity/EntityImplTest.java
>  PRE-CREATION 
>   
> notification/src/test/java/org/apache/atlas/notification/entity/TraitImplTest.java
>  PRE-CREATION 
>   repository/pom.xml 8e4d0f3 
>   repository/src/main/java/org/apache/atlas/RepositoryMetadataModule.java 
> fbd01de 
>   
> repository/src/main/java/org/apache/atlas/listener/EntityChangeListener.java 
> f58d6de 
>   
> repository/src/main/java/org/apache/atlas/services/DefaultMetadataService.java
>  56168db 
> 
> Diff: https://reviews.apache.org/r/38341/diff/
> 
> 
> Testing
> -------
> 
> mvn clean test
> 
> All existing tests pass.
> 
> New unit tests added (more required).
> 
> 
> Thanks,
> 
> Tom Beerbower
> 
>

Reply via email to