HADOOP-15469. S3A directory committer commit job fails if _temporary directory created under dest.
Contributed by Steve Loughran. (cherry picked from commit 170f1040d46f9b1a084e6637def91e9864446acc)
This commit is contained in:
parent
c0ec061e28
commit
cc3600aabd
@ -93,11 +93,8 @@ protected void preCommitJob(JobContext context,
|
||||
Configuration fsConf = fs.getConf();
|
||||
switch (getConflictResolutionMode(context, fsConf)) {
|
||||
case FAIL:
|
||||
// this was checked in setupJob, but this avoids some cases where
|
||||
// output was created while the job was processing
|
||||
if (fs.exists(outputPath)) {
|
||||
throw new PathExistsException(outputPath.toString(), E_DEST_EXISTS);
|
||||
}
|
||||
// this was checked in setupJob; temporary files may have been
|
||||
// created, so do not check again.
|
||||
break;
|
||||
case APPEND:
|
||||
// do nothing
|
||||
|
@ -67,15 +67,14 @@ protected void verifyFailureConflictOutcome() throws Exception {
|
||||
pathExists(mockS3, OUTPUT_PATH);
|
||||
final DirectoryStagingCommitter committer = newJobCommitter();
|
||||
|
||||
// this should fail
|
||||
intercept(PathExistsException.class,
|
||||
InternalCommitterConstants.E_DEST_EXISTS,
|
||||
"Should throw an exception because the path exists",
|
||||
() -> committer.setupJob(getJob()));
|
||||
|
||||
intercept(PathExistsException.class,
|
||||
InternalCommitterConstants.E_DEST_EXISTS,
|
||||
"Should throw an exception because the path exists",
|
||||
() -> committer.commitJob(getJob()));
|
||||
// but there are no checks in job commit (HADOOP-15469)
|
||||
committer.commitJob(getJob());
|
||||
|
||||
reset(mockS3);
|
||||
pathDoesNotExist(mockS3, OUTPUT_PATH);
|
||||
@ -87,7 +86,6 @@ protected void verifyFailureConflictOutcome() throws Exception {
|
||||
reset(mockS3);
|
||||
pathDoesNotExist(mockS3, OUTPUT_PATH);
|
||||
committer.commitJob(getJob());
|
||||
verifyExistenceChecked(mockS3, OUTPUT_PATH);
|
||||
verifyCompletion(mockS3);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user