OOZIE-1843 Bulk update for coord last modified time for 
CoordMaterializeTriggerService


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

Branch: refs/remotes/trunk
Commit: bdd4ef5c1855436b94717a871a88b6cabe389a22
Parents: 1507cc2
Author: Purshotam Shah <[email protected]>
Authored: Thu Sep 4 12:09:08 2014 -0700
Committer: Purshotam Shah <[email protected]>
Committed: Thu Sep 4 12:09:08 2014 -0700

----------------------------------------------------------------------
 .../service/CoordMaterializeTriggerService.java | 21 +++++++++++++-------
 release-log.txt                                 |  1 +
 2 files changed, 15 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/oozie/blob/bdd4ef5c/core/src/main/java/org/apache/oozie/service/CoordMaterializeTriggerService.java
----------------------------------------------------------------------
diff --git 
a/core/src/main/java/org/apache/oozie/service/CoordMaterializeTriggerService.java
 
b/core/src/main/java/org/apache/oozie/service/CoordMaterializeTriggerService.java
index 7a688b1..ee1085a 100644
--- 
a/core/src/main/java/org/apache/oozie/service/CoordMaterializeTriggerService.java
+++ 
b/core/src/main/java/org/apache/oozie/service/CoordMaterializeTriggerService.java
@@ -25,8 +25,11 @@ import java.util.List;
 import org.apache.hadoop.conf.Configuration;
 import org.apache.oozie.CoordinatorJobBean;
 import org.apache.oozie.command.coord.CoordMaterializeTransitionXCommand;
+import org.apache.oozie.executor.jpa.BatchQueryExecutor;
 import org.apache.oozie.executor.jpa.CoordJobQueryExecutor;
 import org.apache.oozie.executor.jpa.JPAExecutorException;
+import org.apache.oozie.executor.jpa.BatchQueryExecutor.UpdateEntry;
+import org.apache.oozie.executor.jpa.BundleJobQueryExecutor.BundleJobQuery;
 import org.apache.oozie.executor.jpa.CoordJobQueryExecutor.CoordJobQuery;
 import org.apache.oozie.lock.LockToken;
 import org.apache.oozie.util.XCallable;
@@ -136,8 +139,10 @@ public class CoordMaterializeTriggerService implements 
Service {
 
         /**
          * Recover coordinator jobs that should be materialized
+         * @throws JPAExecutorException
          */
-        private void runCoordJobMatLookup() {
+        private void runCoordJobMatLookup() throws JPAExecutorException {
+            List<UpdateEntry> updateList = new ArrayList<UpdateEntry>();
             XLog.Info.get().clear();
             XLog LOG = XLog.getLog(getClass());
             try {
@@ -146,15 +151,19 @@ public class CoordMaterializeTriggerService implements 
Service {
                 // get list of all jobs that have actions that should be 
materialized.
                 int materializationLimit = Services.get().getConf()
                         .getInt(CONF_MATERIALIZATION_SYSTEM_LIMIT, 
CONF_MATERIALIZATION_SYSTEM_LIMIT_DEFAULT);
-                materializeCoordJobs(currDate, materializationLimit, LOG);
+                materializeCoordJobs(currDate, materializationLimit, LOG, 
updateList);
             }
 
             catch (Exception ex) {
                 LOG.error("Exception while attempting to materialize 
coordinator jobs, {0}", ex.getMessage(), ex);
             }
+            finally {
+                
BatchQueryExecutor.getInstance().executeBatchInsertUpdateDelete(null, 
updateList, null);
+            }
         }
 
-        private void materializeCoordJobs(Date currDate, int limit, XLog LOG) 
throws JPAExecutorException {
+        private void materializeCoordJobs(Date currDate, int limit, XLog LOG, 
List<UpdateEntry> updateList)
+                throws JPAExecutorException {
             try {
                 List<CoordinatorJobBean> materializeJobs = 
CoordJobQueryExecutor.getInstance().getList(
                         CoordJobQuery.GET_COORD_JOBS_OLDER_FOR_MATERILZATION, 
currDate, limit);
@@ -165,10 +174,8 @@ public class CoordMaterializeTriggerService implements 
Service {
                             .incr(INSTRUMENTATION_GROUP, 
INSTR_MAT_JOBS_COUNTER, 1);
                     queueCallable(new 
CoordMaterializeTransitionXCommand(coordJob.getId(), materializationWindow));
                     coordJob.setLastModifiedTime(new Date());
-                    // TODO In place of calling single query, we should call 
bulk update.
-                    CoordJobQueryExecutor.getInstance().executeUpdate(
-                            
CoordJobQueryExecutor.CoordJobQuery.UPDATE_COORD_JOB_LAST_MODIFIED_TIME, 
coordJob);
-
+                    updateList.add(new 
UpdateEntry<CoordJobQuery>(CoordJobQuery.UPDATE_COORD_JOB_LAST_MODIFIED_TIME,
+                            coordJob));
                 }
             }
             catch (JPAExecutorException jex) {

http://git-wip-us.apache.org/repos/asf/oozie/blob/bdd4ef5c/release-log.txt
----------------------------------------------------------------------
diff --git a/release-log.txt b/release-log.txt
index aeae768..922e4b3 100644
--- a/release-log.txt
+++ b/release-log.txt
@@ -1,5 +1,6 @@
 -- Oozie 4.2.0 release (trunk - unreleased)
 
+OOZIE-1843 Bulk update for coord last modified time for 
CoordMaterializeTriggerService (puru)
 OOZIE-1941 Bundle coordinator name can't be parameterized (puru)
 OOZIE-1966 Fix Headers in java code (shwethags via rkanter)
 OOZIE-1428 The delay time for requeue should be configurable (sree2k via 
rkanter)

Reply via email to