[users at bb.net] Copying and reusing a masters directory in

Pierre Tardy tardyp at gmail.com
Sun Apr 30 08:12:01 UTC 2017


Hi Alvaro,
Did you manage to resolve your issue.
At first I was thinking of a missing upgrade, but it does not really make
full sense.

             q = sa.select([sch_tbl.c.id, sch_tbl.c.name, sch_tbl.c.enabled,
"/usr/home/nightstalker/host/bb-master-v2/local/lib/python2.
7/site-packages/sqlalchemy/util/_collections.py",
line 212, in __getattr__
             raise AttributeError(key)
         exceptions.AttributeError: enabled

I I understand correctly sqlalchemy, the 'enabled' attribute is described
in model.py, not in the actual database, as we don't use autoload mechanism
except in tests.
The only reason I could see is a mixed version of buildbot installation.
model.py would come from a pre-0.9.5 install, while scheduler.py would come
from 0.9.6

Pierre

On Thu, Apr 27, 2017 at 1:56 AM Alvaro Erickson <aerickson at xkl.com> wrote:

> Greetings all,
>
> So, I copied my master.cfg and buildbot.tac (originally created as a
> movable buildbot.tac file) from an old Buildbot master directory to a
> new one. Now, I have stopped the old master and its worker. But, when I
> attempt to start the Buildbot master I receive the following error:
>
> 2017-04-26 13:57:20-0700 [-] Setting up database with URL
> 'postgresql://mydb:xxxx@my.site.org/mydb'
> 2017-04-26 13:57:20-0700 [-] doing housekeeping for master 1
> myserver:/usr/home/nightstalker/host/bb-master/master
> 2017-04-26 13:57:20-0700 [-] Got fatal Exception on DB
>          Traceback (most recent call last):
>          Failure: exceptions.AttributeError: enabled
>
> 2017-04-26 13:57:20-0700 [-] while starting BuildMaster
>          Traceback (most recent call last):
>            File
>
> "/usr/home/nightstalker/host/bb-master-v2/local/lib/python2.7/site-packages/twisted/internet/defer.py",
> line 653, in _runCallbacks
>              current.result = callback(current.result, *args, **kw)
>            File
>
> "/usr/home/nightstalker/host/bb-master-v2/local/lib/python2.7/site-packages/twisted/internet/defer.py",
> line 1357, in gotResult
>              _inlineCallbacks(r, g, deferred)
>            File
>
> "/usr/home/nightstalker/host/bb-master-v2/local/lib/python2.7/site-packages/twisted/internet/defer.py",
> line 1299, in _inlineCallbacks
>              result = result.throwExceptionIntoGenerator(g)
>            File
>
> "/usr/home/nightstalker/host/bb-master-v2/local/lib/python2.7/site-packages/twisted/python/failure.py",
> line 393, in throwExceptionIntoGenerator
>              return g.throw(self.type, self.value, self.tb)
>          --- <exception caught here> ---
>            File
>
> "/usr/home/nightstalker/host/bb-master-v2/local/lib/python2.7/site-packages/buildbot/master.py",
> line 304, in startService
>              yield self.data.updates.expireMasters(forceHouseKeeping=True)
>            File
>
> "/usr/home/nightstalker/host/bb-master-v2/local/lib/python2.7/site-packages/twisted/internet/defer.py",
> line 1299, in _inlineCallbacks
>              result = result.throwExceptionIntoGenerator(g)
>            File
>
> "/usr/home/nightstalker/host/bb-master-v2/local/lib/python2.7/site-packages/twisted/python/failure.py",
> line 393, in throwExceptionIntoGenerator
>              return g.throw(self.type, self.value, self.tb)
>            File
>
> "/usr/home/nightstalker/host/bb-master-v2/local/lib/python2.7/site-packages/buildbot/data/masters.py",
> line 127, in expireMasters
>              yield self._masterDeactivatedHousekeeping(m['id'], m['name'])
>            File
>
> "/usr/home/nightstalker/host/bb-master-v2/local/lib/python2.7/site-packages/twisted/internet/defer.py",
> line 1299, in _inlineCallbacks
>              result = result.throwExceptionIntoGenerator(g)
>            File
>
> "/usr/home/nightstalker/host/bb-master-v2/local/lib/python2.7/site-packages/twisted/python/failure.py",
> line 393, in throwExceptionIntoGenerator
>              return g.throw(self.type, self.value, self.tb)
>            File
>
> "/usr/home/nightstalker/host/bb-master-v2/local/lib/python2.7/site-packages/buildbot/data/masters.py",
> line 147, in _masterDeactivatedHousekeeping
>              masterid=masterid)
>            File
>
> "/usr/home/nightstalker/host/bb-master-v2/local/lib/python2.7/site-packages/twisted/internet/defer.py",
> line 1299, in _inlineCallbacks
>              result = result.throwExceptionIntoGenerator(g)
>            File
>
> "/usr/home/nightstalker/host/bb-master-v2/local/lib/python2.7/site-packages/twisted/python/failure.py",
> line 393, in throwExceptionIntoGenerator
>              return g.throw(self.type, self.value, self.tb)
>            File
>
> "/usr/home/nightstalker/host/bb-master-v2/local/lib/python2.7/site-packages/buildbot/data/schedulers.py",
> line 145, in _masterDeactivated
>              masterid=masterid)
>            File
>
> "/usr/home/nightstalker/host/bb-master-v2/local/lib/python2.7/site-packages/twisted/python/threadpool.py",
> line 250, in inContext
>              result = inContext.theWork()
>            File
>
> "/usr/home/nightstalker/host/bb-master-v2/local/lib/python2.7/site-packages/twisted/python/threadpool.py",
> line 266, in <lambda>
>              inContext.theWork = lambda: context.call(ctx, func, *args,
> **kw)
>            File
>
> "/usr/home/nightstalker/host/bb-master-v2/local/lib/python2.7/site-packages/twisted/python/context.py",
> line 122, in callWithContext
>              return self.currentContext().callWithContext(ctx, func,
> *args, **kw)
>            File
>
> "/usr/home/nightstalker/host/bb-master-v2/local/lib/python2.7/site-packages/twisted/python/context.py",
> line 85, in callWithContext
>              return func(*args,**kw)
>            File
>
> "/usr/home/nightstalker/host/bb-master-v2/local/lib/python2.7/site-packages/buildbot/db/pool.py",
> line 183, in __thd
>              rv = callable(arg, *args, **kwargs)
>            File
>
> "/usr/home/nightstalker/host/bb-master-v2/local/lib/python2.7/site-packages/buildbot/db/schedulers.py",
> line 194, in thd
>              q = sa.select([sch_tbl.c.id, sch_tbl.c.name,
> sch_tbl.c.enabled,
>            File
>
> "/usr/home/nightstalker/host/bb-master-v2/local/lib/python2.7/site-packages/sqlalchemy/util/_collections.py",
> line 212, in __getattr__
>              raise AttributeError(key)
>          exceptions.AttributeError: enabled
>
>
> Now, the error appears to be when the Buildbot attempts to access
> "enabled" column of the schedulers table. I tried to see if I could
> access it using a Python interactive session. Here is my code:
>
>  >>> import sqlalchemy as sa
>  >>> import sqlalchemy.exc
>  >>> from buildbot.util import sautils
>  >>> db =
> sqlalchemy.create_engine('postgresql://username:password@my.site.org/db')
>  >>> metadata2 = sa.MetaData()
>  >>> metadata2.bind = db
>  >>> sch_tbl = sautils.Table('schedulers', metadata2, autoload=True)
>
>
>  >>> sch_tbl.c
> <sqlalchemy.sql.base.ImmutableColumnCollection object at 0x7fa052622500>
>  >>> print str(sch_tbl.c)
>
>
> ['schedulers.id', 'schedulers.name', 'schedulers.name_hash',
> 'schedulers.enabled']
>  >>> sch_tbl.c.id
> Column('id', INTEGER(), table=<schedulers>, primary_key=True,
> nullable=False,
> server_default=DefaultClause(<sqlalchemy.sql.elements.TextClause object
> at 0x7fa05173ea10>, for_update=False))
>  >>> sch_tbl.c.enabled
> Column('enabled', SMALLINT(), table=<schedulers>, nullable=False,
> server_default=DefaultClause(<sqlalchemy.sql.elements.TextClause object
> at 0x7fa05173e6d0>, for_update=False))
>  >>> from sqlalchemy.orm import sessionmaker
>  >>> bb_session = sessionmaker()
>  >>> bb_session.configure(bind=db)
>
>
>  >>> my_session = bb_session()
>  >>> q = my_session.query(sch_tbl)
>  >>> q.column_descriptions
> [{'aliased': False, 'expr': Column('id', INTEGER(), table=<schedulers>,
> primary_key=True, nullable=False,
> server_default=DefaultClause(<sqlalchemy.sql.elements.TextClause object
> at 0x7fa0517
> 3ea10>, for_update=False)), 'type': INTEGER(), 'name': 'id', 'entity':
> None}, {'aliased': False, 'expr': Column('name', TEXT(),
> table=<schedulers>, nullable=False), 'type': TEXT(), 'name': '
> name', 'entity': None}, {'aliased': False, 'expr': Column('name_hash',
> VARCHAR(length=40), table=<schedulers>, nullable=False), 'type':
> VARCHAR(length=40), 'name': 'name_hash', 'entity': Non
> e}, {'aliased': False, 'expr': Column('enabled', SMALLINT(),
> table=<schedulers>, nullable=False,
> server_default=DefaultClause(<sqlalchemy.sql.elements.TextClause object
> at 0x7fa05173e6d0>, f
> or_update=False)), 'type': SMALLINT(), 'name': 'enabled', 'entity': None}]
>  >>> q = my_session.query(sch_tbl).filter_by(enabled=1)
>  >>> q
> <sqlalchemy.orm.query.Query object at 0x7fa0512efcd0>
>
> So, I was able to access the schedulers table and query the "enabled"
> column. Now, does anyone know why I am seeing the above error?
>
> Regards,
>
> Alvaro
>
>
>
> The information contained in this e-mail message may be privileged,
> confidential and protected from disclosure.
>  If you are not the intended recipient, any dissemination, distribution or
> copying is strictly prohibited.
>  If you think that you have received this e-mail message in error, please
> e-mail the sender at the above e-mail address.
>
> _______________________________________________
> users mailing list
> users at buildbot.net
> https://lists.buildbot.net/mailman/listinfo/users
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.buildbot.net/pipermail/users/attachments/20170430/59b11ee4/attachment.html>


More information about the users mailing list