[ 
https://issues.apache.org/jira/browse/HIVE-7974?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14146600#comment-14146600
 ] 

Sushanth Sowmyan commented on HIVE-7974:
----------------------------------------

1. The Main reason for that is visibility. Sometimes, code changes happen in 
ql/ that don't make appropriate changes in hcatalog-webhcat-java-client, for 
eg., and we have to run around trying to fix it. Strongly connected tests would 
catch these kinds of issues, but when you're a serialize and a deserialize away 
across a message format, it's easier to break something without realizing it. 
If we are to grow this further, I believe it should belong in hive codebase, 
rather than tucked away inside hcatalog-server-extensions. Also, if I now put 
ReplicationTask basing on top of hcatalog-server-extensions, writing that alone 
in a top level repl/ feels like a cyclic dependency issue waiting to happen. If 
I put ReplicationTask inside hcatalog-server-extensions, it risks being seen as 
HCat Replication rather than Hive Replication. I thought that moving it out to 
a top-level made things cleaner in the long run.

2. I thought about this for a bit. Not breaking backward compatibility is a 
huge deal, but if I had to move packages out of hcatalog-server-extensions, 
that potentially breaks Jackson auto-deserialization/serialization because the 
classnames are different. There is no fundamentally different data in it, and 
if we wrote our own serialize/deserialize, we could make it work irrespective 
of classnames, and the messages are format compatible. If we fixed 
serialization/deserialization by not using automatic 
serialization/deserialization, we could stick with one listener, and it 
wouldn't matter if it were a HCatEventMessage or an EventMessage.

What can be done easily, however, is that the hive metastore supports having 
more than one listener loaded, as a comma separated list, and users can manage 
migration development and testing with ReplListener, while still keeping their 
existing NotificationListener active, simply by specifying a different prefix. 
And they can then code-migrate over to the newer listeners over a couple of 
releases, and gain the ability to use replication on top of those events.

I completely understand your question on why it's worth the effort, and it was 
a hard call for me, and I eventually wound up in the side of this. If we decide 
not to, then we can cancel this patch, and simply do ReplicationTask inside 
hcatalog-server-extensions.

3. I've created https://issues.apache.org/jira/browse/HIVE-8165 to mark a 
deprecation leading to a removal, rather than an outright removal, as discussed 
above.

> Notification Event Listener movement to a new top level repl/ module
> --------------------------------------------------------------------
>
>                 Key: HIVE-7974
>                 URL: https://issues.apache.org/jira/browse/HIVE-7974
>             Project: Hive
>          Issue Type: Sub-task
>          Components: Import/Export
>            Reporter: Sushanth Sowmyan
>            Assignee: Sushanth Sowmyan
>         Attachments: HIVE-7974.patch
>
>
> We need to create a new hive module (say hive-repl? ) to subsume the 
> NotificationListener from HCatalog.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to