falcon-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From venkat...@apache.org
Subject [1/2] git commit: FALCON-430 Process update with user. Contributed by Shwetha GS
Date Mon, 16 Jun 2014 10:58:32 GMT
Repository: incubator-falcon
Updated Branches:
  refs/heads/master e01dd79c7 -> b68946a02


FALCON-430 Process update with user. Contributed by Shwetha GS


Project: http://git-wip-us.apache.org/repos/asf/incubator-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-falcon/commit/b501baa3
Tree: http://git-wip-us.apache.org/repos/asf/incubator-falcon/tree/b501baa3
Diff: http://git-wip-us.apache.org/repos/asf/incubator-falcon/diff/b501baa3

Branch: refs/heads/master
Commit: b501baa36f89270b738f907537cda61e4fa10816
Parents: e01dd79
Author: Venkatesh Seetharam <venkatesh@apache.org>
Authored: Mon Jun 16 14:11:12 2014 +0530
Committer: Venkatesh Seetharam <venkatesh@apache.org>
Committed: Mon Jun 16 14:11:12 2014 +0530

----------------------------------------------------------------------
 CHANGES.txt                                     |  2 +
 .../falcon/entity/parser/FeedEntityParser.java  | 10 +++
 .../apache/falcon/entity/AbstractTestBase.java  |  2 +-
 .../entity/parser/FeedEntityParserTest.java     | 12 +++
 .../workflow/engine/OozieWorkflowEngine.java    | 86 ++++++++++++--------
 .../falcon/resource/EntityManagerJerseyIT.java  |  1 +
 .../org/apache/falcon/resource/TestContext.java |  1 +
 webapp/src/test/resources/feed-template1.xml    |  2 +-
 webapp/src/test/resources/feed-template2.xml    |  2 +-
 webapp/src/test/resources/hive-table-feed.xml   |  2 +-
 .../test/resources/table/table-feed-input.xml   |  2 +-
 .../test/resources/table/table-feed-output.xml  |  2 +-
 12 files changed, 85 insertions(+), 39 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/b501baa3/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 98b782b..e6ca795 100755
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -16,6 +16,8 @@ Trunk (Unreleased)
   OPTIMIZATIONS
 
   BUG FIXES
+   FALCON-430 Process update with user (Shwetha GS via Venkatesh Seetharam)
+
    FALCON-460 Concurrent deletion of same entity results in NPE (Sowmya Ramesh
    via Venkatesh Seetharam)
 

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/b501baa3/common/src/main/java/org/apache/falcon/entity/parser/FeedEntityParser.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/falcon/entity/parser/FeedEntityParser.java b/common/src/main/java/org/apache/falcon/entity/parser/FeedEntityParser.java
index ccdead9..7f87bdc 100644
--- a/common/src/main/java/org/apache/falcon/entity/parser/FeedEntityParser.java
+++ b/common/src/main/java/org/apache/falcon/entity/parser/FeedEntityParser.java
@@ -40,6 +40,7 @@ import org.apache.falcon.entity.v0.process.Process;
 import org.apache.falcon.expression.ExpressionHelper;
 import org.apache.falcon.group.FeedGroup;
 import org.apache.falcon.group.FeedGroupMap;
+import org.apache.falcon.security.CurrentUser;
 import org.apache.falcon.security.SecurityUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -81,6 +82,7 @@ public class FeedEntityParser extends EntityParser<Feed> {
         validateFeedStorage(feed);
         validateFeedPartitionExpression(feed);
         validateFeedGroups(feed);
+        validateUser(feed);
 
         // Seems like a good enough entity object for a new one
         // But is this an update ?
@@ -103,6 +105,14 @@ public class FeedEntityParser extends EntityParser<Feed> {
         ensureValidityFor(feed, processes);
     }
 
+    protected void validateUser(Feed feed) throws ValidationException {
+        String owner = feed.getACL().getOwner();
+        if (!owner.equals(CurrentUser.getUser())) {
+            throw new ValidationException("Entity's owner " + owner + " is not same as current
user "
+                + CurrentUser.getUser());
+        }
+    }
+
     private Set<Process> findProcesses(Set<Entity> referenced) {
         Set<Process> processes = new HashSet<Process>();
         for (Entity entity : referenced) {

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/b501baa3/common/src/test/java/org/apache/falcon/entity/AbstractTestBase.java
----------------------------------------------------------------------
diff --git a/common/src/test/java/org/apache/falcon/entity/AbstractTestBase.java b/common/src/test/java/org/apache/falcon/entity/AbstractTestBase.java
index 6ec5b41..3c2b63b 100644
--- a/common/src/test/java/org/apache/falcon/entity/AbstractTestBase.java
+++ b/common/src/test/java/org/apache/falcon/entity/AbstractTestBase.java
@@ -72,7 +72,7 @@ public class AbstractTestBase {
         store = ConfigurationStore.get();
         store.init();
 
-        CurrentUser.authenticate("falcon");
+        CurrentUser.authenticate("testuser");
     }
 
     protected void cleanupStore() throws FalconException {

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/b501baa3/common/src/test/java/org/apache/falcon/entity/parser/FeedEntityParserTest.java
----------------------------------------------------------------------
diff --git a/common/src/test/java/org/apache/falcon/entity/parser/FeedEntityParserTest.java
b/common/src/test/java/org/apache/falcon/entity/parser/FeedEntityParserTest.java
index 62a5afa..e2da982 100644
--- a/common/src/test/java/org/apache/falcon/entity/parser/FeedEntityParserTest.java
+++ b/common/src/test/java/org/apache/falcon/entity/parser/FeedEntityParserTest.java
@@ -31,6 +31,7 @@ import org.apache.falcon.entity.v0.cluster.Cluster;
 import org.apache.falcon.entity.v0.cluster.Interfacetype;
 import org.apache.falcon.entity.v0.feed.*;
 import org.apache.falcon.group.FeedGroupMapTest;
+import org.apache.falcon.security.CurrentUser;
 import org.testng.Assert;
 import org.testng.annotations.BeforeMethod;
 import org.testng.annotations.Test;
@@ -80,6 +81,17 @@ public class FeedEntityParserTest extends AbstractTestBase {
         parser.parseAndValidate(this.getClass().getResourceAsStream(FEED_XML));
     }
 
+
+    @Test(expectedExceptions = ValidationException.class)
+    public void testValidateUser() throws Exception {
+        CurrentUser.authenticate("unknown");
+        try {
+            parser.parseAndValidate(this.getClass().getResourceAsStream(FEED_XML));
+        } finally {
+            CurrentUser.authenticate("testuser");
+        }
+    }
+
     @Test
     public void testParse() throws IOException, FalconException, JAXBException {
 

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/b501baa3/oozie/src/main/java/org/apache/falcon/workflow/engine/OozieWorkflowEngine.java
----------------------------------------------------------------------
diff --git a/oozie/src/main/java/org/apache/falcon/workflow/engine/OozieWorkflowEngine.java
b/oozie/src/main/java/org/apache/falcon/workflow/engine/OozieWorkflowEngine.java
index 34192c0..096be40 100644
--- a/oozie/src/main/java/org/apache/falcon/workflow/engine/OozieWorkflowEngine.java
+++ b/oozie/src/main/java/org/apache/falcon/workflow/engine/OozieWorkflowEngine.java
@@ -38,6 +38,7 @@ import org.apache.falcon.resource.InstancesResult.Instance;
 import org.apache.falcon.resource.InstancesResult.WorkflowStatus;
 import org.apache.falcon.resource.InstancesSummaryResult;
 import org.apache.falcon.resource.InstancesSummaryResult.InstanceSummary;
+import org.apache.falcon.security.CurrentUser;
 import org.apache.falcon.update.UpdateHelper;
 import org.apache.falcon.util.OozieUtils;
 import org.apache.falcon.util.RuntimeProperties;
@@ -140,8 +141,8 @@ public class OozieWorkflowEngine extends AbstractWorkflowEngine {
 
         if (!schedClusters.isEmpty()) {
             WorkflowBuilder<Entity> builder = WorkflowBuilder.getBuilder(ENGINE, entity);
-            Map<String, Properties> newFlows = builder.newWorkflowSchedule(schedClusters.toArray(new
-                String[schedClusters.size()]));
+            Map<String, Properties> newFlows =
+                builder.newWorkflowSchedule(schedClusters.toArray(new String[schedClusters.size()]));
             for (Map.Entry<String, Properties> entry : newFlows.entrySet()) {
                 String cluster = entry.getKey();
                 LOG.info("Scheduling {} on cluster {}", entity.toShortString(), cluster);
@@ -565,7 +566,7 @@ public class OozieWorkflowEngine extends AbstractWorkflowEngine {
 
             List<BundleJob> bundles = entry.getValue();
             ProxyOozieClient client = OozieClientFactory.get(cluster);
-            List<CoordinatorJob> applicableCoords = getApplicableCoords(entity, client,
start, end,
+            List<CoordinatorJob> applicableCoords = getApplicableCoords(client, start,
end,
                     bundles, lifeCycles);
             long unscheduledInstances = 0;
             boolean isLastCoord = false;
@@ -779,7 +780,7 @@ public class OozieWorkflowEngine extends AbstractWorkflowEngine {
             List<BundleJob> bundles = entry.getValue();
             ProxyOozieClient client = OozieClientFactory.get(cluster);
             List<CoordinatorJob> applicableCoords =
-                getApplicableCoords(entity, client, start, end, bundles, lifeCycles);
+                getApplicableCoords(client, start, end, bundles, lifeCycles);
             List<CoordinatorAction> actions = new ArrayList<CoordinatorAction>();
             int maxRetentionInstancesCount =
                 Integer.valueOf(RuntimeProperties.get().getProperty("retention.instances.displaycount",
"2"));
@@ -820,10 +821,7 @@ public class OozieWorkflowEngine extends AbstractWorkflowEngine {
     }
 
     private boolean isRetentionCoord(CoordinatorJob coord){
-        if (coord.getAppName().contains(LifeCycle.EVICTION.getTag().name())) {
-            return true;
-        }
-        return false;
+        return coord.getAppName().contains(LifeCycle.EVICTION.getTag().name());
     }
 
     private void addCoordAction(ProxyOozieClient client, List<CoordinatorAction> actions,
String actionId) {
@@ -863,8 +861,8 @@ public class OozieWorkflowEngine extends AbstractWorkflowEngine {
         }
     }
 
-    private List<CoordinatorJob> getApplicableCoords(Entity entity, ProxyOozieClient
client, Date start,
-                                                     Date end, List<BundleJob> bundles,
+    private List<CoordinatorJob> getApplicableCoords(ProxyOozieClient client, Date
start, Date end,
+                                                     List<BundleJob> bundles,
                                                      List<LifeCycle> lifeCycles) throws
FalconException {
         List<CoordinatorJob> applicableCoords = new ArrayList<CoordinatorJob>();
         try {
@@ -885,6 +883,7 @@ public class OozieWorkflowEngine extends AbstractWorkflowEngine {
                     }
                 }
             }
+
             sortDescByStartTime(applicableCoords);
             return applicableCoords;
         } catch (OozieClientException e) {
@@ -951,7 +950,8 @@ public class OozieWorkflowEngine extends AbstractWorkflowEngine {
 
             LOG.debug("Going to update! : {} for cluster {}, bundle: {}",
                     newEntity.toShortString(), cluster, bundle.getId());
-            effectiveTime = updateInternal(oldEntity, newEntity, cluster, bundle, false,
effectiveTime);
+            effectiveTime = updateInternal(oldEntity, newEntity, cluster, bundle,
+                    false, effectiveTime, CurrentUser.getUser());
             LOG.info("Entity update complete: {} for cluster {}, bundle: {}",
                     newEntity.toShortString(), cluster, bundle.getId());
         }
@@ -975,8 +975,8 @@ public class OozieWorkflowEngine extends AbstractWorkflowEngine {
 
             LOG.info("Triggering update for {}, {}", cluster, affectedProcBundle.getId());
 
-            Date depEndTime =
-                updateInternal(affectedEntity, affectedEntity, cluster, affectedProcBundle,
false, effectiveTime);
+            Date depEndTime = updateInternal(affectedEntity, affectedEntity, cluster,
+                    affectedProcBundle, false, effectiveTime, affectedProcBundle.getUser());
             if (effectiveTime == null || effectiveTime.after(depEndTime)) {
                 effectiveTime = depEndTime;
             }
@@ -1067,10 +1067,11 @@ public class OozieWorkflowEngine extends AbstractWorkflowEngine {
         }
     }
 
-    private Date updateInternal(Entity oldEntity, Entity newEntity, String cluster, BundleJob
oldBundle,
-        boolean alreadyCreated, Date inEffectiveTime) throws FalconException {
+    private Date updateInternal(Entity oldEntity, Entity newEntity, String cluster,
+                                BundleJob oldBundle, boolean alreadyCreated, Date inEffectiveTime,
+                                String user) throws FalconException {
         OozieWorkflowBuilder<Entity> builder =
-            (OozieWorkflowBuilder<Entity>) WorkflowBuilder.getBuilder(ENGINE, oldEntity);
+                (OozieWorkflowBuilder<Entity>) WorkflowBuilder.getBuilder(ENGINE, oldEntity);
 
         Job.Status oldBundleStatus = oldBundle.getStatus();
         //Suspend coords as bundle suspend doesn't suspend coords synchronously
@@ -1081,7 +1082,8 @@ public class OozieWorkflowEngine extends AbstractWorkflowEngine {
         //find last scheduled bundle
         BundleJob latestBundle = findBundleForStagingPath(cluster, oldEntity, stagingPath);
         Date effectiveTime;
-        if (oldBundle.getAppPath().endsWith(stagingPath.toUri().getPath()) || latestBundle
== null || !alreadyCreated) {
+        if (oldBundle.getAppPath().endsWith(stagingPath.toUri().getPath())
+                || latestBundle == null || !alreadyCreated) {
             // new entity is not scheduled yet, create new bundle
             LOG.info("New bundle hasn't been created yet. So will create one");
 
@@ -1089,7 +1091,8 @@ public class OozieWorkflowEngine extends AbstractWorkflowEngine {
             //oozie rejects changes with endtime < now
             effectiveTime = offsetTime(now(), 3);
             if (inEffectiveTime != null && inEffectiveTime.after(effectiveTime))
{
-                //If the user has specified effective time and is valid, pick user specified
effective time
+                //If the user has specified effective time and is valid,
+                // pick user specified effective time
                 effectiveTime = inEffectiveTime;
             }
 
@@ -1097,7 +1100,7 @@ public class OozieWorkflowEngine extends AbstractWorkflowEngine {
             effectiveTime = builder.getNextStartTime(newEntity, cluster, effectiveTime);
 
             //schedule new bundle
-            String newBundleId = scheduleForUpdate(newEntity, cluster, effectiveTime, oldBundle.getUser());
+            String newBundleId = scheduleForUpdate(newEntity, cluster, effectiveTime, user);
             //newBundleId and latestBundle will be null if effectiveTime = process end time
             if (newBundleId != null) {
                 latestBundle = getBundleInfo(cluster, newBundleId);
@@ -1105,19 +1108,23 @@ public class OozieWorkflowEngine extends AbstractWorkflowEngine {
                         newBundleId, SchemaHelper.formatDateUTC(effectiveTime));
             }
         } else {
-            LOG.info("New bundle has already been created. Bundle Id: {}, Start: {}, End:
{}", latestBundle.getId(),
-                SchemaHelper.formatDateUTC(latestBundle.getStartTime()), latestBundle.getEndTime());
+            LOG.info("New bundle has already been created. Bundle Id: {}, Start: {}, End:
{}",
+                    latestBundle.getId(),
+                    SchemaHelper.formatDateUTC(latestBundle.getStartTime()),
+                    latestBundle.getEndTime());
 
             //pick effectiveTime from already created bundle
             effectiveTime = getMinStartTime(latestBundle);
-            LOG.info("Will set old coord end time to {}", SchemaHelper.formatDateUTC(effectiveTime));
+            LOG.info("Will set old coord end time to {}",
+                    SchemaHelper.formatDateUTC(effectiveTime));
         }
         if (effectiveTime != null) {
             //set endtime for old coords
             updateCoords(cluster, oldBundle, EntityUtil.getParallel(oldEntity), effectiveTime);
         }
 
-        if (oldBundleStatus != Job.Status.SUSPENDED && oldBundleStatus != Job.Status.PREPSUSPENDED)
{
+        if (oldBundleStatus != Job.Status.SUSPENDED &&
+                oldBundleStatus != Job.Status.PREPSUSPENDED) {
             //resume coords
             resumeCoords(cluster, oldBundle);
         }
@@ -1133,15 +1140,29 @@ public class OozieWorkflowEngine extends AbstractWorkflowEngine {
     private String scheduleForUpdate(Entity entity, String cluster, Date startDate, String
user)
         throws FalconException {
         Entity clone = entity.copy();
-        EntityUtil.setStartDate(entity, cluster, startDate);
-        WorkflowBuilder<Entity> builder = WorkflowBuilder.getBuilder(ENGINE, clone);
-        Map<String, Properties> bundleProps = builder.newWorkflowSchedule(cluster);
-        LOG.info("Scheduling {} on cluster {} with props {}", entity.toShortString(), cluster,
bundleProps);
-        if (bundleProps != null && bundleProps.size() > 0) {
-            return scheduleEntity(cluster, bundleProps.get(cluster), entity);
-        } else {
-            LOG.info("No new workflow to be scheduled for this {}", entity.toShortString());
-            return null;
+
+        String currentUser = CurrentUser.getUser();
+        switchUser(user);
+        try {
+            EntityUtil.setStartDate(entity, cluster, startDate);
+            WorkflowBuilder<Entity> builder = WorkflowBuilder.getBuilder(ENGINE, clone);
+            Map<String, Properties> bundleProps = builder.newWorkflowSchedule(cluster);
+            LOG.info("Scheduling {} on cluster {} with props {}",
+                    entity.toShortString(), cluster, bundleProps);
+            if (bundleProps != null && bundleProps.size() > 0) {
+                return scheduleEntity(cluster, bundleProps.get(cluster), entity);
+            } else {
+                LOG.info("No new workflow to be scheduled for this " + entity.toShortString());
+                return null;
+            }
+        } finally {
+            switchUser(currentUser);
+        }
+    }
+
+    private void switchUser(String user) {
+        if (!CurrentUser.getUser().equals(user)) {
+            CurrentUser.authenticate(user);
         }
     }
 
@@ -1392,5 +1413,4 @@ public class OozieWorkflowEngine extends AbstractWorkflowEngine {
             throw new FalconException(e);
         }
     }
-
 }

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/b501baa3/webapp/src/test/java/org/apache/falcon/resource/EntityManagerJerseyIT.java
----------------------------------------------------------------------
diff --git a/webapp/src/test/java/org/apache/falcon/resource/EntityManagerJerseyIT.java b/webapp/src/test/java/org/apache/falcon/resource/EntityManagerJerseyIT.java
index 8c27017..3008387 100644
--- a/webapp/src/test/java/org/apache/falcon/resource/EntityManagerJerseyIT.java
+++ b/webapp/src/test/java/org/apache/falcon/resource/EntityManagerJerseyIT.java
@@ -299,6 +299,7 @@ public class EntityManagerJerseyIT {
         Map<String, String> overlay = new HashMap<String, String>();
         overlay.put("inputFeedName", feed3);
         overlay.put("cluster", context.clusterName);
+        overlay.put("user", System.getProperty("user.name"));
         ClientResponse response = context.submitToFalcon(TestContext.FEED_TEMPLATE1, overlay,
EntityType.FEED);
         context.assertSuccessful(response);
 

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/b501baa3/webapp/src/test/java/org/apache/falcon/resource/TestContext.java
----------------------------------------------------------------------
diff --git a/webapp/src/test/java/org/apache/falcon/resource/TestContext.java b/webapp/src/test/java/org/apache/falcon/resource/TestContext.java
index 9a4f149..bc79609 100644
--- a/webapp/src/test/java/org/apache/falcon/resource/TestContext.java
+++ b/webapp/src/test/java/org/apache/falcon/resource/TestContext.java
@@ -346,6 +346,7 @@ public class TestContext {
         processName = "p" + time;
         overlay.put("processName", processName);
         outputFeedName = "out" + time;
+        overlay.put("user", System.getProperty("user.name"));
         return overlay;
     }
 

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/b501baa3/webapp/src/test/resources/feed-template1.xml
----------------------------------------------------------------------
diff --git a/webapp/src/test/resources/feed-template1.xml b/webapp/src/test/resources/feed-template1.xml
index 912e443..456f7ce 100644
--- a/webapp/src/test/resources/feed-template1.xml
+++ b/webapp/src/test/resources/feed-template1.xml
@@ -41,6 +41,6 @@
         <location type="meta" path="/projects/falcon/clicksMetaData"/>
     </locations>
 
-    <ACL owner="testuser" group="group" permission="0x755"/>
+    <ACL owner="##user##" group="group" permission="0x755"/>
     <schema location="/schema/clicks" provider="protobuf"/>
 </feed>

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/b501baa3/webapp/src/test/resources/feed-template2.xml
----------------------------------------------------------------------
diff --git a/webapp/src/test/resources/feed-template2.xml b/webapp/src/test/resources/feed-template2.xml
index 80a62ed..d4901fa 100644
--- a/webapp/src/test/resources/feed-template2.xml
+++ b/webapp/src/test/resources/feed-template2.xml
@@ -38,6 +38,6 @@
         <location type="meta" path="/projects/falcon/clicksMetaData"/>
     </locations>
 
-    <ACL owner="testuser" group="group" permission="0x755"/>
+    <ACL owner="##user##" group="group" permission="0x755"/>
     <schema location="/schema/clicks" provider="protobuf"/>
 </feed>

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/b501baa3/webapp/src/test/resources/hive-table-feed.xml
----------------------------------------------------------------------
diff --git a/webapp/src/test/resources/hive-table-feed.xml b/webapp/src/test/resources/hive-table-feed.xml
index 4434e64..1e71ac1 100644
--- a/webapp/src/test/resources/hive-table-feed.xml
+++ b/webapp/src/test/resources/hive-table-feed.xml
@@ -32,6 +32,6 @@
 
     <table uri="##tableUri##" />
 
-    <ACL owner="testuser" group="group" permission="0x755"/>
+    <ACL owner="##user##" group="group" permission="0x755"/>
     <schema location="/schema/clicks" provider="protobuf"/>
 </feed>

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/b501baa3/webapp/src/test/resources/table/table-feed-input.xml
----------------------------------------------------------------------
diff --git a/webapp/src/test/resources/table/table-feed-input.xml b/webapp/src/test/resources/table/table-feed-input.xml
index 026b168..89dcb9e 100644
--- a/webapp/src/test/resources/table/table-feed-input.xml
+++ b/webapp/src/test/resources/table/table-feed-input.xml
@@ -32,6 +32,6 @@
 
     <table uri="catalog:falcon_db:input_table#ds=${YEAR}-${MONTH}-${DAY}-${HOUR}" />
 
-    <ACL owner="testuser" group="group" permission="0x755"/>
+    <ACL owner="##user##" group="group" permission="0x755"/>
     <schema location="hcat" provider="hcat"/>
 </feed>

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/b501baa3/webapp/src/test/resources/table/table-feed-output.xml
----------------------------------------------------------------------
diff --git a/webapp/src/test/resources/table/table-feed-output.xml b/webapp/src/test/resources/table/table-feed-output.xml
index e8a7ca0..87a296c 100644
--- a/webapp/src/test/resources/table/table-feed-output.xml
+++ b/webapp/src/test/resources/table/table-feed-output.xml
@@ -32,6 +32,6 @@
 
     <table uri="catalog:falcon_db:output_table#ds=${YEAR}-${MONTH}-${DAY}-${HOUR}" />
 
-    <ACL owner="testuser" group="group" permission="0x755"/>
+    <ACL owner="##user##" group="group" permission="0x755"/>
     <schema location="hcat" provider="hcat"/>
 </feed>


Mime
View raw message