Skip to content

use correct module imports to avoid conflicting models error while arting celery workers #142

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed

Conversation

ziafazal
Copy link
Contributor

Celery workers were not able to run due to conflicting models imports. This PR fixes the issue.

Here is the error trace

Traceback (most recent call last):
  File "./manage.py", line 116, in <module>
    execute_from_command_line([sys.argv[0]] + django_args)
  File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 354, in execute_from_command_line
    utility.execute()
  File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/django/core/management/__init__.py", line 346, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/djcelery/management/commands/celery.py", line 23, in run_from_argv
    ['{0[0]} {0[1]}'.format(argv)] + argv[2:],
  File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/celery/bin/celery.py", line 769, in execute_from_commandline
    super(CeleryCommand, self).execute_from_commandline(argv)))
  File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/celery/bin/base.py", line 311, in execute_from_commandline
    return self.handle_argv(self.prog_name, argv[1:])
  File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/celery/bin/celery.py", line 761, in handle_argv
    return self.execute(command, argv)
  File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/celery/bin/celery.py", line 693, in execute
    ).run_from_argv(self.prog_name, argv[1:], command=argv[0])
  File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/celery/bin/worker.py", line 179, in run_from_argv
    return self(*args, **options)
  File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/celery/bin/base.py", line 274, in __call__
    ret = self.run(*args, **kwargs)
  File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/celery/bin/worker.py", line 212, in run
    state_db=self.node_format(state_db, hostname), **kwargs
  File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/celery/worker/__init__.py", line 95, in __init__
    self.app.loader.init_worker()
  File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/celery/loaders/base.py", line 128, in init_worker
    self.import_default_modules()
  File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/celery/loaders/base.py", line 116, in import_default_modules
    signals.import_modules.send(sender=self.app)
  File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/celery/utils/dispatch/signal.py", line 166, in send
    response = receiver(signal=self, sender=sender, **named)
  File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/amqp/utils.py", line 42, in __call__
    self.set_error_state(exc)
  File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/amqp/utils.py", line 39, in __call__
    **dict(self.kwargs, **kwargs) if self.kwargs else kwargs
  File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/celery/app/base.py", line 329, in _autodiscover_tasks
    self.loader.autodiscover_tasks(packages, related_name)
  File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/celery/loaders/base.py", line 251, in autodiscover_tasks
    related_name) if mod)
  File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/celery/loaders/base.py", line 272, in autodiscover_tasks
    return [find_related_module(pkg, related_name) for pkg in packages]
  File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/celery/loaders/base.py", line 298, in find_related_module
    return importlib.import_module('{0}.{1}'.format(package, related_name))
  File "/usr/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/edx/app/edxapp/venvs/edxapp/src/problem-builder/problem_builder/tasks.py", line 8, in <module>
    from lms.djangoapps.instructor_task.models import ReportStore
  File "/edx/app/edxapp/edx-platform/lms/djangoapps/instructor_task/models.py", line 35, in <module>
    class InstructorTask(models.Model):
  File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/django/db/models/base.py", line 309, in __new__
    new_class._meta.apps.register_model(new_class._meta.app_label, new_class)
  File "/edx/app/edxapp/venvs/edxapp/local/lib/python2.7/site-packages/django/apps/registry.py", line 221, in register_model
    (model_name, app_label, app_models[model_name], model))
RuntimeError: Conflicting 'instructortask' models in application 'instructor_task': <class 'instructor_task.models.InstructorTask'> and <class 'lms.djangoapps.instructor_task.models.InstructorTask'>.

@pomegranited would you please review and merge?
@bradenmacdonald FYI.

@pomegranited
Copy link
Member

Hi @ziafazal , we had to change the paths to use lms.djangoapps.instructor_task.models to match what was used in edx-platform. So I think the solution is to fix the paths in edx-platform to make them match upstream?

cf #128, edx/edx-platform@54d34e8

CC @bradenmacdonald

@bradenmacdonald
Copy link
Member

Different paths are needed in Eucalyptus vs. post-Eucalyptus. This master branch uses the post-Eucalyptus version, and I don't want to change that. We could create a "legacy" branch that includes that commit, and use it on the solutions fork until they upgrade to Ficus.

@pomegranited
Copy link
Member

@ziafazal Does @bradenmacdonald 's suggestion work for you?

@ziafazal
Copy link
Contributor Author

@pomegranited we can close this PR since we cherry picked 54d34e8 into Eucalyptus upgrade of solutions fork.

@ziafazal ziafazal closed this Feb 15, 2017
@pomegranited
Copy link
Member

Thanks, @ziafazal !

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants