You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@falcon.apache.org by ba...@apache.org on 2015/12/01 21:47:10 UTC
falcon git commit: FALCON-1490 Fixing inconsistencies in filterBy
behavior (Narayan Periwal via Balu Vellanki)
Repository: falcon
Updated Branches:
refs/heads/master 8b352fcfa -> 1ebf025ba
FALCON-1490 Fixing inconsistencies in filterBy behavior (Narayan Periwal via Balu Vellanki)
Project: http://git-wip-us.apache.org/repos/asf/falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/falcon/commit/1ebf025b
Tree: http://git-wip-us.apache.org/repos/asf/falcon/tree/1ebf025b
Diff: http://git-wip-us.apache.org/repos/asf/falcon/diff/1ebf025b
Branch: refs/heads/master
Commit: 1ebf025ba1f2512e1fab75edc2908123dd548657
Parents: 8b352fc
Author: bvellanki <bv...@hortonworks.com>
Authored: Tue Dec 1 12:45:17 2015 -0800
Committer: bvellanki <bv...@hortonworks.com>
Committed: Tue Dec 1 12:45:17 2015 -0800
----------------------------------------------------------------------
CHANGES.txt | 2 ++
.../falcon/resource/AbstractEntityManager.java | 34 ++++++++++++++++++--
.../falcon/resource/EntityManagerTest.java | 26 +++++++++++++++
3 files changed, 60 insertions(+), 2 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/falcon/blob/1ebf025b/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 2f3787a..cdd9eb6 100755
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -9,6 +9,8 @@ Trunk (Unreleased)
INCOMPATIBLE CHANGES
NEW FEATURES
+ FALCON-1490 Fixing inconsistencies in filterBy behavior (Narayan Periwal via Balu Vellanki)
+
FALCON-1233 Support co-existence of Oozie scheduler (coord) and Falcon native scheduler (Pallavi Rao)
FALCON-1596 Spring shell based CLI for Falcon
http://git-wip-us.apache.org/repos/asf/falcon/blob/1ebf025b/prism/src/main/java/org/apache/falcon/resource/AbstractEntityManager.java
----------------------------------------------------------------------
diff --git a/prism/src/main/java/org/apache/falcon/resource/AbstractEntityManager.java b/prism/src/main/java/org/apache/falcon/resource/AbstractEntityManager.java
index 5571326..2f97c0d 100644
--- a/prism/src/main/java/org/apache/falcon/resource/AbstractEntityManager.java
+++ b/prism/src/main/java/org/apache/falcon/resource/AbstractEntityManager.java
@@ -890,6 +890,36 @@ public abstract class AbstractEntityManager {
return false;
}
+ private boolean isFilteredByPipelines(List<String> filterPipelinesList, List<String> pipelines) {
+ if (filterPipelinesList.isEmpty()) {
+ return false;
+ } else if (pipelines.isEmpty()) {
+ return true;
+ }
+
+ for (String pipeline : filterPipelinesList) {
+ if (pipelines.contains(pipeline)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ private boolean isFilteredByClusters(List<String> filterClustersList, Set<String> clusters) {
+ if (filterClustersList.isEmpty()) {
+ return false;
+ } else if (clusters.isEmpty()) {
+ return true;
+ }
+
+ for (String cluster : filterClustersList) {
+ if (clusters.contains(cluster)) {
+ return false;
+ }
+ }
+ return true;
+ }
+
private boolean isFilteredByFields(Entity entity, Map<String, List<String>> filterKeyVals) {
if (filterKeyVals.isEmpty()) {
return false;
@@ -924,10 +954,10 @@ public abstract class AbstractEntityManager {
"Invalid filterBy key for non process entities " + pair.getKey(),
Response.Status.BAD_REQUEST);
}
- return !EntityUtil.getPipelines(entity).contains(pair.getValue().get(0));
+ return isFilteredByPipelines(pair.getValue(), EntityUtil.getPipelines(entity));
case CLUSTER:
- return !EntityUtil.getClustersDefined(entity).contains(pair.getValue().get(0));
+ return isFilteredByClusters(pair.getValue(), EntityUtil.getClustersDefined(entity));
case TAGS:
return isFilteredByTags(getFilterByTags(pair.getValue()), EntityUtil.getTags(entity));
http://git-wip-us.apache.org/repos/asf/falcon/blob/1ebf025b/prism/src/test/java/org/apache/falcon/resource/EntityManagerTest.java
----------------------------------------------------------------------
diff --git a/prism/src/test/java/org/apache/falcon/resource/EntityManagerTest.java b/prism/src/test/java/org/apache/falcon/resource/EntityManagerTest.java
index 5fabcf3..99a537d 100644
--- a/prism/src/test/java/org/apache/falcon/resource/EntityManagerTest.java
+++ b/prism/src/test/java/org/apache/falcon/resource/EntityManagerTest.java
@@ -196,6 +196,32 @@ public class EntityManagerTest extends AbstractEntityManager {
}
@Test
+ public void testGetEntityListPipelinesFilterBy() throws Exception {
+ Entity process2 = buildProcess("processAuthUserPipelinesFilterBy", System.getProperty("user.name"), "",
+ "USER-DATA1");
+ configStore.publish(EntityType.PROCESS, process2);
+
+ EntityList entityList = this.getEntityList("", "", "", "process", "",
+ "PIPELINES:USER-DATA2,PIPELINES:USER-DATA1", "", "asc", 0, 10, "");
+ Assert.assertNotNull(entityList.getElements());
+ Assert.assertEquals(entityList.getElements().length, 1);
+ Assert.assertNotNull(entityList.getElements()[0].pipeline);
+ Assert.assertEquals(entityList.getElements()[0].pipeline.get(0), "USER-DATA1");
+ }
+
+ @Test
+ public void testGetEntityListClustersFilterBy() throws Exception {
+ Entity process2 = buildProcess("processClusters1", System.getProperty("user.name"), "", "");
+ configStore.publish(EntityType.PROCESS, process2);
+
+ EntityList entityList = this.getEntityList("", "", "", "process", "",
+ "CLUSTER:clusterprocessClusters2,CLUSTER:clusterprocessClusters1", "", "asc", 0, 10, "");
+ Assert.assertNotNull(entityList.getElements());
+ Assert.assertEquals(entityList.getElements().length, 1);
+ Assert.assertEquals(entityList.getElements()[0].name, "processClusters1");
+ }
+
+ @Test
public void testNumberOfResults() {
Assert.assertEquals(getRequiredNumberOfResults(10000, 0, 10000), 10000);
Assert.assertEquals(getRequiredNumberOfResults(10000, 0, 4000), 4000);