Opened 13 years ago
Closed 13 years ago
#16956 closed Bug (needsinfo)
ContentTypes error in test with master/slave configuration
Reported by: | Owned by: | nobody | |
---|---|---|---|
Component: | contrib.contenttypes | Version: | 1.3 |
Severity: | Normal | Keywords: | contenttypes test valueerror |
Cc: | Triage Stage: | Unreviewed | |
Has patch: | no | Needs documentation: | no |
Needs tests: | no | Patch needs improvement: | no |
Easy pickings: | no | UI/UX: | no |
Description
Hello.
I get strange "ValueError: list.remove(x): x not in list" when I try to test my project. This happens only with master/slave configuration. If I use single 'default' database everything works ok.
Database configuration:
DATABASES = { 'default': { 'ENGINE': 'django.contrib.gis.db.backends.postgis', 'NAME': 'dbname', 'USER': 'gorodechnyj', 'PASSWORD': 'pass', 'HOST': 'host', 'PORT': '5432', 'TEST_CHARSET': 'UTF-8', }, 'slave': { 'ENGINE': 'django.contrib.gis.db.backends.postgis', 'NAME': 'dbname', 'USER': 'gorodechnyj', 'PASSWORD': 'pass', 'HOST': 'host', 'PORT': '5432', 'TEST_CHARSET': 'UTF-8', 'TEST_MIRROR': 'default' } } if len(DATABASES) > 1 : DATABASE_ROUTERS = ['path.to.MasterSlaveRouter']
Router configuration:
import random class MasterSlaveRouter(object): ''' A router that sets up a simple master/slave configuration ''' def db_for_read(self, model, **hints): return random.choice(['default', 'slave']) def db_for_write(self, model, **hints): "Point all write operations to the master" return 'default' def allow_relation(self, obj1, obj2, **hints): "Allow any relation between two objects" return True def allow_syncdb(self, db, model): if db == 'default': return True return False
What I got in case of
python manage.py test
is this stack trace:
Traceback (most recent call last): File "manage.py", line 15, in <module> execute_manager(settings) File "/usr/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 438, in execute_manager utility.execute() File "/usr/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 379, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/usr/local/lib/python2.7/site-packages/django/core/management/base.py", line 191, in run_from_argv self.execute(*args, **options.__dict__) File "/usr/local/lib/python2.7/site-packages/django/core/management/base.py", line 220, in execute output = self.handle(*args, **options) File "/usr/local/lib/python2.7/site-packages/django/core/management/commands/test.py", line 37, in handle failures = test_runner.run_tests(test_labels) File "/usr/local/lib/python2.7/site-packages/django/test/simple.py", line 359, in run_tests old_config = self.setup_databases() File "/usr/local/lib/python2.7/site-packages/django/test/simple.py", line 296, in setup_databases test_db_name = connection.creation.create_test_db(self.verbosity, autoclobber=not self.interactive) File "/usr/local/lib/python2.7/site-packages/django/db/backends/creation.py", line 366, in create_test_db load_initial_data=False) File "/usr/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 166, in call_command return klass.execute(*args, **defaults) File "/usr/local/lib/python2.7/site-packages/django/core/management/base.py", line 220, in execute output = self.handle(*args, **options) File "/usr/local/lib/python2.7/site-packages/django/core/management/base.py", line 351, in handle return self.handle_noargs(**options) File "/usr/local/lib/python2.7/site-packages/django/core/management/commands/syncdb.py", line 109, in handle_noargs emit_post_sync_signal(created_models, verbosity, interactive, db) File "/usr/local/lib/python2.7/site-packages/django/core/management/sql.py", line 190, in emit_post_sync_signal interactive=interactive, db=db) File "/usr/local/lib/python2.7/site-packages/django/dispatch/dispatcher.py", line 172, in send response = receiver(signal=self, sender=sender, **named) File "/usr/local/lib/python2.7/site-packages/django/contrib/contenttypes/management.py", line 25, in update_contenttypes content_types.remove(ct) ValueError: list.remove(x): x not in list
Note:
See TracTickets
for help on using tickets.
This code was rewritten in r16739. Could you check if the problem still occurs with a recent svn checkout? Please reopen the ticket if it does.