This is an automated email from the ASF dual-hosted git repository.

fjtiradosarti 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 059bc0a1c [Fix_#3405] Using merge in all cases (#1990)
059bc0a1c is described below

commit 059bc0a1c0ddaba80ca643d6764843d5a0377300
Author: Francisco Javier Tirado Sarti 
<[email protected]>
AuthorDate: Mon Feb 19 11:11:20 2024 +0100

    [Fix_#3405] Using merge in all cases (#1990)
---
 .../kogito/index/jpa/storage/AbstractStorage.java  | 17 +--------
 .../storage/ProcessDefinitionEntityStorage.java    | 41 +---------------------
 2 files changed, 2 insertions(+), 56 deletions(-)

diff --git 
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/AbstractStorage.java
 
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/AbstractStorage.java
index 4d339888e..de426fc4e 100644
--- 
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/AbstractStorage.java
+++ 
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/AbstractStorage.java
@@ -18,7 +18,6 @@
  */
 package org.kie.kogito.index.jpa.storage;
 
-import java.util.ConcurrentModificationException;
 import java.util.Map;
 import java.util.function.Function;
 
@@ -27,8 +26,6 @@ import org.kie.kogito.persistence.api.Storage;
 
 import io.quarkus.hibernate.orm.panache.PanacheRepositoryBase;
 
-import jakarta.persistence.LockModeType;
-import jakarta.persistence.PersistenceException;
 import jakarta.transaction.Transactional;
 
 import static java.util.stream.Collectors.toMap;
@@ -54,19 +51,7 @@ public abstract class AbstractStorage<K, E extends 
AbstractEntity, V> extends Ab
     @Override
     @Transactional
     public V put(K key, V value) {
-        //Pessimistic lock is used to lock the row to handle concurrency with 
an exiting registry
-        E persistedEntity = repository.findById(key, 
LockModeType.PESSIMISTIC_WRITE);
-        E newEntity = mapToEntity.apply(value);
-        if (persistedEntity != null) {
-            repository.getEntityManager().merge(newEntity);
-        } else {
-            try {
-                //to handle concurrency in case of a new registry persist 
flush and throw an exception to allow retry on the caller side
-                repository.persistAndFlush(newEntity);
-            } catch (PersistenceException e) {
-                throw new ConcurrentModificationException(e);
-            }
-        }
+        repository.getEntityManager().merge(mapToEntity.apply(value));
         return value;
     }
 
diff --git 
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/ProcessDefinitionEntityStorage.java
 
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/ProcessDefinitionEntityStorage.java
index db641e4de..e22670c66 100644
--- 
a/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/ProcessDefinitionEntityStorage.java
+++ 
b/data-index/data-index-storage/data-index-storage-jpa-common/src/main/java/org/kie/kogito/index/jpa/storage/ProcessDefinitionEntityStorage.java
@@ -18,20 +18,14 @@
  */
 package org.kie.kogito.index.jpa.storage;
 
-import java.util.Optional;
-
 import org.kie.kogito.index.jpa.mapper.ProcessDefinitionEntityMapper;
 import org.kie.kogito.index.jpa.model.ProcessDefinitionEntity;
 import org.kie.kogito.index.jpa.model.ProcessDefinitionEntityRepository;
 import org.kie.kogito.index.model.ProcessDefinition;
 import org.kie.kogito.index.model.ProcessDefinitionKey;
 
-import io.quarkus.hibernate.orm.panache.PanacheRepositoryBase;
-
 import jakarta.enterprise.context.ApplicationScoped;
 import jakarta.inject.Inject;
-import jakarta.persistence.EntityManager;
-import jakarta.persistence.LockModeType;
 import jakarta.transaction.Transactional;
 
 @ApplicationScoped
@@ -42,7 +36,7 @@ public class ProcessDefinitionEntityStorage extends 
AbstractStorage<ProcessDefin
 
     @Inject
     public ProcessDefinitionEntityStorage(ProcessDefinitionEntityRepository 
repository, ProcessDefinitionEntityMapper mapper) {
-        super(new RepositoryAdapter(repository), ProcessDefinition.class, 
ProcessDefinitionEntity.class, mapper::mapToModel, mapper::mapToEntity, e -> 
new ProcessDefinitionKey(e.getId(),
+        super(repository, ProcessDefinition.class, 
ProcessDefinitionEntity.class, mapper::mapToModel, mapper::mapToEntity, e -> 
new ProcessDefinitionKey(e.getId(),
                 e.getVersion()));
     }
 
@@ -52,37 +46,4 @@ public class ProcessDefinitionEntityStorage extends 
AbstractStorage<ProcessDefin
         return getRepository().count("id = ?1 and version = ?2", key.getId(), 
key.getVersion()) == 1;
     }
 
-    public static class RepositoryAdapter implements 
PanacheRepositoryBase<ProcessDefinitionEntity, ProcessDefinitionKey> {
-
-        ProcessDefinitionEntityRepository repository;
-
-        public RepositoryAdapter(ProcessDefinitionEntityRepository repository) 
{
-            this.repository = repository;
-        }
-
-        @Override
-        public boolean deleteById(ProcessDefinitionKey key) {
-            return repository.deleteById(key);
-        }
-
-        @Override
-        public Optional<ProcessDefinitionEntity> 
findByIdOptional(ProcessDefinitionKey key) {
-            return repository.findByIdOptional(key);
-        }
-
-        @Override
-        public ProcessDefinitionEntity findById(ProcessDefinitionKey s, 
LockModeType lockModeType) {
-            return repository.findById(s, lockModeType);
-        }
-
-        @Override
-        public void persist(ProcessDefinitionEntity entity) {
-            repository.persist(entity);
-        }
-
-        @Override
-        public EntityManager getEntityManager() {
-            return repository.getEntityManager();
-        }
-    }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to