[
https://issues.apache.org/jira/browse/FALCON-1146?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14485859#comment-14485859
]
Peeyush Bishnoi commented on FALCON-1146:
-----------------------------------------
I am able to replicate this issue in which entire feed path deleted up to the
root, if path is empty. Currently feedBasePath (/adis/test) is not fully
qualified when passed to deleteInstance and to deleteParentIfEmpty function.
But instance directory path is fully qualified
(hdfs://champlain.hortonworks.local:8020/adis/test/2015/04/02/09/28) which has
to be deleted. When check was performed whether feedBasePath (/adis/test)
matches to parent feed instance directory path
(hdfs://champlain.hortonworks.local:8020/adis/test) to stop deletion, it did
not match and thus deletion up to the root level happened (if path is empty) as
there is recursive call for deleteParentIfEmpty function.
{code:java}
private void deleteParentIfEmpty(FileSystem fs, Path parent, Path feedBasePath)
throws IOException {
if (feedBasePath.equals(parent)) {
LOG.info("Not deleting feed base path: {}", parent);
} else {
FileStatus[] files = fs.listStatus(parent);
if (files != null && files.length == 0) {
LOG.info("Parent path: {} is empty, deleting path", parent);
if (fs.delete(parent, true)) {
LOG.info("Deleted empty dir: {}", parent);
} else {
throw new IOException("Unable to delete parent path:" +
parent);
}
deleteParentIfEmpty(fs, parent.getParent(), feedBasePath);
}
}
}
{code}
After feedBasePath has been made fully qualified, it matches to the parent
directory path appropriately, thus it stop deletion up to the feedBasePath
directory only. [~sriksun] I will provide the patch for this issue so as to fix
in 0.6.* itself.
> feed retention policy deleted everything all the way up to the root
> -------------------------------------------------------------------
>
> Key: FALCON-1146
> URL: https://issues.apache.org/jira/browse/FALCON-1146
> Project: Falcon
> Issue Type: Bug
> Components: common, retention
> Affects Versions: 0.6
> Reporter: Peeyush Bishnoi
> Assignee: Peeyush Bishnoi
> Priority: Critical
> Fix For: 0.6.1
>
>
> For the below feed definition xml, feed is set to delete every minute but
> once it run it deleted everything all the way up and even the root directory.
> {code}
> <?xml version="1.0" encoding="UTF-8"?>
> <feed description="ALU EVDO retention feed" name="alu-evdo-retention"
> xmlns="uri:falcon:feed:0.1">
> <frequency>minutes(30)</frequency>
> <clusters>
> <cluster name="primary-cluster" type="source">
> <validity start="2014-03-01T00:00Z" end="2016-01-01T00:00Z"/>
> <retention limit="minutes(1)" action="delete"/>
> </cluster>
> </clusters>
> <locations>
> <location type="data"
> path="/adis/test/${YEAR}-${MONTH}-${DAY}/${HOUR}/${MINUTE}"/>
> </locations>
> <ACL owner="flume" group="landing" permission="0x777"/>
> <schema location="/none" provider="none" />
> </feed>
> {code}
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)