diff --git a/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/listener/DbNotificationListener.java b/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/listener/DbNotificationListener.java index 3ea2827..4d17ff7 100644 --- a/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/listener/DbNotificationListener.java +++ b/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/listener/DbNotificationListener.java @@ -191,7 +191,7 @@ public void onAlterPartition (AlterPartitionEvent partitionEvent) throws MetaEx Partition after = partitionEvent.getNewPartition(); NotificationEvent event = new NotificationEvent(0, now(), HCatConstants.HCAT_ALTER_PARTITION_EVENT, - msgFactory.buildAlterPartitionMessage(before, after).toString()); + msgFactory.buildAlterPartitionMessage(partitionEvent.getTable(), before, after).toString()); if (event != null) { event.setDbName(before.getDbName()); event.setTableName(before.getTableName()); diff --git a/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/listener/NotificationListener.java b/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/listener/NotificationListener.java index c383047..89278f1 100644 --- a/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/listener/NotificationListener.java +++ b/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/listener/NotificationListener.java @@ -22,7 +22,6 @@ import java.util.ArrayList; import java.util.HashMap; import java.util.List; -import java.util.Map; import javax.jms.Connection; import javax.jms.ConnectionFactory; @@ -57,10 +56,8 @@ import org.apache.hadoop.hive.metastore.events.DropDatabaseEvent; import org.apache.hadoop.hive.metastore.events.DropPartitionEvent; import org.apache.hadoop.hive.metastore.events.DropTableEvent; -import org.apache.hadoop.hive.metastore.events.ListenerEvent; import org.apache.hadoop.hive.metastore.events.LoadPartitionDoneEvent; import org.apache.hive.hcatalog.common.HCatConstants; -import org.apache.hive.hcatalog.messaging.AlterTableMessage; import org.apache.hive.hcatalog.messaging.HCatEventMessage; import org.apache.hive.hcatalog.messaging.MessageFactory; import org.slf4j.Logger; @@ -152,7 +149,7 @@ public void onAlterPartition(AlterPartitionEvent ape) throws MetaException { Partition after = ape.getNewPartition(); String topicName = getTopicName(ape.getTable()); - send(messageFactory.buildAlterPartitionMessage(before, after), topicName); + send(messageFactory.buildAlterPartitionMessage(ape.getTable(), before, after), topicName); } } diff --git a/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/AlterPartitionMessage.java b/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/AlterPartitionMessage.java index 7412b60..ad189a1 100644 --- a/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/AlterPartitionMessage.java +++ b/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/AlterPartitionMessage.java @@ -19,6 +19,7 @@ package org.apache.hive.hcatalog.messaging; import java.util.List; +import java.util.Map; /** * HCat message sent when a table is Altered. @@ -31,12 +32,12 @@ protected AlterPartitionMessage() { public abstract String getTable(); - public abstract List getValues(); + public abstract Map getKeyValues(); @Override public HCatEventMessage checkValid() { if (getTable() == null) throw new IllegalStateException("Table name unset."); - if (getValues() == null) throw new IllegalStateException("Partition values unset"); + if (getKeyValues() == null) throw new IllegalStateException("Partition values unset"); return super.checkValid(); } } diff --git a/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/MessageFactory.java b/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/MessageFactory.java index fcab469..e813f9b 100644 --- a/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/MessageFactory.java +++ b/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/MessageFactory.java @@ -156,11 +156,13 @@ public static MessageDeserializer getDeserializer(String format, /** * Factory method for building AlterPartitionMessage + * + * @param table The table inside which a partition got altered. * @param before The partition before it was altered * @param after The partition after it was altered * @return a new AlterPartitionMessage */ - public abstract AlterPartitionMessage buildAlterPartitionMessage(Partition before, + public abstract AlterPartitionMessage buildAlterPartitionMessage(Table table, Partition before, Partition after); /** diff --git a/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/json/JSONAlterPartitionMessage.java b/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/json/JSONAlterPartitionMessage.java index 1e2456d..ce2bcb1 100644 --- a/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/json/JSONAlterPartitionMessage.java +++ b/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/json/JSONAlterPartitionMessage.java @@ -40,21 +40,20 @@ Long timestamp; @JsonProperty - List values; - + Map keyValues; public JSONAlterPartitionMessage(String server, String servicePrincipal, String db, String table, - List values, + Map keyValues, Long timestamp) { this.server = server; this.servicePrincipal = servicePrincipal; this.db = db; this.table = table; this.timestamp = timestamp; - this.values = values; + this.keyValues = keyValues; checkValid(); } @@ -85,8 +84,8 @@ public String getTable() { } @Override - public List getValues() { - return values; + public Map getKeyValues() { + return keyValues; } @Override diff --git a/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/json/JSONMessageFactory.java b/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/json/JSONMessageFactory.java index 19695ed..6c76501 100644 --- a/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/json/JSONMessageFactory.java +++ b/hcatalog/server-extensions/src/main/java/org/apache/hive/hcatalog/messaging/json/JSONMessageFactory.java @@ -111,9 +111,9 @@ public AddPartitionMessage buildAddPartitionMessage(Table table, PartitionSpecPr } @Override - public AlterPartitionMessage buildAlterPartitionMessage(Partition before, Partition after) { + public AlterPartitionMessage buildAlterPartitionMessage(Table table, Partition before, Partition after) { return new JSONAlterPartitionMessage(HCAT_SERVER_URL, HCAT_SERVICE_PRINCIPAL, - before.getDbName(), before.getTableName(), before.getValues(), now()); + before.getDbName(), before.getTableName(), getPartitionKeyValues(table,before),now()); } @Override diff --git a/hcatalog/server-extensions/src/test/java/org/apache/hive/hcatalog/listener/TestNotificationListener.java b/hcatalog/server-extensions/src/test/java/org/apache/hive/hcatalog/listener/TestNotificationListener.java index bf61dcf..affdc2e 100644 --- a/hcatalog/server-extensions/src/test/java/org/apache/hive/hcatalog/listener/TestNotificationListener.java +++ b/hcatalog/server-extensions/src/test/java/org/apache/hive/hcatalog/listener/TestNotificationListener.java @@ -182,14 +182,14 @@ public void onMessage(Message msg) { AlterPartitionMessage message = deserializer.getAlterPartitionMessage(messageBody); Assert.assertEquals("mytbl", message.getTable()); Assert.assertEquals("mydb", message.getDB()); - Assert.assertEquals(1, message.getValues().size()); - Assert.assertEquals("2011", message.getValues().get(0)); + Assert.assertEquals(1, message.getKeyValues().size()); + Assert.assertEquals("2011", message.getKeyValues().containsValue(0)); HCatEventMessage message2 = MessagingUtils.getMessage(msg); Assert.assertTrue("Unexpected message-type.", message2 instanceof AlterPartitionMessage); Assert.assertEquals("mydb", message2.getDB()); Assert.assertEquals("mytbl", ((AlterPartitionMessage) message2).getTable()); - Assert.assertEquals(1, ((AlterPartitionMessage) message2).getValues().size()); - Assert.assertEquals("2011", ((AlterPartitionMessage) message2).getValues().get(0)); + Assert.assertEquals(1, ((AlterPartitionMessage) message2).getKeyValues().size()); + Assert.assertEquals("2011", ((AlterPartitionMessage) message2).getKeyValues().containsValue(0)); } else if (event.equals(HCatConstants.HCAT_DROP_PARTITION_EVENT)) { Assert.assertEquals("topic://hcat.mydb.mytbl", msg.getJMSDestination()