Past days, I’ve been doing some Activiti benchmarking. By accident however, I discoverd that all my tables were using the MyISAM storage engine, which is non-transactional. This is *not* a good idea when using Activiti, as the engine does count on transactions for executing processes in a correct way.
The DDL statements of Activiti do state ‘engine=InnoDB’, so where did it go wrong? Also, when I ran ‘show engines’, innoDB was nowehere to be found.
Apparantly, the innoDB files get corrupted easily (at least on Ubuntu). When MySQL is booting and it notices that the files are corrupted, it disables innoDB. I checked mysql.err.log, mysql.log and the syslog, and not a single fuck was given in those files. In the end, I deleted all the innodb files stored in /var/log/mysql (check the mysql.conf where the files are), and deleted all the ib* files. Restarted MySQL, and the ‘show engines’ command gave me now that innoDB was the default storage engine. When I now ran the test, all tables were created using the innoDB storage engine.
TL;DR: Always check the storage engine used for your Activiti tables. Delete the innodb files if innoDB isn’t showing up when running ‘show engines’.