[debexpo-devel] Sqlite lock race conditions!
Asheesh Laroia
asheesh at asheesh.org
Wed Nov 10 21:33:51 CET 2010
It seems that two requests came in to the server at approximately the same
time, so
I guess one way to 'fix' this is to limit the number of WSGI processes to
1! I'll do that. Done. I still have 15 threads available; hopefully that
will take care of it? (If not, I can do threads=1 processes=1.)
But it would behoove us to switch to MySQL, I suppose, rather than
sqlite3. For that reason I've installed mysql in the debexpo vserver, and
the MySQL root password is in /home/debexpo/mysql-root-password .
P.S. Mega thanks to all those helping out so far, including bug reporters!
-- Asheesh.
---------- Forwarded message ----------
Date: Tue, 9 Nov 2010 11:39:37
From: debexpo at debexpo.makesad.us
To: asheesh at asheesh.org
Subject: WHERE users.id = ?' (None, 13)
URL: http://expo.debian.net/register/activate/0f66b68703dbe7403fc129f7adf0f4f8
File '/home/debexpo/debexpo/lib/python2.6/site-packages/WebError-0.10.2-py2.6.egg/weberror/errormiddleware.py', line 162 in __call__
app_iter = self.application(environ, sr_checker)
File '/home/debexpo/debexpo/lib/python2.6/site-packages/Beaker-1.5.4-py2.6.egg/beaker/middleware.py', line 152 in __call__
return self.wrap_app(environ, session_start_response)
File '/home/debexpo/debexpo/lib/python2.6/site-packages/Routes-1.12.3-py2.6.egg/routes/middleware.py', line 131 in __call__
response = self.app(environ, start_response)
File '/home/debexpo/debexpo/lib/python2.6/site-packages/Pylons-1.0-py2.6.egg/pylons/wsgiapp.py', line 107 in __call__
response = self.dispatch(controller, environ, start_response)
File '/home/debexpo/debexpo/lib/python2.6/site-packages/Pylons-1.0-py2.6.egg/pylons/wsgiapp.py', line 312 in dispatch
return controller(environ, start_response)
File '/home/debexpo/debexpo/debexpo/lib/base.py', line 86 in __call__
return WSGIController.__call__(self, environ, start_response)
File '/home/debexpo/debexpo/lib/python2.6/site-packages/Pylons-1.0-py2.6.egg/pylons/controllers/core.py', line 211 in __call__
response = self._dispatch_call()
File '/home/debexpo/debexpo/lib/python2.6/site-packages/Pylons-1.0-py2.6.egg/pylons/controllers/core.py', line 162 in _dispatch_call
response = self._inspect_call(func)
File '/home/debexpo/debexpo/lib/python2.6/site-packages/Pylons-1.0-py2.6.egg/pylons/controllers/core.py', line 105 in _inspect_call
result = self._perform_call(func, args)
File '/home/debexpo/debexpo/lib/python2.6/site-packages/Pylons-1.0-py2.6.egg/pylons/controllers/core.py', line 57 in _perform_call
return func(**args)
File '/home/debexpo/debexpo/debexpo/controllers/register.py', line 184 in activate
meta.session.commit()
File '/home/debexpo/debexpo/lib/python2.6/site-packages/SQLAlchemy-0.6.5-py2.6.egg/sqlalchemy/orm/scoping.py', line 139 in do
return getattr(self.registry(), name)(*args, **kwargs)
File '/home/debexpo/debexpo/lib/python2.6/site-packages/SQLAlchemy-0.6.5-py2.6.egg/sqlalchemy/orm/session.py', line 623 in commit
self.transaction.commit()
File '/home/debexpo/debexpo/lib/python2.6/site-packages/SQLAlchemy-0.6.5-py2.6.egg/sqlalchemy/orm/session.py', line 385 in commit
self._prepare_impl()
File '/home/debexpo/debexpo/lib/python2.6/site-packages/SQLAlchemy-0.6.5-py2.6.egg/sqlalchemy/orm/session.py', line 369 in _prepare_impl
self.session.flush()
File '/home/debexpo/debexpo/lib/python2.6/site-packages/SQLAlchemy-0.6.5-py2.6.egg/sqlalchemy/orm/session.py', line 1397 in flush
self._flush(objects)
File '/home/debexpo/debexpo/lib/python2.6/site-packages/SQLAlchemy-0.6.5-py2.6.egg/sqlalchemy/orm/session.py', line 1478 in _flush
flush_context.execute()
File '/home/debexpo/debexpo/lib/python2.6/site-packages/SQLAlchemy-0.6.5-py2.6.egg/sqlalchemy/orm/unitofwork.py', line 304 in execute
rec.execute(self)
File '/home/debexpo/debexpo/lib/python2.6/site-packages/SQLAlchemy-0.6.5-py2.6.egg/sqlalchemy/orm/unitofwork.py', line 448 in execute
uow
File '/home/debexpo/debexpo/lib/python2.6/site-packages/SQLAlchemy-0.6.5-py2.6.egg/sqlalchemy/orm/mapper.py', line 1839 in _save_obj
execute(statement, params)
File '/home/debexpo/debexpo/lib/python2.6/site-packages/SQLAlchemy-0.6.5-py2.6.egg/sqlalchemy/engine/base.py', line 1191 in execute
params)
File '/home/debexpo/debexpo/lib/python2.6/site-packages/SQLAlchemy-0.6.5-py2.6.egg/sqlalchemy/engine/base.py', line 1271 in _execute_clauseelement
return self.__execute_context(context)
File '/home/debexpo/debexpo/lib/python2.6/site-packages/SQLAlchemy-0.6.5-py2.6.egg/sqlalchemy/engine/base.py', line 1302 in __execute_context
context.parameters[0], context=context)
File '/home/debexpo/debexpo/lib/python2.6/site-packages/SQLAlchemy-0.6.5-py2.6.egg/sqlalchemy/engine/base.py', line 1401 in _cursor_execute
context)
File '/home/debexpo/debexpo/lib/python2.6/site-packages/SQLAlchemy-0.6.5-py2.6.egg/sqlalchemy/engine/base.py', line 1394 in _cursor_execute
context)
File '/home/debexpo/debexpo/lib/python2.6/site-packages/SQLAlchemy-0.6.5-py2.6.egg/sqlalchemy/engine/default.py', line 299 in do_execute
cursor.execute(statement, parameters)
OperationalError: (OperationalError) database is locked u'UPDATE users SET verification=? WHERE users.id = ?' (None, 13)
CGI Variables
-------------
DOCUMENT_ROOT: '/var/www'
GATEWAY_INTERFACE: 'CGI/1.1'
HTTP_ACCEPT: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
HTTP_ACCEPT_CHARSET: 'ISO-8859-1,utf-8;q=0.7,*;q=0.7'
HTTP_ACCEPT_ENCODING: 'gzip,deflate'
HTTP_ACCEPT_LANGUAGE: 'en,en-us;q=0.5'
HTTP_CONNECTION: 'keep-alive'
HTTP_HOST: 'expo.debian.net'
HTTP_KEEP_ALIVE: '300'
HTTP_USER_AGENT: 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.15) Gecko/20101028 Iceweasel/3.5.15 (like Firefox/3.5.15)'
PATH_INFO: '/register/activate/0f66b68703dbe7403fc129f7adf0f4f8'
PATH_TRANSLATED: '/home/debexpo/debexpo/deploy.wsgi/register/activate/0f66b68703dbe7403fc129f7adf0f4f8'
REMOTE_ADDR: '82.211.214.250'
REMOTE_PORT: '35908'
REQUEST_METHOD: 'GET'
REQUEST_URI: '/register/activate/0f66b68703dbe7403fc129f7adf0f4f8'
SCRIPT_FILENAME: '/home/debexpo/debexpo/deploy.wsgi'
SERVER_ADDR: '219.105.37.21'
SERVER_ADMIN: 'webmaster at localhost'
SERVER_NAME: 'expo.debian.net'
SERVER_PORT: '80'
SERVER_PROTOCOL: 'HTTP/1.1'
SERVER_SIGNATURE: '<address>Apache/2.2.16 (Debian) Server at expo.debian.net Port 80</address>\n'
SERVER_SOFTWARE: 'Apache/2.2.16 (Debian)'
WSGI Variables
--------------
application: <beaker.middleware.SessionMiddleware object at 0x7f144f76d950>
beaker.get_session: <bound method SessionMiddleware._get_session of <beaker.middleware.SessionMiddleware object at 0x7f144f76d950>>
beaker.session: {'_accessed_time': 1289320776.516952, '_creation_time': 1289320776.516952}
mod_wsgi.application_group: 'dg3.makesad.us|'
mod_wsgi.callable_object: 'application'
mod_wsgi.handler_script: ''
mod_wsgi.input_chunked: '0'
mod_wsgi.listener_host: ''
mod_wsgi.listener_port: '80'
mod_wsgi.process_group: 'example.com'
mod_wsgi.request_handler: 'wsgi-script'
mod_wsgi.script_reloading: '1'
mod_wsgi.version: (3, 3)
paste.registry: <paste.registry.Registry object at 0x7f144fcaad90>
paste.throw_errors: True
pylons.action_method: <bound method RegisterController.activate of <debexpo.controllers.register.RegisterController object at 0x7f14500007d0>>
pylons.controller: <debexpo.controllers.register.RegisterController object at 0x7f14500007d0>
pylons.environ_config: {'session': 'beaker.session', 'cache': 'beaker.cache'}
pylons.pylons: <pylons.util.PylonsContext object at 0x7f14500009d0>
pylons.routes_dict: {'action': u'activate', 'controller': u'register', 'id': u'0f66b68703dbe7403fc129f7adf0f4f8'}
routes.route: <routes.route.Route object at 0x7f144f6566d0>
routes.url: <routes.util.URLGenerator object at 0x7f144fcaa350>
webob.adhoc_attrs: {'language': 'en-us'}
wsgi process: 'Multi process AND threads (?)'
wsgi.file_wrapper: <built-in method file_wrapper of mod_wsgi.Adapter object at 0x7f144ffefe40>
wsgi.version: (1, 1)
wsgiorg.routing_args: (<routes.util.URLGenerator object at 0x7f144fcaa350>, {'action': u'activate', 'controller': u'register', 'id': u'0f66b68703dbe7403fc129f7adf0f4f8'})
More information about the debexpo-devel
mailing list