← Back to team overview

nova team mailing list archive

Re: Database is locked after running nova-manage

 

There's a blueprint on this topic (optparser) already, and a rather lengthy
debate went on early in nova development about whether config and CLI should
be overlapping. As I pointed out in IRC the other day, we went with the
gflags approach (e.g., doing it the way google does), simply because that
was what termie was most familiar with, and none of the rest of us had a
strong enough preference to argue (much).

As far as it being totally unexpected, it's not really. I had thought that
the debian package at least generated some flagfiles - I'm sure that the
chef cookbook does.

Joshua

On Fri, Sep 17, 2010 at 2:55 AM, Manuel Amador (Rudd-O)
<rudd-o@xxxxxxxxxx>wrote:

> Seriously -- it is totally unexpected that the command-line options double
> as
> the run-time configuration of the programs, or that a specified config file
> option invalid for a particular program does not make it exit with $? = 64.
>
> If the complexity of the stack is such that you are in practice going to
> require people to create config files, then I highly suggest not abusing
> the
> concept of command-line options for that; rather, just ship example
> configuration files with sane defaults, and document the alternatives right
> in
> the config file.
>
> This makes it *WAY* easier for the beginner user to get around to set up
> the
> openstack, and it *does not* break formal expectations of command line
> options.
>
> El Thursday, September 16, 2010, Vishvananda Ishaya escribió:
> > Yes we modified python-gflags to ignore unknown options.  This allows us
> to
> > specify options in dynamically imported files and to use the same
> flagfile
> > for all of the binaries if necessary.
> >
> > --help should show the majority of the available flags, but if there are
> > flags in dynamically imported files they will not show up.  For example
> > flags in volume/manager.py do not show up in --help, nor do the flags in
> > volume/driver.py, but they are used in nova-volume
> >
> > we should probably use flags.DECLARE to show the possible flags in
> --help,
> > but it is a little challenging with pluggable backends. Perhaps the best
> > solution would be to add a flags.DEFINE_plugin which works like
> > DEFINE_string but will import the specified file and add any other flags
> > that are defined in it.
> >
> > As far as validating the flags, it is a tradeoff.  Not validating means
> we
> > can throw a bunch of flags into a file and not care if there are extras
> > specified, but validating saves you from mistyped flags.  If we had the
> > above DEFINE support we could switch to validating flags again.
> >
> > Vish
> >
> > On Sep 16, 2010, at 5:16 PM, Manuel Amador (Rudd-O) wrote:
> > > So when you say flags, what you mean is command-line options?
> > >
> > > Then I have to report that I can pass any number of crazy nonsense
> > > options to the nova programs, and the programs do not validate them.
> > >
> > > I did not use pip.  I do not like to rely on non-package manager
> programs
> > > modifying my /usr.
> > >
> > > OK, so I can ignore the errors.
> > >
> > > I can see the project admin was created.
> > >
> > > THANKS!
> > >
> > > El Thursday, September 16, 2010, Vishvananda Ishaya escribió:
> > >> Those errors are normal.  SQLite isn't very good with multiple
> threads,
> > >> but it doesn't actually cause any real problems.
> > >>
> > >> Don't know why redis wasn't installed, it should have gotten it from
> the
> > >> pip requires.
> > >>
> > >> You can ignore the scheduler error, it is in the scheduler branch,
> which
> > >> hasn't been merged into trunk yet.
> > >>
> > >> nova uses python-gflags.  To set flags you can either use
> > >> --FLAGNAME=FLAGVALUE on the commandline when you run each of the bins
> or
> > >> you can stick a bunch of them into a file with one line per flag, like
> > >> so --s3_url=127.0.0.1
> > >> --auth_driver=nova.auth.ldapdriver.LdapDriver
> > >> and specify the file on the commandline:
> > >> ./nova-compute --flagfile=/path/to/flagfile
> > >>
> > >> If you have further questions, you might want to just jump in
> #openstack
> > >> and irc.freenode.net and we can discuss there.
> > >>
> > >> On Sep 16, 2010, at 2:20 PM, Manuel Amador (Rudd-O) wrote:
> > >>> When I ran
> > >>>
> > >>> bin/nova-manage project create admin admin
> > >>>
> > >>> Nova-volume said this:
> > >>>
> > >>> -------------------------
> > >>> ERROR:root:model server went away
> > >>>
> > >>> Traceback (most recent call last):
> > >>> File "/home/rudd-o/openstack/nova/nova/service.py", line 139, in
> > >>>
> > >>> report_state
> > >>>
> > >>>   service_ref = db.service_get(context, self.service_id)
> > >>>
> > >>> File "/home/rudd-o/openstack/nova/nova/db/api.py", line 56, in
> > >>> service_get
> > >>>
> > >>>   return IMPL.service_get(context, service_id)
> > >>>
> > >>> File "/home/rudd-o/openstack/nova/nova/db/sqlalchemy/api.py", line
> 50,
> > >>> in
> > >>>
> > >>> service_get
> > >>>
> > >>>   return models.Service.find(service_id)
> > >>>
> > >>> File "/home/rudd-o/openstack/nova/nova/db/sqlalchemy/models.py", line
> > >>> 79, in
> > >>>
> > >>> find
> > >>>
> > >>>   ).filter_by(deleted=deleted
> > >>>
> > >>> File "/usr/lib/python2.6/dist-packages/sqlalchemy/orm/query.py", line
> > >>> 1522,
> > >>>
> > >>> in one
> > >>>
> > >>>   ret = list(self)
> > >>>
> > >>> File "/usr/lib/python2.6/dist-packages/sqlalchemy/orm/query.py", line
> > >>> 1565,
> > >>>
> > >>> in __iter__
> > >>>
> > >>>   return self._execute_and_instances(context)
> > >>>
> > >>> File "/usr/lib/python2.6/dist-packages/sqlalchemy/orm/query.py", line
> > >>> 1570,
> > >>>
> > >>> in _execute_and_instances
> > >>>
> > >>>   mapper=self._mapper_zero_or_none())
> > >>>
> > >>> File "/usr/lib/python2.6/dist-packages/sqlalchemy/orm/session.py",
> line
> > >>> 735,
> > >>>
> > >>> in execute
> > >>>
> > >>>   clause, params or {})
> > >>>
> > >>> File "/usr/lib/python2.6/dist-packages/sqlalchemy/engine/base.py",
> line
> > >>>
> > >>> 1157, in execute
> > >>>
> > >>>   params)
> > >>>
> > >>> File "/usr/lib/python2.6/dist-packages/sqlalchemy/engine/base.py",
> line
> > >>>
> > >>> 1237, in _execute_clauseelement
> > >>>
> > >>>   return self.__execute_context(context)
> > >>>
> > >>> File "/usr/lib/python2.6/dist-packages/sqlalchemy/engine/base.py",
> line
> > >>>
> > >>> 1268, in __execute_context
> > >>>
> > >>>   context.parameters[0], context=context)
> > >>>
> > >>> File "/usr/lib/python2.6/dist-packages/sqlalchemy/engine/base.py",
> line
> > >>>
> > >>> 1367, in _cursor_execute
> > >>>
> > >>>   context)
> > >>>
> > >>> File "/usr/lib/python2.6/dist-packages/sqlalchemy/engine/base.py",
> line
> > >>>
> > >>> 1360, in _cursor_execute
> > >>>
> > >>>   context)
> > >>>
> > >>> File "/usr/lib/python2.6/dist-packages/sqlalchemy/engine/default.py",
> > >>> line
> > >>>
> > >>> 288, in do_execute
> > >>>
> > >>>   cursor.execute(statement, parameters)
> > >>>
> > >>> OperationalError: (OperationalError) database is locked u'SELECT
> > >>> services.created_at AS services_created_at, services.updated_at AS
> > >>> services_updated_at, services.deleted_at AS services_deleted_at,
> > >>> services.deleted AS services_deleted, services.id AS services_id,
> > >>> services.host AS services_host, services.binary AS services_binary,
> > >>> services.topic AS services_topic, services.report_count AS
> > >>> services_report_count \nFROM services \nWHERE services.id = ? AND
> > >>> services.deleted = ?' (2, False)
> > >>> 2010-09-16 14:19:17-0700 [-] (root): ERROR model server went away
> > >>> 2010-09-16 14:19:17-0700 [-] Traceback (most recent call last):
> > >>> 2010-09-16 14:19:17-0700 [-]   File "/home/rudd-
> > >>> o/openstack/nova/nova/service.py", line 139, in report_state
> > >>> 2010-09-16 14:19:17-0700 [-]     service_ref =
> db.service_get(context,
> > >>> self.service_id)
> > >>> 2010-09-16 14:19:17-0700 [-]   File "/home/rudd-
> > >>> o/openstack/nova/nova/db/api.py", line 56, in service_get
> > >>> 2010-09-16 14:19:17-0700 [-]     return IMPL.service_get(context,
> > >>> service_id) 2010-09-16 14:19:17-0700 [-]   File "/home/rudd-
> > >>> o/openstack/nova/nova/db/sqlalchemy/api.py", line 50, in service_get
> > >>> 2010-09-16 14:19:17-0700 [-]     return
> models.Service.find(service_id)
> > >>> 2010-09-16 14:19:17-0700 [-]   File "/home/rudd-
> > >>> o/openstack/nova/nova/db/sqlalchemy/models.py", line 79, in find
> > >>> 2010-09-16 14:19:17-0700 [-]     ).filter_by(deleted=deleted
> > >>> 2010-09-16 14:19:17-0700 [-]   File "/usr/lib/python2.6/dist-
> > >>> packages/sqlalchemy/orm/query.py", line 1522, in one
> > >>> 2010-09-16 14:19:17-0700 [-]     ret = list(self)
> > >>> 2010-09-16 14:19:17-0700 [-]   File "/usr/lib/python2.6/dist-
> > >>> packages/sqlalchemy/orm/query.py", line 1565, in __iter__
> > >>> 2010-09-16 14:19:17-0700 [-]     return
> > >>> self._execute_and_instances(context) 2010-09-16 14:19:17-0700 [-]
> > >>> File "/usr/lib/python2.6/dist-
> > >>> packages/sqlalchemy/orm/query.py", line 1570, in
> _execute_and_instances
> > >>> 2010-09-16 14:19:17-0700 [-]     mapper=self._mapper_zero_or_none())
> > >>> 2010-09-16 14:19:17-0700 [-]   File "/usr/lib/python2.6/dist-
> > >>> packages/sqlalchemy/orm/session.py", line 735, in execute
> > >>> 2010-09-16 14:19:17-0700 [-]     clause, params or {})
> > >>> 2010-09-16 14:19:17-0700 [-]   File "/usr/lib/python2.6/dist-
> > >>> packages/sqlalchemy/engine/base.py", line 1157, in execute
> > >>> 2010-09-16 14:19:17-0700 [-]     params)
> > >>> 2010-09-16 14:19:17-0700 [-]   File "/usr/lib/python2.6/dist-
> > >>> packages/sqlalchemy/engine/base.py", line 1237, in
> > >>> _execute_clauseelement 2010-09-16 14:19:17-0700 [-]     return
> > >>> self.__execute_context(context) 2010-09-16 14:19:17-0700 [-]   File
> > >>> "/usr/lib/python2.6/dist-
> > >>> packages/sqlalchemy/engine/base.py", line 1268, in __execute_context
> > >>> 2010-09-16 14:19:17-0700 [-]     context.parameters[0],
> > >>> context=context) 2010-09-16 14:19:17-0700 [-]   File
> > >>> "/usr/lib/python2.6/dist-
> > >>> packages/sqlalchemy/engine/base.py", line 1367, in _cursor_execute
> > >>> 2010-09-16 14:19:17-0700 [-]     context)
> > >>> 2010-09-16 14:19:17-0700 [-]   File "/usr/lib/python2.6/dist-
> > >>> packages/sqlalchemy/engine/base.py", line 1360, in _cursor_execute
> > >>> 2010-09-16 14:19:17-0700 [-]     context)
> > >>> 2010-09-16 14:19:17-0700 [-]   File "/usr/lib/python2.6/dist-
> > >>> packages/sqlalchemy/engine/default.py", line 288, in do_execute
> > >>> 2010-09-16 14:19:17-0700 [-]     cursor.execute(statement,
> parameters)
> > >>> 2010-09-16 14:19:17-0700 [-] OperationalError: (OperationalError)
> > >>> database is locked u'SELECT services.created_at AS
> services_created_at,
> > >>> services.updated_at AS services_updated_at, services.deleted_at AS
> > >>> services_deleted_at, services.deleted AS services_deleted,
> services.id
> > >>> AS services_id, services.host AS services_host, services.binary AS
> > >>> services_binary, services.topic AS services_topic,
> > >>> services.report_count AS services_report_count \nFROM services
> \nWHERE
> > >>> services.id = ? AND services.deleted = ?' (2, False)
> > >>> ERROR:root:Recovered model server connection!
> > >>> 2010-09-16 14:19:52-0700 [-] (root): ERROR Recovered model server
> > >>> connection ---------------------------
> > >>>
> > >>> Identical tracebacks in nova-network and nova-compute.
> > >>>
> > >>> I am stuck here :-)
> > >>>
> > >>> _______________________________________________
> > >>> Mailing list: https://launchpad.net/~nova
> > >>> Post to     : nova@xxxxxxxxxxxxxxxxxxx
> > >>> Unsubscribe : https://launchpad.net/~nova
> > >>> More help   : https://help.launchpad.net/ListHelp
>
>
> _______________________________________________
> Mailing list: https://launchpad.net/~nova
> Post to     : nova@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~nova
> More help   : https://help.launchpad.net/ListHelp
>

Follow ups

References