Author: hashutosh
Date: Tue Nov 1 21:15:52 2011
New Revision: 1196280
URL: http://svn.apache.org/viewvc?rev=1196280&view=rev
Log:
HCATALOG-148: Meaningful error message on failure to resolve topic name for
partition event
Modified:
incubator/hcatalog/branches/branch-0.2/CHANGES.txt
incubator/hcatalog/branches/branch-0.2/src/java/org/apache/hcatalog/listener/NotificationListener.java
Modified: incubator/hcatalog/branches/branch-0.2/CHANGES.txt
URL:
http://svn.apache.org/viewvc/incubator/hcatalog/branches/branch-0.2/CHANGES.txt?rev=1196280&r1=1196279&r2=1196280&view=diff
==============================================================================
--- incubator/hcatalog/branches/branch-0.2/CHANGES.txt (original)
+++ incubator/hcatalog/branches/branch-0.2/CHANGES.txt Tue Nov 1 21:15:52 2011
@@ -77,6 +77,8 @@ Release 0.2.0 - Sept-2011
OPTIMIZATIONS
BUG FIXES
+ HCAT-148. Meaningful error message on failure to resolve topic name for
partition event (thw via hashutosh)
+
HCAT-103. Update documentation after rpm changes per HCATALOG-63 (khorgath
via hashutosh)
HCAT-113. rpm name not properly reflecting the version number (gates via
hashutosh)
Modified:
incubator/hcatalog/branches/branch-0.2/src/java/org/apache/hcatalog/listener/NotificationListener.java
URL:
http://svn.apache.org/viewvc/incubator/hcatalog/branches/branch-0.2/src/java/org/apache/hcatalog/listener/NotificationListener.java?rev=1196280&r1=1196279&r2=1196280&view=diff
==============================================================================
---
incubator/hcatalog/branches/branch-0.2/src/java/org/apache/hcatalog/listener/NotificationListener.java
(original)
+++
incubator/hcatalog/branches/branch-0.2/src/java/org/apache/hcatalog/listener/NotificationListener.java
Tue Nov 1 21:15:52 2011
@@ -52,14 +52,15 @@ import org.apache.hadoop.hive.metastore.
import org.apache.hadoop.hive.metastore.api.StorageDescriptor;
import org.apache.hadoop.hive.metastore.api.Table;
import org.apache.hadoop.hive.metastore.events.AddPartitionEvent;
+import org.apache.hadoop.hive.metastore.events.AlterPartitionEvent;
import org.apache.hadoop.hive.metastore.events.AlterTableEvent;
import org.apache.hadoop.hive.metastore.events.CreateDatabaseEvent;
import org.apache.hadoop.hive.metastore.events.CreateTableEvent;
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.hadoop.hive.metastore.events.AlterPartitionEvent;
import org.apache.hcatalog.common.HCatConstants;
/**
@@ -87,6 +88,24 @@ public class NotificationListener extend
createConnection();
}
+ private static String getTopicName(Partition partition,
+ ListenerEvent partitionEvent) throws MetaException {
+ try {
+ String topicName = partitionEvent.getHandler()
+ .get_table(partition.getDbName(),
partition.getTableName())
+
.getParameters().get(HCatConstants.HCAT_MSGBUS_TOPIC_NAME);
+ if (topicName == null) {
+ throw new MetaException(
+ "Topic name not found in
metastore. Please do alter table set properties ("
+ +
HCatConstants.HCAT_MSGBUS_TOPIC_NAME
+ +
"=dbname.tablename) or whatever you want topic name to be.");
+ }
+ return topicName;
+ } catch (NoSuchObjectException e) {
+ throw new MetaException(e.toString());
+ }
+ }
+
@Override
public void onAddPartition(AddPartitionEvent partitionEvent) throws
MetaException {
// Subscriber can get notification of newly add partition in a
@@ -95,13 +114,7 @@ public class NotificationListener extend
if(partitionEvent.getStatus()){
Partition partition = partitionEvent.getPartition();
- String topicName;
- try {
- topicName =
partitionEvent.getHandler().get_table(
- partition.getDbName(),
partition.getTableName()).getParameters().get(HCatConstants.HCAT_MSGBUS_TOPIC_NAME);
- } catch (NoSuchObjectException e) {
- throw new MetaException(e.toString());
- }
+ String topicName = getTopicName(partition,
partitionEvent);
send(partition, topicName,
HCatConstants.HCAT_ADD_PARTITION_EVENT);
}
@@ -123,13 +136,7 @@ public class NotificationListener extend
sd.setSortCols(new ArrayList<Order>());
sd.setParameters(new HashMap<String, String>());
sd.getSerdeInfo().setParameters(new HashMap<String,
String>());
- String topicName;
- try {
- topicName =
partitionEvent.getHandler().get_table(
- partition.getDbName(),
partition.getTableName()).getParameters().get(HCatConstants.HCAT_MSGBUS_TOPIC_NAME);
- } catch (NoSuchObjectException e) {
- throw new MetaException(e.toString());
- }
+ String topicName = getTopicName(partition,
partitionEvent);
send(partition, topicName,
HCatConstants.HCAT_DROP_PARTITION_EVENT);
}
}