cancel
Showing results for 
Search instead for 
Did you mean: 

Mac vs PC database-related anomaly

bwd
Champ in-the-making
Champ in-the-making
We have developers running Activiti 5.4 on a mixture of Windows 7 and Mac boxes using MySQL 5.5 as the data store (each developer has a local database).

Things seem to work fine on Windows, but the Mac developers are reporting the following error when starting a workflow:

Apr 19, 2011 1:51:42 PM org.activiti.engine.impl.interceptor.CommandContext close
SEVERE: Error while closing command context
org.apache.ibatis.exceptions.PersistenceException:
### Error updating database.  Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (`foo`.`act_ru_identitylink`, CONSTRAINT `ACT_FK_TSKASS_TASK` FOREIGN KEY (`TASK_ID_`) REFERENCES `ACT_RU_TASK` (`ID_`))
### The error may involve org.activiti.persistence.insertIdentityLink-Inline
### The error occurred while setting parameters
### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (`instance_2`.`act_ru_identitylink`, CONSTRAINT `ACT_FK_TSKASS_TASK` FOREIGN KEY (`TASK_ID_`) REFERENCES `ACT_RU_TASK` (`ID_`))
        at org.apache.ibatis.exceptions.ExceptionFactory.wrapException(ExceptionFactory.java:8)
        at org.apache.ibatis.session.defaults.DefaultSqlSession.update(DefaultSqlSession.java:100)
        at org.apache.ibatis.session.defaults.DefaultSqlSession.insert(DefaultSqlSession.java:87)
        at org.activiti.engine.impl.db.DbSqlSession.flushInserts(DbSqlSession.java:392)
        at org.activiti.engine.impl.db.DbSqlSession.flush(DbSqlSession.java:319)
        at org.activiti.engine.impl.interceptor.CommandContext.flushSessions(CommandContext.java:134)
        at org.activiti.engine.impl.interceptor.CommandContext.close(CommandContext.java:90)
        at org.activiti.engine.impl.interceptor.CommandContextInterceptor.execute(CommandContextInterceptor.java:49)
        at org.activiti.spring.SpringTransactionInterceptor$1.doInTransaction(SpringTransactionInterceptor.java:42)
        at org.springframework.transaction.support.TransactionTemplate.execute(TransactionTemplate.java:130)
        at org.activiti.spring.SpringTransactionInterceptor.execute(SpringTransactionInterceptor.java:40)
        at org.activiti.engine.impl.interceptor.LogInterceptor.execute(LogInterceptor.java:33)
        at org.activiti.engine.impl.RuntimeServiceImpl.startProcessInstanceByKey(RuntimeServiceImpl.java:49)

When we look at the query logs, it appears to be associated with the following SQL:


118 Query     insert into ACT_RU_TASK (ID_, REV_, NAME_, DESCRIPTION_, PRIORITY_, CREATE_TIME_, OWNER_,
                      ASSIGNEE_, DELEGATION_, EXECUTION_ID_, PROC_INST_ID_, PROC_DEF_ID_, TASK_DEF_KEY_, DUE_DATE_)
    values ('157',
            1,
            'foo',
            'bar',
            50,
            '2011-04-20 13:15:52',
            null,
            null,
            null,
            '146',
            '146',
            'sid-1e597cf9-9344-4dd7-922b-9b63534e2660:3:131',
            'sid-30C80E2F-EBA5-43E5-86ED-164CF88DC1E5',
            null
           )

and then a few queries later
                 
118 Query     insert into ACT_RU_IDENTITYLINK (ID_, REV_, TYPE_, USER_ID_, GROUP_ID_, TASK_ID_)
    values ('158',
            1,
            'candidate',
            '2:2',
            null,
            '157')
117 Query     rollback
117 Query     SET autocommit=1

One of the developers was able to get past this by dropping the foreign key constraint, but this later resulted in a similar error associated with another query.

FYI - We're running multiple Process Engines in a single servlet container, but each is given a distinct DataSource pointing to a different database schema.

One additional question came up during a review of the query logs:  Is Activiti modifying the connections it obtains from the DataSource connection pool?  (Someone noticed the 'SET autocommit' statements.)

Thanks,

BD
11 REPLIES 11

jbarrez
Star Contributor
Star Contributor
Then it must be something with the install on the os x machine, as pointing to the windows machine works.

My Mysql is a stock mysql (nothing configed after install), version 5.1.45

crkhd
Champ in-the-making
Champ in-the-making
Hi,

An update on this issue…i updated to mysql 5.5.15 and this issue went away…a colleague of mine has seen the same issue with 5.5.13

Thanks!