You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@syncope.apache.org by gi...@apache.org on 2015/06/22 13:04:20 UTC

syncope git commit: [SYNCOPE-660]Merge from 1_2_X

Repository: syncope
Updated Branches:
  refs/heads/master 016b441a1 -> 0e908289a


[SYNCOPE-660]Merge from 1_2_X


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

Branch: refs/heads/master
Commit: 0e908289a61dc61387f4d4cd5ba0dd0a76f33b10
Parents: 016b441
Author: giacomolm <gi...@hotmail.it>
Authored: Mon Jun 22 13:02:41 2015 +0200
Committer: giacomolm <gi...@hotmail.it>
Committed: Mon Jun 22 13:02:41 2015 +0200

----------------------------------------------------------------------
 .../persistence-jpa/src/main/resources/content.xml |  5 +++++
 .../persistence/jpa/inner/PlainSchemaTest.java     |  2 +-
 .../persistence-jpa/src/test/resources/content.xml |  5 +++++
 .../provisioning/java/job/AbstractTaskJob.java     | 17 +++++++++++++++++
 4 files changed, 28 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/syncope/blob/0e908289/core/persistence-jpa/src/main/resources/content.xml
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/main/resources/content.xml b/core/persistence-jpa/src/main/resources/content.xml
index 20b2ebc..caba10e 100644
--- a/core/persistence-jpa/src/main/resources/content.xml
+++ b/core/persistence-jpa/src/main/resources/content.xml
@@ -80,6 +80,11 @@ under the License.
   <CPlainAttr id="11" owner_id="1" schema_name="log.lastlogindate"/>
   <CPlainAttrValue id="11" attribute_id="11" booleanValue="1"/>
 
+  <PlainSchema name="tasks.interruptMaxRetries" type="Long"
+               mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
+  <CPlainAttr id="12" owner_id="1" schema_name="tasks.interruptMaxRetries"/>
+  <CPlainAttrValue id="12" attribute_id="12" longValue="20"/>
+
   <!-- For usage with admin console -->
   <PlainSchema name="admin.user.layout" type="String"
                mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>

http://git-wip-us.apache.org/repos/asf/syncope/blob/0e908289/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/PlainSchemaTest.java
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/PlainSchemaTest.java b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/PlainSchemaTest.java
index 119ae6d..b7c7ecc 100644
--- a/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/PlainSchemaTest.java
+++ b/core/persistence-jpa/src/test/java/org/apache/syncope/core/persistence/jpa/inner/PlainSchemaTest.java
@@ -47,7 +47,7 @@ public class PlainSchemaTest extends AbstractTest {
     @Test
     public void findAll() {
         List<PlainSchema> schemas = plainSchemaDAO.findAll();
-        assertEquals(42, schemas.size());
+        assertEquals(43, schemas.size());
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/syncope/blob/0e908289/core/persistence-jpa/src/test/resources/content.xml
----------------------------------------------------------------------
diff --git a/core/persistence-jpa/src/test/resources/content.xml b/core/persistence-jpa/src/test/resources/content.xml
index 8b4740a..ffbd42f 100644
--- a/core/persistence-jpa/src/test/resources/content.xml
+++ b/core/persistence-jpa/src/test/resources/content.xml
@@ -78,6 +78,11 @@ under the License.
   <CPlainAttr id="11" owner_id="1" schema_name="log.lastlogindate"/>
   <CPlainAttrValue id="11" attribute_id="11" booleanValue="1"/>
 
+  <PlainSchema name="tasks.interruptMaxRetries" type="Long"
+               mandatoryCondition="true" multivalue="0" uniqueConstraint="0" readonly="0"/>
+  <CPlainAttr id="12" owner_id="1" schema_name="tasks.interruptMaxRetries"/>
+  <CPlainAttrValue id="12" attribute_id="12" longValue="20"/>
+
   <!-- For usage with admin console -->
   <PlainSchema name="admin.user.layout" type="String"
                mandatoryCondition="false" multivalue="1" uniqueConstraint="0" readonly="0"/>

http://git-wip-us.apache.org/repos/asf/syncope/blob/0e908289/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AbstractTaskJob.java
----------------------------------------------------------------------
diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AbstractTaskJob.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AbstractTaskJob.java
index 688ca99..4c49655 100644
--- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AbstractTaskJob.java
+++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AbstractTaskJob.java
@@ -33,6 +33,7 @@ import org.apache.syncope.core.persistence.api.entity.task.TaskExec;
 import org.apache.syncope.core.provisioning.api.job.TaskJob;
 import org.apache.syncope.core.misc.AuditManager;
 import org.apache.syncope.core.misc.ExceptionUtils2;
+import org.apache.syncope.core.persistence.api.dao.ConfDAO;
 import org.apache.syncope.core.provisioning.api.notification.NotificationManager;
 import org.quartz.DisallowConcurrentExecution;
 import org.quartz.JobExecutionContext;
@@ -81,6 +82,12 @@ public abstract class AbstractTaskJob implements TaskJob {
     private TaskExecDAO taskExecDAO;
 
     /**
+     * Configuration DAO.
+     */
+    @Autowired
+    private ConfDAO confDAO;
+
+    /**
      * Notification manager.
      */
     @Autowired
@@ -197,6 +204,16 @@ public abstract class AbstractTaskJob implements TaskJob {
             LOG.info("Interrupting job time {} ", (new SimpleDateFormat(SyncopeConstants.DEFAULT_DATE_PATTERN, Locale.
                     getDefault())).format(new Date()));
             thread.interrupt();
+            if (thread.isAlive()) {
+                long maxRetry = confDAO.find("tasks.interruptMaxRetries", "0").getValues().get(0).getLongValue();
+                for (int i = 0; i <= maxRetry && thread.isAlive(); i++) {
+                    thread.interrupt();
+                }
+                //if the thread is still alive, it should be available in the next stop
+                if (thread.isAlive()) {
+                    this.runningThread.set(thread);
+                }
+            }
         } else {
             LOG.warn("Unable to retrieve the right thread related to the current job execution");
         }