HCAT-628 Committer deletes the original partition when a duplicate partition fails registration
git-svn-id: https://svn.apache.org/repos/asf/incubator/hcatalog/branches/branch-0.5@1459479 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/CHANGES.txt b/CHANGES.txt
index 68e0afe..7a75b6e 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -28,6 +28,8 @@
OPTIMIZATIONS
BUG FIXES
+ HCAT-628 Committer deletes the original partition when a duplicate partition fails registration (thiruvel via daijy)
+
HCAT-640 CHANGES.txt still lists 0.5 as unreleased (gates)
HCAT-625 HCatalog 0.5.0 installation document is outdated
diff --git a/core/src/main/java/org/apache/hcatalog/mapreduce/FileOutputCommitterContainer.java b/core/src/main/java/org/apache/hcatalog/mapreduce/FileOutputCommitterContainer.java
index b913482..464d334 100644
--- a/core/src/main/java/org/apache/hcatalog/mapreduce/FileOutputCommitterContainer.java
+++ b/core/src/main/java/org/apache/hcatalog/mapreduce/FileOutputCommitterContainer.java
@@ -681,14 +681,14 @@
// no harProcessor, regular operation
updateTableSchema(client, table, jobInfo.getOutputSchema());
LOG.info("HAR not is not being used. The table {} has new partitions {}.", table.getTableName(), ptnInfos);
- partitionsAdded = partitionsToAdd;
- if (dynamicPartitioningUsed && (partitionsAdded.size()>0)){
+ if (dynamicPartitioningUsed && (partitionsToAdd.size()>0)){
Path src = new Path(ptnRootLocation);
moveTaskOutputs(fs, src, src, tblPath, true);
moveTaskOutputs(fs, src, src, tblPath, false);
fs.delete(src, true);
}
client.add_partitions(partitionsToAdd);
+ partitionsAdded = partitionsToAdd;
}
} catch (Exception e) {
if (partitionsAdded.size() > 0) {
diff --git a/core/src/test/java/org/apache/hcatalog/mapreduce/TestHCatDynamicPartitioned.java b/core/src/test/java/org/apache/hcatalog/mapreduce/TestHCatDynamicPartitioned.java
index af9c7fa..0a9ed53 100644
--- a/core/src/test/java/org/apache/hcatalog/mapreduce/TestHCatDynamicPartitioned.java
+++ b/core/src/test/java/org/apache/hcatalog/mapreduce/TestHCatDynamicPartitioned.java
@@ -181,5 +181,23 @@
assertTrue(exc == null);
runMRRead(maxParts + 5);
}
+
+ query = "show partitions " + tableName;
+ retCode = driver.run(query).getResponseCode();
+ if (retCode != 0) {
+ throw new Exception("Error " + retCode + " running query " + query);
+ }
+ res = new ArrayList<String>();
+ driver.getResults(res);
+ assertEquals(NUM_PARTITIONS, res.size());
+
+ query = "select * from " + tableName;
+ retCode = driver.run(query).getResponseCode();
+ if (retCode != 0) {
+ throw new Exception("Error " + retCode + " running query " + query);
+ }
+ res = new ArrayList<String>();
+ driver.getResults(res);
+ assertEquals(NUM_RECORDS, res.size());
}
}