Thursday, 2026-02-05

wilkmarcinHello Watcher Team! I'd appreciate it if someone could take a final look at this tiny patch: https://review.opendev.org/c/openstack/watcher/+/97383909:15
wilkmarcinthank you in advance!09:15
opendevreviewMerged openstack/watcher master: Add note about using long period with continuous audits  https://review.opendev.org/c/openstack/watcher/+/97383911:27
morenod#startmeeting Watcher12:00
opendevmeetMeeting started Thu Feb  5 12:00:14 2026 UTC and is due to finish in 60 minutes.  The chair is morenod. Information about MeetBot at http://wiki.debian.org/MeetBot.12:00
opendevmeetUseful Commands: #action #agreed #help #info #idea #link #topic #startvote.12:00
opendevmeetThe meeting name has been set to 'watcher'12:00
morenodwelcome to the weekly meeting of watcher, who is around today?12:00
jgilabero/12:00
amoralej_o/12:00
dviroelo/\12:01
rlandyo/12:02
morenodcourtesy ping list: sean-k-mooney chandankumar12:02
sean-k-mooneyo/12:02
morenodlet's get started with the today's meeting agenda12:03
morenod#link https://etherpad.opendev.org/p/openstack-watcher-irc-meeting#L4012:03
morenod#topic (dviroel) Applier to run Taskflow parallel engine with native threads (eventlet-removal)12:03
morenodplease dviroel 12:03
dviroelthanks morenod 12:03
dviroel recently i have been working on investigating this issue/limitation12:04
dviroelwith taskflow with parallel engine + native threads failing in unit tests...12:04
dviroelthe issue mentioned in the LP, happens in a few unit tests12:04
dviroel(sqlite3.OperationalError) cannot start a transaction inside another transaction12:05
dviroelI have been looking into our db integration and how we setup our tests12:05
dviroelalso chatting with some folks about these issues12:05
dviroelthe transiction error in the end is happenning due to the use of in-memory sqlite database12:06
dviroelwhich works with a single connection12:06
dviroel #link https://www.sqlite.org/inmemorydb.html12:07
dviroelthere is a mention  about that in the docs, there is also mention to use a shared cache for multiple connections12:07
sean-k-mooneythats apossiblity12:07
dviroeli tried a bit the shared connection, but I didn't make it work yet12:07
sean-k-mooneysqlite does have transacation suprpot but perhaps that requried the file backend12:07
dviroelyeah12:08
sean-k-mooneythat a pretty simple change to the test fixture12:08
dviroelnext thing to try was to use a disk file instead on memory12:08
sean-k-mooneyright nova or placment i think does that already12:08
dviroelit solved the transaction error and tests that were failing before start to pass12:08
sean-k-mooneycool12:08
dviroelbut not all of them12:08
dviroel:) 12:08
dviroelsome tests started to fail due to concurrency, with a new error:12:08
sean-k-mooneystill progress is good12:08
dviroel"(sqlite3.OperationalError) database is locked"12:09
dviroelbefore giving up12:09
dviroelI tested additional configuration like setting journal mode to WAL, and increasing timeouts, but still without success12:09
dviroelthe concurrency with SQLite database sometimes gives database is locked12:09
sean-k-mooneyhum do you have a patch up to show this12:09
dviroelcorrect12:10
amoralej_so, the good news is that the issue is actually only in CI, not real issues, right?12:10
dviroel#link https://4bb852441388777a25ca-c1d45ef7eb040e2d7e76303651507120.ssl.cf1.rackcdn.com/openstack/895e46290cf94805a28d87a3f5e6042b/testr_results.html12:10
sean-k-mooneyamoralej_: i dont think we can assume that12:10
dviroelamoralej_: in the end, it is about the database that we use yes12:10
sean-k-mooneybut if we run the same test with the mysql opertunsitc test fixture and they pass12:10
dviroelwe can still continue to investigate these issues when running with SQLite, but it seems that SQLite is really bad for concurrency in the end12:10
sean-k-mooneythen maybe12:11
dviroelMike Bayer already antecipated me about SQLite concurrency problems ..12:11
dviroeland then,  so I tested some classes with MySQL and the issue does not reproduce, and the failing tests are now passing12:11
sean-k-mooneyright so im not sure we want to only run them with the opertunistic test fixture12:12
amoralej_would that be an option instead of sqlite ?12:12
sean-k-mooneybut that would be an option just most folks unless they are running the unti tests in there devstack env wont have set that up12:12
dviroelyeah, so this also brings a discussion on what this units tests are really trying to test12:12
amoralej_for the entire tests suite, i mean12:12
sean-k-mooneyamoralej_: we already haave the ablity to use mariadb/mysql in our tests12:13
amoralej_yeah, i remember we do it for specific db tests12:13
dviroelmigration tests already use MySQL right12:13
sean-k-mooneyamoralej_: im -2 on requireing that in general (a non sqlite backend)12:13
jgilaberyes, migration tests and some specific tests related to a column of the efficacy indicators12:13
sean-k-mooneythat would be a major testing reguression in my view12:13
jgilaberthis is the base class https://github.com/openstack/watcher/blob/3ba748f798f982f35c9fbbe154505f035220a493/watcher/tests/unit/db/base.py#L7212:13
sean-k-mooneydviroel: i aggree however that reassisng what coverage the test actully provide makes sense12:14
jgilaberand here is the use case https://github.com/openstack/watcher/blob/master/watcher/tests/unit/db/test_efficacy_indicator.py#L41412:14
sean-k-mooneymost unit test shoudl not interact with the db at all12:14
dviroelso in the end, our unit tests are testing more things that they should12:14
sean-k-mooneyfunctional test sure but unit test unless they are testign the db layer should not12:15
amoralej_so, we could limit using mysql fixtures to only the tests which require proper concurrency12:15
amoralej_yeah, or change our unit tests to not require it ...12:15
sean-k-mooneyamoralej_: that or we coudl maybe use a sepetea sqlite db12:15
sean-k-mooneyfor apscheduler and taskflow vs watcher12:15
sean-k-mooney so the test in question are unit test under watcher.tests.unit.applier.workflow_engine.test_default_workflow_engine.TestDefaultWorkFlowEngine12:17
sean-k-mooneyi woudl agure that they shoudl not need db access in general based on the area of code its intended to test12:17
dviroelcorrect12:17
dviroelso our option are:12:18
dviroel1 - rewrite these tests to avoid database writes 12:18
dviroel2 - work more to get sqlite db file to work with more concurrent writes12:19
dviroel3 - replace sqlite in the affected (or all) tests12:19
dviroelany other?12:20
sean-k-mooneypossible split the connetions between difent databases in the test fixture12:20
sean-k-mooneywe have 2 diffent db schemas we have our one and then aspschduelr has its own schmea for its internal schduling12:21
sean-k-mooneyif the file lock is caused by those conflicting using diffent files for both and as a result diffent connection might help12:21
dviroeli don't think that is caused by that, but between the action in parallel trying to read/write updates about actions12:22
sean-k-mooneywell that and we might want to lock into properly treadign the context object to all db calls12:23
sean-k-mooneyso https://review.opendev.org/c/openstack/watcher/+/96675912:23
sean-k-mooneyi woudl be interested to see if that helps with the file backed sqlite12:24
dviroelwe have a problem with that too12:24
dviroelthe request context is currently shared by all actions12:24
sean-k-mooneynova uses sqlite for its functional tests as well and there we have many diffent deams running in sepeate threads12:24
sean-k-mooneyright it shoudl not be12:25
amoralej_nova uses file backed sqlite?12:25
sean-k-mooneythat why we need to create and pass it down the call stack instead of using a module gloabl or thread local12:25
sean-k-mooneyamoralej_: i belive so 12:25
sean-k-mooneyill check12:25
amoralej_so, if that works, i understand that'd be the easiest and less intrusive approach12:26
dviroelbut today thread local already guarantees a different connection for each thread too12:26
dviroeland we still hit the issue12:26
amoralej_I'd be in favor of rewriting test but I'm afraid of we may miss valid issues in future, specially until we have functional tests12:27
sean-k-mooneyhttps://github.com/openstack/nova/blob/master/nova/tests/fixtures/nova.py#L697-L700 so nova is using a fixture (with teasks) form sqlachmy12:28
sean-k-mooneysorry form oslo.db12:29
sean-k-mooneyso if its file based epend on the connection string we pass12:30
sean-k-mooneyill look that up sepratly but dviroel tested file based and it was not enough correct12:31
sean-k-mooneywe coudl compare the delta however and see if there is soemthign we missed12:31
dviroelI can spend so more time investigating the sqlite 12:32
dviroelusing file based12:32
dviroeloption 2) 12:32
dviroeland provide more feedback next week12:32
dviroelwe can continue discussing about this during the week, in the channel too12:34
dviroelagree?12:34
amoralej_lgtm12:34
jgilaber+112:34
dviroeli think that sean-k-mooney is looking at the code right now :) 12:35
dviroelok, but i already consumed half of the meeting, and we can continue async later12:35
sean-k-mooneysure and yes12:35
morenodok, lets move to the next topic12:35
morenod#topic (amoralej) https://blueprints.launchpad.net/watcher/+spec/osprofiler-in-watcher12:35
morenodplease alfredo12:36
sean-k-mooneyi just assed claude to cofnirm12:36
sean-k-mooneyapprently we are usign in memory https://github.com/openstack/nova/blob/master/nova/tests/fixtures/conf.py#L37-L4412:37
sean-k-mooneybut we are also seting sqlite_synchronous to false12:37
amoralej_we discussed https://blueprints.launchpad.net/watcher/+spec/osprofiler-in-watcher some weeks ago, i fixed the last sentence about how to add the wsgi middleware which i've been testing locally12:38
amoralej_is it still possible to get it approved in this cycle? i have been working in implementation in parallel, but i missed that was actually not approved yet12:39
sean-k-mooneypossible yes we could allow a spec freeze excption but i dont think we shoudl12:40
sean-k-mooney2026.2 opens properly in 4? weeks12:40
sean-k-mooneyso why woudl we not wait for the next cycle?12:40
amoralej_note, it is specless blueprint12:40
sean-k-mooneyright it has the same dealine12:40
amoralej_i wanted to start sending patches already, which i guess i still can do anyway12:41
sean-k-mooneyyep you can12:41
dviroelyeah, if you already implemented, just send12:41
amoralej_ack, I will then12:41
sean-k-mooneyi dont really have an issue with reviewing and approving the blueprint for the next cycle and starting on the work12:41
dviroelwe can merge as soon 2026.2 starts then12:41
dviroelif ready12:42
sean-k-mooneyyep12:42
amoralej_ok, I will send the patches as soon as i have them ready then12:42
sean-k-mooneywe are not quite at feature freeze but it would be good if we started shifting focus to completign the planned work12:42
amoralej_that was part of the planned work in PTG for this cycle, that's why i wanted to have it approved in the cycle12:43
dviroelack12:43
sean-k-mooneyi created https://launchpad.net/watcher/2026.212:43
sean-k-mooneyso fi we want we can target it to that12:43
sean-k-mooneymy question woudl be are we happy to consier this a specless blueprint and are we ok with its curernt content12:44
sean-k-mooneyi dont partically think adding osprofiler supprot is contoversial although it shoudl be off by default12:45
sean-k-mooneygive we do not use api-paste.ini that woudl meean we woudl need a cofnig option to opt into it12:45
sean-k-mooneywell ok12:46
sean-k-mooneynova has it in its defalt middleware pipeline12:46
amoralej_about spec, i think that's what we discussed as not needed in the past12:46
dviroeli think that we agreed in the past to be a specless blueprint already, yeah12:46
sean-k-mooneyamoralej_: do you know if os-profile has its onw opt in mechanium12:46
amoralej_about the middleware, it will be added only if osprofiler is available and enabled12:46
sean-k-mooneyamoralej_: ack so osprofiel has its own way to be enabled12:47
sean-k-mooneyim not sure we woudl want this on in production by default for example so i jsut want to make sure if we hardcode teh includion in the middleware it does not create a perfomance regression12:48
dviroelamoralej_: is there also some profiling for sqlalchemy too?12:48
amoralej_osprofiler has it's own parameters12:48
amoralej_yes, i know there is the option, but i didn't play with it tbh12:48
sean-k-mooneyin devstack we also enabel a db profiling sqlachcmy plugin form oslo.db i beilve12:49
dviroelright, i see that manila has osprofiler_sqlalchemy12:49
amoralej_https://paste.centos.org/view/d2cf5ce1 that's what i've used12:49
amoralej_so it's only added to the pipeline if the module is installed and the option enabled (by default is disabled, that comes from osprofiler opts)12:49
sean-k-mooneyack, so importing the midelwaure has teh sideffect fo registrign the config options?12:50
amoralej_not exactly, but i think it's better to do technical discussions in specs or in irc, we are almost out of time :)12:51
amoralej_registering config options is automatic if the module is installed12:51
amoralej_i'm following similar pattern as other projects in that12:52
sean-k-mooneyack in that case do we want to follow up next week 12:53
sean-k-mooneyor approve https://blueprints.launchpad.net/watcher/+spec/osprofiler-in-watcher for 2026.212:53
dviroelack, we can continue next week12:53
sean-k-mooneyi dont think this need a spec but i do think we need a doc page for how to confirue and use it12:53
dviroel+112:53
amoralej_sure12:53
dviroelwhich i expect that other projects also have?12:53
dviroel:)12:53
sean-k-mooneyit should also be an optional dep meaning it shoudl not be in requriements.txt bug can be in test-requrieemtnes.txt12:54
sean-k-mooneydviroel: at least zaaqar has12:54
sean-k-mooneyits the first hit on google12:54
dviroelack12:54
sean-k-mooneyhttps://docs.openstack.org/zaqar/latest/admin/OSprofiler.html12:54
amoralej_yes, that's my plan too, being just optional12:54
morenodlets move to the reviews12:55
dviroelyes12:55
morenod#topic reviews12:55
morenod#link https://review.opendev.org/c/openstack/watcher/+/96856812:55
dviroelthis patch removes the dependency on eventlet.Timeout for cluster data model (CDM) collectors and implements a different timeout12:56
dviroelI would like to get this patch merged, but I think that we need to agree in the new timeout configuration option.12:56
dviroelIt was raised a concern about its minimal supported value, if we should support 0 as value for instance12:56
dviroelin my tests, 0 means return immediately12:56
dviroelwhich means also that there is no option to disable this timeout12:57
sean-k-mooneyi think adding a min value makes sesne jus tnot sure what the value should be12:57
sean-k-mooneyso we could supprot -1 for disabeld12:58
sean-k-mooneyhowever12:58
sean-k-mooneythe current way to disable collectors is to not list them in the list of collectors right?12:58
dviroelwe could indeed12:58
dviroelhum, i don't really remember now...12:59
sean-k-mooneymy main issue actully is i dont think we shoudl be defining cofnig option in https://review.opendev.org/c/openstack/watcher/+/968568/6/watcher/decision_engine/model/collector/nova.py12:59
sean-k-mooneyconfig option shoudl exlusively be defiend under https://github.com/openstack/watcher/tree/master/watcher/conf12:59
dviroelah correct13:00
sean-k-mooneyso it shoudl be here right https://github.com/openstack/watcher/blob/master/watcher/conf/nova.py13:00
sean-k-mooneyor here https://github.com/openstack/watcher/blob/master/watcher/conf/collector.py13:00
dviroeli think that I already discussed that with amoralej_  to in the patch13:01
sean-k-mooneycollector_plugins is the way to disabel collectors today so grouping it there might make sense13:01
dviroelit can, but others colletors don't use them13:01
dviroeli mean13:01
dviroelother collectors don't use the timeout config in this patch13:01
sean-k-mooneyright hey probaly shoudl evenutlaly no?13:02
sean-k-mooneyim fine with per collector values13:02
dviroelthey don't start additional threads13:02
sean-k-mooneybut in that case nova.py might make sense13:02
dviroelthe period in under collector too13:03
dviroelnot nova or others13:03
dviroellike this https://docs.openstack.org/watcher/latest/configuration/watcher.html#watcher-cluster-data-model-collectors-compute13:03
dviroelso it will end there too13:03
sean-k-mooneyya so tome this is more a code mantaicne thing13:04
dviroelsince we are out of time, i think that we can discuss more in the channel or in the patch13:04
sean-k-mooneywe spent a lot of work centralising config optin so that they are nto spread acoss impleaiton files13:04
sean-k-mooneyi guess i dont midn where under watcher/conf it lives as long as it is there13:05
dviroelmorenod: i can chair next meeting btw13:05
morenodthanks dviroel13:05
morenodwe have a bug, but I think we will cover next week, as we are out of time13:05
dviroel+113:06
jgilaberI just wanted to mention that the series of patches to move novaclient usage to openstacksdk is up for review13:06
jgilabersince the patches are big, I wanted to give notice with enough time before FF which is in 3 weeks13:06
morenodsorry jgilaber, I missed that13:07
morenod#link https://review.opendev.org/c/openstack/watcher/+/97291313:07
jgilaberno problem, just a quick mention is enough13:07
morenodlets finish here then, thank you all for joining the meetin13:08
morenod#endmeeting13:08
opendevmeetMeeting ended Thu Feb  5 13:08:18 2026 UTC.  Information about MeetBot at http://wiki.debian.org/MeetBot . (v 0.1.4)13:08
opendevmeetMinutes:        https://meetings.opendev.org/meetings/watcher/2026/watcher.2026-02-05-12.00.html13:08
opendevmeetMinutes (text): https://meetings.opendev.org/meetings/watcher/2026/watcher.2026-02-05-12.00.txt13:08
opendevmeetLog:            https://meetings.opendev.org/meetings/watcher/2026/watcher.2026-02-05-12.00.log.html13:08
opendevreviewTakashi Kajinami proposed openstack/watcher master: Deprecate unused [DEFAULT] bindir  https://review.opendev.org/c/openstack/watcher/+/97580815:06
opendevreviewTakashi Kajinami proposed openstack/watcher master: devstack: Remove ineffective ssl options  https://review.opendev.org/c/openstack/watcher/+/97580915:18
*** haleyb is now known as haleyb|out22:21

Generated by irclog2html.py 4.0.0 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!