Earlier  
Posted Nick Remark
#openstack-nova - 2019-08-09
17:22:28 dansmith it's expected to run before the upgrade to tell you what to look out for,
17:22:36 dansmith and after to make sure everything went green
17:23:16 mgoddard that's how I wanted it to work, but when I've discussed it with mriedem previously I came away with the above impression
17:23:32 dansmith nova-status does not *do* anything, so no damage could occur
17:24:52 mgoddard no, but I don't want it to fail due to running it at the wrong time
17:24:53 mgoddard Install new code
17:24:55 mgoddard Sync the database schema for new models (nova-manage api_db sync; nova-manage db sync)
17:24:57 mgoddard Run the online data migrations (nova-manage db online_data_migrations)
17:24:59 mgoddard Run the upgrade check (nova-status upgrade check)
17:25:01 mgoddard Restart services with new code
17:25:03 mgoddard from https://docs.openstack.org/nova/latest/reference/upgrade-checks.html
17:25:18 dansmith sure
17:25:42 dansmith are you worried about it "failing" because you're scripting this and you want to know if you can always run it and expect a zero return or what?
17:25:54 mgoddard right
17:26:10 dansmith okay, well, it's probably not something you can do blindly regardless,
17:26:34 dansmith because sometimes the checks are things like "yo dawg, you need to modify your flavors to remove X which we've deprecated" or whatever
17:26:36 mgoddard can I safely run it before doing any part of the upgrade (including db sync)?
17:26:42 dansmith which isn't going to get "fixed" by running them
17:26:59 dansmith again, define "safely"
17:27:10 dansmith if you mean "without breaking stuff" then ... of course
17:27:17 mgoddard I don't mind if it tells me to do something that I do need to do
17:27:29 dansmith nova-status is read-only
17:27:32 dansmith it doesn't make changes
17:27:45 dansmith you can run it any time you want and the worst thing that will happen is it will complain about something, end of story
17:27:48 mgoddard but if it fails because I'm running it at the wrong point then that's bad
17:28:20 dansmith you know that it will *usually* not return zero right?
17:28:26 dansmith so I mean, again, define "fail"
17:28:37 mgoddard yeah, we allow 0 or 1
17:29:05 dansmith IIRC, the point of it not using the db models is so it can run entirely against the old schema and do its checks,
17:29:10 mgoddard let me try to rephrase
17:29:17 dansmith so barring bugs, I think you will get constrained results even before db sync
17:29:44 mgoddard in order to get the 'right' answer out of it, should I run upgrade checks only after doing the DB sync and migrations?
17:30:02 dansmith I don't think it's that simple,
17:30:16 dansmith because I think that we've had some checks which were "hey before you do anything you need to manually change X"
17:31:00 dansmith mriedem has done 95% of the work on this and definitely has the current scope/intent in his head more than me, so I guess I'll just shut up,
17:31:01 mgoddard so it could be useful to run both before DB sync, and after?
17:31:09 dansmith but I think you're kinda assuming more about it than you should
17:31:27 mgoddard perhaps
17:32:32 openstack bug 1764556 in OpenStack Compute (nova) queens ""nova list" fails with exception.ServiceNotFound if service is deleted and has no UUID" [Medium,In progress] https://launchpad.net/bugs/1764556 - Assigned to Matt Riedemann (mriedem)
17:32:32 openstackgerrit Merged openstack/nova stable/queens: Add functional recreate test for bug 1764556 https://review.opendev.org/673824
17:32:38 openstackgerrit Merged openstack/nova stable/queens: Add functional regression test for bug 1778305 https://review.opendev.org/673825
17:32:39 openstack bug 1778305 in OpenStack Compute (nova) queens "Nova may erronously look up service version of a deleted service, when hostname have been reused" [Medium,In progress] https://launchpad.net/bugs/1778305 - Assigned to Matt Riedemann (mriedem)
17:34:45 mgoddard thanks for the input dansmith, I'll let mriedem weigh in if he disagrees otherwise I'll go with an early check
17:35:11 mgoddard and possibly a second after the sync/migration
17:35:28 dansmith just to be clear,
17:36:01 dansmith well, nevermind
17:39:16 melwitt mriedem: question in https://review.opendev.org/674908
17:49:04 openstackgerrit Merged openstack/nova stable/queens: Don't generate service UUID for deleted services https://review.opendev.org/673827
17:49:37 mriedem mgoddard: grenade runs the db syncs before the upgrade status check and fails if the return code is >= 2: https://github.com/openstack/grenade/blob/00ad9a89684360ca53d7cdda62763de37ba98510/projects/60_nova/upgrade.sh#L94 - which aligns with the doc (that's probably part of where i got that for writing the doc),
17:49:48 mriedem running nova-status upgrade check *before* db sync is _undefined_
17:49:50 mriedem we don't test it that way
17:50:13 mriedem we don't use the versioned object model code, we do straight sqlalchemy db execution stuff,
17:50:33 mriedem but i wouldn't be surprised if at some point someone writes an upgrade check that is looking at maybe a column that doesn't exist until you've sync'ed, idk
17:50:53 mriedem but like dansmith said, i think we try to avoid that and could justify saying something like that is a bug
17:52:13 dansmith mriedem: for things where we need to warn the person that a blocker migration is going to hork on their db state, they'd need to run it ahead of time right?
17:52:16 openstack Launchpad bug 1833278 in OpenStack Compute (nova) "nova-status upgrade check should fail if db sync has not been performed" [Medium,In progress] - Assigned to Takashi NATSUME (natsume-takashi)
17:52:16 mriedem i see takashin has a patch up for your bug https://bugs.launchpad.net/nova/+bug/1833278
17:52:23 dansmith meaning, if we're about to drop a column or add a constraint
17:52:27 dansmith I thought we had one of those early on
17:52:29 mriedem dansmith: takashi's patch would break that if we did
17:53:03 dansmith I really thought one of the first uses for nova-status was to warn people before we added a constraint, but I don't remember the details
17:53:18 mriedem earliest checks were for cells v2 and placement
17:53:19 mriedem in ocata
17:53:49 mriedem https://github.com/openstack/nova/blob/stable/ocata/nova/cmd/status.py#L358
17:53:53 melwitt dansmith: I thought the same thing. like, "you have homework to do before running db migrations"
17:54:33 melwitt or maybe it's before online data migrations?
17:54:53 dansmith it tells you if you *haven't* run online migrations,
17:55:18 mriedem right for some definitely - there was a check for missing request specs which was solved with an online data migration,
17:55:22 dansmith but I really thought we were prescribing running it before to handle things like column drops, constraints, etc
17:55:26 mriedem and couldn't be done with a blocker migratoin b/c the records are in different dbs
17:55:45 melwitt yeah ok
17:57:02 mriedem as far as i know we haven't dropped a column or added a new constraint in a loong time
17:57:25 mriedem so haven't really had to think about the ordering of that plus the upgrade check
17:58:28 dansmith mriedem: but, if people are only ever running this after db sync, we can't rely on this to help us in that regard
17:58:49 dansmith and basically have to stick to blocker migrations
17:58:58 mriedem or you add the check in the n-1 release
17:59:18 mriedem "i see you've got stuff in column x which is going to be dropped in the next release, you should do y to drain it"
17:59:21 mriedem or whatever
17:59:33 mriedem we've added checks that get backported, like for the ironic flavor migratoins in pike
18:00:03 dansmith if we're going to require db sync first, why did we go with raw sqla access then?
18:00:18 mriedem but i don't think we've ever said this is an end-all perfect tool, it's part of the whole box - blocker migratoins, online data migratoins, runtime data migrations, and the checks to automate release notes
18:00:21 dansmith I mean, that was the whole point of doing that, AFAIK, so we could talk to the schema independent of the models
18:00:31 dansmith sure
18:00:36 mriedem i'm not saying db sync is required,
18:00:51 mriedem i'm saying that's how we test it, and how it behaves before db sync is undefined
18:01:02 dansmith ack,
18:01:05 mriedem if we want to support both ways, we need to test it both ways
18:01:12 dansmith but I think the question is about intent and assumptions and what-not,
18:01:19 dansmith especially in the face of that patch to require it
18:01:38 mriedem yup, which is a result of a bug that mgoddard opened
18:01:48 mriedem to i guess make us shit or get off the pot
18:02:01 mriedem i prefer to wallow thank you very much
18:02:30 mriedem and i think he did that b/c he's getting pushback in kolla about adding the checks in
18:02:41 mriedem https://review.opendev.org/#/c/665643/
18:03:50 dansmith his patch actually doesn't make it required, so much as it just checks that you've done it I guess
18:03:51 dansmith which is less concerning
18:05:27 dansmith if the expectation of the tool is to tell you go/no-go for deploying new code, then it's probably fine to have that be an ERROR and not a WARN
18:05:37 mriedem https://review.opendev.org/#/c/667047/10/nova/cmd/status.py@395 is a fail
18:05:44 dansmith right, but ^
18:05:54 mriedem and https://review.opendev.org/#/c/667047/10/nova/cmd/status.py@370

Earlier   Later