Camunda spring boot starter, Oracle DB error: ENGINE-03005 Entity was updated by another transaction concurrently

Dear Team,

We are using Camunda spring boot starter application. The source code is copied from the spring boot starter example in GITHUB:

By default it works well with h2 database. But after we connected to oracle database, whenever any write operation happens to database like adding a variable to process instance or completing a task, we are always getting the error like this

eg: “Cannot submit task form 9e5a15dd-eec6-11e9-9a84-b02fd8b32b8e: ENGINE-03005 Execution of ‘DELETE TaskEntity[9e5a15dd-eec6-11e9-9a84-b02fd8b32b8e]’ failed. Entity was updated by another transaction concurrently”.

eg: “Could not add the new variable: Cannot put process instance variable 1: ENGINE-03005 Execution of ‘UPDATE ExecutionEntity[9e577dca-eec6-11e9-9a84-b02fd8b32b8e]’ failed. Entity was updated by another transaction concurrently.”

Though im the only person accessing and doing this activity, concurrent transaction error is coming always.Error stacktrace.txt (26.0 KB)

  1. configured to connect to oracle db in the springboot application. java class
    @Bean(name = “dataSource”)
    public DataSource dataSource() throws NamingException {
    DriverManagerDataSource dataSource = new DriverManagerDataSource();
    dataSource.setDriverClassName(“oracle.jdbc.OracleDriver”);
    dataSource.setUrl(“url”);
    dataSource.setUsername(“name”);
    dataSource.setPassword(“passoword”);
    return dataSource;
    }

@Bean(name = “transactionManager”)
public PlatformTransactionManager transactionManager() throws NamingException {
return new DataSourceTransactionManager(dataSource());
}

  1. Added the following dependencies in POM
com.oracle ojdbc6 11.2.0.2 compile
	 <dependency>
	  <groupId>org.springframework.boot</groupId>
	   <artifactId>spring-boot-starter-jdbc</artifactId> 
	   </dependency>

Above configuration is creating tables in oracle database and the sample.bpmn file is also deployed. But whenever we tried updating the process instance we get this error.

Our oracle version is 12c, We tried programatically setting the jdbcBatchProcessing to false, when we do this above error doesnot come and we get a successful operation message, but data doesnt persist to database.

@EventListener
public void processApplicationDeploymentEvent(PostDeployEvent event){
event.getProcessEngine().getProcessEngineConfiguration().setJdbcBatchProcessing(false);
}

Kindly request you to help us resolving this concurrent transaction issue.

Thanks in Advance
Ravitheja

Hi @Ravitheja,

It seems like you’re getting an OptimisticLockingException, which is usually handled internally by the engine. Since you mentioned that you’re using Spring Boot, I’ll conclude that you’re using JDK 8 or above. You’re using Oracle 12c, but your jdbc driver is ojdbc6.

I would suggest to use the appropriate jdbc driver version for Oracle 12c. I think that should be ojdbc8. You can also find more details here: https://www.oracle.com/database/technologies/faq-jdbc.html

Best,
Nikola

2 Likes

Thanks a lot Nikola. It worked!!