[ 
https://issues.apache.org/jira/browse/OOZIE-3273?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16550779#comment-16550779
 ] 

Shubham commented on OOZIE-3273:
--------------------------------

Right [~matijhs]. If action is not able to do movement in second attempt, 
Ideally it should fail.

> FsAction should fail on retry if destination path exists
> --------------------------------------------------------
>
>                 Key: OOZIE-3273
>                 URL: https://issues.apache.org/jira/browse/OOZIE-3273
>             Project: Oozie
>          Issue Type: Bug
>    Affects Versions: 4.2.0
>            Reporter: Shubham
>            Priority: Major
>
> This FsAction fails with error code FS008 if the source files already exist 
> in target folder.
> The expected behavior should be that Oozie will try this action once again 
> after 1 minute, and marked the action as failed because the error is still 
> there.
> However, Oozie marks the action as success on retry. (we didn't clean up the 
> target folder)
> Logs:
> {code}
> 2018-05-15 00:08:05,187 INFO ActionStartXCommand:520 - SERVER[mn2.sf.priv] 
> USER[hive] GROUP[-] TOKEN[] APP[sample-wf] 
> JOB[0000061-180514024838863-oozie-oozi-W] 
> ACTION[0000061-180514024838863-oozie-oozi-W@loading] Start action 
> [0000061-180514024838863-oozie-oozi-W@loading] with user-retry state : 
> userRetryCount [0], userRetryMax [2], userRetryInterval [1]
> 2018-05-15 00:08:05,201 WARN ActionStartXCommand:523 - SERVER[mn2.sf.priv] 
> USER[hive] GROUP[-] TOKEN[] APP[sample-wf] 
> JOB[0000061-180514024838863-oozie-oozi-W] 
> ACTION[0000061-180514024838863-oozie-oozi-W@loading] Error starting action 
> [load-staging]. ErrorType [ERROR], ErrorCode [FS008], Message [FS008: move, 
> could not move 
> [hdfs://nn:8020/user/hive/audit/data/ingestion/USER_ACCOUNT_AF_A/1522284431816-2018-03-28_1747_11.816-PT2M10.096S-TEST.0-19462_24325-67401946-8fcf-4940-91ec-063016a5da48.avro]
>  to [hdfs://nn:8020/user/hive/audit/data/staging/USER_ACCOUNT_AF_A]]
> org.apache.oozie.action.ActionExecutorException: FS008: move, could not move 
> [hdfs://nn:8020/user/hive/audit/data/ingestion/SAMPLE_WF/1522284431816-2018-03-28_1747_11.816-PT2M10.096S-TEST.0-19462_24325-67401946-8fcf-4940-91ec-063016a5da48.avro]
>  to [hdfs://nn:8020/user/hive/audit/data/staging/USER_ACCOUNT_AF_A]
>  at 
> org.apache.oozie.action.hadoop.FsActionExecutor.move(FsActionExecutor.java:509)
>  at 
> org.apache.oozie.action.hadoop.FsActionExecutor.doOperations(FsActionExecutor.java:199)
>  at 
> org.apache.oozie.action.hadoop.FsActionExecutor.start(FsActionExecutor.java:609)
>  at 
> org.apache.oozie.command.wf.ActionStartXCommand.execute(ActionStartXCommand.java:234)
>  at 
> org.apache.oozie.command.wf.ActionStartXCommand.execute(ActionStartXCommand.java:65)
>  at org.apache.oozie.command.XCommand.call(XCommand.java:287)
>  at 
> org.apache.oozie.service.CallableQueueService$CompositeCallable.call(CallableQueueService.java:331)
>  at 
> org.apache.oozie.service.CallableQueueService$CompositeCallable.call(CallableQueueService.java:260)
>  at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>  at 
> org.apache.oozie.service.CallableQueueService$CallableWrapper.run(CallableQueueService.java:178)
>  at 
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
>  at 
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
>  at java.lang.Thread.run(Thread.java:745)
> 2018-05-15 00:08:05,202 WARN ActionStartXCommand:523 - SERVER[mn2.sf.priv] 
> USER[hive] GROUP[-] TOKEN[] APP[sample-wf] 
> JOB[0000061-180514024838863-oozie-oozi-W] 
> ACTION[0000061-180514024838863-oozie-oozi-W@loading] Setting Action Status to 
> [DONE]
> 2018-05-15 00:08:05,202 INFO ActionStartXCommand:520 - SERVER[mn2.sf.priv] 
> USER[hive] GROUP[-] TOKEN[] APP[sample-wf] 
> JOB[0000061-180514024838863-oozie-oozi-W] 
> ACTION[0000061-180514024838863-oozie-oozi-W@loading] Preparing retry this 
> action [0000061-180514024838863-oozie-oozi-W@loading], errorCode [FS008], 
> userRetryCount [0], userRetryMax [2], userRetryInterval [1]
> 2018-05-15 00:09:05,254 INFO ActionStartXCommand:520 - SERVER[mn2.sf.priv] 
> USER[hive] GROUP[-] TOKEN[] APP[sample-wf] 
> JOB[0000061-180514024838863-oozie-oozi-W] 
> ACTION[0000061-180514024838863-oozie-oozi-W@loading] Start action 
> [0000061-180514024838863-oozie-oozi-W@loading] with user-retry state : 
> userRetryCount [1], userRetryMax [2], userRetryInterval [1]
> 2018-05-15 00:09:05,276 INFO ActionStartXCommand:520 - SERVER[mn2.sf.priv] 
> USER[hive] GROUP[-] TOKEN[] APP[sample-wf] 
> JOB[0000061-180514024838863-oozie-oozi-W] 
> ACTION[0000061-180514024838863-oozie-oozi-W@loading] 
> [***0000061-180514024838863-oozie-oozi-W@loading***]Action status=DONE
> 2018-05-15 00:09:05,277 INFO ActionStartXCommand:520 - SERVER[mn2.sf.priv] 
> USER[hive] GROUP[-] TOKEN[] APP[sample-wf] 
> JOB[0000061-180514024838863-oozie-oozi-W] 
> ACTION[0000061-180514024838863-oozie-oozi-W@loading] 
> [***0000061-180514024838863-oozie-oozi-W@loading***]Action updated in DB!
> 2018-05-15 00:09:05,314 INFO ActionStartXCommand:520 - SERVER[mn2.sf.priv] 
> USER[hive] GROUP[-] TOKEN[] APP[sample-wf] 
> JOB[0000061-180514024838863-oozie-oozi-W] 
> ACTION[0000061-180514024838863-oozie-oozi-W@end] Start action 
> [0000061-180514024838863-oozie-oozi-W@end] with user-retry state : 
> userRetryCount [0], userRetryMax [0], userRetryInterval [10]
> 2018-05-15 00:09:05,314 INFO ActionStartXCommand:520 - SERVER[mn2.sf.priv] 
> USER[hive] GROUP[-] TOKEN[] APP[sample-wf] 
> JOB[0000061-180514024838863-oozie-oozi-W] 
> ACTION[0000061-180514024838863-oozie-oozi-W@end] 
> [***0000061-180514024838863-oozie-oozi-W@end***]Action status=DONE
> 2018-05-15 00:09:05,314 INFO ActionStartXCommand:520 - SERVER[mn2.sf.priv] 
> USER[hive] GROUP[-] TOKEN[] APP[sample-wf] 
> JOB[0000061-180514024838863-oozie-oozi-W] 
> ACTION[0000061-180514024838863-oozie-oozi-W@end] 
> [***0000061-180514024838863-oozie-oozi-W@end***]Action updated in DB!
> {code}
> Observations:
> - First time recovery parameter is 'false' so it executes the method 
> `fs.rename(p, target) && !recovery)`
> - Second time `recovery` is true, so it enters into the for loop `for (Path p 
> : pathArr)` but does not execute rename. So it is successful second time.
> {code:java}
>     public void move(Context context, XConfiguration fsConf, Path 
> nameNodePath, Path source, Path target, boolean recovery)
>             throws ActionExecutorException {
>         try {
>             source = resolveToFullPath(nameNodePath, source, true);
>             validateSameNN(source, target);
>             FileSystem fs = getFileSystemFor(source, context, fsConf);
>             Path[] pathArr = FileUtil.stat2Paths(fs.globStatus(source));
>             if ((pathArr == null || pathArr.length == 0)) {
>                 if (!recovery) {
>                     throw new 
> ActionExecutorException(ActionExecutorException.ErrorType.ERROR, "FS006",
>                             "move, source path [\{0}] does not exist", 
> source);
>                 } else {
>                     return;
>                 }
>             }
>             if (pathArr.length > 1 && (!fs.exists(target) || 
> fs.isFile(target))) {
>                 if (!recovery) {
>                     throw new 
> ActionExecutorException(ActionExecutorException.ErrorType.ERROR, "FS012",
>                             "move, could not rename multiple sources to the 
> same target name");
>                 } else {
>                     return;
>                 }
>             }
>             checkGlobMax(pathArr);
>             for (Path p : pathArr) {
>                 if (!fs.rename(p, target) && !recovery) {
>                     throw new 
> ActionExecutorException(ActionExecutorException.ErrorType.ERROR, "FS008",
>                             "move, could not move [\{0}] to [\{1}]", p, 
> target);
>                 }
>             }
>         } catch (Exception ex) {
>             throw convertException(ex);
>         }
>     }
> {code}
> I think It should fail even second time.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to