Tuesday, 2017-03-28

*** diablo_rojo has joined #storyboard00:22
*** diablo_rojo has quit IRC02:27
*** bethwhite has joined #storyboard06:40
SotKSpamapS: woah, I suspect I need to improve the code behind tasks07:30
SotKthat is slooow07:30
dmsimardLarger workboards are very very painful to browse :(13:10
dmsimardhttp://i.imgur.com/LH9khbs.png13:10
dmsimard(for instance)13:10
* SotK has never seen that before13:11
dmsimardLooks like it could be related to too many people viewing the workboard simultaneously ? We're doing a team planning13:13
SotKhm, maybe13:14
SotKdo you have access to the server logs?13:14
dmsimardWe'll try to provide feedback, mhu likely has access :)13:15
mhudmsimard, I think it doesn't help that the API calls fetch also every archived task/story per lane13:17
mhubut we're using an old version of SB, an upgrade is long due13:17
* SotK recommends waiting until we get the board speedup patches I wrote merged13:19
* SotK will make them ready for review later13:19
Zara(hm, it shouldn't take long to upgrade, though (guess it depends how it's deployed))13:22
dmsimardby the way, if no one brought this up before13:28
dmsimardwhen assigning a task, it'd be great to have "assign to myself" or something to that effect13:28
dmsimardSotK: have a link for those speedup patches ?13:33
SotKdmsimard: sure, one sec13:34
SotKdmsimard: https://review.openstack.org/#/q/status:open+project:openstack-infra/storyboard+branch:master+topic:optimise-boards13:34
SotKhowever, they will all need reviewing again once I fix the thing causing the tests to fail13:35
*** diablo_rojo has joined #storyboard14:31
SotKdiablo_rojo: sorry I didn't get round to commenting on that patch yet, I shall endeavour to do so soon :)14:32
diablo_rojoSotK, no worries :) Soon is good enough for me.14:42
* SpamapS peeks at the database code to see if there are obvious speedups15:44
SpamapSoy... fulltext is a giant bag of fail..15:45
SpamapSnice to see integer IDs used though. +1 for smaller DB sizes and less RAM for joins.15:47
SpamapSweird.. there's a milestone table.. don't think I've ever seen a milestone mentioned in the UI15:49
Zarayeah, they were last touched a long time ago (we haven't done anything with them since we haven't heard anything about what people *want* from a milestones ui)15:54
SpamapSSo, I think I see a pretty easy optimization for WorklistItems15:55
SpamapSit has an arbitrary ID15:55
SpamapSbut it has a natural PK of worklist_id + worklist_position15:55
SpamapSand using that one, the query can be ordered by the PK15:55
SpamapSwhich can be a 100x improvement in InnoDB because rows are clustered by PK15:56
SpamapSZara: well effectively, we're using tags as milestones in Zuulv3 ... would be nice to have a milestone instead.15:57
SpamapSBut the tags do work fine-ish.15:57
SpamapSthe main reason for milestones is to be able to communicate your roadmap15:58
SpamapSI'd say your time is better spent working on other bits. :)15:58
Zara:) there are 'due_dates' for boards, which may help with that16:00
SpamapSinteresting16:03
SpamapSah another performance problem is the double-join to WorklistItems filtered by type, instead of just querying the whole WorklistItem table.16:04
SpamapSOh hm, it's done as a union, and MySQL 5.7 and InnoDB may actually be smart enough to optimize that.16:05
SpamapSyeah these are all just papercuts16:07
* SpamapS puts down the shears and lets the yak go16:08
Zarahaha16:10
Zarabut it's such a fluffy yak16:11
*** bethwhite has quit IRC17:58
SotKSpamapS: thanks for taking a look, I'm happy to hear any advice about improving the database code20:50
SotKthe problem with worklist_id + worklist_position as a PK is that we don't enforce uniqueness of worklist_position, and in fact iirc we set the position of archived cards to something arbitrary20:51
SpamapSSotK: it's all minor improvements.. the sort of thing one does when they're trying to squeeze more out of a heavily taxed system.. not something that just gets an instant doubling of performance.20:52
SpamapSSotK: yeah, it's probably not a big win and if you have to add a counter to maintain, it's definitely not a win at all.20:53
SotKSpamapS: even so, its useful to have reassurance I've not done anything too obviously dumb to make things slow there :)20:59
SpamapSSotK: Nothing obviously dumb no. We could probably iterate on it and get some small latency wins... but most likely the slowdowns dmsimard encountered were row locking contention.21:14
dmsimardSpamapS: we did find an issue on our end that probably made matters worse21:15
dmsimardPart (?) of the app wasn't properly served through mod_wsgi21:15
dmsimardSo we'll update, fix that and report back.21:15
SpamapSdmsimard: oh so maybe just high latency on the backend from other sources21:23
SpamapSdmsimard: looking at how work boards work though... it's going to serialize (which is to be expected since it's a consistent data store) so lots of users moving cards will result in a lot of latency21:23
SpamapSthe answer to that is a complex one, which is to put an async queue in front of the table edits21:23
dmsimardSpamapS: yeah so we were basically in a "scrum" and we were 5 or 6 creating things, editing things, moving things21:24
SpamapSdmsimard: I'd recommend a single shared desktop if you can work that out ;)21:24
SpamapSbut really, making that work well on multiple browsers would be ideal21:24
SpamapSand if you use an async queue, you get the side benefit of being able to subscribe to that via a websocket on clients and update their view in realtime too21:25
dmsimardSpamapS: yeah I think "OpenStack scale" is more than 5 users so you might have to think of something :P21:25
SpamapSwe use Github's project boards and they update in real time. Very obvious its using an async edit system.21:26
SpamapSit's21:26
dmsimardTrello is probably a similar implementation as well.21:28
SpamapSthere's no other way to do it really. You have your UI send deltas, and your backend either can apply them, or tells the UI to do a full refresh.21:33
SotKwe want to implement an async system for storyboard's boards too, but haven't yet had the time really21:39
SotKdmsimard: how old is the version of sb that you're running btw?22:02
dmsimardSotK: not sure22:03
dmsimardSotK: is it available in the UI? All I see is Webclient version: 28b4809...22:03
SotKdmsimard: sadly not, I don't think we have a sensible method of discovering it in the API either actually22:05
dmsimardHTTP GET /version22:05
dmsimardgogo22:05
*** openstackgerrit has joined #storyboard22:21
openstackgerritAdam Coldrick proposed openstack-infra/storyboard master: Minimise database queries when resolving cards  https://review.openstack.org/44461522:21
openstackgerritAdam Coldrick proposed openstack-infra/storyboard master: Minimise database queries when populating automatic worklists  https://review.openstack.org/44464422:21
openstackgerritAdam Coldrick proposed openstack-infra/storyboard master: Allow stories and tasks to be filtered by boards/worklists containing them  https://review.openstack.org/44461422:21
zara_the_lemur__thanks! I'll try to take a break from watching asciiquarium to review a bunch of stuff sometime22:43

Generated by irclog2html.py 2.14.0 by Marius Gedminas - find it at mg.pov.lt!