File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff 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 }
You can’t perform that action at this time.
0 commit comments