IRC logs for #buildstream for Monday, 2019-03-11

*** nimish has joined #buildstream01:38
*** nimish has quit IRC03:25
*** tristan has joined #buildstream03:29
*** ZULA has joined #buildstream07:38
*** ZULA has left #buildstream08:20
*** toscalix has joined #buildstream08:44
*** toscalix has quit IRC08:46
*** toscalix has joined #buildstream08:48
*** toscalix has quit IRC09:12
*** toscalix has joined #buildstream09:13
*** benschubert has joined #buildstream09:16
benschubertQuestion about remote caches. when doing a "bst artifact push", the command line says "The default destination is the highest priority configured cache" Does that mean it's impossible to push to all caches?09:22
*** ChanServ sets mode: +o tristan09:26
tristanThat is a good question, I'm not sure what the status of this is - there is (was ?) a problem where a downstream project is (was ?) unable to replicate the artifacts produced by an upstream (junctioned) project09:26
tristanI can say that the original design of multiple caches was for different use cases, we had it in mind that people would use separate artifact servers for long standing side branches, in which case we'd only want to push to the dev branch's server, while still falling back to pulling from the master server09:27
tristanI think that the configuration has evolved since then to have "push" options for each configured artifact server09:29
tristanand maybe the help output is outdated09:29
benschuberttristan: so it should push to everything correct?09:30
tristanSorry for the lack of a straight answer :-S09:32
tristanlets look at what the config provides now09:32
gitlab-br-botBenjaminSchubert closed issue #869 (Local cache size calculation is wrong) on buildstream https://gitlab.com/BuildStream/buildstream/issues/86909:33
tristanUser configuration can decide: https://docs.buildstream.build/using_config.html#artifact-server09:33
benschubertI'll look more into it. I've got troubles on the system and wanted to roll out hypothesis :)09:34
tristanAnd project configuration can provide recommendations: https://docs.buildstream.build/format_project.html#artifact-server09:34
tristanAccording to docs, project configuration cannot decide whether to push/pull09:35
tristanand it is not clear to me if this is by design09:35
tristanI.e. when building project foo, it does not make sense for it's junctioned dependency bar to decide that it is allowed to push09:35
tristannormally that will fail, as builders of project foo will lack credentials to push to dependency bar's server09:36
tristanyeah its a pretty tricky area, we need to clarify this; one thing is sure is that projects *recommend* artifact servers, but builders have the last word (i.e. user config)09:37
benschubertI was just confused, because "bst push" used to push to all available caches, and "bst artifact push" seems to only be able to push to one server09:37
tristanOh that is strange, I don't see how the CLI change would be related to a behavioral change09:39
benschubertit's either a bug or a documentation error :) I'll look into that. It's sadly down in my list of current bugs09:41
benschubertthe first one beinf, we still hit out of storage space errors when running BuildStream master09:41
tristanout of storage space errors cannot be avoided technically afaics, the best we can do is handle the out of space conditions gracefully09:42
*** jonathanmaw has joined #buildstream09:42
tristanWe might want to make the "headroom" configurable, that would help avoid the situation09:42
tristanbenschubert, i.e. the "headroom" is hard coded to 2GB right now, which means that if you dont have a limited quota setup, we try to cleanup if ever we observe there is less than 2GB remaining09:43
benschubertyes09:43
benschubertSecond thing: the local cache cleanup took 38 hours on our system, the one time where it kicked in09:44
tristanWe *could* technically have something declarative for an element to say how big it's temporary build directory would be, and how large of an artifact it would create (but that could still lie, so we'd still hit out of space conditions)09:44
tristanYeah, that needs optimization for sure09:45
tristanit is horribly slow even for regular sized projects09:45
tristanI think juergbi and Kinnison were discussing different ref-based cleanup strategies09:45
tristanerr, object based09:46
KinnisonWe did, though I think it was juergbi and valentind who actually sorted things out09:46
KinnisonAnd partialcas will simplify/complicate matters (dunno which)09:46
valentindWe did only for the server side.09:46
Kinnisonis it not the same code in both cases?09:46
tristanNope09:47
valentindThere is some common code.09:47
juergbiBuildStream can't deal with partial artifacts in local CAS just yet09:47
valentindBut it is a different strategy the the top level code is different.09:47
juergbisoon to be fixed09:47
benschubertSo there is a plan to change how the cleanup works if I understand well (with the lcoal cas changes) correct? Or do I need to keep track of this?09:48
tristanIt can be good to make sure there is already an issue tracking this09:49
tristanbenschubert, I'm not worried that we forget, the cleanup is so obviously slow and painful, it's impossible to forget :)09:51
*** raoul has joined #buildstream09:51
benschubertok09:52
benschubertin the meantime, I'll go back to wiping my entire cache every few runs09:52
tristanFor smaller projects in the hundreds of elements, it takes a while to cleanup, but it doesnt happen so often and is at least less expensive than zapping (removing) the local cache09:54
tristanWell, assuming a sample project like freedesktop-sdk & gnome-build-meta, where there is not too much churn at the bottom of the stack09:54
benschubertWe have a cache relatively close so that makes it less painful09:55
tristan(can take me 30min sometimes, which is less than downloading everything, and much much less than building everything)09:55
*** phildawson has joined #buildstream10:12
gitlab-br-botphildawson opened (was WIP) MR !1215 (phil/consolidate-repo-tests->master: Consolidate templated source tests) on buildstream https://gitlab.com/BuildStream/buildstream/merge_requests/121510:35
tristanAnyone wanna take a look at !1216 ?10:36
gitlab-br-botMR !1216: Improve error reporting when files are not found https://gitlab.com/BuildStream/buildstream/merge_requests/121610:37
tristanI'd like to include that, along with a fix for #919 in an upcoming bugfix release10:37
gitlab-br-botIssue #919: 'bst build <elem>' does not assemble all required elements in some circumstances https://gitlab.com/BuildStream/buildstream/issues/91910:37
benschuberttristan: do you want to include the fix form !1070 at the same time? I might have some time to work on it today10:38
gitlab-br-botMR !1070: WIP: Refactor _update_state() to be called only when needed https://gitlab.com/BuildStream/buildstream/merge_requests/107010:38
tristanbenschubert, I've been waiting for !1070 for exactly that reason yeah10:38
benschubertah right, 919 is for this10:38
benschubertI'll probably probe you later today about it, have a few things to do first though10:39
tristanI'm mostly interested in having a clean and simple recursion algorithm for reverse dependencies10:40
tristanBut anyway, I'm off to dinner and probably wont be around late10:40
* tristan fixed his jetlag problem10:40
tristanbenschubert, I will be up earlier than everyone else tomorrow - and I am very willing to hammer out a version of !1070 which uses a hash to ensure that we can have a simpler algo which only stores direct reverse deps tomorrow afternoon10:45
*** raoul has quit IRC10:45
tristanBut I won't do it unless you ask me, I don't want to steal your fire :)10:45
tristananyway leave messages in the channel and I will pick them up when I wake up :)10:46
*** raoul has joined #buildstream10:46
*** tristan has quit IRC10:56
*** tristan has joined #buildstream11:03
adds68when is the next release of bst-external happening?11:15
adds68we need to merge/land https://gitlab.com/BuildStream/bst-external/merge_requests/74 ASAP for freedesktop-sdk11:15
*** alatiera has joined #buildstream11:22
gitlab-br-botjuergbi approved MR !1211 (jennis/move_node_get_project_path->master: Cleanup: Move _yaml.node_get_project_path() to Project._get_path_from_node()) on buildstream https://gitlab.com/BuildStream/buildstream/merge_requests/121111:23
* SotK hopes for "after https://gitlab.com/BuildStream/bst-external/merge_requests/71 gets merged too"11:23
benschuberttristan: sure! I will see what I can do today and let you know where I'm at11:27
gitlab-br-botmarge-bot123 merged MR !1211 (jennis/move_node_get_project_path->master: Cleanup: Move _yaml.node_get_project_path() to Project._get_path_from_node()) on buildstream https://gitlab.com/BuildStream/buildstream/merge_requests/121112:14
raoulI've just had a test under the unix pipeline have a temperamental test failure, where I've just retried the job and it's passed. This should be reason for concern right?12:16
raoulit's the tests/sandboxes/mounting/mount_simple.py::test_mount_proc, and you can see I've just retried it to get it to pass here: https://gitlab.com/BuildStream/buildstream/-/jobs/17522522812:16
*** raoul has quit IRC12:43
*** nimish has joined #buildstream13:17
*** raoul has joined #buildstream13:32
*** raoul has quit IRC14:03
*** raoul has joined #buildstream14:38
*** raoul has quit IRC14:38
*** jonathanmaw has quit IRC14:38
*** phildawson has quit IRC14:38
*** raoul has joined #buildstream14:39
*** phildawson has joined #buildstream14:39
*** jonathanmaw has joined #buildstream14:39
*** kapil___ has quit IRC14:51
benschubertWhen storing data on a remote cache, I have a 1 to 4 ratio about disk space used (meaning a 1GB "build" would take 4GB on the remote cache as a mean), is that expected? I'm not caching build trees15:38
juergbibenschubert: no, bst-artifact-server doesn't use any compression, however, it should also not require substantially more space than the actual payload (metadata should not be that big)15:42
juergbiunless it has a huge number of tiny files, which would result in large Directory objects15:43
benschubertjuergbi: any clues on how to investigate?15:47
juergbibenschubert: castool might help https://gitlab.com/jmacarthur/cas-inspector/15:48
jmacThat's very old now, I'd be surprised if it worked15:49
juergbibasic structure hasn't changed, though, iirc15:49
juergbiat least for read-only access15:49
jmacYes, but the place we import GRPC from did iirc15:50
gitlab-br-botraoul.hidalgocharman approved MR !1216 (tristan/missing-file-errors->master: Improve error reporting when files are not found) on buildstream https://gitlab.com/BuildStream/buildstream/merge_requests/121615:51
benschubertjuergbi: I'll try this thanks15:51
juergbibenschubert: or more low level you could also try to find the largest blobs and check what they are15:52
juergbimaybe buildtrees are still accidentally cached15:53
benschubertjuergbi: ok I'll look into this16:01
*** ChanServ sets mode: +o tristan16:11
tristanraoul, there are two known issues about spurious test failures (that I know of), one of them was introduced by juergbi parallelizing tests with `pytest .... -n 2` (still dont know why it sometimes crashes one of the threads) and the other has to do with mounts afaik16:11
tristanraoul, next time, better to post the link to the failed job than the successful one, but I think anyway in your case it is the mount failure and is unrelated to whatever patch you are testing16:12
tristanraoul, thanks for looking at !1216 btw :)16:13
raoulfair point, yeah I couldn't see it being caused by anything I'd done but felt it should be raised16:14
raoulnw :)16:14
*** lachlan has joined #buildstream16:51
*** lachlan has quit IRC16:54
jennistristan, if you have some time, would you be able to revist https://gitlab.com/BuildStream/buildstream/merge_requests/1209 please?16:55
*** toscalix has quit IRC16:55
*** toscalix has joined #buildstream16:56
tristanjennis, dont think I visited that before but I'll check it first thing tmw16:59
tristanKinnison, was talking about it I think16:59
jennisYou've commented on it already ;) and thanks!17:01
tristanoh yeah I see and remember :)17:01
tristancold cache17:01
* tristan is really surprised if deep copies are faster than chainmap, and worries only that the replacement is shallow copies, which would "work under the majority of circumstances" but not be correct17:02
*** lachlan has joined #buildstream17:06
jennismhmm :/ can you think of any test we could write that would test this?17:06
tristanjennis, ummm, maybe something that runs bst track on an element/source which has deeply nested dicts, and asserting that only the ref changes as expected17:08
tristanjennis, shallow copies means only the dicts are copied and references to members are not, which leaves some margin of error if any dict is not recursively copied and stuff in there is modified17:09
tristanjennis, So deeply nested dicts which have project option conditionals in them or list directives17:09
tristanwould in my estimation break if the copies are shallow17:10
*** lachlan has quit IRC17:12
jennisBut we've replaced node_chain_copy() calls with node_copy() calls which is a recursive and deep copy, no?17:12
tristanI havent looked deeply enough to say :)17:13
tristanyou would know better17:13
tristanjennis, however, I can say that I originally created ChainMap in order to replace python's deepcopy(), because it was really noticeably slower with large projects17:14
tristanwhere large projects are around 500 elements17:14
tristanlets not even talk about 1000 or 50K element super ginormous projects17:14
jennisI see, thanks for the context17:15
jennisSo note that we've noticed a 20s improvement when loading 75k elements (admittedly, non-complicated elements) and none of the test suite breaking as a result17:16
tristanmhm, I'd be interested in seeing the sample elements17:17
jennisFrom what i'm inferring, it should like more complicated element declarations need to be tested with this change...?17:17
jennistristan, sample elements in this project: https://gitlab.com/jennis/benchmark_debian17:17
jenniswhoops17:17
jenniswrong one17:17
jennisThis one: https://gitlab.com/jennis/debian-stretch-bst17:18
jennisThey're all import elements which look like this: https://gitlab.com/jennis/debian-stretch-bst/blob/master/elements/base-files/base-files.bst for example17:18
tristan"Whoops, GitLab is currently unavailable.17:18
tristan" hehe17:18
jennisyeah it struggles to load the elements subdir :(17:19
tristanyeah, I guess it might be better to commit a generator script somewhere17:19
* tristan will have to turn an eye to benchmarks one day17:19
tristanwe need to generate different shapes and sizes of graph17:20
jennisThere is a nice patch from WSalmon which lets us do this17:20
tristanvertical, horizontal, mixed; and with randomized complexity of realistic project elements17:20
jennisIf you're interested: https://gitlab.com/BuildStream/benchmarks/commit/2aff6ce964133a7358037ea18eb80f48728e11f917:21
tristanthen run the benchmark 1000 times on different randomized samples of realistic elements, and grab the average of per-record times17:21
tristanone thing to note especially about import elements, is they have almost nothing to composite17:22
tristani.e. their defaults are almost nil17:22
jennisThis is true17:23
tristanusing a mix of autotools/meson... real build elements, each with some overrides, will yield more realistic results17:23
jennisI will benchmark the path with gnome/freedesktop17:23
jennispatch*17:23
*** lachlan has joined #buildstream17:40
*** lachlan has quit IRC17:49
*** lachlan has joined #buildstream17:53
gitlab-br-botjennis opened MR !1221 (jennis/assert_composition_failure->master: Add tests to ensure that overwriting on subsequent compositions does not fail) on buildstream https://gitlab.com/BuildStream/buildstream/merge_requests/122118:00
*** phildawson_ has joined #buildstream18:28
*** phildawson has quit IRC18:28
*** raoul has quit IRC18:28
*** alatiera has quit IRC19:13
*** phildawson_ has quit IRC19:16
*** jonathanmaw has quit IRC19:28
*** nimish has quit IRC19:42
*** toscalix has quit IRC20:13
*** tristan has quit IRC20:55
*** lachlan has quit IRC21:04
benschubertTristan: haven't got time to look at the update_state today. Will do tomorrow unless you already did it, keep me updated21:57
gitlab-br-botBenjaminSchubert opened MR !1222 (bschubert/linter-for-tests->master: Enable pylint on the tests) on buildstream https://gitlab.com/BuildStream/buildstream/merge_requests/122222:02

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