This is an automated email from the ASF dual-hosted git repository.
ilgrosso pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/syncope.git
The following commit(s) were added to refs/heads/master by this push:
new 70fb68bef2 [SYNCOPE-1910] Checking Task and Report status for Job
(un)registration
70fb68bef2 is described below
commit 70fb68bef23e3a9ce6d6f10866af9b24af8e7ac5
Author: Francesco Chicchiriccò <[email protected]>
AuthorDate: Wed Sep 10 11:11:08 2025 +0200
[SYNCOPE-1910] Checking Task and Report status for Job (un)registration
---
.../org/apache/syncope/core/logic/ReportLogic.java | 13 +++--
.../org/apache/syncope/core/logic/TaskLogic.java | 16 ++++---
.../java/job/AbstractSchedTaskJobDelegate.java | 10 ++--
.../provisioning/java/job/DefaultJobManager.java | 55 ++++++++++++----------
4 files changed, 53 insertions(+), 41 deletions(-)
diff --git
a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/ReportLogic.java
b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/ReportLogic.java
index 3ebe453dc0..56422e6c08 100644
---
a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/ReportLogic.java
+++
b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/ReportLogic.java
@@ -92,6 +92,7 @@ public class ReportLogic extends
AbstractExecutableLogic<ReportTO> {
public ReportTO create(final ReportTO reportTO) {
Report report = entityFactory.newEntity(Report.class);
binder.getReport(report, reportTO);
+
report = reportDAO.save(report);
try {
jobManager.register(
@@ -116,11 +117,15 @@ public class ReportLogic extends
AbstractExecutableLogic<ReportTO> {
binder.getReport(report, reportTO);
report = reportDAO.save(report);
try {
- jobManager.register(
- report,
- AuthContextUtils.getUsername());
+ if (report.isActive()) {
+ jobManager.register(
+ report,
+ AuthContextUtils.getUsername());
+ } else {
+ jobManager.unregister(report);
+ }
} catch (Exception e) {
- LOG.error("While registering job for report {}", report.getKey(),
e);
+ LOG.error("While (un)registering job for report {}",
report.getKey(), e);
SyncopeClientException sce =
SyncopeClientException.build(ClientExceptionType.Scheduling);
sce.getElements().add(e.getMessage());
diff --git
a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/TaskLogic.java
b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/TaskLogic.java
index 1c6ee6b09d..11911d41f5 100644
---
a/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/TaskLogic.java
+++
b/core/idrepo/logic/src/main/java/org/apache/syncope/core/logic/TaskLogic.java
@@ -147,9 +147,7 @@ public class TaskLogic extends
AbstractExecutableLogic<TaskTO> {
securityChecks(IdRepoEntitlement.TASK_CREATE, ((MacroTaskTO)
taskTO).getRealm());
}
- SchedTask task = binder.createSchedTask(taskTO, taskUtils);
- task = taskDAO.save(task);
-
+ SchedTask task = taskDAO.save(binder.createSchedTask(taskTO,
taskUtils));
try {
jobManager.register(
task,
@@ -185,11 +183,15 @@ public class TaskLogic extends
AbstractExecutableLogic<TaskTO> {
binder.updateSchedTask(task, taskTO, taskUtils);
task = taskDAO.save(task);
try {
- jobManager.register(
- task,
- AuthContextUtils.getUsername());
+ if (task.isActive()) {
+ jobManager.register(
+ task,
+ AuthContextUtils.getUsername());
+ } else {
+ jobManager.unregister(task);
+ }
} catch (Exception e) {
- LOG.error("While registering job for task {}", task.getKey(), e);
+ LOG.error("While (un)registering job for task {}", task.getKey(),
e);
SyncopeClientException sce =
SyncopeClientException.build(ClientExceptionType.Scheduling);
sce.getElements().add(e.getMessage());
diff --git
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AbstractSchedTaskJobDelegate.java
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AbstractSchedTaskJobDelegate.java
index bd6a79bf14..5028c59f07 100644
---
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AbstractSchedTaskJobDelegate.java
+++
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/AbstractSchedTaskJobDelegate.java
@@ -109,11 +109,6 @@ public abstract class AbstractSchedTaskJobDelegate<T
extends SchedTask> implemen
task = (T) taskDAO.findById(taskType, taskKey).
orElseThrow(() -> new JobExecutionException("Not found: " +
taskType + " Task " + taskKey));
- if (!task.isActive()) {
- LOG.info("Task {} not active, aborting...", taskKey);
- return;
- }
-
manageOperationId = Optional.ofNullable(MDC.get(Job.OPERATION_ID)).
map(operationId -> false).
orElseGet(() -> {
@@ -187,6 +182,11 @@ public abstract class AbstractSchedTaskJobDelegate<T
extends SchedTask> implemen
init(taskType, taskKey, context);
+ if (!task.isActive()) {
+ LOG.info("Task {} not active, aborting...", taskKey);
+ return;
+ }
+
setStatus("Initialization completed");
TaskExec<SchedTask> execution = initExecution();
diff --git
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/DefaultJobManager.java
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/DefaultJobManager.java
index 535fa304df..99ce29b75b 100644
---
a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/DefaultJobManager.java
+++
b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/job/DefaultJobManager.java
@@ -148,6 +148,13 @@ public class DefaultJobManager implements JobManager,
SyncopeCoreLoader {
final boolean dryRun,
final Map<String, Object> jobData) {
+ TaskType type = taskUtilsFactory.getInstance(task).getType();
+
+ if (!task.isActive()) {
+ LOG.debug("{} Task {} {} not active, skipping job registration",
type, task.getKey(), task.getName());
+ return;
+ }
+
Implementation jobDelegate = task.getJobDelegate() == null
? task instanceof PullTask
?
implementationDAO.findByType(IdRepoImplementationType.TASKJOB_DELEGATE).stream().
@@ -169,7 +176,7 @@ public class DefaultJobManager implements JobManager,
SyncopeCoreLoader {
JobNamer.getJobName(task),
executor,
dryRun);
- context.getData().put(JobManager.TASK_TYPE,
taskUtilsFactory.getInstance(task).getType());
+ context.getData().put(JobManager.TASK_TYPE, type);
context.getData().put(JobManager.TASK_KEY, task.getKey());
context.getData().put(JobManager.DELEGATE_IMPLEMENTATION,
jobDelegate.getKey());
context.getData().putAll(jobData);
@@ -222,6 +229,11 @@ public class DefaultJobManager implements JobManager,
SyncopeCoreLoader {
final String executor,
final boolean dryRun) {
+ if (!report.isActive()) {
+ LOG.debug("Report {} {} not active, skipping job registration",
report.getKey(), report.getName());
+ return;
+ }
+
JobExecutionContext context = new JobExecutionContext(
domain,
JobNamer.getJobName(report),
@@ -314,31 +326,24 @@ public class DefaultJobManager implements JobManager,
SyncopeCoreLoader {
}
}
- if (loadException) {
- LOG.error("Errors while loading job for tasks, aborting");
- } else {
- // 2. jobs for Reports
- for (Iterator<? extends Report> it =
reportDAO.findAll().iterator(); it.hasNext() && !loadException;) {
- Report report = it.next();
-
- LOG.debug("Loading job for Report {} {}", report.getKey(),
report.getName());
-
- try {
- register(
- domain,
- report,
- report.getCronExpression(),
- null,
- securityProperties.getAdminUser(),
- false);
- } catch (Exception e) {
- LOG.error("While loading job instance for report {}",
report.getName(), e);
- loadException = true;
- }
- }
+ // 2. jobs for Reports
+ loadException = false;
+ for (Iterator<? extends Report> it =
reportDAO.findAll().iterator(); it.hasNext() && !loadException;) {
+ Report report = it.next();
+
+ LOG.debug("Loading job for Report {} {}", report.getKey(),
report.getName());
- if (loadException) {
- LOG.error("Errors while loading job for reports,
aborting");
+ try {
+ register(
+ domain,
+ report,
+ report.getCronExpression(),
+ null,
+ securityProperties.getAdminUser(),
+ false);
+ } catch (Exception e) {
+ LOG.error("While loading job instance for report {}",
report.getName(), e);
+ loadException = true;
}
}
});