You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@falcon.apache.org by ve...@apache.org on 2014/10/16 23:40:41 UTC
[5/5] git commit: FALCON-804 Remove Oozie 3.* patch files from
Falcon. Contributed by Peeyush Bishnoi
FALCON-804 Remove Oozie 3.* patch files from Falcon. Contributed by Peeyush Bishnoi
Project: http://git-wip-us.apache.org/repos/asf/incubator-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-falcon/commit/1caadaf2
Tree: http://git-wip-us.apache.org/repos/asf/incubator-falcon/tree/1caadaf2
Diff: http://git-wip-us.apache.org/repos/asf/incubator-falcon/diff/1caadaf2
Branch: refs/heads/master
Commit: 1caadaf209f6207f7993c5e3e7866f12220caf33
Parents: c95b55b
Author: Venkatesh Seetharam <ve...@apache.org>
Authored: Thu Oct 16 14:40:24 2014 -0700
Committer: Venkatesh Seetharam <ve...@apache.org>
Committed: Thu Oct 16 14:40:24 2014 -0700
----------------------------------------------------------------------
CHANGES.txt | 3 +
build-tools/src/patches/OOZIE-1465-3.3.2.patch | 15 -
build-tools/src/patches/OOZIE-1465.patch | 15 -
.../src/patches/OOZIE-674-v6-3.2.0.patch | 370 --------------
build-tools/src/patches/OOZIE-674-v6.patch | 481 -------------------
build-tools/src/patches/OOZIE-882.patch | 28 --
6 files changed, 3 insertions(+), 909 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/1caadaf2/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index a393649..d53017f 100755
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -117,6 +117,9 @@ Trunk (Unreleased)
OPTIMIZATIONS
BUG FIXES
+ FALCON-804 Remove Oozie 3.* patch files from Falcon (Peeyush Bishnoi via
+ Venkatesh Seetharam)
+
FALCON-803 Instances displayed on Dashboard entity page should be sorted
by startTime (Balu Vellanki via Venkatesh Seetharam)
http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/1caadaf2/build-tools/src/patches/OOZIE-1465-3.3.2.patch
----------------------------------------------------------------------
diff --git a/build-tools/src/patches/OOZIE-1465-3.3.2.patch b/build-tools/src/patches/OOZIE-1465-3.3.2.patch
deleted file mode 100644
index 4890c7c..0000000
--- a/build-tools/src/patches/OOZIE-1465-3.3.2.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Index: core/src/main/java/org/apache/oozie/coord/CoordELFunctions.java
-===================================================================
---- core/src/main/java/org/apache/oozie/coord/CoordELFunctions.java (revision 1506445)
-+++ core/src/main/java/org/apache/oozie/coord/CoordELFunctions.java (working copy)
-@@ -40,8 +40,8 @@
-
- public class CoordELFunctions {
- final private static XLog LOG = XLog.getLog(CoordELFunctions.class);
-- final private static String DATASET = "oozie.coord.el.dataset.bean";
-- final private static String COORD_ACTION = "oozie.coord.el.app.bean";
-+ final public static String DATASET = "oozie.coord.el.dataset.bean";
-+ final public static String COORD_ACTION = "oozie.coord.el.app.bean";
- final public static String CONFIGURATION = "oozie.coord.el.conf";
- final public static String LATEST_EL_USE_CURRENT_TIME = "oozie.service.ELService.latest-el.use-current-time";
- // INSTANCE_SEPARATOR is used to separate multiple directories into one tag.
http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/1caadaf2/build-tools/src/patches/OOZIE-1465.patch
----------------------------------------------------------------------
diff --git a/build-tools/src/patches/OOZIE-1465.patch b/build-tools/src/patches/OOZIE-1465.patch
deleted file mode 100644
index b203fac..0000000
--- a/build-tools/src/patches/OOZIE-1465.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-Index: core/src/main/java/org/apache/oozie/coord/CoordELFunctions.java
-===================================================================
---- core/src/main/java/org/apache/oozie/coord/CoordELFunctions.java (revision 1506445)
-+++ core/src/main/java/org/apache/oozie/coord/CoordELFunctions.java (working copy)
-@@ -40,8 +40,8 @@
- */
-
- public class CoordELFunctions {
-- final private static String DATASET = "oozie.coord.el.dataset.bean";
-- final private static String COORD_ACTION = "oozie.coord.el.app.bean";
-+ final public static String DATASET = "oozie.coord.el.dataset.bean";
-+ final public static String COORD_ACTION = "oozie.coord.el.app.bean";
- final public static String CONFIGURATION = "oozie.coord.el.conf";
- final public static String LATEST_EL_USE_CURRENT_TIME = "oozie.service.ELService.latest-el.use-current-time";
- // INSTANCE_SEPARATOR is used to separate multiple directories into one tag.
http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/1caadaf2/build-tools/src/patches/OOZIE-674-v6-3.2.0.patch
----------------------------------------------------------------------
diff --git a/build-tools/src/patches/OOZIE-674-v6-3.2.0.patch b/build-tools/src/patches/OOZIE-674-v6-3.2.0.patch
deleted file mode 100644
index c35437c..0000000
--- a/build-tools/src/patches/OOZIE-674-v6-3.2.0.patch
+++ /dev/null
@@ -1,370 +0,0 @@
-Index: core/src/test/java/org/apache/oozie/test/XTestCase.java
-===================================================================
---- core/src/test/java/org/apache/oozie/test/XTestCase.java (revision 1485571)
-+++ core/src/test/java/org/apache/oozie/test/XTestCase.java (working copy)
-@@ -75,7 +75,7 @@
- * From within testcases, system properties must be changed using the {@link #setSystemProperty} method.
- */
- public abstract class XTestCase extends TestCase {
-- private Map<String, String> sysProps;
-+ protected Map<String, String> sysProps;
- private String testCaseDir;
- private String testCaseConfDir;
- private String hadoopVersion;
-Index: core/src/test/java/org/apache/oozie/test/XDataTestCase.java
-===================================================================
---- core/src/test/java/org/apache/oozie/test/XDataTestCase.java (revision 1485571)
-+++ core/src/test/java/org/apache/oozie/test/XDataTestCase.java (working copy)
-@@ -121,6 +121,25 @@
- }
-
- /**
-+ * Inserts the passed coord job
-+ * @param coord job bean
-+ * @throws Exception
-+ */
-+ protected void addRecordToCoordJobTable(CoordinatorJobBean coordJob) throws Exception {
-+ try {
-+ JPAService jpaService = Services.get().get(JPAService.class);
-+ assertNotNull(jpaService);
-+ CoordJobInsertJPAExecutor coordInsertCmd = new CoordJobInsertJPAExecutor(coordJob);
-+ jpaService.execute(coordInsertCmd);
-+ }
-+ catch (JPAExecutorException je) {
-+ je.printStackTrace();
-+ fail("Unable to insert the test coord job record to table");
-+ throw je;
-+ }
-+ }
-+
-+ /**
- * Insert coord job for testing.
- *
- * @param status coord job status
-Index: core/src/test/java/org/apache/oozie/command/coord/CoordELExtensions.java
-===================================================================
---- core/src/test/java/org/apache/oozie/command/coord/CoordELExtensions.java (revision 0)
-+++ core/src/test/java/org/apache/oozie/command/coord/CoordELExtensions.java (revision 0)
-@@ -0,0 +1,77 @@
-+/**
-+ * Licensed to the Apache Software Foundation (ASF) under one
-+ * or more contributor license agreements. See the NOTICE file
-+ * distributed with this work for additional information
-+ * regarding copyright ownership. The ASF licenses this file
-+ * to you under the Apache License, Version 2.0 (the
-+ * "License"); you may not use this file except in compliance
-+ * with the License. You may obtain a copy of the License at
-+ *
-+ * http://www.apache.org/licenses/LICENSE-2.0
-+ *
-+ * Unless required by applicable law or agreed to in writing, software
-+ * distributed under the License is distributed on an "AS IS" BASIS,
-+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+ * See the License for the specific language governing permissions and
-+ * limitations under the License.
-+ */
-+ package org.apache.oozie.command.coord;
-+
-+import java.util.Calendar;
-+
-+import org.apache.oozie.coord.CoordELFunctions;
-+import org.apache.oozie.util.ELEvaluator;
-+
-+public class CoordELExtensions {
-+ private static final String PREFIX = "coordext:";
-+
-+ public static String ph1_today_echo(int hr, int min) {
-+ ELEvaluator eval = ELEvaluator.getCurrent();
-+ eval.setVariable(".wrap", "true");
-+ return PREFIX + "today(" + hr + ", " + min + ")"; // Unresolved
-+ }
-+
-+ public static String ph2_today_inst(int hr, int min) throws Exception {
-+ Calendar nominalInstanceCal = CoordELFunctions.getEffectiveNominalTime();
-+ if (nominalInstanceCal == null) {
-+ return "";
-+ }
-+
-+ Calendar dsInstanceCal = Calendar.getInstance(CoordELFunctions.getDatasetTZ());
-+ dsInstanceCal.setTime(nominalInstanceCal.getTime());
-+ dsInstanceCal.set(Calendar.HOUR_OF_DAY, hr);
-+ dsInstanceCal.set(Calendar.MINUTE, min);
-+ dsInstanceCal.set(Calendar.SECOND, 0);
-+ dsInstanceCal.set(Calendar.MILLISECOND, 0);
-+
-+ int[] instCnt = new int[1];
-+ Calendar compInstCal = CoordELFunctions
-+ .getCurrentInstance(dsInstanceCal.getTime(), instCnt);
-+ if (compInstCal == null) {
-+ return "";
-+ }
-+ int dsInstanceCnt = instCnt[0];
-+
-+ compInstCal = CoordELFunctions.getCurrentInstance(nominalInstanceCal.getTime(), instCnt);
-+ if (compInstCal == null) {
-+ return "";
-+ }
-+ int nominalInstanceCnt = instCnt[0];
-+
-+ return "coord:current(" + (dsInstanceCnt - nominalInstanceCnt) + ")";
-+ }
-+
-+ public static String ph2_today(int hr, int min) throws Exception {
-+ String inst = ph2_today_inst(hr, min);
-+ return evaluateCurrent(inst);
-+ }
-+
-+ private static String evaluateCurrent(String curExpr) throws Exception {
-+ if (curExpr.equals("")) {
-+ return curExpr;
-+ }
-+
-+ int inst = CoordCommandUtils.parseOneArg(curExpr);
-+ return CoordELFunctions.ph2_coord_current(inst);
-+ }
-+}
-\ No newline at end of file
-Index: core/src/test/resources/oozie-site-coordel.xml
-===================================================================
---- core/src/test/resources/oozie-site-coordel.xml (revision 0)
-+++ core/src/test/resources/oozie-site-coordel.xml (revision 0)
-@@ -0,0 +1,65 @@
-+<?xml version="1.0" encoding="UTF-8"?>
-+<!--
-+ Licensed to the Apache Software Foundation (ASF) under one
-+ or more contributor license agreements. See the NOTICE file
-+ distributed with this work for additional information
-+ regarding copyright ownership. The ASF licenses this file
-+ to you under the Apache License, Version 2.0 (the
-+ "License"); you may not use this file except in compliance
-+ with the License. You may obtain a copy of the License at
-+
-+ http://www.apache.org/licenses/LICENSE-2.0
-+
-+ Unless required by applicable law or agreed to in writing, software
-+ distributed under the License is distributed on an "AS IS" BASIS,
-+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+ See the License for the specific language governing permissions and
-+ limitations under the License.
-+-->
-+<configuration>
-+ <property>
-+ <name>oozie.service.ELService.ext.functions.coord-job-submit-instances
-+ </name>
-+ <value>
-+ coordext:today=org.apache.oozie.command.coord.CoordELExtensions#ph1_today_echo
-+ </value>
-+ <description>
-+ EL functions declarations, separated by commas,
-+ format is [PREFIX:]NAME=CLASS#METHOD.
-+ This property is a
-+ convenience property to add extensions to the built in
-+ executors without having to
-+ include all the built in ones.
-+ </description>
-+ </property>
-+ <property>
-+ <name>oozie.service.ELService.ext.functions.coord-action-create-inst
-+ </name>
-+ <value>
-+ coordext:today=org.apache.oozie.command.coord.CoordELExtensions#ph2_today_inst
-+ </value>
-+ <description>
-+ EL functions declarations, separated by commas,
-+ format is [PREFIX:]NAME=CLASS#METHOD.
-+ This property is a
-+ convenience property to add extensions to the built in
-+ executors without having to
-+ include all the built in ones.
-+ </description>
-+ </property>
-+ <property>
-+ <name>oozie.service.ELService.ext.functions.coord-action-create
-+ </name>
-+ <value>
-+ coordext:today=org.apache.oozie.command.coord.CoordELExtensions#ph2_today
-+ </value>
-+ <description>
-+ EL functions declarations, separated by commas,
-+ format is [PREFIX:]NAME=CLASS#METHOD.
-+ This property is a
-+ convenience property to add extensions to the built in
-+ executors without having to
-+ include all the built in ones.
-+ </description>
-+ </property>
-+</configuration>
-\ No newline at end of file
-Index: core/src/test/resources/coord-job-for-elext.xml
-===================================================================
---- core/src/test/resources/coord-job-for-elext.xml (revision 0)
-+++ core/src/test/resources/coord-job-for-elext.xml (revision 0)
-@@ -0,0 +1,63 @@
-+<!--
-+ Licensed to the Apache Software Foundation (ASF) under one
-+ or more contributor license agreements. See the NOTICE file
-+ distributed with this work for additional information
-+ regarding copyright ownership. The ASF licenses this file
-+ to you under the Apache License, Version 2.0 (the
-+ "License"); you may not use this file except in compliance
-+ with the License. You may obtain a copy of the License at
-+
-+ http://www.apache.org/licenses/LICENSE-2.0
-+
-+ Unless required by applicable law or agreed to in writing, software
-+ distributed under the License is distributed on an "AS IS" BASIS,
-+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+ See the License for the specific language governing permissions and
-+ limitations under the License.
-+-->
-+<coordinator-app xmlns='uri:oozie:coordinator:0.2' name='NAME'
-+ frequency="1" start='2009-02-01T01:00Z' end='2009-02-03T23:59Z'
-+ timezone='UTC' freq_timeunit='DAY' end_of_duration='NONE'>
-+ <controls>
-+ <timeout>10</timeout>
-+ <concurrency>2</concurrency>
-+ <execution>LIFO</execution>
-+ </controls>
-+ <input-events>
-+ <data-in name='A' dataset='a'>
-+ <dataset name='a' frequency='1' initial-instance='2009-02-01T00:00Z'
-+ timezone='UTC' freq_timeunit='HOUR' end_of_duration='NONE'>
-+ <uri-template>file://#testDir/${YEAR}/${MONTH}/${DAY}/${HOUR}
-+ </uri-template>
-+ </dataset>
-+ <start-instance>${coordext:today(-1,0)}</start-instance>
-+ <end-instance>${coordext:today(0,0)}</end-instance>
-+ </data-in>
-+ </input-events>
-+ <output-events>
-+ <data-out name='LOCAL_A' dataset='local_a'>
-+ <dataset name='local_a' frequency='1'
-+ initial-instance='2009-02-01T00:00Z' timezone='UTC'
-+ freq_timeunit='HOUR' end_of_duration='NONE'>
-+ <uri-template>file://#testDir/${YEAR}/${DAY}
-+ </uri-template>
-+ </dataset>
-+ <instance>${coordext:today(0,0)}</instance>
-+ </data-out>
-+ </output-events>
-+ <action>
-+ <workflow>
-+ <app-path>hdfs:///tmp/workflows/</app-path>
-+ <configuration>
-+ <property>
-+ <name>inputA</name>
-+ <value>${coord:dataIn('A')}</value>
-+ </property>
-+ <property>
-+ <name>inputB</name>
-+ <value>${coord:dataOut('LOCAL_A')}</value>
-+ </property>
-+ </configuration>
-+ </workflow>
-+ </action>
-+</coordinator-app>
-\ No newline at end of file
-Index: core/src/main/java/org/apache/oozie/command/coord/CoordCommandUtils.java
-===================================================================
---- core/src/main/java/org/apache/oozie/command/coord/CoordCommandUtils.java (revision 1485571)
-+++ core/src/main/java/org/apache/oozie/command/coord/CoordCommandUtils.java (working copy)
-@@ -63,28 +63,36 @@
- * <p/>
- *
- * @param function
-- * @param event
-- * @param appInst
-- * @param conf
- * @param restArg
- * @return int instanceNumber
- * @throws Exception
- */
-- public static int getInstanceNumber(String function, Element event, SyncCoordAction appInst, Configuration conf,
-- StringBuilder restArg) throws Exception {
-- ELEvaluator eval = CoordELEvaluator
-- .createInstancesELEvaluator("coord-action-create-inst", event, appInst, conf);
-- String newFunc = CoordELFunctions.evalAndWrap(eval, function);
-- int funcType = getFuncType(newFunc);
-+ public static int getInstanceNumber(String function, StringBuilder restArg) throws Exception {
-+ int funcType = getFuncType(function);
- if (funcType == CURRENT || funcType == LATEST) {
-- return parseOneArg(newFunc);
-+ return parseOneArg(function);
- }
- else {
-- return parseMoreArgs(newFunc, restArg);
-+ return parseMoreArgs(function, restArg);
- }
- }
-
-- private static int parseOneArg(String funcName) throws Exception {
-+ /**
-+ * Evaluates function for coord-action-create-inst tag
-+ * @param event
-+ * @param appInst
-+ * @param conf
-+ * @param function
-+ * @return evaluation result
-+ * @throws Exception
-+ */
-+ private static String evaluateInstanceFunction(Element event, SyncCoordAction appInst, Configuration conf,
-+ String function) throws Exception {
-+ ELEvaluator eval = CoordELEvaluator.createInstancesELEvaluator("coord-action-create-inst", event, appInst, conf);
-+ return CoordELFunctions.evalAndWrap(eval, function);
-+ }
-+
-+ public static int parseOneArg(String funcName) throws Exception {
- int firstPos = funcName.indexOf("(");
- int lastPos = funcName.lastIndexOf(")");
- if (firstPos >= 0 && lastPos > firstPos) {
-@@ -166,15 +174,15 @@
- Element eStartInst = event.getChild("start-instance", event.getNamespace());
- Element eEndInst = event.getChild("end-instance", event.getNamespace());
- if (eStartInst != null && eEndInst != null) {
-- String strStart = eStartInst.getTextTrim();
-- String strEnd = eEndInst.getTextTrim();
-+ String strStart = evaluateInstanceFunction(event, appInst, conf, eStartInst.getTextTrim());
-+ String strEnd = evaluateInstanceFunction(event, appInst, conf, eEndInst.getTextTrim());
- checkIfBothSameType(strStart, strEnd);
- StringBuilder restArg = new StringBuilder(); // To store rest
- // arguments for
- // future
- // function
-- int startIndex = getInstanceNumber(strStart, event, appInst, conf, restArg);
-+ int startIndex = getInstanceNumber(strStart, restArg);
- restArg.delete(0, restArg.length());
-- int endIndex = getInstanceNumber(strEnd, event, appInst, conf, restArg);
-+ int endIndex = getInstanceNumber(strEnd, restArg);
- if (startIndex > endIndex) {
- throw new CommandException(ErrorCode.E1010,
-Index: core/src/main/java/org/apache/oozie/coord/CoordELFunctions.java
-===================================================================
---- core/src/main/java/org/apache/oozie/coord/CoordELFunctions.java (revision 1485571)
-+++ core/src/main/java/org/apache/oozie/coord/CoordELFunctions.java (working copy)
-@@ -952,7 +952,7 @@
- * @return current instance i.e. current(0) returns null if effectiveTime is earlier than Initial Instance time of
- * the dataset.
- */
-- private static Calendar getCurrentInstance(Date effectiveTime, int instanceCount[]) {
-+ public static Calendar getCurrentInstance(Date effectiveTime, int instanceCount[]) {
- Date datasetInitialInstance = getInitialInstance();
- TimeUnit dsTimeUnit = getDSTimeUnit();
- TimeZone dsTZ = getDatasetTZ();
-@@ -1294,7 +1294,7 @@
- return current;
- }
-
-- private static Calendar getEffectiveNominalTime() {
-+ public static Calendar getEffectiveNominalTime() {
- Date datasetInitialInstance = getInitialInstance();
- TimeZone dsTZ = getDatasetTZ();
- // Convert Date to Calendar for corresponding TZ
-@@ -1356,7 +1356,7 @@
- /**
- * @return dataset TimeZone
- */
-- private static TimeZone getDatasetTZ() {
-+ public static TimeZone getDatasetTZ() {
- ELEvaluator eval = ELEvaluator.getCurrent();
- return getDatasetTZ(eval);
- }
http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/1caadaf2/build-tools/src/patches/OOZIE-674-v6.patch
----------------------------------------------------------------------
diff --git a/build-tools/src/patches/OOZIE-674-v6.patch b/build-tools/src/patches/OOZIE-674-v6.patch
deleted file mode 100644
index 8f2aa81..0000000
--- a/build-tools/src/patches/OOZIE-674-v6.patch
+++ /dev/null
@@ -1,481 +0,0 @@
-Index: core/src/test/java/org/apache/oozie/test/XTestCase.java
-===================================================================
---- core/src/test/java/org/apache/oozie/test/XTestCase.java (revision 1485571)
-+++ core/src/test/java/org/apache/oozie/test/XTestCase.java (working copy)
-@@ -92,13 +92,13 @@
- * From within testcases, system properties must be changed using the {@link #setSystemProperty} method.
- */
- public abstract class XTestCase extends TestCase {
-- private Map<String, String> sysProps;
-+ protected Map<String, String> sysProps;
- private String testCaseDir;
- private String testCaseConfDir;
- private String hadoopVersion;
- protected XLog log = new XLog(LogFactory.getLog(getClass()));
-
-- private static File OOZIE_SRC_DIR = null;
-+ protected static File OOZIE_SRC_DIR = null;
- private static final String OOZIE_TEST_PROPERTIES = "oozie.test.properties";
-
- public static float WAITFOR_RATIO = Float.parseFloat(System.getProperty("oozie.test.waitfor.ratio", "1"));
-Index: core/src/test/java/org/apache/oozie/test/XDataTestCase.java
-===================================================================
---- core/src/test/java/org/apache/oozie/test/XDataTestCase.java (revision 1485571)
-+++ core/src/test/java/org/apache/oozie/test/XDataTestCase.java (working copy)
-@@ -121,6 +121,25 @@
- }
-
- /**
-+ * Inserts the passed coord job
-+ * @param coord job bean
-+ * @throws Exception
-+ */
-+ protected void addRecordToCoordJobTable(CoordinatorJobBean coordJob) throws Exception {
-+ try {
-+ JPAService jpaService = Services.get().get(JPAService.class);
-+ assertNotNull(jpaService);
-+ CoordJobInsertJPAExecutor coordInsertCmd = new CoordJobInsertJPAExecutor(coordJob);
-+ jpaService.execute(coordInsertCmd);
-+ }
-+ catch (JPAExecutorException je) {
-+ je.printStackTrace();
-+ fail("Unable to insert the test coord job record to table");
-+ throw je;
-+ }
-+ }
-+
-+ /**
- * Insert coord job for testing.
- *
- * @param status coord job status
-Index: core/src/test/java/org/apache/oozie/command/coord/CoordELExtensions.java
-===================================================================
---- core/src/test/java/org/apache/oozie/command/coord/CoordELExtensions.java (revision 0)
-+++ core/src/test/java/org/apache/oozie/command/coord/CoordELExtensions.java (revision 0)
-@@ -0,0 +1,77 @@
-+/**
-+ * Licensed to the Apache Software Foundation (ASF) under one
-+ * or more contributor license agreements. See the NOTICE file
-+ * distributed with this work for additional information
-+ * regarding copyright ownership. The ASF licenses this file
-+ * to you under the Apache License, Version 2.0 (the
-+ * "License"); you may not use this file except in compliance
-+ * with the License. You may obtain a copy of the License at
-+ *
-+ * http://www.apache.org/licenses/LICENSE-2.0
-+ *
-+ * Unless required by applicable law or agreed to in writing, software
-+ * distributed under the License is distributed on an "AS IS" BASIS,
-+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+ * See the License for the specific language governing permissions and
-+ * limitations under the License.
-+ */
-+ package org.apache.oozie.command.coord;
-+
-+import java.util.Calendar;
-+
-+import org.apache.oozie.coord.CoordELFunctions;
-+import org.apache.oozie.util.ELEvaluator;
-+
-+public class CoordELExtensions {
-+ private static final String PREFIX = "coordext:";
-+
-+ public static String ph1_today_echo(int hr, int min) {
-+ ELEvaluator eval = ELEvaluator.getCurrent();
-+ eval.setVariable(".wrap", "true");
-+ return PREFIX + "today(" + hr + ", " + min + ")"; // Unresolved
-+ }
-+
-+ public static String ph2_today_inst(int hr, int min) throws Exception {
-+ Calendar nominalInstanceCal = CoordELFunctions.getEffectiveNominalTime();
-+ if (nominalInstanceCal == null) {
-+ return "";
-+ }
-+
-+ Calendar dsInstanceCal = Calendar.getInstance(CoordELFunctions.getDatasetTZ());
-+ dsInstanceCal.setTime(nominalInstanceCal.getTime());
-+ dsInstanceCal.set(Calendar.HOUR_OF_DAY, hr);
-+ dsInstanceCal.set(Calendar.MINUTE, min);
-+ dsInstanceCal.set(Calendar.SECOND, 0);
-+ dsInstanceCal.set(Calendar.MILLISECOND, 0);
-+
-+ int[] instCnt = new int[1];
-+ Calendar compInstCal = CoordELFunctions
-+ .getCurrentInstance(dsInstanceCal.getTime(), instCnt);
-+ if (compInstCal == null) {
-+ return "";
-+ }
-+ int dsInstanceCnt = instCnt[0];
-+
-+ compInstCal = CoordELFunctions.getCurrentInstance(nominalInstanceCal.getTime(), instCnt);
-+ if (compInstCal == null) {
-+ return "";
-+ }
-+ int nominalInstanceCnt = instCnt[0];
-+
-+ return "coord:current(" + (dsInstanceCnt - nominalInstanceCnt) + ")";
-+ }
-+
-+ public static String ph2_today(int hr, int min) throws Exception {
-+ String inst = ph2_today_inst(hr, min);
-+ return evaluateCurrent(inst);
-+ }
-+
-+ private static String evaluateCurrent(String curExpr) throws Exception {
-+ if (curExpr.equals("")) {
-+ return curExpr;
-+ }
-+
-+ int inst = CoordCommandUtils.parseOneArg(curExpr);
-+ return CoordELFunctions.ph2_coord_current(inst);
-+ }
-+}
-\ No newline at end of file
-Index: core/src/test/java/org/apache/oozie/command/coord/TestCoordELExtensions.java
-===================================================================
---- core/src/test/java/org/apache/oozie/command/coord/TestCoordELExtensions.java (revision 0)
-+++ core/src/test/java/org/apache/oozie/command/coord/TestCoordELExtensions.java (revision 0)
-@@ -0,0 +1,82 @@
-+/**
-+ * Licensed to the Apache Software Foundation (ASF) under one
-+ * or more contributor license agreements. See the NOTICE file
-+ * distributed with this work for additional information
-+ * regarding copyright ownership. The ASF licenses this file
-+ * to you under the Apache License, Version 2.0 (the
-+ * "License"); you may not use this file except in compliance
-+ * with the License. You may obtain a copy of the License at
-+ *
-+ * http://www.apache.org/licenses/LICENSE-2.0
-+ *
-+ * Unless required by applicable law or agreed to in writing, software
-+ * distributed under the License is distributed on an "AS IS" BASIS,
-+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+ * See the License for the specific language governing permissions and
-+ * limitations under the License.
-+ */
-+ package org.apache.oozie.command.coord;
-+
-+import java.io.File;
-+import java.util.Date;
-+import java.util.HashMap;
-+
-+import org.apache.oozie.CoordinatorActionBean;
-+import org.apache.oozie.CoordinatorJobBean;
-+import org.apache.oozie.client.CoordinatorJob;
-+import org.apache.oozie.service.Services;
-+import org.apache.oozie.store.CoordinatorStore;
-+import org.apache.oozie.store.StoreException;
-+import org.apache.oozie.test.XDataTestCase;
-+import org.apache.oozie.util.DateUtils;
-+
-+public class TestCoordELExtensions extends XDataTestCase {
-+ private Services services;
-+ private String[] excludedServices = { "org.apache.oozie.service.StatusTransitService",
-+ "org.apache.oozie.service.PauseTransitService",
-+ "org.apache.oozie.service.RecoveryService" };
-+
-+ @Override
-+ protected void setUp() throws Exception {
-+ sysProps = new HashMap<String, String>();
-+ setSystemProperty("oozie.test.config.file", new File(OOZIE_SRC_DIR,
-+ "core/src/test/resources/oozie-site-coordel.xml").getAbsolutePath());
-+ super.setUp();
-+ services = new Services();
-+ setClassesToBeExcluded(services.getConf(), excludedServices);
-+ services.init();
-+ cleanUpDBTables();
-+ }
-+
-+ @Override
-+ protected void tearDown() throws Exception {
-+ services.destroy();
-+ super.tearDown();
-+ }
-+
-+ public void testCoordELActionMater() throws Exception {
-+ Date startTime = DateUtils.parseDateUTC("2009-03-06T010:00Z");
-+ Date endTime = DateUtils.parseDateUTC("2009-03-07T12:00Z");
-+ CoordinatorJobBean job = createCoordJob("coord-job-for-elext.xml",
-+ CoordinatorJob.Status.PREMATER, startTime, endTime, false, false, 0);
-+ addRecordToCoordJobTable(job);
-+
-+ new CoordActionMaterializeCommand(job.getId(), startTime, endTime).call();
-+ checkCoordAction(job.getId() + "@1");
-+ }
-+
-+ protected CoordinatorActionBean checkCoordAction(String actionId) throws StoreException {
-+ CoordinatorStore store = new CoordinatorStore(false);
-+ try {
-+ CoordinatorActionBean action = store.getCoordinatorAction(actionId, false);
-+ assertEquals(
-+ "file://#testDir/2009/03/06/00/_SUCCESS#file://#testDir/2009/03/05/23/_SUCCESS",
-+ action.getMissingDependencies());
-+ return action;
-+ } catch (StoreException se) {
-+ se.printStackTrace();
-+ fail("Action ID " + actionId + " was not stored properly in db");
-+ }
-+ return null;
-+ }
-+}
-\ No newline at end of file
-Index: core/src/test/resources/oozie-site-coordel.xml
-===================================================================
---- core/src/test/resources/oozie-site-coordel.xml (revision 0)
-+++ core/src/test/resources/oozie-site-coordel.xml (revision 0)
-@@ -0,0 +1,65 @@
-+<?xml version="1.0" encoding="UTF-8"?>
-+<!--
-+ Licensed to the Apache Software Foundation (ASF) under one
-+ or more contributor license agreements. See the NOTICE file
-+ distributed with this work for additional information
-+ regarding copyright ownership. The ASF licenses this file
-+ to you under the Apache License, Version 2.0 (the
-+ "License"); you may not use this file except in compliance
-+ with the License. You may obtain a copy of the License at
-+
-+ http://www.apache.org/licenses/LICENSE-2.0
-+
-+ Unless required by applicable law or agreed to in writing, software
-+ distributed under the License is distributed on an "AS IS" BASIS,
-+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+ See the License for the specific language governing permissions and
-+ limitations under the License.
-+-->
-+<configuration>
-+ <property>
-+ <name>oozie.service.ELService.ext.functions.coord-job-submit-instances
-+ </name>
-+ <value>
-+ coordext:today=org.apache.oozie.command.coord.CoordELExtensions#ph1_today_echo
-+ </value>
-+ <description>
-+ EL functions declarations, separated by commas,
-+ format is [PREFIX:]NAME=CLASS#METHOD.
-+ This property is a
-+ convenience property to add extensions to the built in
-+ executors without having to
-+ include all the built in ones.
-+ </description>
-+ </property>
-+ <property>
-+ <name>oozie.service.ELService.ext.functions.coord-action-create-inst
-+ </name>
-+ <value>
-+ coordext:today=org.apache.oozie.command.coord.CoordELExtensions#ph2_today_inst
-+ </value>
-+ <description>
-+ EL functions declarations, separated by commas,
-+ format is [PREFIX:]NAME=CLASS#METHOD.
-+ This property is a
-+ convenience property to add extensions to the built in
-+ executors without having to
-+ include all the built in ones.
-+ </description>
-+ </property>
-+ <property>
-+ <name>oozie.service.ELService.ext.functions.coord-action-create
-+ </name>
-+ <value>
-+ coordext:today=org.apache.oozie.command.coord.CoordELExtensions#ph2_today
-+ </value>
-+ <description>
-+ EL functions declarations, separated by commas,
-+ format is [PREFIX:]NAME=CLASS#METHOD.
-+ This property is a
-+ convenience property to add extensions to the built in
-+ executors without having to
-+ include all the built in ones.
-+ </description>
-+ </property>
-+</configuration>
-\ No newline at end of file
-Index: core/src/test/resources/coord-job-for-elext.xml
-===================================================================
---- core/src/test/resources/coord-job-for-elext.xml (revision 0)
-+++ core/src/test/resources/coord-job-for-elext.xml (revision 0)
-@@ -0,0 +1,63 @@
-+<!--
-+ Licensed to the Apache Software Foundation (ASF) under one
-+ or more contributor license agreements. See the NOTICE file
-+ distributed with this work for additional information
-+ regarding copyright ownership. The ASF licenses this file
-+ to you under the Apache License, Version 2.0 (the
-+ "License"); you may not use this file except in compliance
-+ with the License. You may obtain a copy of the License at
-+
-+ http://www.apache.org/licenses/LICENSE-2.0
-+
-+ Unless required by applicable law or agreed to in writing, software
-+ distributed under the License is distributed on an "AS IS" BASIS,
-+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+ See the License for the specific language governing permissions and
-+ limitations under the License.
-+-->
-+<coordinator-app xmlns='uri:oozie:coordinator:0.2' name='NAME'
-+ frequency="1" start='2009-02-01T01:00Z' end='2009-02-03T23:59Z'
-+ timezone='UTC' freq_timeunit='DAY' end_of_duration='NONE'>
-+ <controls>
-+ <timeout>10</timeout>
-+ <concurrency>2</concurrency>
-+ <execution>LIFO</execution>
-+ </controls>
-+ <input-events>
-+ <data-in name='A' dataset='a'>
-+ <dataset name='a' frequency='1' initial-instance='2009-02-01T00:00Z'
-+ timezone='UTC' freq_timeunit='HOUR' end_of_duration='NONE'>
-+ <uri-template>file://#testDir/${YEAR}/${MONTH}/${DAY}/${HOUR}
-+ </uri-template>
-+ </dataset>
-+ <start-instance>${coordext:today(-1,0)}</start-instance>
-+ <end-instance>${coordext:today(0,0)}</end-instance>
-+ </data-in>
-+ </input-events>
-+ <output-events>
-+ <data-out name='LOCAL_A' dataset='local_a'>
-+ <dataset name='local_a' frequency='1'
-+ initial-instance='2009-02-01T00:00Z' timezone='UTC'
-+ freq_timeunit='HOUR' end_of_duration='NONE'>
-+ <uri-template>file://#testDir/${YEAR}/${DAY}
-+ </uri-template>
-+ </dataset>
-+ <instance>${coordext:today(0,0)}</instance>
-+ </data-out>
-+ </output-events>
-+ <action>
-+ <workflow>
-+ <app-path>hdfs:///tmp/workflows/</app-path>
-+ <configuration>
-+ <property>
-+ <name>inputA</name>
-+ <value>${coord:dataIn('A')}</value>
-+ </property>
-+ <property>
-+ <name>inputB</name>
-+ <value>${coord:dataOut('LOCAL_A')}</value>
-+ </property>
-+ </configuration>
-+ </workflow>
-+ </action>
-+</coordinator-app>
-\ No newline at end of file
-Index: core/src/main/java/org/apache/oozie/command/coord/CoordCommandUtils.java
-===================================================================
---- core/src/main/java/org/apache/oozie/command/coord/CoordCommandUtils.java (revision 1485571)
-+++ core/src/main/java/org/apache/oozie/command/coord/CoordCommandUtils.java (working copy)
-@@ -63,28 +63,36 @@
- * <p/>
- *
- * @param function
-- * @param event
-- * @param appInst
-- * @param conf
- * @param restArg
- * @return int instanceNumber
- * @throws Exception
- */
-- public static int getInstanceNumber(String function, Element event, SyncCoordAction appInst, Configuration conf,
-- StringBuilder restArg) throws Exception {
-- ELEvaluator eval = CoordELEvaluator
-- .createInstancesELEvaluator("coord-action-create-inst", event, appInst, conf);
-- String newFunc = CoordELFunctions.evalAndWrap(eval, function);
-- int funcType = getFuncType(newFunc);
-+ public static int getInstanceNumber(String function, StringBuilder restArg) throws Exception {
-+ int funcType = getFuncType(function);
- if (funcType == CURRENT || funcType == LATEST) {
-- return parseOneArg(newFunc);
-+ return parseOneArg(function);
- }
- else {
-- return parseMoreArgs(newFunc, restArg);
-+ return parseMoreArgs(function, restArg);
- }
- }
-
-- private static int parseOneArg(String funcName) throws Exception {
-+ /**
-+ * Evaluates function for coord-action-create-inst tag
-+ * @param event
-+ * @param appInst
-+ * @param conf
-+ * @param function
-+ * @return evaluation result
-+ * @throws Exception
-+ */
-+ private static String evaluateInstanceFunction(Element event, SyncCoordAction appInst, Configuration conf,
-+ String function) throws Exception {
-+ ELEvaluator eval = CoordELEvaluator.createInstancesELEvaluator("coord-action-create-inst", event, appInst, conf);
-+ return CoordELFunctions.evalAndWrap(eval, function);
-+ }
-+
-+ public static int parseOneArg(String funcName) throws Exception {
- int firstPos = funcName.indexOf("(");
- int lastPos = funcName.lastIndexOf(")");
- if (firstPos >= 0 && lastPos > firstPos) {
-@@ -181,17 +189,17 @@
- Element eStartInst = event.getChild("start-instance", event.getNamespace());
- Element eEndInst = event.getChild("end-instance", event.getNamespace());
- if (eStartInst != null && eEndInst != null) {
-- String strStart = eStartInst.getTextTrim();
-- String strEnd = eEndInst.getTextTrim();
-+ String strStart = evaluateInstanceFunction(event, appInst, conf, eStartInst.getTextTrim());
-+ String strEnd = evaluateInstanceFunction(event, appInst, conf, eEndInst.getTextTrim());
- checkIfBothSameType(strStart, strEnd);
- StringBuilder restArg = new StringBuilder(); // To store rest
- // arguments for
- // future
- // function
-- int startIndex = getInstanceNumber(strStart, event, appInst, conf, restArg);
-+ int startIndex = getInstanceNumber(strStart, restArg);
- String startRestArg = restArg.toString();
- restArg.delete(0, restArg.length());
-- int endIndex = getInstanceNumber(strEnd, event, appInst, conf, restArg);
-+ int endIndex = getInstanceNumber(strEnd, restArg);
- String endRestArg = restArg.toString();
- int funcType = getFuncType(strStart);
- if (funcType == OFFSET) {
-Index: core/src/main/java/org/apache/oozie/coord/CoordELFunctions.java
-===================================================================
---- core/src/main/java/org/apache/oozie/coord/CoordELFunctions.java (revision 1485571)
-+++ core/src/main/java/org/apache/oozie/coord/CoordELFunctions.java (working copy)
-@@ -1250,7 +1250,7 @@
- * @return current instance i.e. current(0) returns null if effectiveTime is earlier than Initial Instance time of
- * the dataset.
- */
-- private static Calendar getCurrentInstance(Date effectiveTime, int instanceCount[]) {
-+ public static Calendar getCurrentInstance(Date effectiveTime, int instanceCount[]) {
- ELEvaluator eval = ELEvaluator.getCurrent();
- return getCurrentInstance(effectiveTime, instanceCount, eval);
- }
-@@ -1294,7 +1294,7 @@
- return current;
- }
-
-- private static Calendar getEffectiveNominalTime() {
-+ public static Calendar getEffectiveNominalTime() {
- Date datasetInitialInstance = getInitialInstance();
- TimeZone dsTZ = getDatasetTZ();
- // Convert Date to Calendar for corresponding TZ
-@@ -1356,7 +1356,7 @@
- /**
- * @return dataset TimeZone
- */
-- private static TimeZone getDatasetTZ() {
-+ public static TimeZone getDatasetTZ() {
- ELEvaluator eval = ELEvaluator.getCurrent();
- return getDatasetTZ(eval);
- }
-Index: bin/test-patch-05-patch-raw-analysis
-===================================================================
---- bin/test-patch-05-patch-raw-analysis (revision 1485571)
-+++ bin/test-patch-05-patch-raw-analysis (working copy)
-@@ -30,7 +30,8 @@
- }
- ###############################################################################
- printUsage() {
-- echo "Usage: $0 --taskname | (--op=pre|post|report --tempdir=<TEMP DIR> --reportdir=<REPORT DIR> --summaryfile=<SUMMARY FILE>)"
-+ echo "Usage: $0 --taskname | (--op=pre|post|report --tempdir=<TEMP DIR> --reportdir=<REPORT DIR> --summaryfile=<SUMMARY FILE> "
-+ echo "--patchfile=<PATCH FILE>)"
- echo
- }
- ###############################################################################
http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/1caadaf2/build-tools/src/patches/OOZIE-882.patch
----------------------------------------------------------------------
diff --git a/build-tools/src/patches/OOZIE-882.patch b/build-tools/src/patches/OOZIE-882.patch
deleted file mode 100644
index edcbf1d..0000000
--- a/build-tools/src/patches/OOZIE-882.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-Index: core/src/test/java/org/apache/oozie/coord/TestCoordELEvaluator.java
-===================================================================
---- core/src/test/java/org/apache/oozie/coord/TestCoordELEvaluator.java (revision 1352500)
-+++ core/src/test/java/org/apache/oozie/coord/TestCoordELEvaluator.java (working copy)
-@@ -123,7 +123,8 @@
- }
-
- public void testCreateDataEvaluator() throws Exception {
-- String jobXml = "<coordinator-app name=\"mycoordinator-app\" start=\"2009-02-01T01:00GMT\" end=\"2009-02-03T23:59GMT\" frequency=\"720\"";
-+ String jobXml = "<coordinator-app name=\"mycoordinator-app\" start=\"2009-02-01T01:00GMT\" end=\"2009-02-03T23:59GMT\" timezone=\"UTC\"";
-+ jobXml += " frequency=\"720\" freq_timeunit=\"MINUTE\"";
- jobXml += " action-nominal-time='2009-09-01T00:00Z' action-actual-time='2010-10-01T00:00Z'>";
- jobXml += "<input-events><data-in name=\"A\" dataset=\"a\"><uris>file:///tmp/coord/US/2009/1/30|file:///tmp/coord/US/2009/1/31</uris>";
- jobXml += "<dataset name=\"a\" frequency=\"1440\" initial-instance=\"2009-01-01T00:00Z\">";
-Index: core/src/main/java/org/apache/oozie/coord/CoordELEvaluator.java
-===================================================================
---- core/src/main/java/org/apache/oozie/coord/CoordELEvaluator.java (revision 1352500)
-+++ core/src/main/java/org/apache/oozie/coord/CoordELEvaluator.java (working copy)
-@@ -143,6 +143,9 @@
- String strNominalTime = eJob.getAttributeValue("action-nominal-time");
- if (strNominalTime != null) {
- appInst.setNominalTime(DateUtils.parseDateUTC(strNominalTime));
-+ appInst.setTimeZone(DateUtils.getTimeZone(eJob.getAttributeValue("timezone")));
-+ appInst.setFrequency(Integer.parseInt(eJob.getAttributeValue("frequency")));
-+ appInst.setTimeUnit(TimeUnit.valueOf(eJob.getAttributeValue("freq_timeunit")));
- appInst.setActionId(actionId);
- appInst.setName(eJob.getAttributeValue("name"));
- }