You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@oozie.apache.org by ka...@apache.org on 2012/11/14 02:19:07 UTC
svn commit: r1409051 - in /oozie/branches/hcat-intre:
core/src/main/java/org/apache/oozie/action/hadoop/JavaActionExecutor.java
core/src/test/java/org/apache/oozie/action/hadoop/TestJavaActionExecutor.java
release-log.txt
Author: kamrul
Date: Wed Nov 14 01:19:07 2012
New Revision: 1409051
URL: http://svn.apache.org/viewvc?rev=1409051&view=rev
Log:
OOZIE-1058 ACL modify-job should not be hardcoded to group name(mona via mohammad)
Modified:
oozie/branches/hcat-intre/core/src/main/java/org/apache/oozie/action/hadoop/JavaActionExecutor.java
oozie/branches/hcat-intre/core/src/test/java/org/apache/oozie/action/hadoop/TestJavaActionExecutor.java
oozie/branches/hcat-intre/release-log.txt
Modified: oozie/branches/hcat-intre/core/src/main/java/org/apache/oozie/action/hadoop/JavaActionExecutor.java
URL: http://svn.apache.org/viewvc/oozie/branches/hcat-intre/core/src/main/java/org/apache/oozie/action/hadoop/JavaActionExecutor.java?rev=1409051&r1=1409050&r2=1409051&view=diff
==============================================================================
--- oozie/branches/hcat-intre/core/src/main/java/org/apache/oozie/action/hadoop/JavaActionExecutor.java (original)
+++ oozie/branches/hcat-intre/core/src/main/java/org/apache/oozie/action/hadoop/JavaActionExecutor.java Wed Nov 14 01:19:07 2012
@@ -670,10 +670,14 @@ public class JavaActionExecutor extends
injectActionCallback(context, actionConf);
- if (context.getWorkflow().getAcl() != null) {
- // setting the group owning the Oozie job to allow anybody in that
- // group to kill the jobs.
- actionConf.set("mapreduce.job.acl-modify-job", context.getWorkflow().getAcl());
+ if(actionConf.get(ACL_MODIFY_JOB) == null || actionConf.get(ACL_MODIFY_JOB).trim().equals("")) {
+ // ONLY in the case where user has not given the
+ // modify-job ACL specifically
+ if (context.getWorkflow().getAcl() != null) {
+ // setting the group owning the Oozie job to allow anybody in that
+ // group to modify the jobs.
+ actionConf.set(ACL_MODIFY_JOB, context.getWorkflow().getAcl());
+ }
}
// Setting the credential properties in launcher conf
Modified: oozie/branches/hcat-intre/core/src/test/java/org/apache/oozie/action/hadoop/TestJavaActionExecutor.java
URL: http://svn.apache.org/viewvc/oozie/branches/hcat-intre/core/src/test/java/org/apache/oozie/action/hadoop/TestJavaActionExecutor.java?rev=1409051&r1=1409050&r2=1409051&view=diff
==============================================================================
--- oozie/branches/hcat-intre/core/src/test/java/org/apache/oozie/action/hadoop/TestJavaActionExecutor.java (original)
+++ oozie/branches/hcat-intre/core/src/test/java/org/apache/oozie/action/hadoop/TestJavaActionExecutor.java Wed Nov 14 01:19:07 2012
@@ -301,7 +301,7 @@ public class TestJavaActionExecutor exte
}
- protected Context createContext(String actionXml) throws Exception {
+ protected Context createContext(String actionXml, String group) throws Exception {
JavaActionExecutor ae = new JavaActionExecutor();
Path appJarPath = new Path("lib/test.jar");
@@ -319,6 +319,9 @@ public class TestJavaActionExecutor exte
WorkflowJobBean wf = createBaseWorkflow(protoConf, "action");
+ if(group != null) {
+ wf.setGroup(group);
+ }
WorkflowActionBean action = (WorkflowActionBean) wf.getActions().get(0);
action.setType(ae.getType());
action.setConf(actionXml);
@@ -357,7 +360,7 @@ public class TestJavaActionExecutor exte
"<name-node>" + getNameNodeUri() + "</name-node>" +
"<main-class>" + LauncherMainTester.class.getName() + "</main-class>" +
"</java>";
- Context context = createContext(actionXml);
+ Context context = createContext(actionXml, null);
final RunningJob runningJob = submitAction(context);
waitFor(60 * 1000, new Predicate() {
@Override
@@ -383,7 +386,7 @@ public class TestJavaActionExecutor exte
"<arg>out</arg>" +
"<capture-output/>" +
"</java>";
- Context context = createContext(actionXml);
+ Context context = createContext(actionXml, null);
final RunningJob runningJob = submitAction(context);
waitFor(60 * 1000, new Predicate() {
@Override
@@ -414,7 +417,7 @@ public class TestJavaActionExecutor exte
"<arg>id</arg>" +
"<capture-output/>" +
"</java>";
- Context context = createContext(actionXml);
+ Context context = createContext(actionXml, null);
final RunningJob runningJob = submitAction(context);
waitFor(60 * 1000, new Predicate() {
@Override
@@ -449,7 +452,7 @@ public class TestJavaActionExecutor exte
"<file>" + appJarPath.toString() + "</file>" +
"</java>";
- Context context = createContext(actionXml);
+ Context context = createContext(actionXml, null);
final RunningJob runningJob = submitAction(context);
ActionExecutor ae = new JavaActionExecutor();
assertFalse(ae.isCompleted(context.getAction().getExternalStatus()));
@@ -476,7 +479,7 @@ public class TestJavaActionExecutor exte
"<arg>exit0</arg>" +
"</java>";
- Context context = createContext(actionXml);
+ Context context = createContext(actionXml, null);
final RunningJob runningJob = submitAction(context);
waitFor(60 * 1000, new Predicate() {
@Override
@@ -503,7 +506,7 @@ public class TestJavaActionExecutor exte
"<arg>exit1</arg>" +
"</java>";
- Context context = createContext(actionXml);
+ Context context = createContext(actionXml, null);
final RunningJob runningJob = submitAction(context);
waitFor(60 * 1000, new Predicate() {
@Override
@@ -532,7 +535,7 @@ public class TestJavaActionExecutor exte
"<arg>ex</arg>" +
"</java>";
- Context context = createContext(actionXml);
+ Context context = createContext(actionXml, null);
final RunningJob runningJob = submitAction(context);
waitFor(60 * 1000, new Predicate() {
@Override
@@ -558,7 +561,7 @@ public class TestJavaActionExecutor exte
"<name-node>" + getNameNodeUri() + "</name-node>" +
"<main-class>" + LauncherMainTester.class.getName() + "</main-class>" +
"</java>";
- final Context context = createContext(actionXml);
+ final Context context = createContext(actionXml, null);
final RunningJob runningJob = submitAction(context);
assertFalse(runningJob.isComplete());
ActionExecutor ae = new JavaActionExecutor();
@@ -583,7 +586,7 @@ public class TestJavaActionExecutor exte
"<name-node>" + getNameNodeUri() + "</name-node>" +
"<main-class>" + LauncherMainTester.class.getName() + "</main-class>" +
"</java>";
- final Context context = createContext(actionXml);
+ final Context context = createContext(actionXml, null);
RunningJob runningJob = submitAction(context);
String launcherId = context.getAction().getExternalId();
@@ -663,7 +666,7 @@ public class TestJavaActionExecutor exte
Element eActionXml = XmlUtils.parseXml(actionXml);
- Context context = createContext(actionXml);
+ Context context = createContext(actionXml, null);
Path appPath = getAppPath();
@@ -736,7 +739,7 @@ public class TestJavaActionExecutor exte
"</prepare>" +
"<main-class>" + LauncherMainTester.class.getName() + "</main-class>" +
"</java>";
- Context context = createContext(actionXml);
+ Context context = createContext(actionXml, null);
final RunningJob runningJob = submitAction(context);
waitFor(60 * 1000, new Predicate() {
@Override
@@ -956,7 +959,7 @@ public class TestJavaActionExecutor exte
"</configuration>" + "<main-class>MAIN-CLASS</main-class>" +
"</java>";
Element eActionXml = XmlUtils.parseXml(actionXml);
- Context context = createContext(actionXml);
+ Context context = createContext(actionXml, null);
JavaActionExecutor ae = new JavaActionExecutor();
@@ -980,7 +983,7 @@ public class TestJavaActionExecutor exte
"</configuration>" + "<main-class>MAIN-CLASS</main-class>" +
"</java>";
eActionXml = XmlUtils.parseXml(actionXml);
- context = createContext(actionXml);
+ context = createContext(actionXml, null);
ae = new JavaActionExecutor();
@@ -1001,7 +1004,7 @@ public class TestJavaActionExecutor exte
"</configuration>" + "<main-class>MAIN-CLASS</main-class>" +
"</java>";
eActionXml = XmlUtils.parseXml(actionXml);
- context = createContext(actionXml);
+ context = createContext(actionXml, null);
ae = new JavaActionExecutor();
@@ -1022,7 +1025,7 @@ public class TestJavaActionExecutor exte
+ getNameNodeUri() + "</name-node>" + "<main-class>" + LauncherMainTester.class.getName()
+ "</main-class>" + "</java>";
Element eActionXml = XmlUtils.parseXml(actionXml);
- Context context = createContext(actionXml);
+ Context context = createContext(actionXml, null);
Path appPath = new Path("localfs://namenode:port/mydir");
JavaActionExecutor ae = new JavaActionExecutor();
JobConf conf = ae.createBaseHadoopConf(context, eActionXml);
@@ -1114,7 +1117,41 @@ public class TestJavaActionExecutor exte
assertNotSame(conf.get(JavaActionExecutor.ACL_VIEW_JOB), actionConf.get(JavaActionExecutor.ACL_VIEW_JOB));
assertNotSame(conf.get(JavaActionExecutor.ACL_MODIFY_JOB), actionConf.get(JavaActionExecutor.ACL_MODIFY_JOB));
}
-
+
+ public void testACLModifyJob() throws Exception {
+ // CASE 1: If user has provided modify-acl value
+ // then it should NOT be overridden by group name
+ String actionXml = "<java>" + "<job-tracker>" + getJobTrackerUri() + "</job-tracker>" +
+ "<name-node>" + getNameNodeUri() + "</name-node> <configuration>" +
+ "<property><name>mapreduce.job.acl-modify-job</name><value>MODIFIER</value></property>" +
+ "</configuration>" + "<main-class>MAIN-CLASS</main-class>" +
+ "</java>";
+
+ Context context = createContext(actionXml, "USERS");
+ RunningJob job = submitAction(context);
+ FileSystem fs = context.getAppFileSystem();
+ Configuration jobXmlConf = new XConfiguration(fs.open(new Path(job.getJobFile())));
+
+ String userModifyAcl = jobXmlConf.get(JavaActionExecutor.ACL_MODIFY_JOB); // 'MODIFIER'
+ String userGroup = context.getWorkflow().getAcl(); // 'USERS'
+ assertFalse(userGroup.equals(userModifyAcl));
+
+ // CASE 2: If user has not provided modify-acl value
+ // then it equals group name
+ actionXml = "<java>" + "<job-tracker>" + getJobTrackerUri() + "</job-tracker>" +
+ "<name-node>" + getNameNodeUri() + "</name-node> <configuration>" +
+ "</configuration>" + "<main-class>MAIN-CLASS</main-class>" +
+ "</java>";
+ context = createContext(actionXml, "USERS");
+ job = submitAction(context);
+ fs = context.getAppFileSystem();
+ jobXmlConf = new XConfiguration(fs.open(new Path(job.getJobFile())));
+
+ userModifyAcl = jobXmlConf.get(JavaActionExecutor.ACL_MODIFY_JOB);
+ userGroup = context.getWorkflow().getAcl();
+ assertTrue(userGroup.equals(userModifyAcl));
+ }
+
public void testParseJobXmlAndConfiguration() throws Exception {
String str = "<java>"
+ "<job-xml>job1.xml</job-xml>"
@@ -1144,7 +1181,7 @@ public class TestJavaActionExecutor exte
Configuration conf = new XConfiguration();
assertEquals(0, conf.size());
- JavaActionExecutor.parseJobXmlAndConfiguration(createContext("<java/>"), xml, appPath, conf);
+ JavaActionExecutor.parseJobXmlAndConfiguration(createContext("<java/>", null), xml, appPath, conf);
assertEquals(4, conf.size());
assertEquals("v1a", conf.get("p1"));
assertEquals("v2", conf.get("p2"));
Modified: oozie/branches/hcat-intre/release-log.txt
URL: http://svn.apache.org/viewvc/oozie/branches/hcat-intre/release-log.txt?rev=1409051&r1=1409050&r2=1409051&view=diff
==============================================================================
--- oozie/branches/hcat-intre/release-log.txt (original)
+++ oozie/branches/hcat-intre/release-log.txt Wed Nov 14 01:19:07 2012
@@ -1,5 +1,6 @@
-- Oozie 3.4.0 release (trunk - unreleased)
+OOZIE-1058 ACL modify-job should not be hardcoded to group name(mona via mohammad)
OOZIE-1052 HadoopAccessorService.createFileSystem throws exception in map-reduce action, failing workflow.(ryota via mohammad).
OOZIE-1061 Add new EL functions to retrieve HCatalog server, DB and table name(mohammad)
OOZIE-1056 Command to update push-based dependency (mohammad)