The only way I've managed to prevent concurrent writes in the same row with MVCC on, is reducing the CPU load in every massive data load/ export. It's about 8 times slower than before, but now it's reliable. I suppose I should move to a non java database due to my low performance hardware requirements.
On Feb 22, 12:46 pm, anavarrog <anavar...@gmail.com> wrote: > Sorry, in last entry I was referring to the error: > > org.h2.jdbc.JdbcSQLException: Statement was canceled or the session > timed out; > > when I said that the query: > > delete from sym_data_event where batch_id not in (select batch_id from > sym_outgoing_batch where batch_id between 6 and 106 and status != > 'OK') and batched = 1 and batch_id between 6 and 106 > > was causing it. I've solved it changing the configuration of > SymmetricDS that was cancelling the query execution when it last more > than 5 minutes. So, the problem left is the first one, caused by an > update in SYM_DATA_EVENT. > > On Feb 22, 11:07 am, anavarrog <anavar...@gmail.com> wrote: > > > > > > > > > The query that is causing these errors is: > > > delete from sym_data_event where batch_id not in (select batch_id from > > sym_outgoing_batch where batch_id between 6 and 106 and status != > > 'OK') and batched = 1 and batch_id between 6 and 106 > > > and sym_data_event is a table containing 2810225 entries. I've > > launched that query in a quad core, 4GiB RAM machine and it finishes > > without errors after ~ 15 minutes (881968 ms), deleting 101428 entries > > from sym_data_event. It looks like the netbooks I'm using to run the > > application (Atom N455 dual core 1.66GHz processors, 2GiB RAM) cannot > > afford that kind of effort. I'll try to reduce the number of elements > > to delete in every transaction hoping it will reduce the overhead. > > > On Feb 21, 5:33 pm, anavarrog <anavar...@gmail.com> wrote: > > > > Hi all, > > > > I'm using H2 database and SymmetricDS to synchronize data between > > > several terminals: > > > > * H2 version: 1.2.135 > > > * Connection URL: jdbc:h2:~/path/to/ > > > database;DB_CLOSE_DELAY=-1;CACHE_TYPE=SOFT_LRU;CIPHER=AES;LOCK_TIMEOUT=100000;MVCC=TRUE > > > > and after an intensive stress test execution we've observed several > > > exceptions in one of the virtual machines I'm using for testing. It > > > starts showing this: > > > > 2012-02-19 17:52:08,616 ERROR (AbstractServlet.java:295) Error while > > > processing GET request for externalId: null, node: > > > 90bba6e2-0e57-495b-9412-0c47819d99e5 at 10.80.18.30 (10.80.18.30) > > > org.springframework.jdbc.UncategorizedSQLException: > > > PreparedStatementCallback; uncategorized SQLException for SQL [ > > > update sym_data_event set batch_id = ?, batched = ? where > > > batched = ? > > > and node_id = ? and channel_id = ? > > > ]; SQL state [HY000]; error code [50000]; General error: > > > "java.lang.RuntimeException: Unexpected code path"; SQL statement: > > > > update sym_data_event set batch_id = ?, batched = ? where > > > batched = ? > > > and node_id = ? and channel_id = ? > > > [50000-135]; nested exception is org.h2.jdbc.JdbcSQLException: > > > General error: "java.lang.RuntimeException: Unexpected code path"; SQL > > > statement: > > > > update sym_data_event set batch_id = ?, batched = ? where > > > batched = ? > > > and node_id = ? and channel_id = ? > > > [50000-135] > > > at > > > org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java: > > > 83) > > > at > > > org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java: > > > 80) > > > at > > > org.springframework.jdbc.support.AbstractFallbackSQLExceptionTranslator.translate(AbstractFallbackSQLExceptionTranslator.java: > > > 80) > > > at > > > org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java: > > > 607) > > > at > > > org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java: > > > 792) > > > at > > > org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java: > > > 850) > > > at > > > org.springframework.jdbc.core.JdbcTemplate.update(JdbcTemplate.java: > > > 858) > > > at > > > org.jumpmind.symmetric.service.impl.OutgoingBatchService.buildOutgoingBatches(OutgoingBatchService.java: > > > 148) > > > at > > > org.jumpmind.symmetric.service.impl.DataExtractorService.extract(DataExtractorService.java: > > > 286) > > > at > > > org.jumpmind.symmetric.transport.handler.PullResourceHandler.pull(PullResourceHandler.java: > > > 59) > > > at > > > org.jumpmind.symmetric.web.PullServlet.handlePost(PullServlet.java: > > > 66) > > > at > > > org.jumpmind.symmetric.web.PullServlet.handleGet(PullServlet.java: > > > 49) > > > at > > > org.jumpmind.symmetric.web.SymmetricServlet.handleGet(SymmetricServlet.java: > > > 133) > > > at > > > org.jumpmind.symmetric.web.AbstractServlet.doGet(AbstractServlet.java: > > > 98) > > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:707) > > > at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) > > > at > > > org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java: > > > 502) > > > at org.mortbay.jetty.servlet.ServletHandler > > > $CachedChain.doFilter(ServletHandler.java:1148) > > > at org.jumpmind.symmetric.web.SymmetricFilter > > > $SymmetricFilterChain.doFilter(SymmetricFilter.java:151) > > > at org.jumpmind.symmetric.web.SymmetricFilter > > > $SymmetricFilterChain.doFilter(SymmetricFilter.java:145) > > > at > > > org.jumpmind.symmetric.web.compression.CompressionFilter.doFilter(CompressionFilter.java: > > > 157) > > > at > > > org.jumpmind.symmetric.web.CompressionFilter.doFilter(CompressionFilter.java: > > > 73) > > > at org.jumpmind.symmetric.web.SymmetricFilter > > > $SymmetricFilterChain.doFilter(SymmetricFilter.java:143) > > > at > > > org.jumpmind.symmetric.web.NodeConcurrencyFilter.doFilter(NodeConcurrencyFilter.java: > > > 74) > > > at org.jumpmind.symmetric.web.SymmetricFilter > > > $SymmetricFilterChain.doFilter(SymmetricFilter.java:143) > > > at > > > org.jumpmind.symmetric.web.InetAddressFilter.doFilter(InetAddressFilter.java: > > > 89) > > > at org.jumpmind.symmetric.web.SymmetricFilter > > > $SymmetricFilterChain.doFilter(SymmetricFilter.java:143) > > > at > > > org.jumpmind.symmetric.web.AuthenticationFilter.doFilter(AuthenticationFilter.java: > > > 68) > > > at org.jumpmind.symmetric.web.SymmetricFilter > > > $SymmetricFilterChain.doFilter(SymmetricFilter.java:143) > > > at > > > org.jumpmind.symmetric.web.SymmetricFilter.doFilter(SymmetricFilter.java: > > > 76) > > > at org.mortbay.jetty.servlet.ServletHandler > > > $CachedChain.doFilter(ServletHandler.java:1139) > > > at > > > org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java: > > > 378) > > > at > > > org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java: > > > 765) > > > at > > > org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java: > > > 114) > > > at > > > org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java: > > > 152) > > > at org.mortbay.jetty.Server.handle(Server.java:324) > > > at > > > org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java: > > > 535) > > > at org.mortbay.jetty.HttpConnection > > > $RequestHandler.headerComplete(HttpConnection.java:865) > > > at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:539) > > > at > > > org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) > > > at > > > org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) > > > at > > > org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java: > > > 409) > > > at org.mortbay.thread.QueuedThreadPool > > > $PoolThread.run(QueuedThreadPool.java:520) > > > Caused by: org.h2.jdbc.JdbcSQLException: General error: > > > "java.lang.RuntimeException: Unexpected code path"; SQL statement: > > > > update sym_data_event set batch_id = ?, batched = ? where > > > batched = ? > > > and node_id = ? and channel_id = ? > > > [50000-135] > > > at > > > org.h2.message.DbException.getJdbcSQLException(DbException.java: > > > 327) > > > at org.h2.message.DbException.get(DbException.java:156) > > > at org.h2.message.DbException.convert(DbException.java:279) > > > at org.h2.table.RegularTable.removeRow(RegularTable.java:349) > > > at org.h2.table.Table.updateRows(Table.java:400) > > > at org.h2.command.dml.Update.update(Update.java:124) > > > at > > > org.h2.command.CommandContainer.update(CommandContainer.java:70) > > > at org.h2.command.Command.executeUpdate(Command.java:199) > > > at > > > org.h2.jdbc.JdbcPreparedStatement.executeUpdateInternal(JdbcPreparedStatement.java: > > > 141) > > > at > > > org.h2.jdbc.JdbcPreparedStatement.executeUpdate(JdbcPreparedStatement.java: > > > 127) > > > at > > > org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(DelegatingPreparedStatement.java: > > > 101) > > > at org.springframework.jdbc.core.JdbcTemplate > > > $2.doInPreparedStatement(JdbcTemplate.java:798) > > > at > > > org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java: > > > 591) > > > ... 39 more > > > Caused by: java.lang.RuntimeException: Unexpected code path > > > at org.h2.message.DbException.throwInternalError(DbException.java: > > > 226) > > > at org.h2.message.DbException.throwInternalError(DbException.java: > > > 239) > > > at org.h2.index.PageBtreeNode.addChild(PageBtreeNode.java:157) > > > at org.h2.index.PageBtreeNode.remove(PageBtreeNode.java:356) > > > at org.h2.index.PageBtreeNode.remove(PageBtreeNode.java:323) > > > at org.h2.index.PageBtreeNode.remove(PageBtreeNode.java:323) > > > at... > > read more » -- You received this message because you are subscribed to the Google Groups "H2 Database" group. To post to this group, send email to h2-database@googlegroups.com. To unsubscribe from this group, send email to h2-database+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/h2-database?hl=en.