tiagodolphine commented on code in PR #1906:
URL:
https://github.com/apache/incubator-kie-kogito-apps/pull/1906#discussion_r1389432407
##########
data-index/data-index-common/src/main/java/org/kie/kogito/index/service/IndexingService.java:
##########
@@ -69,6 +71,34 @@ public class IndexingService {
Instance<UserTaskInstanceEventMerger> userTaskInstanceMergers;
public void indexProcessInstanceEvent(ProcessInstanceDataEvent<?> event) {
+ //retry in case of rare but possible race condition during the insert
for the first registry
+ ProcessInstance pi = executeWithRetry(event,
this::handleProcessInstanceEvent, "indexing process instance");
+
+ ProcessDefinition definition = pi.getDefinition();
+
+ if (definition != null &&
!manager.getProcessDefinitionsCache().containsKey(definition.getKey())) {
+ //retry in case of rare but possible race condition during the
insert for the first registry
+ executeWithRetry(definition, this::handleProcessDefinition,
"indexing process definition");
Review Comment:
this is not a particular problem for MongoDB, this is a general problem
related to concurrency to insert/update the a registry with the same
identifier/primary key, and it was realized with PostgreSQL at first.
One option is to use `smallrye-fault-tolerance` where we have more control
for the retry policy and make the code cleaner, this would avoid introducing
the retry method but introduce a new dependency.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]