I have confirmed that a fix to CAMEL-5161, where MyBatis locking the DB due
to not closing a session that experienced an exception trying to insert a
duplicate unique index, is indeed to add another try/finally block inside
each of the finally blocks already used in the insert/update methods in:
camel/components/camel-mybatis/src/main/java/org/apache/camel/component/mybatis/MyBatisProducer.java
Every Insert/Update related function in the file ends like:
---snip---
finally {
session.commit();
session.close();
}
---snip---
Changing to:
---snip---
finally{
try {
session.commit();
} finally {
session.close();
}
}
---snip---
prevents the issue I was experiencing from happening.
I have not submitted a patch since it's a very minor change and I am
currently not working in an area where I have access to the SVN (or
internet) from my dev box.
Is there a more elegant way to handle this than cascading try/finally
blocks?
Is there a (good) reason why all of the methods in MyBatisProducer.java
have blanket 'throws Exception' clauses (if they did not, the source of
this issue may have been more apparent).
Thanks again,
Aaron