[ 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)