[
https://issues.apache.org/jira/browse/AMQ-1063?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13812666#comment-13812666
]
Radek Kraus commented on AMQ-1063:
----------------------------------
I'm sorry for comment to fixed issue. But IMHO the fix suggested by Petr Nidl
isn't 100% correct. We already tried to use this fix. It seams, that really
solved the {{java.io.IOException: Already started.}} problem. But after this
fix we faced to new problems:
# invoke a commit on Firebird connection, which is set as {{autocommit = true}}
(already reported in [AMQ-4836|https://issues.apache.org/jira/browse/AMQ-4836]
by Jiri Patera)
# (*most important*) possibility to set the connection as {{autocommit =
true}}, even if the connection is configured as {{autocommit = false}} on
datasource level, when transaction is started ({{TransactionContext.begin()}}
method is invoked), see the {{getConnection()}} method. The reason for this
behavior is "line switching" in suggested fix. I don't know all places and
ways, where transactions are used, but IMHO it seams as problem, when the
transaction is started and connection is configured as {{autocommit = true}}
Maybe I miss something, but thought that this comment can be useful.
> Journaled JDBC checkpoint fails with java.io.IOException: Already started.
> --------------------------------------------------------------------------
>
> Key: AMQ-1063
> URL: https://issues.apache.org/jira/browse/AMQ-1063
> Project: ActiveMQ
> Issue Type: Bug
> Components: Broker
> Affects Versions: 5.0.0
> Environment: Windows XP Professional, JVM 1.5.0_09, MySQL 5.0.27
> Reporter: [email protected]
> Assignee: Claus Ibsen
> Fix For: 5.10.0
>
> Attachments: activemq.log.zip
>
>
> I am running trunk using JDBC against MySQL 5.0.27. I am seeing the above
> mentioned IOException. Do not have specific instructions on how to reproduce
> at the current time, but I was using durable subscriptions with the store
> durable cursor if that helps. (I'll post if I find out more information.)
> <persistenceAdapter>
>
> <journaledJDBC journalLogFiles="5" dataDirectory="../activemq-data"
> dataSource="#mysql-ds"/>
> </persistenceAdapter>
> <bean id="mysql-ds" class="org.apache.commons.dbcp.BasicDataSource"
> destroy-method="close">
> <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
> <property name="url"
> value="jdbc:mysql://localhost/activemq?relaxAutoCommit=true"/>
> <property name="username" value="*** OMITTED ***"/>
> <property name="password" value="*** OMITTED *** "/>
> <property name="poolPreparedStatements" value="true"/>
> </bean>
> Log trace:
> 2006-11-19 19:19:48,078 [/127.0.0.1:4898] DEBUG JournalPersistenceAdapter
> - Waking for checkpoint to complete.
> 2006-11-19 19:19:48,078 [eckpoint Worker] DEBUG JournalPersistenceAdapter
> - Checkpoint started.
> 2006-11-19 19:19:48,078 [eckpoint Worker] ERROR JournalPersistenceAdapter
> - Failed to checkpoint a message store:
> java.util.concurrent.ExecutionException: java.io.IOException: Already started.
> java.util.concurrent.ExecutionException: java.io.IOException: Already started.
> at java.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:205)
> at java.util.concurrent.FutureTask.get(FutureTask.java:80)
> at
> org.apache.activemq.store.journal.JournalPersistenceAdapter.doCheckpoint(JournalPersistenceAdapter.java:386)
> at
> org.apache.activemq.store.journal.JournalPersistenceAdapter$2.iterate(JournalPersistenceAdapter.java:129)
> at
> org.apache.activemq.thread.DedicatedTaskRunner.runTask(DedicatedTaskRunner.java:88)
> at
> org.apache.activemq.thread.DedicatedTaskRunner.access$0(DedicatedTaskRunner.java:76)
> at
> org.apache.activemq.thread.DedicatedTaskRunner$1.run(DedicatedTaskRunner.java:39)
> Caused by: java.io.IOException: Already started.
> at
> org.apache.activemq.store.jdbc.TransactionContext.begin(TransactionContext.java:145)
> at
> org.apache.activemq.store.jdbc.JDBCPersistenceAdapter.beginTransaction(JDBCPersistenceAdapter.java:358)
> at
> org.apache.activemq.store.journal.JournalPersistenceAdapter.beginTransaction(JournalPersistenceAdapter.java:189)
> at
> org.apache.activemq.util.TransactionTemplate.run(TransactionTemplate.java:41)
> at
> org.apache.activemq.store.journal.JournalMessageStore.checkpoint(JournalMessageStore.java:247)
> at
> org.apache.activemq.store.journal.JournalTopicMessageStore.checkpoint(JournalTopicMessageStore.java:162)
> at
> org.apache.activemq.store.journal.JournalPersistenceAdapter$5.call(JournalPersistenceAdapter.java:373)
> at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:269)
> at java.util.concurrent.FutureTask.run(FutureTask.java:123)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
> at java.lang.Thread.run(Thread.java:595)
> 2006-11-19 19:19:48,109 [eckpoint Worker] DEBUG JournalPersistenceAdapter
> - Checkpoint done.
--
This message was sent by Atlassian JIRA
(v6.1#6144)