1
0

Writes relative paths to .commit files

Handle case where path is read in as null from commit file

Merged with updated release
This commit is contained in:
gekath
2017-06-13 13:35:38 -04:00
committed by prazanna
parent db7311f85e
commit 52c507f83e
4 changed files with 9 additions and 9 deletions

View File

@@ -80,8 +80,6 @@ public class HoodieAppendHandle<T extends HoodieRecordPayload> extends HoodieIOH
fileSystemView.getLatestDataFilesForFileId(record.getPartitionPath(), fileId)
.findFirst().get().getFileName();
String baseCommitTime = FSUtils.getCommitTime(latestValidFilePath);
Path path = new Path(record.getPartitionPath(),
FSUtils.makeDataFileName(commitTime, TaskContext.getPartitionId(), fileId));
writeStatus.getStat().setPrevCommit(baseCommitTime);
writeStatus.setFileId(fileId);
writeStatus.setPartitionPath(record.getPartitionPath());
@@ -105,6 +103,8 @@ public class HoodieAppendHandle<T extends HoodieRecordPayload> extends HoodieIOH
+ " on commit " + commitTime + " on HDFS path " + hoodieTable
.getMetaClient().getBasePath() + partitionPath, e);
}
Path path = new Path(record.getPartitionPath(),
FSUtils.makeDataFileName(commitTime, TaskContext.getPartitionId(), fileId));
writeStatus.getStat().setPath(path.toString());
}
// update the new location of the record, so we know where to find it next

View File

@@ -123,13 +123,12 @@ public class HoodieInsertHandle<T extends HoodieRecordPayload> extends HoodieIOH
try {
storageWriter.close();
String relativePath = path.toString().replace(new Path(config.getBasePath()) + "/", "");
HoodieWriteStat stat = new HoodieWriteStat();
stat.setNumWrites(recordsWritten);
stat.setNumDeletes(recordsDeleted);
stat.setPrevCommit(HoodieWriteStat.NULL_COMMIT);
stat.setFileId(status.getFileId());
String relativePath = path.toString().replace(new Path(config.getBasePath()) + "/", "");
stat.setPath(relativePath);
stat.setTotalWriteBytes(FSUtils.getFileSize(fs, path));
stat.setTotalWriteErrors(status.getFailedRecords().size());

View File

@@ -1137,6 +1137,7 @@ public class TestHoodieClient implements Serializable {
List<HoodieCleanStat> hoodieCleanStatsFour = table.clean(jsc);
assertEquals("Must not clean any files" , 0, getCleanStat(hoodieCleanStatsFour, partitionPaths[0]).getSuccessDeleteFiles().size());
assertTrue(HoodieTestUtils.doesDataFileExist(basePath, partitionPaths[0], "002", file3P0C2));
}
@Test
public void testKeepLatestCommits() throws IOException {
@@ -1335,9 +1336,10 @@ public class TestHoodieClient implements Serializable {
inputStream.close();
// Compare values in both to make sure they are equal.
for (String pathName: paths.values()) {
for (String pathName : paths.values()) {
assertTrue(commitPathNames.contains(pathName));
}
}
private HoodieCleanStat getCleanStat(List<HoodieCleanStat> hoodieCleanStatsTwo,
String partitionPath) {

View File

@@ -86,10 +86,9 @@ public class HoodieCommitMetadata implements Serializable {
public HashMap<String, String> getFileIdAndFullPaths(String basePath) {
HashMap<String, String> fullPaths = new HashMap<>();
HashMap<String, String> relativePaths = getFileIdAndRelativePaths();
for (Map.Entry<String, String> entry: relativePaths.entrySet()) {
Path fullPath = new Path(basePath, entry.getValue());
fullPaths.put(entry.getKey(), fullPath.toString());
for (Map.Entry<String, String> entry: getFileIdAndRelativePaths().entrySet()) {
String fullPath = (entry.getValue() != null) ? (new Path(basePath, entry.getValue())).toString() : null;
fullPaths.put(entry.getKey(), fullPath);
} return fullPaths;
}