HDFS-7162. Wrong path when deleting through fuse-dfs a file which already exists in trash (cmccabe)

(cherry picked from commit 03db9cc839)
This commit is contained in:
Colin Patrick Mccabe 2014-10-02 12:42:19 -07:00
parent 531c1fd00a
commit ab1afc4e1c
2 changed files with 7 additions and 3 deletions

View File

@ -545,6 +545,9 @@ Release 2.6.0 - UNRELEASED
HDFS-7178. Additional unit test for replica write with full disk.
(Arpit Agarwal)
HDFS-7162. Wrong path when deleting through fuse-dfs a file which already
exists in trash (cmccabe)
BREAKDOWN OF HDFS-6134 AND HADOOP-10150 SUBTASKS AND RELATED JIRAS
HDFS-6387. HDFS CLI admin tool for creating & deleting an

View File

@ -150,13 +150,14 @@ int move_to_trash(const char *abs_path, hdfsFS userFS)
if (ret) {
goto done;
}
if (!strncmp(trash_base, abs_path, strlen(trash_base))) {
int trash_base_len = strlen(trash_base);
if (!strncmp(trash_base, abs_path, trash_base_len)
&& (strlen(abs_path) == trash_base_len || abs_path[trash_base_len] == '/')) {
INFO("move_to_trash(%s): file is already in the trash; deleting.",
abs_path);
ret = ALREADY_IN_TRASH_ERR;
goto done;
}
fprintf(stderr, "trash_base='%s'\n", trash_base);
if (asprintf(&target_dir, "%s%s", trash_base, parent_dir) < 0) {
ret = ENOMEM;
target_dir = NULL;
@ -182,7 +183,7 @@ int move_to_trash(const char *abs_path, hdfsFS userFS)
int idx;
for (idx = 1; idx < TRASH_RENAME_TRIES; idx++) {
free(target);
if (asprintf(&target, "%s%s.%d", target_dir, pcomp, idx) < 0) {
if (asprintf(&target, "%s/%s.%d", target_dir, pcomp, idx) < 0) {
target = NULL;
ret = ENOMEM;
goto done;