Details
Description
HBASE-13625 changed the HFileOutputFormat2 partitioner's path from using the hadoop.tmp.dir config to hbase.fs.tmp.dir config. However, some Apache Phoenix unit tests (org.apache.phoenix.mapreduce.CsvBulkLoadToolIT and org.apache.phoenix.mapreduce.IndexToolIT) fail due to null value in the hbase.fs.tmp.dir config. They were relied on the hadoop.tmp.dir set from HBaseTestingUtility.
java.lang.IllegalArgumentException: Can not create a Path from a null string at org.apache.hadoop.fs.Path.checkPathArg(Path.java:122) at org.apache.hadoop.fs.Path.<init>(Path.java:134) at org.apache.hadoop.fs.Path.<init>(Path.java:88) at org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2.configurePartitioner(HFileOutputFormat2.java:591) at org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2.configureIncrementalLoad(HFileOutputFormat2.java:440) at org.apache.hadoop.hbase.mapreduce.HFileOutputFormat2.configureIncrementalLoad(HFileOutputFormat2.java:405) at org.apache.hadoop.hbase.mapreduce.HFileOutputFormat.configureIncrementalLoad(HFileOutputFormat.java:91) at org.apache.phoenix.mapreduce.CsvBulkLoadTool$TableLoader.call(CsvBulkLoadTool.java:505) at org.apache.phoenix.mapreduce.CsvBulkLoadTool$TableLoader.call(CsvBulkLoadTool.java:466) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166) at org.apache.phoenix.job.JobManager$InstrumentedJobFutureTask.run(JobManager.java:172) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:722)
The proposal is to set hbase.fs.tmp.dir in HBaseTestingUtility#setupDataTestDir().