svn merge -c 1588546 FIXES: YARN-1940. deleteAsUser() terminates early without deleting more files on error. Contributed by Rushabh S Shah
git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/branches/branch-2@1588549 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
8d12e9bf81
commit
ccec38b801
|
@ -53,6 +53,9 @@ Release 2.5.0 - UNRELEASED
|
||||||
YARN-1784. TestContainerAllocation assumes CapacityScheduler.
|
YARN-1784. TestContainerAllocation assumes CapacityScheduler.
|
||||||
(Robert Kanter via kasha)
|
(Robert Kanter via kasha)
|
||||||
|
|
||||||
|
YARN-1940. deleteAsUser() terminates early without deleting more files on
|
||||||
|
error (Rushabh S Shah via jlowe)
|
||||||
|
|
||||||
Release 2.4.1 - UNRELEASED
|
Release 2.4.1 - UNRELEASED
|
||||||
|
|
||||||
INCOMPATIBLE CHANGES
|
INCOMPATIBLE CHANGES
|
||||||
|
|
|
@ -1082,6 +1082,7 @@ static int delete_path(const char *full_path,
|
||||||
FTS* tree = fts_open(paths, FTS_PHYSICAL | FTS_XDEV, NULL);
|
FTS* tree = fts_open(paths, FTS_PHYSICAL | FTS_XDEV, NULL);
|
||||||
FTSENT* entry = NULL;
|
FTSENT* entry = NULL;
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
|
int ret_errno = 0;
|
||||||
|
|
||||||
if (tree == NULL) {
|
if (tree == NULL) {
|
||||||
fprintf(LOGFILE,
|
fprintf(LOGFILE,
|
||||||
|
@ -1099,7 +1100,13 @@ static int delete_path(const char *full_path,
|
||||||
if (rmdir(entry->fts_accpath) != 0) {
|
if (rmdir(entry->fts_accpath) != 0) {
|
||||||
fprintf(LOGFILE, "Couldn't delete directory %s - %s\n",
|
fprintf(LOGFILE, "Couldn't delete directory %s - %s\n",
|
||||||
entry->fts_path, strerror(errno));
|
entry->fts_path, strerror(errno));
|
||||||
exit_code = -1;
|
if (errno == EROFS) {
|
||||||
|
exit_code = -1;
|
||||||
|
}
|
||||||
|
// record the first errno
|
||||||
|
if (errno != ENOENT && ret_errno == 0) {
|
||||||
|
ret_errno = errno;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -1111,7 +1118,13 @@ static int delete_path(const char *full_path,
|
||||||
if (unlink(entry->fts_accpath) != 0) {
|
if (unlink(entry->fts_accpath) != 0) {
|
||||||
fprintf(LOGFILE, "Couldn't delete file %s - %s\n", entry->fts_path,
|
fprintf(LOGFILE, "Couldn't delete file %s - %s\n", entry->fts_path,
|
||||||
strerror(errno));
|
strerror(errno));
|
||||||
exit_code = -1;
|
if (errno == EROFS) {
|
||||||
|
exit_code = -1;
|
||||||
|
}
|
||||||
|
// record the first errno
|
||||||
|
if (errno != ENOENT && ret_errno == 0) {
|
||||||
|
ret_errno = errno;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
@ -1154,6 +1167,9 @@ static int delete_path(const char *full_path,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ret = fts_close(tree);
|
ret = fts_close(tree);
|
||||||
|
if (ret_errno != 0) {
|
||||||
|
exit_code = -1;
|
||||||
|
}
|
||||||
if (exit_code == 0 && ret != 0) {
|
if (exit_code == 0 && ret != 0) {
|
||||||
fprintf(LOGFILE, "Error in fts_close while deleting %s\n", full_path);
|
fprintf(LOGFILE, "Error in fts_close while deleting %s\n", full_path);
|
||||||
exit_code = -1;
|
exit_code = -1;
|
||||||
|
|
Loading…
Reference in New Issue