[ 
https://issues.apache.org/jira/browse/HIVE-25932?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

lkl updated HIVE-25932:
-----------------------
    Description: 
Hive.java

 
 {{            for (final FileStatus srcStatus : srcs) {//              final 
Path destFile = new Path(destf, srcStatus.getPath().getName());              
final String name = srcStatus.getPath().getName();              final Path 
destDirPath = srcStatus.getPath();              if (null == pool) {             
   Path destFile = new Path(destf, name);                int counter = 1;       
         while (!destFs.rename(destDirPath, destFile)) {                  
destFile =  new Path(destf, name + ("_copy_" + counter));                  
LOG.info("kugu log destFile is {}.",destFile.getName());                  
counter++;//                  throw new IOException("rename for src path: " + 
srcStatus.getPath() + " to dest:"//                      + destf + " returned 
false");                }              } else {                
futures.add(pool.submit(new Callable<Void>() {                  @Override       
           public Void call() throws Exception {                    
SessionState.setCurrentSessionState(parentSession);                    final 
String group = srcStatus.getGroup();                    Path destFile = new 
Path(destf, name);                    boolean rename_succ = false;              
      int counter = 1;                    while (!rename_succ) {                
      rename_succ = destFs.rename(destDirPath, destFile);                      
if(rename_succ) {                        if (inheritPerms) {                    
      HdfsUtils.setFullFileStatus(conf, desiredStatus, group, destFs, destFile, 
false);                        }                      }else {                   
     destFile =  new Path(destf, name + ("_copy_" + counter));                  
      LOG.info("kugu log destFile is {}.",destFile.getName());                  
    }                      counter++;                    }//                    
if(destFs.rename(srcStatus.getPath(), destFile)) {//                      if 
(inheritPerms) {//                        HdfsUtils.setFullFileStatus(conf, 
desiredStatus, group, destFs, destFile, false);//                      }//      
              } else {//                      throw new IOException("rename for 
src path: " + srcStatus.getPath() + " to dest path:"//                          
+ destFile + " returned false");//                    }                    
return null;                  }}}

> two or more sql like "insert into table test paritition (cls=1) select xxx" 
> sometimes one sql was failed with rename ,because the two sql create a same 
> file name
> -----------------------------------------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: HIVE-25932
>                 URL: https://issues.apache.org/jira/browse/HIVE-25932
>             Project: Hive
>          Issue Type: Improvement
>          Components: Query Planning, Query Processor
>    Affects Versions: 2.3.7
>            Reporter: lkl
>            Assignee: lkl
>            Priority: Minor
>
> Hive.java
>  
>  {{            for (final FileStatus srcStatus : srcs) {//              final 
> Path destFile = new Path(destf, srcStatus.getPath().getName());              
> final String name = srcStatus.getPath().getName();              final Path 
> destDirPath = srcStatus.getPath();              if (null == pool) {           
>      Path destFile = new Path(destf, name);                int counter = 1;   
>              while (!destFs.rename(destDirPath, destFile)) {                  
> destFile =  new Path(destf, name + ("_copy_" + counter));                  
> LOG.info("kugu log destFile is {}.",destFile.getName());                  
> counter++;//                  throw new IOException("rename for src path: " + 
> srcStatus.getPath() + " to dest:"//                      + destf + " returned 
> false");                }              } else {                
> futures.add(pool.submit(new Callable<Void>() {                  @Override     
>              public Void call() throws Exception {                    
> SessionState.setCurrentSessionState(parentSession);                    final 
> String group = srcStatus.getGroup();                    Path destFile = new 
> Path(destf, name);                    boolean rename_succ = false;            
>         int counter = 1;                    while (!rename_succ) {            
>           rename_succ = destFs.rename(destDirPath, destFile);                 
>      if(rename_succ) {                        if (inheritPerms) {             
>              HdfsUtils.setFullFileStatus(conf, desiredStatus, group, destFs, 
> destFile, false);                        }                      }else {       
>                  destFile =  new Path(destf, name + ("_copy_" + counter));    
>                     LOG.info("kugu log destFile is {}.",destFile.getName());  
>                     }                      counter++;                    }//  
>                   if(destFs.rename(srcStatus.getPath(), destFile)) {//        
>               if (inheritPerms) {//                        
> HdfsUtils.setFullFileStatus(conf, desiredStatus, group, destFs, destFile, 
> false);//                      }//                    } else {//              
>         throw new IOException("rename for src path: " + srcStatus.getPath() + 
> " to dest path:"//                          + destFile + " returned 
> false");//                    }                    return null;               
>    }}}



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to