#460 `build_module_locally` results into `RuntimeError: working outside of application context`
Closed: Fixed Opened by ttomecek.

config.py:

PDC_URL = 'http://pdc.fedoraproject.org/rest_api/v1'

Issue:

Traceback (most recent call last):
  File "/usr/bin/mbs-manager", line 9, in <module>
    load_entry_point('module-build-service', 'console_scripts', 'mbs-manager')()
  File "/tmp/module_build_service/module_build_service/manage.py", line 316, in manager_wrapper
    manager.run()
  File "/usr/lib/python2.7/site-packages/Flask_Script-2.0.5-py2.7.egg/flask_script/__init__.py", line 412, in run
    result = self.handle(sys.argv[0], sys.argv[1:])
  File "/usr/lib/python2.7/site-packages/Flask_Script-2.0.5-py2.7.egg/flask_script/__init__.py", line 383, in handle
    res = handle(*args, **config)
  File "/usr/lib/python2.7/site-packages/Flask_Script-2.0.5-py2.7.egg/flask_script/commands.py", line 216, in __call__
    return self.run(*args, **kwargs)
  File "/tmp/module_build_service/module_build_service/manage.py", line 152, in build_module_locally
    submit_module_build_from_scm(username, url, "master", allow_local_url=True)
  File "/tmp/module_build_service/module_build_service/utils.py", line 658, in submit_module_build_from_scm
    return submit_module_build(username, url, mmd, scm, yaml, optional_params)
  File "/tmp/module_build_service/module_build_service/utils.py", line 700, in submit_module_build
    record_component_builds(scm, mmd, module)
  File "/tmp/module_build_service/module_build_service/utils.py", line 583, in record_component_builds
    format_mmd(mmd, module.scmurl)
  File "/tmp/module_build_service/module_build_service/utils.py", line 520, in format_mmd
    pdc = module_build_service.pdc.get_pdc_client_session(conf)
  File "/tmp/module_build_service/module_build_service/pdc.py", line 57, in get_pdc_client_session
    insecure=config.pdc_insecure,
  File "/usr/lib/python2.7/site-packages/pdc_client/__init__.py", line 157, in __init__
    token = self.obtain_token()
  File "/usr/lib/python2.7/site-packages/pdc_client/__init__.py", line 171, in obtain_token
    return self.auth[end_point]._()['token']
  File "<string>", line 1, in <lambda>
  File "/usr/lib/python2.7/site-packages/beanbag/namespace.py", line 131, in fn
    *args, **kwargs)
  File "/usr/lib/python2.7/site-packages/beanbag/url_v1.py", line 102, in call
    return self.make_request(path, verb, kwargs, body)
  File "/usr/lib/python2.7/site-packages/beanbag/url_v1.py", line 155, in make_request
    "Bad response code: %d" % (r.status_code,))
beanbag.bbexcept.BeanBagException: Bad response code: 401

This is running from container using @asamalik's build-module.

Is it possible to access production PDC without authentication?


I would say it is as it works fine for me :) I'm not using any fancy container, though.

Traceback (most recent call last):
  File "/usr/bin/mbs-manager", line 9, in <module>
    load_entry_point('module-build-service', 'console_scripts', 'mbs-manager')()
  File "/tmp/module_build_service/module_build_service/manage.py", line 316, in manager_wrapper
    manager.run()
  File "/usr/lib/python2.7/site-packages/Flask_Script-2.0.5-py2.7.egg/flask_script/__init__.py", line 412, in run
    result = self.handle(sys.argv[0], sys.argv[1:])
  File "/usr/lib/python2.7/site-packages/Flask_Script-2.0.5-py2.7.egg/flask_script/__init__.py", line 383, in handle
    res = handle(*args, **config)
  File "/usr/lib/python2.7/site-packages/Flask_Script-2.0.5-py2.7.egg/flask_script/commands.py", line 216, in __call__
    return self.run(*args, **kwargs)
  File "/tmp/module_build_service/module_build_service/manage.py", line 152, in build_module_locally
    submit_module_build_from_scm(username, url, "master", allow_local_url=True)
  File "/tmp/module_build_service/module_build_service/utils.py", line 659, in submit_module_build_from_scm
    return submit_module_build(username, url, mmd, scm, yaml, optional_params)
  File "/tmp/module_build_service/module_build_service/utils.py", line 701, in submit_module_build
    record_component_builds(scm, mmd, module)
  File "/tmp/module_build_service/module_build_service/utils.py", line 584, in record_component_builds
    format_mmd(mmd, module.scmurl)
  File "/tmp/module_build_service/module_build_service/utils.py", line 539, in format_mmd
    ' version in PDC'.format(module_name))
RuntimeError: The module "base-runtime" didn't contain either a commit hash or a version in PDC

I printed the mmd:

2017-03-27 11:51:06,231 - MainThread - root - WARNING - The version for {'version': 'master', 'name': 'base-runtime'} was not in PDC
<ModuleMetadata: mdversion: 1, name: 'container-runtime', stream: 'master', version: 20170324100143, summary: 'Automates deployment of containerized applications', description: 'Docker is an open-source engine that automates the deployment of any application as a lightweight, portable, self-sufficient container that will run virtually anywhere.\nDocker containers can encapsulate any payload, and will run consistently on and between virtually any server. The same container that a developer builds and tests on a laptop will run at scale, in production*, on VMs, bare-metal servers, OpenStack clusters, public instances, or combinations of the above.', module_licenses: ['MIT'], content_licenses: ['ASL 2.0'], buildrequires: {'base-runtime': 'master'}, requires: {'base-runtime': 'master'}, community: 'https://projectatomic.io', documentation: 'http://www.projectatomic.io/docs/', tracker: 'https://github.com/projectatomic/docker', xmd: {'mbs': {'scmurl': u'file:////source/container-runtime?#master', 'commit': 'a9b6cea6b0820c3aa54858bbdb44b01457b5d9c1', 'buildrequires': {'base-runtime': 'master'}}}, profiles: {'default': <ModuleProfile: description: '', rpms: ['docker']>, 'full': <ModuleProfile: description: 'Install all packages.', rpms: ['docker', 'docker-common', 'docker-logrotate', 'docker-lvm-plugin', 'docker-novolume-plugin', 'docker-rhel-push-plugin', 'docker-rhsubscription', 'docker-v1.10-migrator', 'docker-vim', 'docker-zsh-completion']>, 'zsh': <ModuleProfile: description: 'Profile for zsh users which installs completion.', rpms: ['docker', 'docker-zsh-completion']>, 'minimal': <ModuleProfile: description: 'Minimal profile installing only the docker package.', rpms: ['docker']>, 'vim': <ModuleProfile: description: 'Profile for vim users which installs Dockerfile syntax support for vim.', rpms: ['docker', 'docker-vim']>}, api: <ModuleAPI: rpms: ['docker', 'docker-common', 'docker-logrotate', 'docker-lvm-plugin', 'docker-novolume-plugin', 'docker-rhel-push-plugin', 'docker-rhsubscription', 'docker-v1.10-migrator', 'docker-vim', 'docker-zsh-completion']>, filter: <ModuleFilter: rpms: ['golang', 'pcre', 'perl']>, components: <ModuleComponents: modules: [], rpms: ['docker', 'golang', 'pcre', 'perl']>>
2017-03-27 11:51:06,236 - MainThread - module_build_service - INFO - <ModuleBuild container-runtime, stream=master, version=20170324100143, state 'failed', batch 0, state_reason None>, state 0->4

Getting further:

Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/moksha/hub/api/consumer.py", line 191, in _work
    self.consume(message)
  File "/tmp/module_build_service/module_build_service/scheduler/consumer.py", line 138, in consume
    if self.stop_condition and self.stop_condition(message):
  File "/tmp/module_build_service/module_build_service/scheduler/__init__.py", line 58, in stop_condition
    module = session.query(module_build_service.models.ModuleBuild)\
  File "build/bdist.linux-x86_64/egg/sqlalchemy/orm/scoping.py", line 157, in do
    return getattr(self.registry(), name)(*args, **kwargs)
  File "build/bdist.linux-x86_64/egg/sqlalchemy/util/_collections.py", line 990, in __call__
    return self.registry.setdefault(key, self.createfunc())
  File "build/bdist.linux-x86_64/egg/sqlalchemy/orm/session.py", line 2829, in __call__
    return self.class_(**local_kw)
  File "/usr/lib/python2.7/site-packages/Flask_SQLAlchemy-2.2-py2.7.egg/flask_sqlalchemy/__init__.py", line 145, in __init__
    bind = options.pop('bind', None) or db.engine
  File "/usr/lib/python2.7/site-packages/Flask_SQLAlchemy-2.2-py2.7.egg/flask_sqlalchemy/__init__.py", line 922, in engine
    return self.get_engine()
  File "/usr/lib/python2.7/site-packages/Flask_SQLAlchemy-2.2-py2.7.egg/flask_sqlalchemy/__init__.py", line 941, in get_engine
    return connector.get_engine()
  File "/usr/lib/python2.7/site-packages/Flask_SQLAlchemy-2.2-py2.7.egg/flask_sqlalchemy/__init__.py", line 533, in get_engine
    uri = self.get_uri()
  File "/usr/lib/python2.7/site-packages/Flask_SQLAlchemy-2.2-py2.7.egg/flask_sqlalchemy/__init__.py", line 524, in get_uri
    return self._app.config['SQLALCHEMY_DATABASE_URI']
  File "/usr/lib/python2.7/site-packages/werkzeug/local.py", line 343, in __getattr__
    return getattr(self._get_current_object(), name)
  File "/usr/lib/python2.7/site-packages/werkzeug/local.py", line 302, in _get_current_object
    return self.__local()
  File "/usr/lib/python2.7/site-packages/flask/globals.py", line 34, in _find_app
    raise RuntimeError('working outside of application context')
RuntimeError: working outside of application context

And my module build is stuck in this one.

Logs:

2017-03-27 13:52:28,058 - MainThread - module_build_service - INFO - <ModuleBuild container-runtime, stream=master, version=20170324100143, state 'wait', batch 0, state_reason None>, state 0->1
2017-03-27 13:52:28,090 - MainThread - module_build_service - INFO - root submitted build of container-runtime, stream=master, version=20170324100143
2017-03-27 13:52:28,090 - MainThread - moksha.hub - INFO - Loading the Moksha Hub
2017-03-27 13:52:28,090 - MainThread - moksha.hub - WARNING - No 'zmq_publish_endpoints' set.  Are you sure?
2017-03-27 13:52:29,092 - MainThread - moksha.hub - INFO - Loading Consumers
2017-03-27 13:52:29,092 - MainThread - moksha.hub - DEBUG - Loading explicitly passed entry-points.
2017-03-27 13:52:29,093 - MainThread - fedmsg - DEBUG - mbsconsumer is True
2017-03-27 13:52:29,093 - MainThread - fedmsg - INFO -   enabled by config  - module_build_service.scheduler.consumer:MBSConsumer
2017-03-27 13:52:29,093 - MainThread - moksha.hub - DEBUG - Subscribing to consumer topic org.fedoraproject.dev.buildsys.
2017-03-27 13:52:29,094 - MainThread - moksha.hub - DEBUG - Subscribing to org.fedoraproject.dev.buildsys. on 'ZmqEndpoint(type='connect', address='ipc:///dev/null')'
2017-03-27 13:52:29,094 - MainThread - moksha.hub - DEBUG - Creating new txzmq factory.
2017-03-27 13:52:29,095 - MainThread - moksha.hub - DEBUG - Subscribing to consumer topic org.fedoraproject.dev.mbs.
2017-03-27 13:52:29,095 - MainThread - moksha.hub - DEBUG - Subscribing to org.fedoraproject.dev.mbs. on 'ZmqEndpoint(type='connect', address='ipc:///dev/null')'
2017-03-27 13:52:29,095 - MainThread - moksha.hub - DEBUG - Using cached txzmq factory.
2017-03-27 13:52:29,095 - MainThread - moksha.hub - DEBUG - Subscribing to consumer topic org.fedoraproject.dev.copr.
2017-03-27 13:52:29,096 - MainThread - moksha.hub - DEBUG - Subscribing to org.fedoraproject.dev.copr. on 'ZmqEndpoint(type='connect', address='ipc:///dev/null')'
2017-03-27 13:52:29,096 - MainThread - moksha.hub - DEBUG - Using cached txzmq factory.
2017-03-27 13:52:29,096 - MainThread - moksha.hub - DEBUG - Subscribing to consumer topic org.fedoraproject.stg.buildsys.
2017-03-27 13:52:29,096 - MainThread - moksha.hub - DEBUG - Subscribing to org.fedoraproject.stg.buildsys. on 'ZmqEndpoint(type='connect', address='ipc:///dev/null')'
2017-03-27 13:52:29,096 - MainThread - moksha.hub - DEBUG - Using cached txzmq factory.
2017-03-27 13:52:29,096 - MainThread - moksha.hub - DEBUG - Subscribing to consumer topic org.fedoraproject.stg.mbs.
2017-03-27 13:52:29,096 - MainThread - moksha.hub - DEBUG - Subscribing to org.fedoraproject.stg.mbs. on 'ZmqEndpoint(type='connect', address='ipc:///dev/null')'
2017-03-27 13:52:29,096 - MainThread - moksha.hub - DEBUG - Using cached txzmq factory.
2017-03-27 13:52:29,097 - MainThread - moksha.hub - DEBUG - Subscribing to consumer topic org.fedoraproject.stg.copr.
2017-03-27 13:52:29,097 - MainThread - moksha.hub - DEBUG - Subscribing to org.fedoraproject.stg.copr. on 'ZmqEndpoint(type='connect', address='ipc:///dev/null')'
2017-03-27 13:52:29,097 - MainThread - moksha.hub - DEBUG - Using cached txzmq factory.
2017-03-27 13:52:29,105 - MainThread - fedmsg - INFO - No backlog handling.  status: None, url: None
2017-03-27 13:52:29,106 - MainThread - moksha.hub - INFO - Loading Producers
2017-03-27 13:52:29,106 - MainThread - moksha.hub - DEBUG - Loading explicitly passed entry-points.
2017-03-27 13:52:29,106 - MainThread - moksha.hub - INFO - Running the MokshaHub reactor
2017-03-27 13:52:29,106 - MainThread - moksha.hub - INFO - Suggesting threadpool size at 2
2017-03-27 13:52:29,107 - PoolThread-twisted.internet.reactor-0 - moksha.hub - DEBUG - 'MBSConsumer' thread 140012335113984 | Worker thread picking a message.
2017-03-27 13:52:29,107 - PoolThread-twisted.internet.reactor-0 - module_build_service - INFO - Skipping crypto validation for MBSModule('local module build', 1, 1)
2017-03-27 13:52:29,108 - PoolThread-twisted.internet.reactor-0 - module_build_service - DEBUG - Received MBSModule('local module build', 1, 1)
2017-03-27 13:52:29,109 - PoolThread-twisted.internet.reactor-0 - module_build_service - DEBUG - Received a message with an ID of "local module build" and of type "MBSModule"
2017-03-27 13:52:29,112 - PoolThread-twisted.internet.reactor-0 - module_build_service - DEBUG - Calling wait: MBSModule, local module build
2017-03-27 13:52:29,130 - PoolThread-twisted.internet.reactor-0 - module_build_service - INFO - Found build=<ModuleBuild container-runtime, stream=master, version=20170324100
143, state 'wait', batch 0, state_reason None> from message
2017-03-27 13:52:29,131 - PoolThread-twisted.internet.reactor-0 - module_build_service - DEBUG - WARNING: get_url_for() has been called without the Flask app_context. That ca
n lead to SQLAlchemy errors caused by multiple session being used in the same time.
2017-03-27 13:52:29,137 - PoolThread-twisted.internet.reactor-0 - module_build_service - INFO - <ModuleBuild container-runtime, stream=master, version=20170324100143, state '
failed', batch 0, state_reason 'working outside of application context'>, state 1->4
2017-03-27 13:52:29,137 - PoolThread-twisted.internet.reactor-0 - module_build_service - DEBUG - WARNING: get_url_for() has been called without the Flask app_context. That ca
n lead to SQLAlchemy errors caused by multiple session being used in the same time.
2017-03-27 13:52:29,138 - PoolThread-twisted.internet.reactor-0 - module_build_service - ERROR - Failed while handling MBSModule('local module build', 1, 1)
Traceback (most recent call last):
  File "/tmp/module_build_service/module_build_service/scheduler/consumer.py", line 134, in consume
    self.process_message(session, msg)
  File "/tmp/module_build_service/module_build_service/scheduler/consumer.py", line 212, in process_message
    state_reason=str(e))
  File "/tmp/module_build_service/module_build_service/models.py", line 210, in transition
    msg=self.json(),  # Note the state is "init" here...
  File "/tmp/module_build_service/module_build_service/models.py", line 251, in json
    "tasks": self.tasks(),
  File "/tmp/module_build_service/module_build_service/models.py", line 296, in tasks
    for build in ComponentBuild.query\
  File "/usr/lib/python2.7/site-packages/Flask_SQLAlchemy-2.2-py2.7.egg/flask_sqlalchemy/__init__.py", line 498, in __get__
    return type.query_class(mapper, session=self.sa.session())
  File "build/bdist.linux-x86_64/egg/sqlalchemy/orm/scoping.py", line 78, in __call__
    return self.registry()
  File "build/bdist.linux-x86_64/egg/sqlalchemy/util/_collections.py", line 990, in __call__
    return self.registry.setdefault(key, self.createfunc())
  File "build/bdist.linux-x86_64/egg/sqlalchemy/orm/session.py", line 2829, in __call__
    return self.class_(**local_kw)
  File "/usr/lib/python2.7/site-packages/Flask_SQLAlchemy-2.2-py2.7.egg/flask_sqlalchemy/__init__.py", line 145, in __init__
    bind = options.pop('bind', None) or db.engine
  File "/usr/lib/python2.7/site-packages/Flask_SQLAlchemy-2.2-py2.7.egg/flask_sqlalchemy/__init__.py", line 922, in engine
    return self.get_engine()
  File "/usr/lib/python2.7/site-packages/Flask_SQLAlchemy-2.2-py2.7.egg/flask_sqlalchemy/__init__.py", line 941, in get_engine
    return connector.get_engine()
  File "/usr/lib/python2.7/site-packages/Flask_SQLAlchemy-2.2-py2.7.egg/flask_sqlalchemy/__init__.py", line 533, in get_engine
    uri = self.get_uri()
  File "/usr/lib/python2.7/site-packages/Flask_SQLAlchemy-2.2-py2.7.egg/flask_sqlalchemy/__init__.py", line 524, in get_uri
    return self._app.config['SQLALCHEMY_DATABASE_URI']
  File "/usr/lib/python2.7/site-packages/werkzeug/local.py", line 343, in __getattr__
    return getattr(self._get_current_object(), name)
  File "/usr/lib/python2.7/site-packages/werkzeug/local.py", line 302, in _get_current_object
    return self.__local()
  File "/usr/lib/python2.7/site-packages/flask/globals.py", line 34, in _find_app
    raise RuntimeError('working outside of application context')
RuntimeError: working outside of application context
2017-03-27 13:52:29,141 - PoolThread-twisted.internet.reactor-0 - fedmsg - ERROR - MBSModule('local module build', 1, 1)
Traceback (most recent call last):
  File "/usr/lib/python2.7/site-packages/moksha/hub/api/consumer.py", line 191, in _work
    self.consume(message)
  File "/tmp/module_build_service/module_build_service/scheduler/consumer.py", line 138, in consume
    if self.stop_condition and self.stop_condition(message):
  File "/tmp/module_build_service/module_build_service/scheduler/__init__.py", line 58, in stop_condition
    module = session.query(module_build_service.models.ModuleBuild)\
  File "build/bdist.linux-x86_64/egg/sqlalchemy/orm/scoping.py", line 157, in do
    return getattr(self.registry(), name)(*args, **kwargs)
  File "build/bdist.linux-x86_64/egg/sqlalchemy/util/_collections.py", line 990, in __call__
    return self.registry.setdefault(key, self.createfunc())
  File "build/bdist.linux-x86_64/egg/sqlalchemy/orm/session.py", line 2829, in __call__
    return self.class_(**local_kw)
  File "/usr/lib/python2.7/site-packages/Flask_SQLAlchemy-2.2-py2.7.egg/flask_sqlalchemy/__init__.py", line 145, in __init__
    bind = options.pop('bind', None) or db.engine
  File "/usr/lib/python2.7/site-packages/Flask_SQLAlchemy-2.2-py2.7.egg/flask_sqlalchemy/__init__.py", line 922, in engine
    return self.get_engine()
  File "/usr/lib/python2.7/site-packages/Flask_SQLAlchemy-2.2-py2.7.egg/flask_sqlalchemy/__init__.py", line 941, in get_engine
    return connector.get_engine()
  File "/usr/lib/python2.7/site-packages/Flask_SQLAlchemy-2.2-py2.7.egg/flask_sqlalchemy/__init__.py", line 533, in get_engine
    uri = self.get_uri()
  File "/usr/lib/python2.7/site-packages/Flask_SQLAlchemy-2.2-py2.7.egg/flask_sqlalchemy/__init__.py", line 524, in get_uri
    return self._app.config['SQLALCHEMY_DATABASE_URI']
  File "/usr/lib/python2.7/site-packages/werkzeug/local.py", line 343, in __getattr__
    return getattr(self._get_current_object(), name)
  File "/usr/lib/python2.7/site-packages/werkzeug/local.py", line 302, in _get_current_object
    return self.__local()
  File "/usr/lib/python2.7/site-packages/flask/globals.py", line 34, in _find_app
    raise RuntimeError('working outside of application context')
RuntimeError: working outside of application context
2017-03-27 13:52:29,142 - PoolThread-twisted.internet.reactor-0 - moksha.hub - DEBUG - 'MBSConsumer' thread 140012335113984 | Going back to waiting on the incoming queue.

The tracebacks are from two different parts of code. This is running in container which I built using dockerfile from this repo.

No longer hitting this, closing. (resolved by latest version, which @asamalik provided in his build_module).

Metadata Update from @ttomecek:
- Issue close_status updated to: Fixed
- Issue status updated to: Closed (was: Open)

This issue has been migrated to Fedora Forge:
https://forge.fedoraproject.org/koji/mbs/issues/460

Please continue any further discussion there.

Metadata