|
Boost : |
Subject: Re: [boost] trac error
From: Artyom Beilis (artyomtnk_at_[hidden])
Date: 2011-12-20 05:53:03
Have anybody tried to change the Sqlite3 database
to use WAL?
Starting from Sqlite 3.7 it can use WAL for the database
it has a huge advantage of possibility to run update
statements and fetch queries simultaneously.
(Which is exactly the problem of DB being locked)
Also it is generally faster as requires fewer fsync() calls:
PRAGMA journal_mode=WAL;
Also if there are many updates an option:
PARAGMA synchronous=NORMAL;
Together with WAL would significantly increase an updates
performance (with a price that some of last transactions
may be lost in case of computer crash)
I'd strongly recommend to try set an WAL option on the database.
For more details see: http://www.sqlite.org/wal.html
Artyom Beilis
--------------
CppCMS - C++ Web Framework: http://cppcms.sf.net/
CppDB - C++ SQL Connectivity: http://cppcms.sf.net/sql/cppdb/
----- Original Message -----
> From: Steve M. Robbins <steve_at_[hidden]>
> To: boost_at_[hidden]
> Cc:
> Sent: Tuesday, December 20, 2011 7:42 AM
> Subject: [boost] trac error
>
> OperationalError: database is locked
>
> There was an internal error in Trac. It is recommended that you notify your
> local Trac administrator with the information needed to reproduce the issue.
>
> To that end, you could ==== How to Reproduce ==== While doing a GET operation on
> `/ticket/6131`, Trac issued an internal error. ''(please provide
> additional details here)'' Request parameters: {{{ {'id':
> u'6131'} }}} User agent: `#USER_AGENT#` ==== System Information ====
> ''System information not available'' ==== Enabled Plugins ====
> ''Plugin information not available'' ==== Python Traceback ====
> {{{ Traceback (most recent call last): File
> "build/bdist.linux-i686/egg/trac/web/main.py", line 513, in
> _dispatch_request dispatcher.dispatch(req) File
> "build/bdist.linux-i686/egg/trac/web/main.py", line 258, in dispatch
> req.session.save() File
> "build/bdist.linux-i686/egg/trac/web/session.py", line 88, in save
> @self.env.with_transaction() File
> "build/bdist.linux-i686/egg/trac/db/api.py", line 77, in
> transaction_wrapper fn(ldb) File
> "build/bdist.linux-i686/egg/trac/web/session.py", line 132, in
> delete_session_cookie """, (self.last_visit, self.sid,
> authenticated)) File "build/bdist.linux-i686/egg/trac/db/util.py",
> line 65, in execute return self.cursor.execute(sql_escape_percent(sql), args)
> File "build/bdist.linux-i686/egg/trac/db/sqlite_backend.py", line 78,
> in execute result = PyFormatCursor.execute(self, *args) File
> "build/bdist.linux-i686/egg/trac/db/sqlite_backend.py", line 56, in
> execute args or []) File
> "build/bdist.linux-i686/egg/trac/db/sqlite_backend.py", line 48, in
> _rollback_on_error return function(self, *args, **kwargs) OperationalError:
> database is locked }}} a ticket.
>
> The action that triggered the error was:
>
> GET: /ticket/6131
>
> _______________________________________________
> Unsubscribe & other changes:
> http://lists.boost.org/mailman/listinfo.cgi/boost
>
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk