[ 
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)

Reply via email to