falcon-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From srik...@apache.org
Subject [12/12] git commit: FALCON-85 Hive (HCatalog) integration. Contributed by Venkatesh Seetharam FALCON-163 Merge FALCON-85 branch into main line. Contributed by Venkatesh Seetharam
Date Tue, 12 Nov 2013 11:05:29 GMT
FALCON-85 Hive (HCatalog) integration. Contributed by Venkatesh Seetharam
FALCON-163 Merge FALCON-85 branch into main line. Contributed by Venkatesh Seetharam


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

Branch: refs/heads/master
Commit: 17f901a66b6b555abb886ee55fb7b73871fb9cb2
Parents: b47788d
Author: srikanth.sundarrajan <srikanth.sundarrajan@inmobi.com>
Authored: Tue Nov 12 16:34:19 2013 +0530
Committer: srikanth.sundarrajan <srikanth.sundarrajan@inmobi.com>
Committed: Tue Nov 12 16:34:19 2013 +0530

----------------------------------------------------------------------
 CHANGES.txt                                     |   92 +-
 Installation-steps.txt                          |   23 +-
 build-tools/pom.xml                             |    2 +-
 build-tools/src/bin/OOZIE-674.sh                |   45 -
 build-tools/src/bin/oozie-patch-pkg.sh          |   45 +
 build-tools/src/patch/oozie-4.0.0-falcon.patch  | 1075 ++++++++++++++++++
 .../src/patch/oozie-bundle-el-extension.patch   |   18 +
 .../org/apache/falcon/client/FalconClient.java  |    4 +-
 .../org/apache/falcon/entity/v0/Frequency.java  |   16 +-
 client/src/main/resources/feed-0.1.xsd          |   22 +-
 client/src/main/resources/process-0.1.xsd       |    1 +
 .../apache/falcon/entity/v0/TestFrequency.java  |    3 +-
 common/pom.xml                                  |   10 +
 .../falcon/catalog/AbstractCatalogService.java  |  107 ++
 .../apache/falcon/catalog/CatalogPartition.java |  182 +++
 .../falcon/catalog/CatalogServiceFactory.java   |   49 +
 .../falcon/catalog/HiveCatalogService.java      |  202 ++++
 .../falcon/cleanup/AbstractCleanupHandler.java  |   14 +-
 .../falcon/cleanup/FeedCleanupHandler.java      |   41 +-
 .../apache/falcon/entity/CatalogStorage.java    |  351 ++++++
 .../org/apache/falcon/entity/EntityUtil.java    |   22 +-
 .../org/apache/falcon/entity/FeedHelper.java    |  189 ++-
 .../apache/falcon/entity/FileSystemStorage.java |  214 ++++
 .../java/org/apache/falcon/entity/Storage.java  |   84 ++
 .../entity/parser/ClusterEntityParser.java      |   34 +-
 .../falcon/entity/parser/FeedEntityParser.java  |  107 +-
 .../entity/parser/ProcessEntityParser.java      |   67 +-
 .../java/org/apache/falcon/group/FeedGroup.java |    6 +-
 .../org/apache/falcon/group/FeedGroupMap.java   |    4 +-
 .../org/apache/falcon/update/UpdateHelper.java  |   34 +-
 .../workflow/engine/AbstractWorkflowEngine.java |    2 +-
 common/src/main/resources/log4j.xml             |    8 +-
 common/src/main/resources/startup.properties    |    2 +
 .../falcon/cleanup/LogCleanupServiceTest.java   |   65 +-
 .../falcon/entity/CatalogStorageTest.java       |  213 ++++
 .../falcon/entity/FileSystemStorageTest.java    |  215 ++++
 .../falcon/entity/StorageFactoryTest.java       |  306 +++++
 .../entity/parser/ClusterEntityParserTest.java  |   62 +-
 .../entity/parser/FeedEntityParserTest.java     |   50 +-
 .../entity/parser/ProcessEntityParserTest.java  |   43 +
 .../apache/falcon/update/UpdateHelperTest.java  |   57 +-
 .../resources/config/cluster/cluster-0.1.xml    |    3 +-
 .../config/cluster/cluster-bad-registry.xml     |   43 +
 .../config/cluster/cluster-no-registry.xml      |   42 +
 .../src/test/resources/config/feed/feed-0.2.xml |   10 +
 .../config/feed/hive-table-feed-out.xml         |   45 +
 .../resources/config/feed/hive-table-feed.xml   |   42 +
 .../test/resources/config/feed/invalid-feed.xml |   53 +
 .../feed/table-with-multiple-sources-feed.xml   |   53 +
 .../resources/config/process/process-table.xml  |   46 +
 docs/src/site/twiki/EntitySpecification.twiki   |  283 ++++-
 docs/src/site/twiki/FalconDocumentation.twiki   |   97 +-
 docs/src/site/twiki/HiveIntegration.twiki       |  342 ++++++
 docs/src/site/twiki/InstallationSteps.twiki     |   96 +-
 docs/src/site/twiki/OnBoarding.twiki            |    1 +
 docs/src/site/twiki/index.twiki                 |   11 +-
 .../falcon/converter/OozieFeedMapper.java       |  564 +++++----
 .../config/workflow/falcon-table-export.hql     |   18 +
 .../config/workflow/falcon-table-import.hql     |   20 +
 .../config/workflow/replication-workflow.xml    |   89 +-
 .../config/workflow/retention-workflow.xml      |   11 +
 .../falcon/converter/OozieFeedMapperTest.java   |  322 +++++-
 feed/src/test/resources/fs-replication-feed.xml |   64 ++
 feed/src/test/resources/src-cluster.xml         |    2 +-
 .../test/resources/table-replication-feed.xml   |   42 +
 feed/src/test/resources/trg-cluster-alpha.xml   |   39 +
 feed/src/test/resources/trg-cluster-beta.xml    |   39 +
 feed/src/test/resources/trg-cluster.xml         |    2 +-
 hadoop-webapp/pom.xml                           |   27 +
 .../falcon/listener/HadoopStartupListener.java  |  130 ++-
 hadoop-webapp/src/main/resources/hive-site.xml  |   42 +
 hadoop-webapp/src/main/resources/log4j.xml      |    2 +-
 .../falcon/messaging/EntityInstanceMessage.java |   23 +-
 .../falcon/messaging/MessageProducer.java       |    7 +-
 messaging/src/main/resources/log4j.xml          |    4 +-
 .../falcon/messaging/FeedProducerTest.java      |    3 -
 oozie-3.2.0-incubating-el.patch                 |  702 ------------
 oozie-bundle-el-extension.patch                 |   18 -
 oozie-el-extensions/pom.xml                     |    5 +
 .../oozie/extensions/OozieELExtensions.java     |    2 +-
 .../oozie/extensions/TestOozieELExtensions.java |    6 +-
 oozie/pom.xml                                   |   17 +
 .../converter/AbstractOozieEntityMapper.java    |   20 +
 .../falcon/workflow/FalconPostProcessing.java   |    2 +-
 .../falcon/workflow/engine/NullCoordJob.java    |    4 +-
 .../workflow/engine/OozieWorkflowEngine.java    |   20 +-
 oozie/src/main/resources/hive-action-0.2.xsd    |   68 ++
 oozie/src/main/resources/oozie-workflow-0.3.xsd |    4 +-
 pom.xml                                         |  152 ++-
 prism/src/main/java/org/apache/falcon/Main.java |    2 +-
 .../falcon/service/FalconTopicSubscriber.java   |    5 +-
 .../falcon/service/SLAMonitoringService.java    |    2 +-
 prism/src/main/resources/log4j.xml              |    8 +-
 .../falcon/converter/OozieProcessMapper.java    |  445 ++++++--
 .../workflow/OozieProcessWorkflowBuilder.java   |    6 +-
 .../config/workflow/process-parent-workflow.xml |   43 +-
 .../converter/OozieProcessMapperTest.java       |  248 +++-
 .../config/feed/hive-table-feed-out.xml         |   43 +
 .../resources/config/feed/hive-table-feed.xml   |   43 +
 .../resources/config/process/hive-process.xml   |   46 +
 .../config/process/pig-process-table.xml        |   46 +
 .../resources/config/process/process-0.1.xml    |    2 +-
 replication/pom.xml                             |    5 +
 .../falcon/replication/FeedReplicator.java      |  107 +-
 .../falcon/replication/FeedReplicatorTest.java  |   16 +-
 .../apache/falcon/latedata/LateDataHandler.java |  205 +++-
 .../apache/falcon/rerun/event/LaterunEvent.java |   10 +-
 .../apache/falcon/rerun/event/RerunEvent.java   |    4 +-
 .../falcon/rerun/event/RerunEventFactory.java   |    2 -
 .../apache/falcon/rerun/event/RetryEvent.java   |    4 +-
 .../rerun/handler/AbstractRerunHandler.java     |    5 +-
 .../falcon/rerun/handler/LateRerunConsumer.java |   61 +-
 .../falcon/rerun/handler/LateRerunHandler.java  |   34 +-
 .../apache/falcon/retention/FeedEvictor.java    |  182 ++-
 .../falcon/retention/FeedEvictorTest.java       |  196 ++--
 src/bin/falcon                                  |   20 +-
 src/bin/falcon-config.sh                        |  120 ++
 src/bin/package.sh                              |   20 +-
 src/bin/service-start.sh                        |   67 +-
 src/bin/service-stop.sh                         |    9 +-
 src/conf/falcon-env.sh                          |   55 +
 src/conf/log4j.xml                              |    9 +-
 src/conf/runtime.properties                     |    2 +-
 src/conf/startup.properties                     |    6 +-
 src/main/assemblies/bin-package.xml             |  106 --
 src/main/assemblies/client-package.xml          |   73 --
 src/main/assemblies/distributed-package.xml     |  112 ++
 src/main/assemblies/prism-package.xml           |  102 --
 src/main/assemblies/server-package.xml          |   96 --
 src/main/assemblies/standalone-package.xml      |  106 ++
 .../falcon/cluster/util/EmbeddedCluster.java    |   15 +-
 .../falcon/cluster/util/StandAloneCluster.java  |    1 +
 webapp/pom.xml                                  |   12 +-
 webapp/src/conf/oozie/conf/action-conf/hive.xml |   30 +-
 webapp/src/main/resources/log4j.xml             |    8 +-
 webapp/src/main/webapp/index.html               |   31 +
 .../falcon/catalog/HiveCatalogServiceIT.java    |  331 ++++++
 .../apache/falcon/late/LateDataHandlerIT.java   |  214 ++++
 .../lifecycle/FileSystemFeedReplicationIT.java  |  270 +++++
 .../lifecycle/TableStorageFeedEvictorIT.java    |  367 ++++++
 .../TableStorageFeedReplicationIT.java          |  237 ++++
 .../org/apache/falcon/process/PigProcessIT.java |  126 ++
 .../falcon/process/TableStorageProcessIT.java   |  211 ++++
 .../resource/ClusterEntityValidationIT.java     |  101 --
 .../apache/falcon/resource/PigProcessIT.java    |  119 --
 .../org/apache/falcon/resource/TestContext.java |  125 +-
 .../java/org/apache/falcon/util/FSUtils.java    |  101 ++
 .../org/apache/falcon/util/HiveTestUtils.java   |  187 +++
 .../org/apache/falcon/util/OozieTestUtils.java  |   84 ++
 .../validation/ClusterEntityValidationIT.java   |  104 ++
 .../validation/FeedEntityValidationIT.java      |  145 +++
 webapp/src/test/resources/apps/data/data.txt    | 1000 ++++++++++++++++
 webapp/src/test/resources/apps/hive/script.hql  |   19 +
 webapp/src/test/resources/apps/pig/data.txt     |  585 ----------
 webapp/src/test/resources/apps/pig/table-id.pig |   21 +
 webapp/src/test/resources/cluster-template.xml  |    6 +-
 webapp/src/test/resources/hive-table-feed.xml   |   37 +
 webapp/src/test/resources/table/bcp-cluster.xml |   52 +
 .../table/complex-replicating-feed.xml          |   71 ++
 .../table/customer-fs-replicating-feed.xml      |   56 +
 .../table/customer-table-replicating-feed.xml   |   46 +
 .../resources/table/hive-process-template.xml   |   51 +
 .../table/multiple-targets-replicating-feed.xml |   74 ++
 .../test/resources/table/pig-process-tables.xml |   51 +
 .../test/resources/table/primary-cluster.xml    |   52 +
 .../test/resources/table/table-feed-input.xml   |   37 +
 .../test/resources/table/table-feed-output.xml  |   37 +
 .../resources/table/target-cluster-alpha.xml    |   52 +
 .../resources/table/target-cluster-beta.xml     |   52 +
 .../resources/table/target-cluster-gamma.xml    |   52 +
 170 files changed, 12440 insertions(+), 3126 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/17f901a6/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 28f4787..8d69374 100755
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -5,13 +5,92 @@ Trunk (Unreleased)
   INCOMPATIBLE CHANGES
 
   NEW FEATURES
+  
+    FALCON-85 Hive (HCatalog) integration. (Venkatesh Seetharam
+    via Srikanth Sundarrajan)
+
+    FALCON-163 Merge FALCON-85 branch into main line. (Venkatesh
+    Seetharam via Srikanth Sundarrajan)
+
+    FALCON-169 multiple "/" in target for replication for
+    multi target feed. (Venkatesh Seetharam)
+
+    FALCON-168 Different validity of clusters in feed
+    not handled. (Venkatesh Seetharam)
+
+    FALCON-154 Remove webhcat startup in HadoopStartupListener
+    as its not used. (Venkatesh Seetharam)
+
+    FALCON-161 Feed evictor evicts instances not eligible when
+    pattern has dash. (Venkatesh Seetharam)
+
+    FALCON-143 Enable Late data handling for hive tables.
+    (Venkatesh Seetharam)
+
+    FALCON-95 Enable embedding hive scripts directly in a process.
+    (Venkatesh Seetharam)
+
+    FALCON-153 Feed Storage type isn't passed in replication.
+    (Venkatesh Seetharam)
+
+    FALCON-91 Handle feed updates in purview of tables. (Venkatesh
+    Seetharam via Srikanth Sundarrajan) 
+
+    FALCON-104 FALCON-86 introduces a backward incompatible change.
+    (Venkatesh Seetharam via Srikanth Sundarrajan)
+
+    FALCON-113 Update documentation for Hive integration. (Venkatesh
+    Seetharam via Srikanth Sundarrajan)
+
+    FALCON-129 Disable Late data handling for hive tables. (Venkatesh
+    Seetharam via Srikanth Sundarrajan)
+
+    FALCON-90 Propagate hive table through Process mapper. (Venkatesh
+    Seetharam via Srikanth Sundarrajan)
+
+    FALCON-93 Replication to handle hive table replication. (Venkatesh
+    Seetharam via Srikanth Sundarrajan)
+
+    FALCON-94 Retention to handle hive table eviction. (Venkatesh 
+    Seetharam via Srikanth Sundarrajan)
+
+    FALCON-102 Add integration tests for feed entity parser for table.
+    (Venkatesh Seetharam)
+
+    FALCON-103 Upgrade oozie to 4.0.x. (Venkatesh Seetharam)
+
+    FALCON-96 Hive client to talk to the metastore. (Venkatesh
+    Seetharam via Srikanth Sundarrajan)
+
+    FALCON-87 Hive table integration with feed entity. (Venkatesh
+    Seetharam via Srikanth Sundarrajan)
+
+    FALCON-86 Hive table integration with cluster entity. (Venaktesh
+    Seetharam via Srikanth Sundarrajan)
+
+    FALCON-88 Add embedded hive and webhcat for integration tests. 
+    (Venkatesh Seetharam via Srikanth Sundarrajan)
+
     FALCON-107 Adding extensions. (Shwetha GS)
 
     FALCON-62 Falcon compilation with hadoop 2.0 libs. (Shwetha GS
     via Srikanth Sundarrajan)
 
   IMPROVEMENTS
-    FALCON-151 Document the REST APIs for Falcon. (Raghav Kumar 
+
+    FALCON-187 Update Falcon start script to also redirect
+    stdout to the log file. (Arpit Gupta via Venkatesh Seetharam)
+
+    FALCON-174 Bind activemq to all interfaces rather than
+    just localhost. (Arpit Gupta via Venkatesh Seetharam)
+
+    FALCON-165 Simplify packaging to create one package instead of
+    client, falcon and prism packages. (Arpit Gupta via Venkatesh Seetharam)
+
+    FALCON-162 Update falcon scripts to let the user set the log
+    and pid locations. (Arpit Gupta via Venkatesh Seetharam)
+
+    FALCON-151 Document the REST APIs for Falcon. (Raghav Kumar
     Gautham via Srikanth Sundarrajan) 
 
     FALCON-152 REST API for entity & Admin resources only returns 
@@ -35,7 +114,7 @@ Trunk (Unreleased)
     FALCON-131 Remove set -e from falcon scripts. (Suresh Srinivas
     via Srikanth Sundarrajan)
 
-    FALCON-69 Exception from ConfigurationChangeListener should fail 
+    FALCON-69 Exception from ConfigurationChangeListener should fail
     the API. (Shwetha GS via Srikanth Sundarrajan)
 
     FALCON-63 Ability to ingest hadoop libs to falcon release package.
@@ -55,6 +134,15 @@ Trunk (Unreleased)
     Srikanth Sundarrajan)
 
   BUG FIXES
+    FALCON-180 Disable table replication for multiple sources. (Venkatesh
+    Seetharam via Srikanth Sundarrajan)
+
+    FALCON-179 Table replication must drop partition before import as 
+    late reruns fails. (Venkatesh Seetharam via Srikanth Sundarrajan)
+
+    FALCON-182 Disable specifying partitions in inputs with table storage 
+    for process. (Venkatesh Seetharam via Srikanth Sundarrajan)
+
     FALCON-138 Remove perf4j dependency. (Jean-Baptiste Onofré via
     Shwetha GS)
 

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/17f901a6/Installation-steps.txt
----------------------------------------------------------------------
diff --git a/Installation-steps.txt b/Installation-steps.txt
index a0bcf46..2a5b36e 100644
--- a/Installation-steps.txt
+++ b/Installation-steps.txt
@@ -40,22 +40,27 @@ Tar is structured as follows
    |- falcon
    |- falcon-start
    |- falcon-stop
+   |- falcon-config.sh
+   |- service-start.sh
+   |- service-stop.sh
 |- conf
    |- startup.properties
    |- runtime.properties
    |- client.properties
    |- log4j.xml
-|- src
+   |- falcon-env.sh
 |- docs
 |- client
    |- lib (client support libs)
 |- server
    |- webapp
-      |- classes (serer support classes)
-      |- lib (server support libs)
-   |- falcon.war
-|- logs (application log files & temp data files)
-   |- falcon.pid
+      |- falcon.war
+|- hadooplibs
+|- README
+|- NOTICE.txt
+|- LICENSE.txt
+|- DISCLAIMER.txt
+|- CHANGES.txt
 
 2. Installing & running Falcon
 ------------------------------
@@ -63,8 +68,8 @@ Tar is structured as follows
 a. Installing falcon
 ~~~~~~~~~~~~~~~~~~~~
 
-* tar -xzvf falcon-${project.version}.tar.gz
-* cd falcon-main-${project.version}
+* tar -xzvf falcon-${project.version}-bin.tar.gz
+* cd falcon-${project.version}
 
 b. Starting Falcon Server
 ~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -91,4 +96,4 @@ d. Stopping Falcon Server
 * cd <<project home>>
 * src/bin/pacakge.sh <<hadoop-version>>
   >> ex. src/bin/pacakge.sh 1.1.2 or src/bin/pacakge.sh 0.20.2-cdh3u5
-  >> oozie bundle available in target/package/oozie-3.2.0-incubating/distro/target/oozie-3.2.2-distro.tar.gz
\ No newline at end of file
+  >> oozie bundle available in target/package/oozie-4.0.0/distro/target/oozie-4.0.0-distro.tar.gz

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/17f901a6/build-tools/pom.xml
----------------------------------------------------------------------
diff --git a/build-tools/pom.xml b/build-tools/pom.xml
index ba8f758..8aae5fd 100644
--- a/build-tools/pom.xml
+++ b/build-tools/pom.xml
@@ -40,7 +40,7 @@
                             <goal>exec</goal>
                         </goals>
                         <configuration>
-                            <executable>src/bin/OOZIE-674.sh</executable>
+                            <executable>src/bin/oozie-patch-pkg.sh</executable>
                         </configuration>
                     </execution>
                 </executions>

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/17f901a6/build-tools/src/bin/OOZIE-674.sh
----------------------------------------------------------------------
diff --git a/build-tools/src/bin/OOZIE-674.sh b/build-tools/src/bin/OOZIE-674.sh
deleted file mode 100755
index a23a5c4..0000000
--- a/build-tools/src/bin/OOZIE-674.sh
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/bin/bash
-
-# 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.
-
-set -e
-
-if [ -d `mvn help:effective-settings | grep localRepository | cut -d\> -f2 | cut -d\< -f1`/org/apache/oozie/oozie-core/3.2.2 ]
-then
-    echo "Oozie already setup. skipping";
-    exit 0;
-fi
-
-mkdir -p ../target
-pushd ../target
-rm -rf oozie-3.2.0-incubating*
-curl -v "http://www.apache.org/dist/oozie/3.2.0-incubating/oozie-3.2.0-incubating.tar.gz" -o oozie-3.2.0-incubating.tgz
-tar -xzvf oozie-3.2.0-incubating.tgz
-cd oozie-3.2.0-incubating
-pwd
-patch -p0 < ../../oozie-3.2.0-incubating-el.patch
-if [ -z "${MAVEN_HOME}" ]
-then
-    export MVN_CMD=`which mvn`;
-else
-    export MVN_CMD=${MAVEN_HOME}/bin/mvn;
-fi
-echo "Using maven from " $MVN_CMD
-$MVN_CMD clean install -DskipTests
-rm -rf oozie-3.2.0-incubating*
-popd
-

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/17f901a6/build-tools/src/bin/oozie-patch-pkg.sh
----------------------------------------------------------------------
diff --git a/build-tools/src/bin/oozie-patch-pkg.sh b/build-tools/src/bin/oozie-patch-pkg.sh
new file mode 100755
index 0000000..5750ef4
--- /dev/null
+++ b/build-tools/src/bin/oozie-patch-pkg.sh
@@ -0,0 +1,45 @@
+#!/bin/bash
+
+# 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.
+
+set -e
+
+if [ -d `mvn help:effective-settings | grep localRepository | cut -d\> -f2 | cut -d\< -f1`/org/apache/oozie/oozie-core/4.0.0-falcon ]
+then
+    echo "Oozie already setup. skipping";
+    exit 0;
+fi
+
+mkdir -p ../target
+pushd ../target
+rm -rf oozie-4.0.0*
+curl -v "http://www.apache.org/dist/oozie/4.0.0/oozie-4.0.0.tar.gz" -o oozie-4.0.0.tgz
+tar -xzvf oozie-4.0.0.tgz
+cd oozie-4.0.0
+pwd
+patch -p0 < ../../build-tools/src/patch/oozie-4.0.0-falcon.patch
+if [ -z "${MAVEN_HOME}" ]
+then
+    export MVN_CMD=`which mvn`;
+else
+    export MVN_CMD=${MAVEN_HOME}/bin/mvn;
+fi
+echo "Using maven from " $MVN_CMD
+$MVN_CMD clean install -DskipTests
+cd ..
+rm -rf oozie-4.0.0*
+popd

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/17f901a6/build-tools/src/patch/oozie-4.0.0-falcon.patch
----------------------------------------------------------------------
diff --git a/build-tools/src/patch/oozie-4.0.0-falcon.patch b/build-tools/src/patch/oozie-4.0.0-falcon.patch
new file mode 100644
index 0000000..131b7fe
--- /dev/null
+++ b/build-tools/src/patch/oozie-4.0.0-falcon.patch
@@ -0,0 +1,1075 @@
+Index: hadooplibs/hadoop-test-1/pom.xml
+===================================================================
+--- hadooplibs/hadoop-test-1/pom.xml	(revision 1521237)
++++ hadooplibs/hadoop-test-1/pom.xml	(working copy)
+@@ -22,12 +22,12 @@
+     <parent>
+         <groupId>org.apache.oozie</groupId>
+         <artifactId>oozie-main</artifactId>
+-        <version>4.0.0</version>
++        <version>4.0.0-falcon</version>
+         <relativePath>../../pom.xml</relativePath>
+     </parent>
+     <groupId>org.apache.oozie</groupId>
+     <artifactId>oozie-hadoop-test</artifactId>
+-    <version>1.1.1.oozie-4.0.0</version>
++    <version>1.1.1.oozie-4.0.0-falcon</version>
+     <description>Apache Oozie Hadoop ${project.version} Test</description>
+     <name>Apache Oozie Hadoop ${project.version} Test</name>
+     <packaging>jar</packaging>
+Index: hadooplibs/hadoop-test-2/pom.xml
+===================================================================
+--- hadooplibs/hadoop-test-2/pom.xml	(revision 1521237)
++++ hadooplibs/hadoop-test-2/pom.xml	(working copy)
+@@ -22,12 +22,12 @@
+     <parent>
+         <groupId>org.apache.oozie</groupId>
+         <artifactId>oozie-main</artifactId>
+-        <version>4.0.0</version>
++        <version>4.0.0-falcon</version>
+         <relativePath>../../pom.xml</relativePath>
+     </parent>
+     <groupId>org.apache.oozie</groupId>
+     <artifactId>oozie-hadoop-test</artifactId>
+-    <version>2.2.0-SNAPSHOT.oozie-4.0.0</version>
++    <version>2.2.0-SNAPSHOT.oozie-4.0.0-falcon</version>
+     <description>Apache Oozie Hadoop ${project.version} Test</description>
+     <name>Apache Oozie Hadoop ${project.version} Test</name>
+     <packaging>jar</packaging>
+Index: hadooplibs/hadoop-test-0.23/pom.xml
+===================================================================
+--- hadooplibs/hadoop-test-0.23/pom.xml	(revision 1521237)
++++ hadooplibs/hadoop-test-0.23/pom.xml	(working copy)
+@@ -22,12 +22,12 @@
+     <parent>
+         <groupId>org.apache.oozie</groupId>
+         <artifactId>oozie-main</artifactId>
+-        <version>4.0.0</version>
++        <version>4.0.0-falcon</version>
+         <relativePath>../../pom.xml</relativePath>
+     </parent>
+     <groupId>org.apache.oozie</groupId>
+     <artifactId>oozie-hadoop-test</artifactId>
+-    <version>0.23.5.oozie-4.0.0</version>
++    <version>0.23.5.oozie-4.0.0-falcon</version>
+     <description>Apache Oozie Hadoop ${project.version} Test</description>
+     <name>Apache Oozie Hadoop ${project.version} Test</name>
+     <packaging>jar</packaging>
+Index: hadooplibs/hadoop-test-3/pom.xml
+===================================================================
+--- hadooplibs/hadoop-test-3/pom.xml	(revision 1521237)
++++ hadooplibs/hadoop-test-3/pom.xml	(working copy)
+@@ -22,12 +22,12 @@
+     <parent>
+         <groupId>org.apache.oozie</groupId>
+         <artifactId>oozie-main</artifactId>
+-        <version>4.0.0</version>
++        <version>4.0.0-falcon</version>
+         <relativePath>../../pom.xml</relativePath>
+     </parent>
+     <groupId>org.apache.oozie</groupId>
+     <artifactId>oozie-hadoop-test</artifactId>
+-    <version>3.0.0-SNAPSHOT.oozie-4.0.0</version>
++    <version>3.0.0-SNAPSHOT.oozie-4.0.0-falcon</version>
+     <description>Apache Oozie Hadoop ${project.version} Test</description>
+     <name>Apache Oozie Hadoop ${project.version} Test</name>
+     <packaging>jar</packaging>
+Index: hadooplibs/hadoop-1/pom.xml
+===================================================================
+--- hadooplibs/hadoop-1/pom.xml	(revision 1521237)
++++ hadooplibs/hadoop-1/pom.xml	(working copy)
+@@ -22,12 +22,12 @@
+     <parent>
+         <groupId>org.apache.oozie</groupId>
+         <artifactId>oozie-main</artifactId>
+-        <version>4.0.0</version>
++        <version>4.0.0-falcon</version>
+         <relativePath>../../pom.xml</relativePath>
+     </parent>
+     <groupId>org.apache.oozie</groupId>
+     <artifactId>oozie-hadoop</artifactId>
+-    <version>1.1.1.oozie-4.0.0</version>
++    <version>1.1.1.oozie-4.0.0-falcon</version>
+     <description>Apache Oozie Hadoop ${project.version}</description>
+     <name>Apache Oozie Hadoop ${project.version}</name>
+     <packaging>jar</packaging>
+Index: hadooplibs/hadoop-2/pom.xml
+===================================================================
+--- hadooplibs/hadoop-2/pom.xml	(revision 1521237)
++++ hadooplibs/hadoop-2/pom.xml	(working copy)
+@@ -22,12 +22,12 @@
+     <parent>
+         <groupId>org.apache.oozie</groupId>
+         <artifactId>oozie-main</artifactId>
+-        <version>4.0.0</version>
++        <version>4.0.0-falcon</version>
+         <relativePath>../../pom.xml</relativePath>
+     </parent>
+     <groupId>org.apache.oozie</groupId>
+     <artifactId>oozie-hadoop</artifactId>
+-    <version>2.2.0-SNAPSHOT.oozie-4.0.0</version>
++    <version>2.2.0-SNAPSHOT.oozie-4.0.0-falcon</version>
+     <description>Apache Oozie Hadoop ${project.version}</description>
+     <name>Apache Oozie Hadoop ${project.version}</name>
+     <packaging>jar</packaging>
+Index: hadooplibs/hadoop-0.23/pom.xml
+===================================================================
+--- hadooplibs/hadoop-0.23/pom.xml	(revision 1521237)
++++ hadooplibs/hadoop-0.23/pom.xml	(working copy)
+@@ -22,12 +22,12 @@
+     <parent>
+         <groupId>org.apache.oozie</groupId>
+         <artifactId>oozie-main</artifactId>
+-        <version>4.0.0</version>
++        <version>4.0.0-falcon</version>
+         <relativePath>../../pom.xml</relativePath>
+     </parent>
+     <groupId>org.apache.oozie</groupId>
+     <artifactId>oozie-hadoop</artifactId>
+-    <version>0.23.5.oozie-4.0.0</version>
++    <version>0.23.5.oozie-4.0.0-falcon</version>
+     <description>Apache Oozie Hadoop ${project.version}</description>
+     <name>Apache Oozie Hadoop ${project.version}</name>
+     <packaging>jar</packaging>
+Index: hadooplibs/hadoop-3/pom.xml
+===================================================================
+--- hadooplibs/hadoop-3/pom.xml	(revision 1521237)
++++ hadooplibs/hadoop-3/pom.xml	(working copy)
+@@ -22,12 +22,12 @@
+     <parent>
+         <groupId>org.apache.oozie</groupId>
+         <artifactId>oozie-main</artifactId>
+-        <version>4.0.0</version>
++        <version>4.0.0-falcon</version>
+         <relativePath>../../pom.xml</relativePath>
+     </parent>
+     <groupId>org.apache.oozie</groupId>
+     <artifactId>oozie-hadoop</artifactId>
+-    <version>3.0.0-SNAPSHOT.oozie-4.0.0</version>
++    <version>3.0.0-SNAPSHOT.oozie-4.0.0-falcon</version>
+     <description>Apache Oozie Hadoop ${project.version}</description>
+     <name>Apache Oozie Hadoop ${project.version}</name>
+     <packaging>jar</packaging>
+Index: hadooplibs/pom.xml
+===================================================================
+--- hadooplibs/pom.xml	(revision 1521237)
++++ hadooplibs/pom.xml	(working copy)
+@@ -22,11 +22,11 @@
+     <parent>
+         <groupId>org.apache.oozie</groupId>
+         <artifactId>oozie-main</artifactId>
+-        <version>4.0.0</version>
++        <version>4.0.0-falcon</version>
+     </parent>
+     <groupId>org.apache.oozie</groupId>
+     <artifactId>oozie-hadooplibs</artifactId>
+-    <version>4.0.0</version>
++    <version>4.0.0-falcon</version>
+     <description>Apache Oozie Hadoop Libs</description>
+     <name>Apache Oozie Hadoop Libs</name>
+     <packaging>pom</packaging>
+Index: hadooplibs/hadoop-distcp-1/pom.xml
+===================================================================
+--- hadooplibs/hadoop-distcp-1/pom.xml	(revision 1521237)
++++ hadooplibs/hadoop-distcp-1/pom.xml	(working copy)
+@@ -22,12 +22,12 @@
+     <parent>
+         <groupId>org.apache.oozie</groupId>
+         <artifactId>oozie-main</artifactId>
+-        <version>4.0.0</version>
++        <version>4.0.0-falcon</version>
+         <relativePath>../../pom.xml</relativePath>
+     </parent>
+     <groupId>org.apache.oozie</groupId>
+     <artifactId>oozie-hadoop-distcp</artifactId>
+-    <version>1.1.1.oozie-4.0.0</version>
++    <version>1.1.1.oozie-4.0.0-falcon</version>
+     <description>Apache Oozie Hadoop Distcp ${project.version}</description>
+     <name>Apache Oozie Hadoop Distcp ${project.version}</name>
+     <packaging>jar</packaging>
+Index: hadooplibs/hadoop-distcp-2/pom.xml
+===================================================================
+--- hadooplibs/hadoop-distcp-2/pom.xml	(revision 1521237)
++++ hadooplibs/hadoop-distcp-2/pom.xml	(working copy)
+@@ -22,12 +22,12 @@
+     <parent>
+         <groupId>org.apache.oozie</groupId>
+         <artifactId>oozie-main</artifactId>
+-        <version>4.0.0</version>
++        <version>4.0.0-falcon</version>
+         <relativePath>../../pom.xml</relativePath>
+     </parent>
+     <groupId>org.apache.oozie</groupId>
+     <artifactId>oozie-hadoop-distcp</artifactId>
+-    <version>2.2.0-SNAPSHOT.oozie-4.0.0</version>
++    <version>2.2.0-SNAPSHOT.oozie-4.0.0-falcon</version>
+     <description>Apache Oozie Hadoop Distcp ${project.version}</description>
+     <name>Apache Oozie Hadoop Distcp ${project.version}</name>
+     <packaging>jar</packaging>
+Index: hadooplibs/hadoop-distcp-0.23/pom.xml
+===================================================================
+--- hadooplibs/hadoop-distcp-0.23/pom.xml	(revision 1521237)
++++ hadooplibs/hadoop-distcp-0.23/pom.xml	(working copy)
+@@ -22,12 +22,12 @@
+     <parent>
+         <groupId>org.apache.oozie</groupId>
+         <artifactId>oozie-main</artifactId>
+-        <version>4.0.0</version>
++        <version>4.0.0-falcon</version>
+         <relativePath>../../pom.xml</relativePath>
+     </parent>
+     <groupId>org.apache.oozie</groupId>
+     <artifactId>oozie-hadoop-distcp</artifactId>
+-    <version>0.23.5.oozie-4.0.0</version>
++    <version>0.23.5.oozie-4.0.0-falcon</version>
+     <description>Apache Oozie Hadoop Distcp ${project.version}</description>
+     <name>Apache Oozie Hadoop Distcp ${project.version}</name>
+     <packaging>jar</packaging>
+Index: hadooplibs/hadoop-distcp-3/pom.xml
+===================================================================
+--- hadooplibs/hadoop-distcp-3/pom.xml	(revision 1521237)
++++ hadooplibs/hadoop-distcp-3/pom.xml	(working copy)
+@@ -22,12 +22,12 @@
+     <parent>
+         <groupId>org.apache.oozie</groupId>
+         <artifactId>oozie-main</artifactId>
+-        <version>4.0.0</version>
++        <version>4.0.0-falcon</version>
+         <relativePath>../../pom.xml</relativePath>
+     </parent>
+     <groupId>org.apache.oozie</groupId>
+     <artifactId>oozie-hadoop-distcp</artifactId>
+-    <version>3.0.0-SNAPSHOT.oozie-4.0.0</version>
++    <version>3.0.0-SNAPSHOT.oozie-4.0.0-falcon</version>
+     <description>Apache Oozie Hadoop Distcp ${project.version}</description>
+     <name>Apache Oozie Hadoop Distcp ${project.version}</name>
+     <packaging>jar</packaging>
+Index: docs/pom.xml
+===================================================================
+--- docs/pom.xml	(revision 1521237)
++++ docs/pom.xml	(working copy)
+@@ -22,11 +22,11 @@
+     <parent>
+         <groupId>org.apache.oozie</groupId>
+         <artifactId>oozie-main</artifactId>
+-        <version>4.0.0</version>
++        <version>4.0.0-falcon</version>
+     </parent>
+     <groupId>org.apache.oozie</groupId>
+     <artifactId>oozie-docs</artifactId>
+-    <version>4.0.0</version>
++    <version>4.0.0-falcon</version>
+     <description>Apache Oozie Docs</description>
+     <name>Apache Oozie Docs</name>
+     <packaging>war</packaging>
+Index: core/src/main/conf/oozie-site.xml
+===================================================================
+--- core/src/main/conf/oozie-site.xml	(revision 1521237)
++++ core/src/main/conf/oozie-site.xml	(working copy)
+@@ -127,7 +127,7 @@
+ 
+     <property>
+         <name>oozie.service.JPAService.create.db.schema</name>
+-        <value>false</value>
++        <value>true</value>
+         <description>
+             Creates Oozie DB.
+ 
+@@ -336,6 +336,164 @@
+         </description>
+     </property>
+ 
++    <!-- HCatalog Integration Properties -->
++    <property>
++        <name>oozie.service.URIHandlerService.uri.handlers</name>
++        <value>org.apache.oozie.dependency.FSURIHandler,org.apache.oozie.dependency.HCatURIHandler</value>
++        <description>
++            Enlist the different uri handlers supported for data availability checks.
++        </description>
++    </property>
++
++    <property>
++        <name>oozie.services.ext</name>
++        <value>
++            org.apache.oozie.service.JMSAccessorService,
++            org.apache.oozie.service.PartitionDependencyManagerService,
++            org.apache.oozie.service.HCatAccessorService
++        </value>
++        <description>
++            To add/replace services defined in 'oozie.services' with custom implementations.
++            Class names must be separated by commas.
++        </description>
++    </property>
++
++    <!-- Coord EL Functions Properties -->
++    <property>
++        <name>oozie.service.ELService.ext.functions.coord-job-submit-instances</name>
++        <value>
++            now=org.apache.oozie.extensions.OozieELExtensions#ph1_now_echo,
++            today=org.apache.oozie.extensions.OozieELExtensions#ph1_today_echo,
++            yesterday=org.apache.oozie.extensions.OozieELExtensions#ph1_yesterday_echo,
++            currentMonth=org.apache.oozie.extensions.OozieELExtensions#ph1_currentMonth_echo,
++            lastMonth=org.apache.oozie.extensions.OozieELExtensions#ph1_lastMonth_echo,
++            currentYear=org.apache.oozie.extensions.OozieELExtensions#ph1_currentYear_echo,
++            lastYear=org.apache.oozie.extensions.OozieELExtensions#ph1_lastYear_echo,
++            formatTime=org.apache.oozie.coord.CoordELFunctions#ph1_coord_formatTime_echo,
++            latest=org.apache.oozie.coord.CoordELFunctions#ph2_coord_latest_echo,
++            future=org.apache.oozie.coord.CoordELFunctions#ph2_coord_future_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>
++            now=org.apache.oozie.extensions.OozieELExtensions#ph2_now_inst,
++            today=org.apache.oozie.extensions.OozieELExtensions#ph2_today_inst,
++            yesterday=org.apache.oozie.extensions.OozieELExtensions#ph2_yesterday_inst,
++            currentMonth=org.apache.oozie.extensions.OozieELExtensions#ph2_currentMonth_inst,
++            lastMonth=org.apache.oozie.extensions.OozieELExtensions#ph2_lastMonth_inst,
++            currentYear=org.apache.oozie.extensions.OozieELExtensions#ph2_currentYear_inst,
++            lastYear=org.apache.oozie.extensions.OozieELExtensions#ph2_lastYear_inst,
++            latest=org.apache.oozie.coord.CoordELFunctions#ph2_coord_latest_echo,
++            future=org.apache.oozie.coord.CoordELFunctions#ph2_coord_future_echo,
++            formatTime=org.apache.oozie.coord.CoordELFunctions#ph2_coord_formatTime,
++            user=org.apache.oozie.coord.CoordELFunctions#coord_user
++        </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>
++            now=org.apache.oozie.extensions.OozieELExtensions#ph2_now,
++            today=org.apache.oozie.extensions.OozieELExtensions#ph2_today,
++            yesterday=org.apache.oozie.extensions.OozieELExtensions#ph2_yesterday,
++            currentMonth=org.apache.oozie.extensions.OozieELExtensions#ph2_currentMonth,
++            lastMonth=org.apache.oozie.extensions.OozieELExtensions#ph2_lastMonth,
++            currentYear=org.apache.oozie.extensions.OozieELExtensions#ph2_currentYear,
++            lastYear=org.apache.oozie.extensions.OozieELExtensions#ph2_lastYear,
++            latest=org.apache.oozie.coord.CoordELFunctions#ph2_coord_latest_echo,
++            future=org.apache.oozie.coord.CoordELFunctions#ph2_coord_future_echo,
++            formatTime=org.apache.oozie.coord.CoordELFunctions#ph2_coord_formatTime,
++            user=org.apache.oozie.coord.CoordELFunctions#coord_user
++        </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-job-submit-data</name>
++        <value>
++            now=org.apache.oozie.extensions.OozieELExtensions#ph1_now_echo,
++            today=org.apache.oozie.extensions.OozieELExtensions#ph1_today_echo,
++            yesterday=org.apache.oozie.extensions.OozieELExtensions#ph1_yesterday_echo,
++            currentMonth=org.apache.oozie.extensions.OozieELExtensions#ph1_currentMonth_echo,
++            lastMonth=org.apache.oozie.extensions.OozieELExtensions#ph1_lastMonth_echo,
++            currentYear=org.apache.oozie.extensions.OozieELExtensions#ph1_currentYear_echo,
++            lastYear=org.apache.oozie.extensions.OozieELExtensions#ph1_lastYear_echo,
++            dataIn=org.apache.oozie.extensions.OozieELExtensions#ph1_dataIn_echo,
++            instanceTime=org.apache.oozie.coord.CoordELFunctions#ph1_coord_nominalTime_echo_wrap,
++            formatTime=org.apache.oozie.coord.CoordELFunctions#ph1_coord_formatTime_echo,
++            dateOffset=org.apache.oozie.coord.CoordELFunctions#ph1_coord_dateOffset_echo,
++            user=org.apache.oozie.coord.CoordELFunctions#coord_user
++        </value>
++        <description>
++            EL constant declarations, separated by commas, format is [PREFIX:]NAME=CLASS#CONSTANT.
++            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-start</name>
++        <value>
++            now=org.apache.oozie.extensions.OozieELExtensions#ph2_now,
++            today=org.apache.oozie.extensions.OozieELExtensions#ph2_today,
++            yesterday=org.apache.oozie.extensions.OozieELExtensions#ph2_yesterday,
++            currentMonth=org.apache.oozie.extensions.OozieELExtensions#ph2_currentMonth,
++            lastMonth=org.apache.oozie.extensions.OozieELExtensions#ph2_lastMonth,
++            currentYear=org.apache.oozie.extensions.OozieELExtensions#ph2_currentYear,
++            lastYear=org.apache.oozie.extensions.OozieELExtensions#ph2_lastYear,
++            latest=org.apache.oozie.coord.CoordELFunctions#ph3_coord_latest,
++            future=org.apache.oozie.coord.CoordELFunctions#ph3_coord_future,
++            dataIn=org.apache.oozie.extensions.OozieELExtensions#ph3_dataIn,
++            instanceTime=org.apache.oozie.coord.CoordELFunctions#ph3_coord_nominalTime,
++            dateOffset=org.apache.oozie.coord.CoordELFunctions#ph3_coord_dateOffset,
++            formatTime=org.apache.oozie.coord.CoordELFunctions#ph3_coord_formatTime,
++            user=org.apache.oozie.coord.CoordELFunctions#coord_user
++        </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-sla-submit</name>
++        <value>
++            instanceTime=org.apache.oozie.coord.CoordELFunctions#ph1_coord_nominalTime_echo_fixed,
++            user=org.apache.oozie.coord.CoordELFunctions#coord_user
++        </value>
++        <description>
++            EL functions declarations, separated by commas, format is [PREFIX:]NAME=CLASS#METHOD.
++        </description>
++    </property>
++
++    <property>
++        <name>oozie.service.ELService.ext.functions.coord-sla-create</name>
++        <value>
++            instanceTime=org.apache.oozie.coord.CoordELFunctions#ph2_coord_nominalTime,
++            user=org.apache.oozie.coord.CoordELFunctions#coord_user
++        </value>
++        <description>
++            EL functions declarations, separated by commas, format is [PREFIX:]NAME=CLASS#METHOD.
++        </description>
++    </property>
++
+     <!-- Proxyuser Configuration -->
+ 
+     <!--
+Index: core/pom.xml
+===================================================================
+--- core/pom.xml	(revision 1521237)
++++ core/pom.xml	(working copy)
+@@ -22,11 +22,11 @@
+     <parent>
+         <groupId>org.apache.oozie</groupId>
+         <artifactId>oozie-main</artifactId>
+-        <version>4.0.0</version>
++        <version>4.0.0-falcon</version>
+     </parent>
+     <groupId>org.apache.oozie</groupId>
+     <artifactId>oozie-core</artifactId>
+-    <version>4.0.0</version>
++    <version>4.0.0-falcon</version>
+     <description>Apache Oozie Core</description>
+     <name>Apache Oozie Core</name>
+     <packaging>jar</packaging>
+Index: sharelib/pig/pom.xml
+===================================================================
+--- sharelib/pig/pom.xml	(revision 1521237)
++++ sharelib/pig/pom.xml	(working copy)
+@@ -22,12 +22,12 @@
+     <parent>
+         <groupId>org.apache.oozie</groupId>
+         <artifactId>oozie-main</artifactId>
+-        <version>4.0.0</version>
++        <version>4.0.0-falcon</version>
+         <relativePath>../..</relativePath>
+     </parent>
+     <groupId>org.apache.oozie</groupId>
+     <artifactId>oozie-sharelib-pig</artifactId>
+-    <version>4.0.0</version>
++    <version>4.0.0-falcon</version>
+     <description>Apache Oozie Share Lib Pig</description>
+     <name>Apache Oozie Share Lib Pig</name>
+     <packaging>jar</packaging>
+Index: sharelib/sqoop/pom.xml
+===================================================================
+--- sharelib/sqoop/pom.xml	(revision 1521237)
++++ sharelib/sqoop/pom.xml	(working copy)
+@@ -22,12 +22,12 @@
+     <parent>
+         <groupId>org.apache.oozie</groupId>
+         <artifactId>oozie-main</artifactId>
+-        <version>4.0.0</version>
++        <version>4.0.0-falcon</version>
+         <relativePath>../..</relativePath>
+     </parent>
+     <groupId>org.apache.oozie</groupId>
+     <artifactId>oozie-sharelib-sqoop</artifactId>
+-    <version>4.0.0</version>
++    <version>4.0.0-falcon</version>
+     <description>Apache Oozie Share Lib Sqoop</description>
+     <name>Apache Oozie Share Lib Sqoop</name>
+     <packaging>jar</packaging>
+Index: sharelib/hcatalog/pom.xml
+===================================================================
+--- sharelib/hcatalog/pom.xml	(revision 1521237)
++++ sharelib/hcatalog/pom.xml	(working copy)
+@@ -22,12 +22,12 @@
+     <parent>
+         <groupId>org.apache.oozie</groupId>
+         <artifactId>oozie-main</artifactId>
+-        <version>4.0.0</version>
++        <version>4.0.0-falcon</version>
+         <relativePath>../..</relativePath>
+     </parent>
+     <groupId>org.apache.oozie</groupId>
+     <artifactId>oozie-sharelib-hcatalog</artifactId>
+-    <version>4.0.0</version>
++    <version>4.0.0-falcon</version>
+     <description>Apache Oozie Share Lib HCatalog</description>
+     <name>Apache Oozie Share Lib HCatalog</name>
+     <packaging>jar</packaging>
+Index: sharelib/oozie/pom.xml
+===================================================================
+--- sharelib/oozie/pom.xml	(revision 1521237)
++++ sharelib/oozie/pom.xml	(working copy)
+@@ -22,12 +22,12 @@
+     <parent>
+         <groupId>org.apache.oozie</groupId>
+         <artifactId>oozie-main</artifactId>
+-        <version>4.0.0</version>
++        <version>4.0.0-falcon</version>
+         <relativePath>../..</relativePath>
+     </parent>
+     <groupId>org.apache.oozie</groupId>
+     <artifactId>oozie-sharelib-oozie</artifactId>
+-    <version>4.0.0</version>
++    <version>4.0.0-falcon</version>
+     <description>Apache Oozie Share Lib Oozie</description>
+     <name>Apache Oozie Share Lib Oozie</name>
+     <packaging>jar</packaging>
+Index: sharelib/distcp/pom.xml
+===================================================================
+--- sharelib/distcp/pom.xml	(revision 1521237)
++++ sharelib/distcp/pom.xml	(working copy)
+@@ -22,12 +22,12 @@
+     <parent>
+         <groupId>org.apache.oozie</groupId>
+         <artifactId>oozie-main</artifactId>
+-        <version>4.0.0</version>
++        <version>4.0.0-falcon</version>
+         <relativePath>../..</relativePath>
+     </parent>
+     <groupId>org.apache.oozie</groupId>
+     <artifactId>oozie-sharelib-distcp</artifactId>
+-    <version>4.0.0</version>
++    <version>4.0.0-falcon</version>
+     <description>Apache Oozie Share Lib Distcp</description>
+     <name>Apache Oozie Share Lib Distcp</name>
+     <packaging>jar</packaging>
+Index: sharelib/streaming/pom.xml
+===================================================================
+--- sharelib/streaming/pom.xml	(revision 1521237)
++++ sharelib/streaming/pom.xml	(working copy)
+@@ -22,12 +22,12 @@
+     <parent>
+         <groupId>org.apache.oozie</groupId>
+         <artifactId>oozie-main</artifactId>
+-        <version>4.0.0</version>
++        <version>4.0.0-falcon</version>
+         <relativePath>../..</relativePath>
+     </parent>
+     <groupId>org.apache.oozie</groupId>
+     <artifactId>oozie-sharelib-streaming</artifactId>
+-    <version>4.0.0</version>
++    <version>4.0.0-falcon</version>
+     <description>Apache Oozie Share Lib Streaming</description>
+     <name>Apache Oozie Share Lib Streaming</name>
+     <packaging>jar</packaging>
+Index: sharelib/pom.xml
+===================================================================
+--- sharelib/pom.xml	(revision 1521237)
++++ sharelib/pom.xml	(working copy)
+@@ -22,11 +22,11 @@
+     <parent>
+         <groupId>org.apache.oozie</groupId>
+         <artifactId>oozie-main</artifactId>
+-        <version>4.0.0</version>
++        <version>4.0.0-falcon</version>
+     </parent>
+     <groupId>org.apache.oozie</groupId>
+     <artifactId>oozie-sharelib</artifactId>
+-    <version>4.0.0</version>
++    <version>4.0.0-falcon</version>
+     <description>Apache Oozie Share Lib</description>
+     <name>Apache Oozie Share Lib</name>
+     <packaging>pom</packaging>
+Index: sharelib/hive/pom.xml
+===================================================================
+--- sharelib/hive/pom.xml	(revision 1521237)
++++ sharelib/hive/pom.xml	(working copy)
+@@ -22,12 +22,12 @@
+     <parent>
+         <groupId>org.apache.oozie</groupId>
+         <artifactId>oozie-main</artifactId>
+-        <version>4.0.0</version>
++        <version>4.0.0-falcon</version>
+         <relativePath>../..</relativePath>
+     </parent>
+     <groupId>org.apache.oozie</groupId>
+     <artifactId>oozie-sharelib-hive</artifactId>
+-    <version>4.0.0</version>
++    <version>4.0.0-falcon</version>
+     <description>Apache Oozie Share Lib Hive</description>
+     <name>Apache Oozie Share Lib Hive</name>
+     <packaging>jar</packaging>
+Index: pom.xml
+===================================================================
+--- pom.xml	(revision 1521237)
++++ pom.xml	(working copy)
+@@ -21,7 +21,7 @@
+     <modelVersion>4.0.0</modelVersion>
+     <groupId>org.apache.oozie</groupId>
+     <artifactId>oozie-main</artifactId>
+-    <version>4.0.0</version>
++    <version>4.0.0-falcon</version>
+     <description>Apache Oozie Main</description>
+     <name>Apache Oozie Main</name>
+     <packaging>pom</packaging>
+Index: hbaselibs/hbase-0.94/pom.xml
+===================================================================
+--- hbaselibs/hbase-0.94/pom.xml	(revision 1521237)
++++ hbaselibs/hbase-0.94/pom.xml	(working copy)
+@@ -22,12 +22,12 @@
+     <parent>
+         <groupId>org.apache.oozie</groupId>
+         <artifactId>oozie-main</artifactId>
+-        <version>4.0.0</version>
++        <version>4.0.0-falcon</version>
+         <relativePath>../../pom.xml</relativePath>
+     </parent>
+     <groupId>org.apache.oozie</groupId>
+     <artifactId>oozie-hbase</artifactId>
+-    <version>0.94.2.oozie-4.0.0</version>
++    <version>0.94.2.oozie-4.0.0-falcon</version>
+     <description>Apache Oozie Hbase ${project.version}</description>
+     <name>Apache Oozie Hbase ${project.version}</name>
+     <packaging>jar</packaging>
+Index: hbaselibs/pom.xml
+===================================================================
+--- hbaselibs/pom.xml	(revision 1521237)
++++ hbaselibs/pom.xml	(working copy)
+@@ -22,11 +22,11 @@
+     <parent>
+         <groupId>org.apache.oozie</groupId>
+         <artifactId>oozie-main</artifactId>
+-        <version>4.0.0</version>
++        <version>4.0.0-falcon</version>
+     </parent>
+     <groupId>org.apache.oozie</groupId>
+     <artifactId>oozie-hbaselibs</artifactId>
+-    <version>4.0.0</version>
++    <version>4.0.0-falcon</version>
+     <description>Apache Oozie Hbase Libs</description>
+     <name>Apache Oozie Hbase Libs</name>
+     <packaging>pom</packaging>
+Index: hcataloglibs/hcatalog-0.5/pom.xml
+===================================================================
+--- hcataloglibs/hcatalog-0.5/pom.xml	(revision 1521237)
++++ hcataloglibs/hcatalog-0.5/pom.xml	(working copy)
+@@ -22,12 +22,12 @@
+     <parent>
+         <groupId>org.apache.oozie</groupId>
+         <artifactId>oozie-main</artifactId>
+-        <version>4.0.0</version>
++        <version>4.0.0-falcon</version>
+         <relativePath>../../pom.xml</relativePath>
+     </parent>
+     <groupId>org.apache.oozie</groupId>
+     <artifactId>oozie-hcatalog</artifactId>
+-    <version>0.5.0.oozie-4.0.0</version>
++    <version>0.5.0.oozie-4.0.0-falcon</version>
+     <description>Apache Oozie HCatalog ${project.version}</description>
+     <name>Apache Oozie HCatalog ${project.version}</name>
+     <packaging>jar</packaging>
+Index: hcataloglibs/hcatalog-0.6/pom.xml
+===================================================================
+--- hcataloglibs/hcatalog-0.6/pom.xml	(revision 1521237)
++++ hcataloglibs/hcatalog-0.6/pom.xml	(working copy)
+@@ -22,12 +22,12 @@
+     <parent>
+         <groupId>org.apache.oozie</groupId>
+         <artifactId>oozie-main</artifactId>
+-        <version>4.0.0</version>
++        <version>4.0.0-falcon</version>
+         <relativePath>../../pom.xml</relativePath>
+     </parent>
+     <groupId>org.apache.oozie</groupId>
+     <artifactId>oozie-hcatalog</artifactId>
+-    <version>0.6.0.oozie-4.0.0</version>
++    <version>0.6.0.oozie-4.0.0-falcon</version>
+     <description>Apache Oozie HCatalog ${project.version}</description>
+     <name>Apache Oozie HCatalog ${project.version}</name>
+     <packaging>jar</packaging>
+Index: hcataloglibs/pom.xml
+===================================================================
+--- hcataloglibs/pom.xml	(revision 1521237)
++++ hcataloglibs/pom.xml	(working copy)
+@@ -22,11 +22,11 @@
+     <parent>
+         <groupId>org.apache.oozie</groupId>
+         <artifactId>oozie-main</artifactId>
+-        <version>4.0.0</version>
++        <version>4.0.0-falcon</version>
+     </parent>
+     <groupId>org.apache.oozie</groupId>
+     <artifactId>oozie-hcataloglibs</artifactId>
+-    <version>4.0.0</version>
++    <version>4.0.0-falcon</version>
+     <description>Apache Oozie HCatalog Libs</description>
+     <name>Apache Oozie HCatalog Libs</name>
+     <packaging>pom</packaging>
+Index: minitest/pom.xml
+===================================================================
+--- minitest/pom.xml	(revision 1521237)
++++ minitest/pom.xml	(working copy)
+@@ -23,12 +23,12 @@
+     <parent>
+         <groupId>org.apache.oozie</groupId>
+         <artifactId>oozie-main</artifactId>
+-        <version>4.0.0</version>
++        <version>4.0.0-falcon</version>
+     </parent>
+ 
+     <groupId>org.apache.oozie.test</groupId>
+     <artifactId>oozie-mini</artifactId>
+-    <version>4.0.0</version>
++    <version>4.0.0-falcon</version>
+     <description>Apache Oozie MiniOozie</description>
+     <name>Apache Oozie MiniOozie</name>
+ 
+Index: tools/pom.xml
+===================================================================
+--- tools/pom.xml	(revision 1521237)
++++ tools/pom.xml	(working copy)
+@@ -22,11 +22,11 @@
+     <parent>
+         <groupId>org.apache.oozie</groupId>
+         <artifactId>oozie-main</artifactId>
+-        <version>4.0.0</version>
++        <version>4.0.0-falcon</version>
+     </parent>
+     <groupId>org.apache.oozie</groupId>
+     <artifactId>oozie-tools</artifactId>
+-    <version>4.0.0</version>
++    <version>4.0.0-falcon</version>
+     <description>Apache Oozie Tools</description>
+     <name>Apache Oozie Tools</name>
+     <packaging>jar</packaging>
+Index: distro/pom.xml
+===================================================================
+--- distro/pom.xml	(revision 1521237)
++++ distro/pom.xml	(working copy)
+@@ -22,11 +22,11 @@
+     <parent>
+         <groupId>org.apache.oozie</groupId>
+         <artifactId>oozie-main</artifactId>
+-        <version>4.0.0</version>
++        <version>4.0.0-falcon</version>
+     </parent>
+     <groupId>org.apache.oozie</groupId>
+     <artifactId>oozie-distro</artifactId>
+-    <version>4.0.0</version>
++    <version>4.0.0-falcon</version>
+     <description>Apache Oozie Distro</description>
+     <name>Apache Oozie Distro</name>
+     <packaging>jar</packaging>
+Index: login/pom.xml
+===================================================================
+--- login/pom.xml	(revision 1521237)
++++ login/pom.xml	(working copy)
+@@ -22,11 +22,11 @@
+     <parent>
+         <groupId>org.apache.oozie</groupId>
+         <artifactId>oozie-main</artifactId>
+-        <version>4.0.0</version>
++        <version>4.0.0-falcon</version>
+     </parent>
+     <groupId>org.apache.oozie</groupId>
+     <artifactId>oozie-login</artifactId>
+-    <version>4.0.0</version>
++    <version>4.0.0-falcon</version>
+     <description>Apache Oozie Login</description>
+     <name>Apache Oozie Login</name>
+     <packaging>war</packaging>
+Index: examples/pom.xml
+===================================================================
+--- examples/pom.xml	(revision 1521237)
++++ examples/pom.xml	(working copy)
+@@ -22,11 +22,11 @@
+     <parent>
+         <groupId>org.apache.oozie</groupId>
+         <artifactId>oozie-main</artifactId>
+-        <version>4.0.0</version>
++        <version>4.0.0-falcon</version>
+     </parent>
+     <groupId>org.apache.oozie</groupId>
+     <artifactId>oozie-examples</artifactId>
+-    <version>4.0.0</version>
++    <version>4.0.0-falcon</version>
+     <description>Apache Oozie Examples</description>
+     <name>Apache Oozie Examples</name>
+     <packaging>jar</packaging>
+Index: client/pom.xml
+===================================================================
+--- client/pom.xml	(revision 1521237)
++++ client/pom.xml	(working copy)
+@@ -22,11 +22,11 @@
+     <parent>
+         <groupId>org.apache.oozie</groupId>
+         <artifactId>oozie-main</artifactId>
+-        <version>4.0.0</version>
++        <version>4.0.0-falcon</version>
+     </parent>
+     <groupId>org.apache.oozie</groupId>
+     <artifactId>oozie-client</artifactId>
+-    <version>4.0.0</version>
++    <version>4.0.0-falcon</version>
+     <description>Apache Oozie Client</description>
+     <name>Apache Oozie Client</name>
+     <packaging>jar</packaging>
+Index: webapp/src/main/webapp/WEB-INF/web.xml
+===================================================================
+--- webapp/src/main/webapp/WEB-INF/web.xml	(revision 1521237)
++++ webapp/src/main/webapp/WEB-INF/web.xml	(working copy)
+@@ -16,13 +16,219 @@
+   See the License for the specific language governing permissions and
+   limitations under the License.
+ -->
+-<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd" [
+-    <!ENTITY web-common SYSTEM "web-common.xml">
+-]>
++<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">
+ 
+ <web-app>
++    <display-name>OOZIE</display-name>
+ 
+-    <!-- The servlets are defined in web-common.xml -->
+-    &web-common;
++    <!-- Listeners -->
++    <listener>
++        <listener-class>org.apache.oozie.servlet.ServicesLoader</listener-class>
++    </listener>
+ 
+-</web-app>
++    <!-- Servlets -->
++    <servlet>
++        <servlet-name>versions</servlet-name>
++        <display-name>WS API for Workflow Instances</display-name>
++        <servlet-class>org.apache.oozie.servlet.VersionServlet</servlet-class>
++        <load-on-startup>1</load-on-startup>
++    </servlet>
++
++    <servlet>
++        <servlet-name>v0admin</servlet-name>
++        <display-name>Oozie admin</display-name>
++        <servlet-class>org.apache.oozie.servlet.V0AdminServlet</servlet-class>
++        <load-on-startup>1</load-on-startup>
++    </servlet>
++
++    <servlet>
++        <servlet-name>v1admin</servlet-name>
++        <display-name>Oozie admin</display-name>
++        <servlet-class>org.apache.oozie.servlet.V1AdminServlet</servlet-class>
++        <load-on-startup>1</load-on-startup>
++    </servlet>
++
++    <servlet>
++        <servlet-name>v2admin</servlet-name>
++        <display-name>Oozie admin</display-name>
++        <servlet-class>org.apache.oozie.servlet.V2AdminServlet</servlet-class>
++        <load-on-startup>1</load-on-startup>
++    </servlet>
++
++    <servlet>
++        <servlet-name>callback</servlet-name>
++        <display-name>Callback Notification</display-name>
++        <servlet-class>org.apache.oozie.servlet.CallbackServlet</servlet-class>
++        <load-on-startup>1</load-on-startup>
++    </servlet>
++
++    <servlet>
++        <servlet-name>v0jobs</servlet-name>
++        <display-name>WS API for Workflow Jobs</display-name>
++        <servlet-class>org.apache.oozie.servlet.V0JobsServlet</servlet-class>
++        <load-on-startup>1</load-on-startup>
++    </servlet>
++
++    <servlet>
++        <servlet-name>v1jobs</servlet-name>
++        <display-name>WS API for Workflow Jobs</display-name>
++        <servlet-class>org.apache.oozie.servlet.V1JobsServlet</servlet-class>
++        <load-on-startup>1</load-on-startup>
++    </servlet>
++
++    <servlet>
++        <servlet-name>v0job</servlet-name>
++        <display-name>WS API for a specific Workflow Job</display-name>
++        <servlet-class>org.apache.oozie.servlet.V0JobServlet</servlet-class>
++        <load-on-startup>1</load-on-startup>
++    </servlet>
++
++    <servlet>
++        <servlet-name>v1job</servlet-name>
++        <display-name>WS API for a specific Workflow Job</display-name>
++        <servlet-class>org.apache.oozie.servlet.V1JobServlet</servlet-class>
++        <load-on-startup>1</load-on-startup>
++    </servlet>
++
++    <servlet>
++        <servlet-name>v2job</servlet-name>
++        <display-name>WS API for a specific Workflow Job</display-name>
++        <servlet-class>org.apache.oozie.servlet.V2JobServlet</servlet-class>
++        <load-on-startup>1</load-on-startup>
++    </servlet>
++
++    <servlet>
++        <servlet-name>sla-event</servlet-name>
++        <display-name>WS API for specific SLA Events</display-name>
++        <servlet-class>org.apache.oozie.servlet.SLAServlet</servlet-class>
++        <load-on-startup>1</load-on-startup>
++    </servlet>
++
++    <servlet>
++        <servlet-name>v2sla</servlet-name>
++        <display-name>WS API for specific SLA Events</display-name>
++        <servlet-class>org.apache.oozie.servlet.V2SLAServlet</servlet-class>
++        <load-on-startup>1</load-on-startup>
++    </servlet>
++
++    <!-- servlet-mapping -->
++    <servlet-mapping>
++        <servlet-name>versions</servlet-name>
++        <url-pattern>/versions</url-pattern>
++    </servlet-mapping>
++
++    <servlet-mapping>
++        <servlet-name>v0admin</servlet-name>
++        <url-pattern>/v0/admin/*</url-pattern>
++    </servlet-mapping>
++
++    <servlet-mapping>
++        <servlet-name>v1admin</servlet-name>
++        <url-pattern>/v1/admin/*</url-pattern>
++    </servlet-mapping>
++
++    <servlet-mapping>
++        <servlet-name>v2admin</servlet-name>
++        <url-pattern>/v2/admin/*</url-pattern>
++    </servlet-mapping>
++
++    <servlet-mapping>
++        <servlet-name>callback</servlet-name>
++        <url-pattern>/callback/*</url-pattern>
++    </servlet-mapping>
++
++    <servlet-mapping>
++        <servlet-name>v0jobs</servlet-name>
++        <url-pattern>/v0/jobs</url-pattern>
++    </servlet-mapping>
++
++    <servlet-mapping>
++        <servlet-name>v1jobs</servlet-name>
++        <url-pattern>/v1/jobs</url-pattern>
++    </servlet-mapping>
++
++    <servlet-mapping>
++        <servlet-name>v1jobs</servlet-name>
++        <url-pattern>/v2/jobs</url-pattern>
++    </servlet-mapping>
++
++    <servlet-mapping>
++        <servlet-name>v0job</servlet-name>
++        <url-pattern>/v0/job/*</url-pattern>
++    </servlet-mapping>
++
++    <servlet-mapping>
++        <servlet-name>v1job</servlet-name>
++        <url-pattern>/v1/job/*</url-pattern>
++    </servlet-mapping>
++
++    <servlet-mapping>
++        <servlet-name>v2job</servlet-name>
++        <url-pattern>/v2/job/*</url-pattern>
++    </servlet-mapping>
++
++    <servlet-mapping>
++        <servlet-name>sla-event</servlet-name>
++        <url-pattern>/v1/sla/*</url-pattern>
++    </servlet-mapping>
++
++    <servlet-mapping>
++        <servlet-name>v2sla</servlet-name>
++        <url-pattern>/v2/sla/*</url-pattern>
++    </servlet-mapping>
++
++    <!-- welcome-file -->
++    <welcome-file-list>
++        <welcome-file>index.html</welcome-file>
++    </welcome-file-list>
++
++    <filter>
++        <filter-name>hostnameFilter</filter-name>
++        <filter-class>org.apache.oozie.servlet.HostnameFilter</filter-class>
++    </filter>
++
++    <filter>
++        <filter-name>authenticationfilter</filter-name>
++        <filter-class>org.apache.oozie.servlet.AuthFilter</filter-class>
++    </filter>
++
++    <filter-mapping>
++        <filter-name>hostnameFilter</filter-name>
++        <url-pattern>*</url-pattern>
++    </filter-mapping>
++
++    <filter-mapping>
++        <filter-name>authenticationfilter</filter-name>
++        <url-pattern>/versions/*</url-pattern>
++    </filter-mapping>
++
++    <filter-mapping>
++        <filter-name>authenticationfilter</filter-name>
++        <url-pattern>/v0/*</url-pattern>
++    </filter-mapping>
++
++    <filter-mapping>
++        <filter-name>authenticationfilter</filter-name>
++        <url-pattern>/v1/*</url-pattern>
++    </filter-mapping>
++
++    <filter-mapping>
++        <filter-name>authenticationfilter</filter-name>
++        <url-pattern>/index.html</url-pattern>
++    </filter-mapping>
++
++    <filter-mapping>
++        <filter-name>authenticationfilter</filter-name>
++        <url-pattern>*.js</url-pattern>
++    </filter-mapping>
++
++    <filter-mapping>
++        <filter-name>authenticationfilter</filter-name>
++        <url-pattern>/ext-2.2/*</url-pattern>
++    </filter-mapping>
++
++    <filter-mapping>
++        <filter-name>authenticationfilter</filter-name>
++        <url-pattern>/docs/*</url-pattern>
++    </filter-mapping>
++</web-app>
+\ No newline at end of file
+Index: webapp/pom.xml
+===================================================================
+--- webapp/pom.xml	(revision 1521237)
++++ webapp/pom.xml	(working copy)
+@@ -22,11 +22,11 @@
+     <parent>
+         <groupId>org.apache.oozie</groupId>
+         <artifactId>oozie-main</artifactId>
+-        <version>4.0.0</version>
++        <version>4.0.0-falcon</version>
+     </parent>
+     <groupId>org.apache.oozie</groupId>
+     <artifactId>oozie-webapp</artifactId>
+-    <version>4.0.0</version>
++    <version>4.0.0-falcon</version>
+     <description>Apache Oozie WebApp</description>
+     <name>Apache Oozie WebApp</name>
+     <packaging>war</packaging>

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/17f901a6/build-tools/src/patch/oozie-bundle-el-extension.patch
----------------------------------------------------------------------
diff --git a/build-tools/src/patch/oozie-bundle-el-extension.patch b/build-tools/src/patch/oozie-bundle-el-extension.patch
new file mode 100644
index 0000000..61abce8
--- /dev/null
+++ b/build-tools/src/patch/oozie-bundle-el-extension.patch
@@ -0,0 +1,18 @@
+diff --git webapp/pom.xml webapp/pom.xml
+index 38ec438..c3bc9b8 100644
+--- webapp/pom.xml
++++ webapp/pom.xml
+@@ -33,6 +33,13 @@
+
+     <dependencies>
+         <dependency>
++            <groupId>org.apache.falcon</groupId>
++            <artifactId>falcon-oozie-el-extension</artifactId>
++            <version>0.4-SNAPSHOT</version>
++            <scope>compile</scope>
++        </dependency>
++
++        <dependency>
+             <groupId>org.apache.oozie</groupId>
+             <artifactId>oozie-core</artifactId>
+             <scope>compile</scope>

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/17f901a6/client/src/main/java/org/apache/falcon/client/FalconClient.java
----------------------------------------------------------------------
diff --git a/client/src/main/java/org/apache/falcon/client/FalconClient.java b/client/src/main/java/org/apache/falcon/client/FalconClient.java
index 00ab278..9839745 100644
--- a/client/src/main/java/org/apache/falcon/client/FalconClient.java
+++ b/client/src/main/java/org/apache/falcon/client/FalconClient.java
@@ -306,7 +306,7 @@ public class FalconClient {
                 getServletInputStream(clusters, sourceClusters, null), null, colo);
     }
 
-    //SUSPEND CHECKSTYLE CHECK VisibilityModifierCheck
+    //SUSPEND CHECKSTYLE CHECK ParameterNumberCheck
     public String rerunInstances(String type, String entity, String start,
                                  String end, String filePath, String colo,
                                  String clusters, String sourceClusters)
@@ -330,7 +330,7 @@ public class FalconClient {
         return sendInstanceRequest(Instances.RERUN, type, entity, start, end,
                 getServletInputStream(clusters, sourceClusters, temp), null, colo);
     }
-    //RESUME CHECKSTYLE CHECK VisibilityModifierCheck
+    //RESUME CHECKSTYLE CHECK ParameterNumberCheck
 
     public String rerunInstances(String type, String entity, String start,
                                  String end, String colo, String clusters, String sourceClusters)

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/17f901a6/client/src/main/java/org/apache/falcon/entity/v0/Frequency.java
----------------------------------------------------------------------
diff --git a/client/src/main/java/org/apache/falcon/entity/v0/Frequency.java b/client/src/main/java/org/apache/falcon/entity/v0/Frequency.java
index f4c1800..a9e4b90 100644
--- a/client/src/main/java/org/apache/falcon/entity/v0/Frequency.java
+++ b/client/src/main/java/org/apache/falcon/entity/v0/Frequency.java
@@ -46,9 +46,9 @@ public class Frequency {
     }
 
     private TimeUnit timeUnit;
-    private int frequency;
+    private String frequency;
 
-    public Frequency(int freq, TimeUnit timeUnit) {
+    public Frequency(String freq, TimeUnit timeUnit) {
         this.frequency = freq;
         this.timeUnit = timeUnit;
     }
@@ -60,7 +60,7 @@ public class Frequency {
         }
 
         timeUnit = TimeUnit.valueOf(matcher.group(1));
-        frequency = Integer.valueOf(matcher.group(2));
+        frequency = matcher.group(2);
     }
 
     public static Frequency fromString(String strValue) {
@@ -80,10 +80,14 @@ public class Frequency {
         return timeUnit;
     }
 
-    public int getFrequency() {
+    public String getFrequency() {
         return frequency;
     }
 
+    public int getFrequencyAsInt() {
+        return Integer.valueOf(frequency);
+    }
+
     @Override
     public boolean equals(Object obj) {
         if (obj == null) {
@@ -95,7 +99,7 @@ public class Frequency {
         }
 
         Frequency freq = (Frequency) obj;
-        return this == freq || this.getFrequency() == freq.getFrequency()
+        return this == freq || this.getFrequency().equals(freq.getFrequency())
                 && this.getTimeUnit() == freq.getTimeUnit();
 
     }
@@ -103,7 +107,7 @@ public class Frequency {
     @Override
     public int hashCode() {
         int result = timeUnit.hashCode();
-        result = 31 * result + frequency;
+        result = 31 * result + frequency.hashCode();
         return result;
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/17f901a6/client/src/main/resources/feed-0.1.xsd
----------------------------------------------------------------------
diff --git a/client/src/main/resources/feed-0.1.xsd b/client/src/main/resources/feed-0.1.xsd
index bf6fa81..00b5172 100644
--- a/client/src/main/resources/feed-0.1.xsd
+++ b/client/src/main/resources/feed-0.1.xsd
@@ -105,7 +105,10 @@
             </xs:element>
             <xs:element type="late-arrival" name="late-arrival" minOccurs="0"/>
             <xs:element type="clusters" name="clusters"/>
-            <xs:element type="locations" name="locations"/>
+            <xs:choice minOccurs="1" maxOccurs="1">
+                <xs:element type="locations" name="locations"/>
+                <xs:element type="catalog-table" name="table"/>
+            </xs:choice>
             <xs:element type="ACL" name="ACL"/>
             <xs:element type="schema" name="schema"/>
             <xs:element type="properties" name="properties" minOccurs="0"/>
@@ -139,7 +142,10 @@
         <xs:sequence>
             <xs:element type="validity" name="validity"/>
             <xs:element type="retention" name="retention"/>
-            <xs:element type="locations" name="locations" minOccurs="0"/>
+            <xs:choice minOccurs="0" maxOccurs="1">
+                <xs:element type="locations" name="locations" minOccurs="0"/>
+                <xs:element type="catalog-table" name="table"/>
+            </xs:choice>
         </xs:sequence>
         <xs:attribute type="IDENTIFIER" name="name" use="required"/>
         <xs:attribute type="cluster-type" name="type" use="optional"/>
@@ -194,7 +200,7 @@
     <xs:complexType name="locations">
         <xs:annotation>
             <xs:documentation>
-                A list of locations.
+                A list of locations on the file system.
             </xs:documentation>
         </xs:annotation>
         <xs:choice maxOccurs="unbounded" minOccurs="0">
@@ -356,4 +362,14 @@
             <xs:pattern value="(\w+=[^,]+)?([,]?[ ]*[\w]+=[^,]+)*"/>
         </xs:restriction>
     </xs:simpleType>
+    <xs:complexType name="catalog-table">
+        <xs:annotation>
+            <xs:documentation>
+                catalog specifies the uri of a Hive table along with the partition spec.
+                uri="catalog:$database:$table#(partition-key=partition-value);+"
+                Example: catalog:logs-db:clicks#ds=${YEAR}-${MONTH}-${DAY}
+            </xs:documentation>
+        </xs:annotation>
+        <xs:attribute type="xs:string" name="uri" use="required"/>
+    </xs:complexType>
 </xs:schema>

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/17f901a6/client/src/main/resources/process-0.1.xsd
----------------------------------------------------------------------
diff --git a/client/src/main/resources/process-0.1.xsd b/client/src/main/resources/process-0.1.xsd
index c96700c..ed01b0e 100644
--- a/client/src/main/resources/process-0.1.xsd
+++ b/client/src/main/resources/process-0.1.xsd
@@ -292,6 +292,7 @@
         <xs:restriction base="xs:string">
             <xs:enumeration value="oozie"/>
             <xs:enumeration value="pig"/>
+            <xs:enumeration value="hive"/>
         </xs:restriction>
     </xs:simpleType>
 

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/17f901a6/client/src/test/java/org/apache/falcon/entity/v0/TestFrequency.java
----------------------------------------------------------------------
diff --git a/client/src/test/java/org/apache/falcon/entity/v0/TestFrequency.java b/client/src/test/java/org/apache/falcon/entity/v0/TestFrequency.java
index e5eb3f1..56e442f 100644
--- a/client/src/test/java/org/apache/falcon/entity/v0/TestFrequency.java
+++ b/client/src/test/java/org/apache/falcon/entity/v0/TestFrequency.java
@@ -31,6 +31,7 @@ public class TestFrequency {
         String freqStr = "minutes(10)";
         Frequency freq = Frequency.fromString(freqStr);
         Assert.assertEquals(freq.getTimeUnit().name(), "minutes");
-        Assert.assertEquals(freq.getFrequency(), 10);
+        Assert.assertEquals(freq.getFrequency(), "10");
+        Assert.assertEquals(freq.getFrequencyAsInt(), 10);
     }
 }

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/17f901a6/common/pom.xml
----------------------------------------------------------------------
diff --git a/common/pom.xml b/common/pom.xml
index 0e192fc..4a8d446 100644
--- a/common/pom.xml
+++ b/common/pom.xml
@@ -153,6 +153,16 @@
             <groupId>javax.jms</groupId>
             <artifactId>jms</artifactId>
         </dependency>
+
+        <dependency>
+            <groupId>org.apache.hive</groupId>
+            <artifactId>hive-common</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>org.apache.hcatalog</groupId>
+            <artifactId>webhcat-java-client</artifactId>
+        </dependency>
     </dependencies>
 
     <build>

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/17f901a6/common/src/main/java/org/apache/falcon/catalog/AbstractCatalogService.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/falcon/catalog/AbstractCatalogService.java b/common/src/main/java/org/apache/falcon/catalog/AbstractCatalogService.java
new file mode 100644
index 0000000..691d805
--- /dev/null
+++ b/common/src/main/java/org/apache/falcon/catalog/AbstractCatalogService.java
@@ -0,0 +1,107 @@
+/**
+ * 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.falcon.catalog;
+
+import org.apache.falcon.FalconException;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Interface definition for a catalog registry service
+ * such as Hive or HCatalog.
+ */
+public abstract class AbstractCatalogService {
+
+    /**
+     * This method checks if the catalog service is alive.
+     *
+     * @param catalogBaseUrl url for the catalog service
+     * @return if the service was reachable
+     * @throws FalconException exception
+     */
+    public abstract boolean isAlive(String catalogBaseUrl) throws FalconException;
+
+    /**
+     * This method checks if the given table exists in the catalog.
+     *
+     * @param catalogUrl url for the catalog service
+     * @param database database the table belongs to
+     * @param tableName tableName to check if it exists
+     * @return if the table exists
+     * @throws FalconException exception
+     */
+    public abstract boolean tableExists(String catalogUrl, String database, String tableName)
+        throws FalconException;
+
+    /**
+     * Returns if the table is external or not.
+     *
+     * @param catalogUrl url for the catalog service
+     * @param database database the table belongs to
+     * @param tableName tableName to check if it exists
+     * @return true if external else false
+     * @throws FalconException
+     */
+    public abstract boolean isTableExternal(String catalogUrl, String database,
+                                            String tableName) throws FalconException;
+
+    /**
+     * List partitions by filter.
+     *
+     * @param catalogUrl url for the catalog service
+     * @param database database the table belongs to
+     * @param tableName tableName to check if it exists
+     * @param filter The filter string,
+     *    for example "part1 = \"p1_abc\" and part2 <= "\p2_test\"". Filtering can
+     *    be done only on string partition keys.
+     * @return list of partitions
+     * @throws FalconException
+     */
+    public abstract List<CatalogPartition> listPartitionsByFilter(String catalogUrl, String database,
+                                                                  String tableName, String filter)
+        throws FalconException;
+
+    /**
+     * Drops a given partition.
+     *
+     * @param catalogUrl url for the catalog service
+     * @param database database the table belongs to
+     * @param tableName tableName to check if it exists
+     * @param partitions list of partitions as Key=Value pairs
+     * @return if the partition was dropped
+     * @throws FalconException
+     */
+    public abstract boolean dropPartitions(String catalogUrl, String database, String tableName,
+                                           Map<String, String> partitions) throws FalconException;
+
+    /**
+     * Gets the partition.
+     *
+     * @param catalogUrl url for the catalog service
+     * @param database database the table belongs to
+     * @param tableName tableName to check if it exists
+     * @param partitionSpec The partition specification, {[col_name,value],[col_name2,value2]}.
+     *                      All partition-key-values must be specified.
+     * @return An instance of CatalogPartition.
+     * @throws FalconException
+     */
+    public abstract CatalogPartition getPartition(String catalogUrl, String database, String tableName,
+                                                  Map<String, String> partitionSpec) throws FalconException;
+}

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/17f901a6/common/src/main/java/org/apache/falcon/catalog/CatalogPartition.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/falcon/catalog/CatalogPartition.java b/common/src/main/java/org/apache/falcon/catalog/CatalogPartition.java
new file mode 100644
index 0000000..c5d4705
--- /dev/null
+++ b/common/src/main/java/org/apache/falcon/catalog/CatalogPartition.java
@@ -0,0 +1,182 @@
+/**
+ * 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.falcon.catalog;
+
+import java.util.List;
+
+/**
+ * The CatalogPartition is a wrapper around org.apache.hcatalog.api.HCatPartition.
+ */
+public class CatalogPartition {
+
+    private String databaseName;
+    private String tableName;
+    private List<String> values;
+    private long createTime;
+    private long lastAccessTime;
+    private List<String> tableColumns;
+    private String inputFormat;
+    private String outputFormat;
+    private String location;
+    private String serdeInfo;
+
+    protected CatalogPartition() {
+    }
+
+    protected void setDatabaseName(String databaseName) {
+        this.databaseName = databaseName;
+    }
+
+    protected void setTableName(String tableName) {
+        this.tableName = tableName;
+    }
+
+    protected void setValues(List<String> values) {
+        this.values = values;
+    }
+
+    protected void setCreateTime(long createTime) {
+        this.createTime = createTime;
+    }
+
+    protected void setLastAccessTime(long lastAccessTime) {
+        this.lastAccessTime = lastAccessTime;
+    }
+
+    protected void setTableColumns(List<String> tableColumns) {
+        this.tableColumns = tableColumns;
+    }
+
+    protected void setInputFormat(String inputFormat) {
+        this.inputFormat = inputFormat;
+    }
+
+    protected void setOutputFormat(String outputFormat) {
+        this.outputFormat = outputFormat;
+    }
+
+    protected void setLocation(String location) {
+        this.location = location;
+    }
+
+    protected void setSerdeInfo(String serdeInfo) {
+        this.serdeInfo = serdeInfo;
+    }
+
+    /**
+     * Gets the database name.
+     *
+     * @return the database name
+     */
+    public String getDatabaseName() {
+        return this.databaseName;
+    }
+
+    /**
+     * Gets the table name.
+     *
+     * @return the table name
+     */
+    public String getTableName() {
+        return this.tableName;
+    }
+
+    /**
+     * Gets the columns of the table.
+     *
+     * @return the columns
+     */
+    public List<String> getColumns() {
+        return this.tableColumns;
+    }
+
+    /**
+     * Gets the input format.
+     *
+     * @return the input format
+     */
+    public String getInputFormat() {
+        return this.inputFormat;
+    }
+
+    /**
+     * Gets the output format.
+     *
+     * @return the output format
+     */
+    public String getOutputFormat() {
+        return this.outputFormat;
+    }
+
+    /**
+     * Gets the location.
+     *
+     * @return the location
+     */
+    public String getLocation() {
+        return this.location;
+    }
+
+    /**
+     * Gets the serde.
+     *
+     * @return the serde
+     */
+    public String getSerDe() {
+        return this.serdeInfo;
+    }
+
+    /**
+     * Gets the last access time.
+     *
+     * @return the last access time
+     */
+    public long getLastAccessTime() {
+        return this.lastAccessTime;
+    }
+
+    /**
+     * Gets the creates the time.
+     *
+     * @return the creates the time
+     */
+    public long getCreateTime() {
+        return this.createTime;
+    }
+
+    /**
+     * Gets the values.
+     *
+     * @return the values
+     */
+    public List<String> getValues() {
+        return this.values;
+    }
+
+    @Override
+    public String toString() {
+        return "CatalogPartition ["
+            + (tableName != null ? "tableName=" + tableName + ", " : "tableName=null")
+            + (databaseName != null ? "dbName=" + databaseName + ", " : "dbName=null")
+            + (values != null ? "values=" + values + ", " : "values=null")
+            + "createTime=" + createTime + ", lastAccessTime="
+            + lastAccessTime + ", " + "]";
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-falcon/blob/17f901a6/common/src/main/java/org/apache/falcon/catalog/CatalogServiceFactory.java
----------------------------------------------------------------------
diff --git a/common/src/main/java/org/apache/falcon/catalog/CatalogServiceFactory.java b/common/src/main/java/org/apache/falcon/catalog/CatalogServiceFactory.java
new file mode 100644
index 0000000..c8a0fa0
--- /dev/null
+++ b/common/src/main/java/org/apache/falcon/catalog/CatalogServiceFactory.java
@@ -0,0 +1,49 @@
+/**
+ * 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.falcon.catalog;
+
+import org.apache.falcon.FalconException;
+import org.apache.falcon.util.ReflectionUtils;
+import org.apache.falcon.util.StartupProperties;
+
+/**
+ * Factory for providing appropriate catalog service
+ * implementation to the falcon service.
+ */
+@SuppressWarnings("unchecked")
+public final class CatalogServiceFactory {
+
+    public static final String CATALOG_SERVICE = "catalog.service.impl";
+
+    private CatalogServiceFactory() {
+    }
+
+    public static boolean isEnabled() {
+        return StartupProperties.get().containsKey(CATALOG_SERVICE);
+    }
+
+    public static AbstractCatalogService getCatalogService() throws FalconException {
+        if (!isEnabled()) {
+            throw new FalconException(
+                "Catalog integration is not enabled in falcon. Implementation is missing: " + CATALOG_SERVICE);
+        }
+
+        return ReflectionUtils.getInstance(CATALOG_SERVICE);
+    }
+}


Mime
View raw message