| Posted | Nick | Remark | |
|---|---|---|---|
| #openstack-nova - 2019-08-26 | |||
| 17:01:31 | efried | https://review.opendev.org/#/c/678447/3/nova/db/sqlalchemy/migrate_repo/versions/401_add_resources.py help? | |
| 17:01:39 | sean-k-mooney | efried: i was discussing this with alex_xu this morning | |
| 17:01:50 | efried | yeah, I still have the bruises from the original smackdown dansmith | |
| 17:01:56 | sean-k-mooney | i was suggesting just ahveing anothe migration to nuke it and add the new field | |
| 17:02:38 | sean-k-mooney | given that nothing has used it and we have not released with it | |
| 17:03:17 | sean-k-mooney | the previous version did this which was worse https://review.opendev.org/#/c/678447/2/nova/db/sqlalchemy/migrate_repo/versions/398_add_resources.py | |
| 17:03:58 | efried | dansmith: I'll -2 this for reasons stated if you want to review/approve it. | |
| 17:12:10 | fungi | efried: stephenfin: https://pip.pypa.io/en/stable/user_guide/#requirements-files #4 has an example of that syntax, and the terminology is still semi-relevant since sdists include a packagename.egg-info directory for their metadata, but the egg_info block in setup.cfg looks like it's related to old d2to1 functionality related to some sphinx extension for reporting version information (which make sense | |
| 17:12:11 | fungi | given the names of the options in it) | |
| 17:12:50 | fungi | that has appeared in nova's setup.cfg since 2010 according to git, and seems to have been cargo-culted into numerous projects who copied their setup.cfg from nova's | |
| 17:13:41 | efried | shocking | |
| 17:13:43 | fungi | it seems to be entirely vestigial at this stage, and a lot of newer projects don't include it (those newer projects which do include it have, i suspect, just copied it from older projects not knowing any better) | |
| 17:14:18 | efried | okay, well, I suppose it's probably an easy enough thing to revert & backport if we find out in four years that we broke somebody. | |
| 17:14:25 | efried | Thanks fungi | |
| 17:14:46 | fungi | yeah, if all the copying started from nova, then maybe the undoing also has to start there ;) | |
| 17:15:12 | fungi | mordred and/or dhellmann may have sufficient context to explain what that block was actually for once upon a time | |
| 17:15:35 | fungi | the fact that it references svn dates it nicely | |
| 17:18:38 | mordred | fungi: what did I do? | |
| 17:19:13 | mordred | oh that. I'd love if it went away | |
| 17:19:18 | fungi | mordred: discussing the necessity of the [egg_info] block in setup.cfg | |
| 17:19:25 | fungi | (or lack of necessity) | |
| 17:19:58 | mordred | oh - wait - I thought it was the boilerplate in setup.py for eventlet ... one sec | |
| 17:20:45 | fungi | mordred: egg_info.{tag_build,tag_date,tag_svn_revision} was something to do with a sphinx extension? | |
| 17:21:12 | fungi | i tried piecing together old commit messages and changelog entries from d2to1 to work out why it was there | |
| 17:21:46 | mordred | ah. I believe that is some text that setuptools would write to setup.cfg if it wasn't there | |
| 17:22:03 | mordred | so we added it to avoid it being added and being a diff when running jobs | |
| 17:22:15 | dansmith | efried: did you mean +2? | |
| 17:22:22 | mordred | I'm guessing setuptools has since stopped writing random crap to setup.cfg senselessly :) | |
| 17:22:32 | fungi | fwiw i've not seen setuptools write anything into setup.cfg files in modern usage | |
| 17:22:38 | mordred | yeah | |
| 17:22:45 | mordred | it's possible it was a distutils thing even | |
| 17:22:52 | mordred | like - that's some OLD cruft | |
| 17:22:52 | efried | dansmith: I mean I'm putting a -2 to hold the series, so that you can review and +2 it without fear of it accidentally merging like last time. | |
| 17:23:08 | dansmith | efried: ah, cool | |
| 17:23:21 | fungi | thanks mordred! | |
| 17:26:24 | efried | mriedem: would I be correct in surmising that "cold migration" existed in the world before "live migration" | |
| 17:26:50 | sean-k-mooney | efried: for most hyperviors yes | |
| 17:27:09 | sean-k-mooney | when nova was recreate both where a thing | |
| 17:27:16 | efried | I can't think of any other reason why "migration" means "cold migration" in the API. | |
| 17:27:18 | sean-k-mooney | but i think live migration was added later | |
| 17:27:59 | sean-k-mooney | cold migration works in more cases the live migration can | |
| 17:28:16 | sean-k-mooney | for excampl you could cold migreate and ironic server or rsd system in principal | |
| 17:28:40 | sean-k-mooney | live migrating either would be much harder even if it was possibel which it is not today | |
| 17:28:57 | sean-k-mooney | so haveing cold migration which is a lower barrier to entry be the default makes sense | |
| 17:31:06 | sean-k-mooney | efried: i dont have a linke but extra is inteded to optional dependcies or tools that are need for building but not using a project. we do not need postgress or mysql to run our tests we can use sqlite to execute all the db test | |
| 17:31:28 | sean-k-mooney | we opertunistalcly try to use mysql or postgerss if they are installed but its not a requirement | |
| 17:32:17 | sean-k-mooney | what stephens change would allow you to do in theroyr is git clone nova and use tox to run the test with out having to intall mysql or postgress client | |
| 17:32:51 | sean-k-mooney | although i think https://review.opendev.org/#/c/677475/3/tox.ini might undo that last bit | |
| 17:33:28 | sean-k-mooney | so i like the patch in general but if https://review.opendev.org/#/c/677475/3/tox.ini is till forcing them to be install i dont see any point in doing it | |
| 17:33:55 | sean-k-mooney | ideally we would not force them to be installd and isnead modify the gate job to install them | |
| 17:36:21 | mriedem | efried: i think you might be reading too much into the names of those Migration.migration_type values | |
| 17:37:26 | mriedem | yay in the beginning there was migrate and migrateLive, and thou said to thee, | |
| 17:37:29 | mriedem | let there be a type https://review.opendev.org/#/c/181110/6/nova/objects/migration.py | |
| 17:37:32 | mriedem | and it was so | |
| 17:38:11 | sean-k-mooney | is it bad that my mind goes to monty python first | |
| 17:40:03 | sean-k-mooney | robustify-evacuate you say. how did that go | |
| 17:43:32 | dansmith | sean-k-mooney: you should have seen it before robustification | |
| 17:45:12 | sean-k-mooney | i unfortunetly did see some of it. but i was only a year or so into dealing with openstack at that point and was still mainly looking at neturon at that point | |
| 17:45:58 | sean-k-mooney | we used to pass a log more dicts of random garbage around back then | |
| 17:46:21 | mriedem | and lo before the times of the great robustification there was much deleting of servers and gnashing of teeth | |
| 17:48:17 | sean-k-mooney | a lot of the legacy systems in nova are kind of like rabbitmq. sure they can cause you pain but they generally work well enough that its more pain to replace them with something else so we dont. better the dragons you know and all that | |
| 18:32:27 | artom | *sigh* | |
| 18:32:31 | artom | new_ != _new | |
| 18:39:31 | efried | artom: neither one is reserved or anything, right? | |
| 18:40:10 | artom | efried, hah, no, this isn't Python, it's migration context prefix grumbling | |
| 18:42:56 | dansmith | sean-k-mooney: you know we're looking for your input here right? https://review.opendev.org/#/c/635669/39/nova/compute/resource_tracker.py | |
| 18:44:12 | efried | dansmith: In order to compare two OVOs, it is (apparently) necessary to overrid __eq__. Is nova.objects.numa.all_things_equal the accepted way to do this? | |
| 18:44:17 | openstackgerrit | Artom Lifshitz proposed openstack/nova master: New objects for NUMA live migration https://review.opendev.org/634827 | |
| 18:44:17 | openstackgerrit | Artom Lifshitz proposed openstack/nova master: Introduce live_migration_claim() https://review.opendev.org/635669 | |
| 18:44:18 | openstackgerrit | Artom Lifshitz proposed openstack/nova master: LM: add support for updating NUMA-related XML on the source https://review.opendev.org/635229 | |
| 18:44:18 | openstackgerrit | Artom Lifshitz proposed openstack/nova master: LM: add support for augmenting migrate_data with info from claims https://review.opendev.org/634828 | |
| 18:44:19 | openstackgerrit | Artom Lifshitz proposed openstack/nova master: Deprecate CONF.workarounds.enable_numa_live_migration https://review.opendev.org/640021 | |
| 18:44:19 | openstackgerrit | Artom Lifshitz proposed openstack/nova master: NUMA live migration support https://review.opendev.org/634606 | |
| 18:44:20 | openstackgerrit | Artom Lifshitz proposed openstack/nova master: Functional test for NUMA live migration https://review.opendev.org/672595 | |
| 18:44:35 | dansmith | efried: well, I don't know without looking, but let me tell you why it's not built in: | |
| 18:45:17 | dansmith | efried: since OVOs can have only part of the database state loaded, we don't provide a default equality operator because determining equality with missing things may be doable in some cases and not others | |
| 18:45:32 | dansmith | efried: and with a nested object the parent and child may have differing rules there | |
| 18:46:11 | efried | dansmith: ack, thanks for the explanation. | |
| 18:46:25 | mriedem | true story, i was writing some ovo compare stuff for cross cell resize and had masked bugs because something was passing b/c one of the objects didn't have a field loaded | |
| 18:46:40 | dansmith | efried: so for an object with primitive field types, then yes that should work, but if it has any nested objects, it won't | |
| 18:46:59 | openstackgerrit | Merged openstack/nova master: Update SDK fixture for openstacksdk 0.35.0 https://review.opendev.org/678237 | |
| 18:47:42 | dansmith | efried: for some objects, "does the row id match" is good enough, and for others, you need to compare the contents in more depth | |
| 18:53:25 | efried | dansmith: so for this Resource thing, we're going to be asking the virt driver to populate the (local) resources associated with a provider every time RT update runs (so on periodics, instance ops, etc). I would think we want to avoid writing the same records back to the database every iteration. | |
| 18:53:40 | efried | Which means we need to be able to compare with existing | |
| 18:53:56 | efried | what decides how much of the object gets loaded from the db? | |
| 18:54:39 | dansmith | efried: the code that loads it from the db | |
| 18:54:53 | dansmith | efried: this is a performance-hating blob-based object right? in that case, it always comes out whole | |
| 18:55:20 | efried | The touchpoint with the db is that InstanceExtra gets a resources field which is of type ResourceList | |
| 18:56:17 | efried | so ultimately I guess we need to be able to compare a ResourceList we get/build from the virt driver with whatever's in Instance.extras | |
| 19:00:57 | sean-k-mooney | dansmith: yes although i was not sure if we already covered it on irc | |
| 19:01:06 | sean-k-mooney | ill resond on the revew https://review.opendev.org/#/c/635669/39/nova/compute/resource_tracker.py | |
| 19:11:29 | artom | In an artificial func test scenario with 2 compute hosts, we boot 2 instances. The first one can only fit on one host, the second one on either. Can we be 100% it will be placed on the host that does *not* have the first instance? | |
| 19:11:40 | artom | 100% sure? | |
| 19:11:53 | artom | IOW, in that contrived scenario, how deterministic is scheduling? | |
| 19:12:10 | dansmith | if it can't fit, it should be fully deterministic | |
| 19:12:34 | artom | dansmith, the first instance, yeah. But the second instance can go on either host. | |
| 19:12:36 | dansmith | there are a couple tests that add a weigher which always prefers the first host to help it be deterministic in the order it selects even the first one | |
| 19:12:57 | dansmith | artom: so you're asking if the second one, which will *still* fit will go to one specifically? | |
| 19:13:17 | sean-k-mooney | if you boot it in that order tehn its determistic | |
| 19:13:23 | artom | dansmith, yeah. The scheduler's choice is "host A with another instance" or "host B with no instances" | |