This is an automated email from the ASF dual-hosted git repository.
mweiler pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-kie-kogito-apps.git
The following commit(s) were added to refs/heads/main by this push:
new 215f9a682 [Incubator kie issues#2177] Update existing job instances
instead of inserting/replacing in data index (#2282)
215f9a682 is described below
commit 215f9a68248a3242e4f23aef25bc2707da152429
Author: Abhiram Gundala <[email protected]>
AuthorDate: Thu Dec 11 17:49:29 2025 -0500
[Incubator kie issues#2177] Update existing job instances instead of
inserting/replacing in data index (#2282)
* added header
* update job details fix
* updated existing job instances
---
.../kie/kogito/index/service/IndexingService.java | 2 +-
.../index/storage/DataIndexStorageService.java | 3 +-
.../kogito/index/storage/JobInstanceStorage.java} | 22 ++--------
.../storage/ModelDataIndexStorageService.java | 4 +-
.../index/storage/ModelJobInstanceStorage.java} | 45 +++++++++++++--------
.../jpa/storage/JPADataIndexStorageService.java | 4 +-
.../kogito/index/jpa/storage/JobEntityStorage.java | 47 +++++++++++++++++++++-
7 files changed, 84 insertions(+), 43 deletions(-)
diff --git
a/data-index/data-index-common/src/main/java/org/kie/kogito/index/service/IndexingService.java
b/data-index/data-index-common/src/main/java/org/kie/kogito/index/service/IndexingService.java
index c4b468501..7993d4762 100644
---
a/data-index/data-index-common/src/main/java/org/kie/kogito/index/service/IndexingService.java
+++
b/data-index/data-index-common/src/main/java/org/kie/kogito/index/service/IndexingService.java
@@ -118,7 +118,7 @@ public class IndexingService {
}
public void indexJob(Job job) {
- manager.getJobsStorage().put(job.getId(), job);
+ manager.getJobsStorage().indexJob(job);
}
public void indexModel(ObjectNode updateData) {
diff --git
a/data-index/data-index-storage/data-index-storage-api/src/main/java/org/kie/kogito/index/storage/DataIndexStorageService.java
b/data-index/data-index-storage/data-index-storage-api/src/main/java/org/kie/kogito/index/storage/DataIndexStorageService.java
index 10e2d9195..4798020ae 100644
---
a/data-index/data-index-storage/data-index-storage-api/src/main/java/org/kie/kogito/index/storage/DataIndexStorageService.java
+++
b/data-index/data-index-storage/data-index-storage-api/src/main/java/org/kie/kogito/index/storage/DataIndexStorageService.java
@@ -21,7 +21,6 @@ package org.kie.kogito.index.storage;
import java.util.EnumSet;
import java.util.Set;
-import org.kie.kogito.index.model.Job;
import org.kie.kogito.index.model.ProcessDefinition;
import org.kie.kogito.index.model.ProcessDefinitionKey;
import org.kie.kogito.persistence.api.Storage;
@@ -36,7 +35,7 @@ public interface DataIndexStorageService {
UserTaskInstanceStorage getUserTaskInstanceStorage();
- Storage<String, Job> getJobsStorage();
+ JobInstanceStorage getJobsStorage();
Storage<String, ObjectNode> getDomainModelCache(String processId);
diff --git
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/JobEntityStorage.java
b/data-index/data-index-storage/data-index-storage-api/src/main/java/org/kie/kogito/index/storage/JobInstanceStorage.java
similarity index 55%
copy from
data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/JobEntityStorage.java
copy to
data-index/data-index-storage/data-index-storage-api/src/main/java/org/kie/kogito/index/storage/JobInstanceStorage.java
index f9ad19520..61e1ebad4 100644
---
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/JobEntityStorage.java
+++
b/data-index/data-index-storage/data-index-storage-api/src/main/java/org/kie/kogito/index/storage/JobInstanceStorage.java
@@ -16,25 +16,11 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.kie.kogito.index.jpa.storage;
+package org.kie.kogito.index.storage;
-import org.kie.kogito.index.jpa.mapper.JobEntityMapper;
-import org.kie.kogito.index.jpa.model.AbstractEntity;
-import org.kie.kogito.index.jpa.model.JobEntity;
import org.kie.kogito.index.model.Job;
+import org.kie.kogito.persistence.api.Storage;
-import jakarta.enterprise.context.ApplicationScoped;
-import jakarta.inject.Inject;
-import jakarta.persistence.EntityManager;
-
-@ApplicationScoped
-public class JobEntityStorage extends AbstractStorage<String, JobEntity, Job> {
-
- protected JobEntityStorage() {
- }
-
- @Inject
- public JobEntityStorage(EntityManager em) {
- super(em, Job.class, JobEntity.class,
JobEntityMapper.INSTANCE::mapToModel, JobEntityMapper.INSTANCE::mapToEntity,
AbstractEntity::getId);
- }
+public interface JobInstanceStorage extends Storage<String, Job> {
+ void indexJob(Job job);
}
diff --git
a/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/ModelDataIndexStorageService.java
b/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/ModelDataIndexStorageService.java
index 693928d99..47e435447 100644
---
a/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/ModelDataIndexStorageService.java
+++
b/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/ModelDataIndexStorageService.java
@@ -59,8 +59,8 @@ public class ModelDataIndexStorageService implements
DataIndexStorageService {
}
@Override
- public Storage<String, Job> getJobsStorage() {
- return storageService.getCache(JOBS_STORAGE, Job.class);
+ public JobInstanceStorage getJobsStorage() {
+ return new
ModelJobInstanceStorage(storageService.getCache(JOBS_STORAGE, Job.class));
}
@Override
diff --git
a/data-index/data-index-storage/data-index-storage-api/src/main/java/org/kie/kogito/index/storage/DataIndexStorageService.java
b/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/ModelJobInstanceStorage.java
similarity index 52%
copy from
data-index/data-index-storage/data-index-storage-api/src/main/java/org/kie/kogito/index/storage/DataIndexStorageService.java
copy to
data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/ModelJobInstanceStorage.java
index 10e2d9195..6e57164e3 100644
---
a/data-index/data-index-storage/data-index-storage-api/src/main/java/org/kie/kogito/index/storage/DataIndexStorageService.java
+++
b/data-index/data-index-storage/data-index-storage-common/src/main/java/org/kie/kogito/index/storage/ModelJobInstanceStorage.java
@@ -18,33 +18,44 @@
*/
package org.kie.kogito.index.storage;
-import java.util.EnumSet;
-import java.util.Set;
+import java.util.Map;
import org.kie.kogito.index.model.Job;
-import org.kie.kogito.index.model.ProcessDefinition;
-import org.kie.kogito.index.model.ProcessDefinitionKey;
import org.kie.kogito.persistence.api.Storage;
-import org.kie.kogito.persistence.api.StorageServiceCapability;
-import com.fasterxml.jackson.databind.node.ObjectNode;
+public class ModelJobInstanceStorage extends ModelStorageFetcher<String, Job>
implements JobInstanceStorage {
-public interface DataIndexStorageService {
- Storage<ProcessDefinitionKey, ProcessDefinition>
getProcessDefinitionStorage();
-
- ProcessInstanceStorage getProcessInstanceStorage();
+ public ModelJobInstanceStorage(Storage<String, Job> storage) {
+ super(storage, key -> key, key -> key);
+ }
- UserTaskInstanceStorage getUserTaskInstanceStorage();
+ @Override
+ public void indexJob(Job job) {
+ put(job.getId(), job);
+ }
- Storage<String, Job> getJobsStorage();
+ @Override
+ public Job put(String key, Job value) {
+ return storage.put(key, value);
+ }
- Storage<String, ObjectNode> getDomainModelCache(String processId);
+ @Override
+ public Job remove(String key) {
+ return storage.remove(key);
+ }
- String getDomainModelCacheName(String processId);
+ @Override
+ public boolean containsKey(String key) {
+ return storage.containsKey(key);
+ }
- Storage<String, String> getProcessIdModelCache();
+ @Override
+ public Map<String, Job> entries() {
+ return storage.entries();
+ }
- default Set<StorageServiceCapability> capabilities() {
- return EnumSet.noneOf(StorageServiceCapability.class);
+ @Override
+ public String getRootType() {
+ return Job.class.getName();
}
}
diff --git
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/JPADataIndexStorageService.java
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/JPADataIndexStorageService.java
index bf0cf1a1c..3481147ad 100644
---
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/JPADataIndexStorageService.java
+++
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/JPADataIndexStorageService.java
@@ -20,10 +20,10 @@ package org.kie.kogito.index.jpa.storage;
import java.util.Set;
-import org.kie.kogito.index.model.Job;
import org.kie.kogito.index.model.ProcessDefinition;
import org.kie.kogito.index.model.ProcessDefinitionKey;
import org.kie.kogito.index.storage.DataIndexStorageService;
+import org.kie.kogito.index.storage.JobInstanceStorage;
import org.kie.kogito.index.storage.ProcessInstanceStorage;
import org.kie.kogito.index.storage.UserTaskInstanceStorage;
import org.kie.kogito.persistence.api.Storage;
@@ -70,7 +70,7 @@ public class JPADataIndexStorageService implements
DataIndexStorageService {
}
@Override
- public Storage<String, Job> getJobsStorage() {
+ public JobInstanceStorage getJobsStorage() {
return jobsStorage;
}
diff --git
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/JobEntityStorage.java
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/JobEntityStorage.java
index f9ad19520..8e767c679 100644
---
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/JobEntityStorage.java
+++
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/JobEntityStorage.java
@@ -22,13 +22,15 @@ import org.kie.kogito.index.jpa.mapper.JobEntityMapper;
import org.kie.kogito.index.jpa.model.AbstractEntity;
import org.kie.kogito.index.jpa.model.JobEntity;
import org.kie.kogito.index.model.Job;
+import org.kie.kogito.index.storage.JobInstanceStorage;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Inject;
import jakarta.persistence.EntityManager;
+import jakarta.transaction.Transactional;
@ApplicationScoped
-public class JobEntityStorage extends AbstractStorage<String, JobEntity, Job> {
+public class JobEntityStorage extends AbstractStorage<String, JobEntity, Job>
implements JobInstanceStorage {
protected JobEntityStorage() {
}
@@ -37,4 +39,47 @@ public class JobEntityStorage extends
AbstractStorage<String, JobEntity, Job> {
public JobEntityStorage(EntityManager em) {
super(em, Job.class, JobEntity.class,
JobEntityMapper.INSTANCE::mapToModel, JobEntityMapper.INSTANCE::mapToEntity,
AbstractEntity::getId);
}
+
+ @Transactional
+ @Override
+ public void indexJob(Job job) {
+ JobEntity entity = findOrInit(job.getId(), job);
+ updateJobEntity(entity, job);
+ }
+
+ private JobEntity findOrInit(String jobId, Job job) {
+ JobEntity entity = em.find(JobEntity.class, jobId);
+ if (entity == null) {
+ entity = new JobEntity();
+ entity.setId(jobId);
+ entity.setProcessId(job.getProcessId());
+ entity.setRootProcessId(job.getRootProcessId());
+ em.persist(entity);
+ } else {
+ if (entity.getProcessId() == null) {
+ entity.setProcessId(job.getProcessId());
+ }
+ if (entity.getRootProcessId() == null) {
+ entity.setRootProcessId(job.getRootProcessId());
+ }
+ }
+ return entity;
+ }
+
+ private void updateJobEntity(JobEntity entity, Job job) {
+ entity.setProcessInstanceId(job.getProcessInstanceId());
+ entity.setNodeInstanceId(job.getNodeInstanceId());
+ entity.setRootProcessInstanceId(job.getRootProcessInstanceId());
+ entity.setExpirationTime(job.getExpirationTime());
+ entity.setPriority(job.getPriority());
+ entity.setCallbackEndpoint(job.getCallbackEndpoint());
+ entity.setRepeatInterval(job.getRepeatInterval());
+ entity.setRepeatLimit(job.getRepeatLimit());
+ entity.setScheduledId(job.getScheduledId());
+ entity.setRetries(job.getRetries());
+ entity.setStatus(job.getStatus());
+ entity.setLastUpdate(job.getLastUpdate());
+ entity.setExecutionCounter(job.getExecutionCounter());
+ entity.setEndpoint(job.getEndpoint());
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]