Your message dated Thu, 12 Nov 2015 09:17:37 +1100
with message-id <[email protected]>
and subject line Re: [Python-modules-team] Bug#804340: Problem found: It was 
pysjonrpc
has caused the Debian Bug report #804340,
regarding python-django: DatabaseError in development server on multi-core CPU 
computer with capital-letter-named django application
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
804340: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=804340
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: python-django
Version: 1.7.7-1+deb8u2
Severity: normal

Hello


I get the following error messages when I try to access any application running
on Django's development server on a computer with multi-core CPU after I
enabled one of my applications that has capital letters in its name in the
Django project:

DatabaseError: DatabaseWrapper objects created in a thread can only be used in
that same thread. The object with alias 'default' was created in thread id
$SOME_THREAD_ID and this is thread id $ANOTHER_THREAD_ID.

Plus, I get the following traceback:

Traceback (most recent call last):
  File "/usr/lib/python2.7/wsgiref/handlers.py", line 85, in run
    self.result = application(self.environ, self.start_response)
  File "/usr/lib/python2.7/dist-
packages/django/contrib/staticfiles/handlers.py", line 64, in __call__
    return self.application(environ, start_response)
  File "/usr/lib/python2.7/dist-packages/django/core/handlers/wsgi.py", line
175, in __call__
    signals.request_started.send(sender=self.__class__)
  File "/usr/lib/python2.7/dist-packages/django/dispatch/dispatcher.py", line
198, in send
    response = receiver(signal=self, sender=sender, **named)
  File "/usr/lib/python2.7/dist-packages/django/db/__init__.py", line 110, in
close_old_connections
    conn.close_if_unusable_or_obsolete()
  File "/usr/lib/python2.7/dist-packages/django/db/backends/__init__.py", line
497, in close_if_unusable_or_obsolete
    self.close()
  File "/usr/lib/python2.7/dist-packages/django/db/backends/sqlite3/base.py",
line 391, in close
    self.validate_thread_sharing()
  File "/usr/lib/python2.7/dist-packages/django/db/backends/__init__.py", line
515, in validate_thread_sharing
    % (self.alias, self._thread_ident, thread.get_ident()))


I noticed that the first one or two requests work when I start the application
server. After that I only see "A server error occurred.  Please contact the
administrator" in the browser, regardless which app I try to access. If I
remove the capital-letter-named application from the django project everythink
works fine. The application itself has simple database models and doesn't do
anything extraordinary, it just answers HTTP requests, talks to another program
via JSON-RPC and creates QR-codes.

My investigation revealed that this error seems to be based in the threading
support of the development server. The error occured first on a multi-core CPU
computer. On another computer (i386, single core, same Debian OS and Django
version) it didn't appear at all. Plus, if I start the development server with
--nothreading on the multi-core CPU computer everything is running fine.


You can reproduce this error by following these steps on a computer with multi-
core CPU:

- create a new django project: django-admin startproject project
- Go into the project's directory and download the application "TinycryptoPOS":
git clone https://gitlab.com/ncc1988/TinycryptoPOS.git
- install dependencies with pip as root: "pip qrcode" and "pip pyjsonrpc"
- activate the application:
  - add 'TinycryptoPOS', to the INSTALLED_APPS tuple in ./project/settings.py
  - add the url configuration to urls.py:
    from TinycryptoPOS.urls import urls as tcurls
    and add the following line in the urlpatterns tuple:
    url(r'^TinycryptoPOS/', include(tcurls)),
- now run: python manage.py syncdb
- run the development server: python manage.py runserver

Now when you try to access the admin interface the first one or two requests
will work but then you will see "A server error occured..." in your browser and
you will see the error messages in the console I pasted above.

If you run the development server with --nothreading everything will work fine.

I tried to start the development server in python3, but there it gave me syntax
errors so I can't tell if switching to python3 will "solve" the problem.
Furthermore I disabled the dependency "qrcode" which is imported in
TinycryptoPOS's models.py but this wasn't the problem either.


Regards
Moritz Strohm



-- System Information:
Debian Release: 8.1
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'oldoldstable'), (500, 'stable'), 
(500, 'oldstable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.16.0-4-amd64 (SMP w/4 CPU cores)
Locale: LANG=de_DE.utf8, LC_CTYPE=de_DE.utf8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages python-django depends on:
ii  python-django-common  1.7.7-1+deb8u2
pn  python:any            <none>

Versions of packages python-django recommends:
ii  libjs-jquery     1.7.2+dfsg-3.2
ii  python-sqlparse  0.1.13-2
ii  python-tz        2012c+dfsg-0.1

Versions of packages python-django suggests:
pn  bpython                                        <none>
pn  geoip-database-extra | geoip-database-contrib  <none>
ii  gettext                                        0.19.3-2
pn  ipython                                        <none>
pn  libgdal1                                       <none>
pn  python-bcrypt                                  <none>
pn  python-django-doc                              <none>
pn  python-flup                                    <none>
pn  python-memcache                                <none>
pn  python-mysqldb                                 <none>
ii  python-pil                                     2.6.1-2
pn  python-psycopg2                                <none>
pn  python-sqlite                                  <none>
pn  python-yaml                                    <none>

-- no debconf information

--- End Message ---
--- Begin Message ---
Moritz Strohm <[email protected]> writes:

> I think this is clearly a bug in pyjsonrpc and not a django bug.
>
> Thank you for your help and time and also thanks to the people on the django 
> mailing list for 
> giving me the hint to the right direction.

Thanks for your help.

As it seems this is not a Django bug, am closing this report.
-- 
Brian May <[email protected]>

--- End Message ---
_______________________________________________
Python-modules-team mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/python-modules-team

Reply via email to