Skip to content

Commit e566f5d

Browse files
authored
Merge pull request #4 from bbockelm/fix-rename
Fix rename
2 parents 3a48e09 + 6e54f28 commit e566f5d

1 file changed

Lines changed: 13 additions & 5 deletions

File tree

src/gridftp_hdfs.c

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -458,11 +458,19 @@ hdfs_command(
458458
errno = 0;
459459
if (hdfsRename(hdfs_handle->fs, FromPathName, PathName)) {
460460
if (errno) {
461-
char * rename_msg = (char *)globus_malloc(1024);
462-
snprintf(rename_msg, 1024, "rename from %s", FromPathName);
463-
rename_msg[1023] = '\0';
464-
SystemError(hdfs_handle, rename_msg, result);
465-
globus_free(rename_msg);
461+
int failed = 1;
462+
if (errno == EIO) {
463+
hdfsDelete(hdfs_handle->fs, PathName, 0);
464+
failed = hdfsRename(hdfs_handle->fs, FromPathName, PathName);
465+
result = GLOBUS_SUCCESS;
466+
}
467+
if (failed) {
468+
char * rename_msg = (char *)globus_malloc(1024);
469+
snprintf(rename_msg, 1024, "rename from %s", FromPathName);
470+
rename_msg[1023] = '\0';
471+
SystemError(hdfs_handle, rename_msg, result);
472+
globus_free(rename_msg);
473+
}
466474
} else {
467475
GenericError(hdfs_handle, "Unable to rename file (reason unknown)", result);
468476
}

0 commit comments

Comments
 (0)