IRC logs for #buildstream for Thursday, 2019-11-28

*** narispo has quit IRC03:04
*** narispo has joined #buildstream03:05
gitlab-br-botjuergbi opened issue #1223 (Optimize output_directories in SandboxREAPI (remote execution / buildbox-run)) on buildstream https://gitlab.com/BuildStream/buildstream/issues/122306:17
*** misterwhatever has quit IRC07:15
*** rdale has joined #buildstream08:55
*** traveltissues has joined #buildstream09:34
*** phildawson_ has joined #buildstream10:03
*** tme5 has joined #buildstream10:08
*** bochecha has joined #buildstream10:20
*** bochecha has quit IRC10:20
*** jonathanmaw has joined #buildstream10:23
*** lachlan has joined #buildstream10:30
*** lachlan has joined #buildstream10:31
benschuberttlater[m]: need another round of review? Or can I help?10:34
*** tiagogomes has joined #buildstream10:34
*** tiagogomes has quit IRC10:36
*** tiagogomes has joined #buildstream10:43
tlater[m]benschubert: I'll ask for review soon, just need a minute to finish up10:45
*** lachlan has quit IRC10:51
*** lachlan has joined #buildstream10:57
*** phildawson has joined #buildstream11:01
*** phildawson_ has quit IRC11:01
*** lachlan has quit IRC11:02
*** narispo has quit IRC11:03
*** narispo has joined #buildstream11:03
tlater[m]Is... GitLab down?11:03
tlater[m]Looks like it11:03
tlater[m]Ah, Google at it again11:04
*** lachlan has joined #buildstream11:04
tlater[m]https://status.gitlab.com/ taunts me with their green icon :(11:08
*** lachlan has quit IRC11:13
*** lachlan has joined #buildstream11:13
*** lachlan has quit IRC11:16
benschubertnot green anymore :'D11:18
benschubertgitlab outage o/11:18
tlater[m]\o/11:22
* tlater[m] plays with click.Choice in the mean time11:22
tlater[m]benschubert: on that note, what is your suggestion on how to handle the click conversion?11:23
benschubertchoices=MyEnum.__members__ :D11:23
tlater[m]I deliberately don't want to use FastEnum11:23
benschubertthat's not fastenum :)11:23
tlater[m]Oh, right, yeah, that's probably a better idea :D11:23
benschubertit _should_ work11:24
tlater[m]benschubert: we've seen some odd interaction between static and instantiated things when used in click before11:25
benschubertah?11:25
tlater[m]I don't exactly remember what, but static components of objects didn't particularly like being given to click args.11:26
tlater[m]Since click is evaluated before those components are evaluated or somesuch? Been a little while...11:26
* tlater[m] will try anyway11:26
tlater[m]Hmm, no, looks like I won't11:27
tlater[m]https://click.palletsprojects.com/en/7.x/options/#choice-options11:27
tlater[m]Choice options are a type in the click world11:27
benschuberttype=click.Chocie([Enum.__members__])11:28
tlater[m]benschubert: That removes the conversion11:28
tlater[m]Oh, but hang on, my type inherits from click.Choice11:29
tlater[m]Surely that means it just works?11:29
benschubertpossibly11:29
tlater[m]Yeah, should do, I call super().init(LogLevel.member_names)11:29
tlater[m]So this is equivalent11:30
benschubertyup11:30
tlater[m]Any other suggestions for that bit of code?11:30
tlater[m]Without being able to look at it, of course :D11:31
benschuberthard to do, must admit I don't remember it entirely :'D11:32
tlater[m]Yeah, nw11:33
* tlater[m] will wait for GitLab to come back alive11:33
*** lachlan has joined #buildstream11:34
tlater[m]benschubert: Or maybe some ad hoc review over hastebin? https://hastebin.com/hilugacaze.rb :D11:34
benschubertcan't access that site, proxies.... github's gist?11:35
tlater[m]https://gist.github.com/TLATER/d057723efc63405214048de6d5f6443a11:36
benschubertcheers11:37
benschubertthe thing I don't like here is the very tight coupling between the two classes. Could we move LogLevel as an internal class of ClickLogLevel and rename it BuildBoxCasdLogLevelChoice or something akin?11:39
tlater[m]benschubert: That's a good call11:42
* tlater[m] was trying to see if there's a way to do this with multiple inheritance, but that seems simpler11:44
*** lachlan has quit IRC11:44
*** akvilebirgelyte__ has quit IRC11:52
*** lachlan has joined #buildstream11:54
*** akvilebirgelyte__ has joined #buildstream12:01
*** misterwhatever has joined #buildstream12:08
*** narispo has quit IRC12:15
*** narispo has joined #buildstream12:16
*** lachlan has quit IRC12:17
*** misterwhatever has quit IRC12:19
*** lachlan has joined #buildstream12:28
*** narispo has quit IRC12:29
*** narispo has joined #buildstream12:29
*** lachlan has quit IRC12:34
*** lachlan has joined #buildstream12:37
*** lachlan has quit IRC12:45
tlater[m]juergbi: Regarding this comment: https://gitlab.com/BuildStream/buildstream/merge_requests/1645#note_25137352212:52
tlater[m]Does the EACCESS case matter?12:53
tlater[m]In that case we simply don't have permissions to prune that tree; that's fine, and should raise an error, right?12:53
*** lachlan has joined #buildstream12:53
juergbitlater[m]: yes, if we always specify the basedir12:53
juergbiwith the implicit basedir '/' it would have been odd, imo12:53
tlater[m]Oh, I see what you mean12:53
tlater[m]Technically catching that errno as well and checking if the directory is perhaps empty would have worked, but we don't per-se need that.12:54
juergbiyes, I think requiring basedir is really the best option12:54
juergbiand we shouldn't need to deal with EACCES in that case12:55
juergbi(checking whether the directory is empty would also be racy)12:55
tlater[m]Awesome, in that case, juergbi / benschubert I think that branch is ready now :)12:55
juergbi\o/12:55
tlater[m]!1645 for convenience12:56
gitlab-br-botMR !1645: Refactor casserver.py: Stop relying on the buildstream-internal `CASCache` implementation https://gitlab.com/BuildStream/buildstream/merge_requests/164512:56
tlater[m]Go bot!12:56
* tlater[m] still likes that :D12:56
juergbiremove_path_with_parents looks good to me now12:57
gitlab-br-botjuergbi approved MR !1645 (tlater/artifactserver-casd->master: Refactor casserver.py: Stop relying on the buildstream-internal `CASCache` implementation) on buildstream https://gitlab.com/BuildStream/buildstream/merge_requests/164512:57
tlater[m]\o/12:58
*** lachlan has quit IRC12:58
juergbitlater[m]: pylint/mypy aren't happy yet13:02
tlater[m]Boo13:02
tlater[m]They didn't tell me they were unhappy13:03
tlater[m]Or maybe they did and I've just started tuning them out because my config was broken for so long13:03
tlater[m]... no. Seems like we have a different pylint version upstream now?13:04
juergbishouldn't tox take care of this or are you using a manual install of pylint?13:12
juergbior it might need tox --recreate13:12
tme5so, i'm starting to look again at #1047, as it's been bugging us on a project using buildstream13:17
gitlab-br-botIssue #1047: Downloadable file plugins should be able to handle local sources within the project https://gitlab.com/BuildStream/buildstream/issues/104713:17
tme5a while ago i discussed this with van berkom in the mailing list but we didn't get to a clear outline of what the solution should be13:19
tme5i'm going to have a bit more of a think about how to get the best UX with this13:20
tlater[m]tme5: We have an MR that's been closed because nobody had time to bring it to an end13:20
tlater[m]It's a fairly complex issue.13:20
tme5you have a number for that?13:21
tme5do you*13:21
tlater[m]tme5: !142313:21
gitlab-br-botMR !1423: WIP: Allowing a downloadable file to be sourced locally https://gitlab.com/BuildStream/buildstream/merge_requests/142313:21
tme5yes, i read this at the time, it contributed to my initial proposal for beaviour13:22
tlater[m]Ah, you've commented on that13:22
tlater[m]Well, bring it up on the ML again13:22
tme5will do, after i have something new to say13:25
*** phildawson has quit IRC13:36
*** phildawson has joined #buildstream13:37
tme5just because i don't know much about the caching: are sources caches only local? like they can't be shared on the cache servers?13:44
benschuberttme5: on master, you can now have source caches on remote too :)13:46
benschubertyou have basically 3 caches for sources:13:47
benschubert1) the buildstream local source cache, based on CAS13:47
benschubert2) the plugin-dependent source cache13:47
benschubert3) The remote source cache, which is a bst-artifact-server (or potentially external implementations when this becomes a thing)13:47
coldtomjust ooi, could someone use an external CAS as a remote source cache, provided there was a bst-artifact-server somewhere else, or does that only work with artifacts?13:50
*** rdale has quit IRC13:51
benschuberttlater[m]: ^ ?13:52
tlater[m]Should work with either, iirc13:52
coldtomneat!13:53
benschuberttlater[m]: finished review of your MR, I have some last few nits around logging and code style, for the rest LGTM :)13:55
*** lachlan has joined #buildstream14:21
*** lachlan has quit IRC14:31
tlater[m]benschubert: Alright, I've cleared those out :)14:39
tlater[m]Happy for me to merge the branch at this point?14:39
gitlab-br-botBenjaminSchubert approved MR !1645 (tlater/artifactserver-casd->master: Refactor casserver.py: Stop relying on the buildstream-internal `CASCache` implementation) on buildstream https://gitlab.com/BuildStream/buildstream/merge_requests/164514:44
tlater[m]\o/14:45
tme5potentially major suggestion, how do we feel about retiring "ref" as a word and replacing it with something more descriptive on each plugin14:57
tme5like "sha256" for remote and "commit" for git, for example14:58
coldtomnot sure it's worth the huge breaking change really14:59
tme5(btw, i'm suggesting these off-the-cuff because as far as i know, 2.0 is the next milestone for bst and i'd have thought we can break indiscriminately for that)14:59
tlater[m]tme5: It makes parsing significantly more difficult since it leaves the key up to the plugin, so we now need to know what ref key the plugin uses ahead of loading element state.15:00
coldtomtlater[m]: it's abstracted isn't it?15:00
coldtomusing Source.get_ref() etc.15:00
tlater[m]coldtom: Yes, but you don't need to load the plugin for that15:01
* tlater[m] thinks it also makes grepping and otherwise interacting with projects through non-buildstream means needlessly difficult15:01
tlater[m]Ultimately all those more specific types of refs are just refs15:01
tlater[m]From a project point of view you don't care about the difference.15:02
tlater[m]The benefit is that someone entirely new to BuildStream can use the terminology they're used to that's inherent to their specific tool, but I think that's a very small benefit, especially since users aren't expected to actually interact with `ref` much.15:03
tme5hrmm, i suppose it's also more info to keep in your head when using buildstream15:03
tlater[m]Yeah, needing to know exactly which plugin uses which `ref` name is also a pain x)15:04
tme5yeah, think it's probably a usability net-loss15:04
coldtomalso, even if now is the best time for breaking changes, it'd still be nice to have a smallish diff to port a project to bst215:04
tlater[m]Currently it'll stay reasonably small, I think :) Main differences are in plugins and CLI.15:05
coldtom+1, it's currently pretty painless I think15:05
coldtomso, i have a master bst-artifact-server configured to use 250G, apparently things succeed at pushing to the server, however when I try to pull from said server the pull just immediately says "SUCCESS" without pulling any objects. Some of the artifact refs are there, some are not at all there, anyone got any ideas?15:05
tlater[m]coldtom: The artifact refs are on the server?15:06
coldtomtlater[m]: some are, some are not15:06
tlater[m]Interesting15:06
tlater[m]Do the objects appear on the server end?15:07
coldtomthere's 14G in cas/objects so I think so15:07
tlater[m]And none of the objects are there locally anymore?15:07
tlater[m]It sounds like BuildStream isn't pulling what you already have locally15:08
coldtomit's definitely not there locally, because running a build starts fetching everything15:08
coldtomalso, the build to populate the cache was on a separate machine15:08
tlater[m]Specifically source cahce, then?15:08
*** rdale has joined #buildstream15:08
* tlater[m] hasn't seen this before, wouldn't know why it happens15:09
* coldtom is going to try nuking the cache and pushing afresh to see if it works now15:09
tlater[m]I doubt it would slip through our test suite. Any chance you could look at more verbose logging to see what messages are exchanged between BuildStream and the casserver?15:09
coldtomsure, i assume you want bst --debug?15:10
tlater[m]I hope that gives enough detail, yeah15:10
tlater[m]If not, In a minute or 10 from now a branch will land that allows enabling logging on the server end.15:11
tlater[m]That should make debugging these sorts of issues significantly easier :D15:11
coldtom\o/ that is a good patch, ty15:12
tlater[m]coldtom: If you have feedback on the logging, send it my way - this has been a thorn in my side for a while now.15:14
*** lachlan has joined #buildstream15:14
*** lachlan has quit IRC15:17
coldtomhmm pulling with debug didn't give any more information15:20
coldtomoh, pulling is working on the CI runner that did the push, just not other machines (even when running the same docker image)15:22
*** lachlan has joined #buildstream15:27
*** lachlan has quit IRC15:30
tlater[m]coldtom: After clearing out the objects in the CI runner?15:44
* tlater[m] wonders if their BuildStream versions don't match up and cause cache key oddities15:44
coldtomthe log shows `fetch needed` rather than `cached`15:47
tlater[m]:|15:48
tlater[m]coldtom: Any particularities to your setup that we should know of?15:48
coldtomi think everything should be on the same docker image, if not there's 8 commits between and cache keys seem to be the same15:49
coldtomonly thing i can think of is that the bst-artifact-server is actually two servers, one running as push and the other as pull on the same drive15:49
coldtomboth are configured to have the same quota15:50
*** akvilebirgelyte__ has quit IRC15:51
tlater[m]Right15:51
tlater[m]They're operating on the same directory, I assume?15:52
coldtomyes15:52
coldtomi believe this setup works for 1.4.x fwiw15:52
tlater[m]I can see that being somewhat problematic in the current world order, because both of them will be running buildbox-casd instances, which don't seem to support running at the same time terribly well15:53
coldtomah, that's a good point15:53
tlater[m]juergbi: would be better to judge what could go wrong here15:53
tlater[m]We do try to keep them from interfering as far as I know (certainly with my branch-to-land), but I'm not sure how successful we'd be15:54
*** akvilebirgelyte__ has joined #buildstream15:55
juergbiwe should probably look into that. however, it's supposed to be safe as the pull-only server should not perform any writes and thus, shouldn't trigger or interfere with expiry15:55
juergbiwe should also really fix it such that we can handle both in the same process. it's a gRPC (python) issue, though, iirc15:56
tlater[m]juergbi: Any chance they end up using the same socket in a slightly older buildstream version?15:57
juergbiI think we've always used sockets in random temp dirs in master, so, no15:58
juergbiyour branch changes this slightly but risk of conflict should be extremely low15:58
juergbieh, your commit in my branch15:58
tlater[m]Yeah, just wasn't sure if we'd ever used a single deterministic path15:59
juergbitlater[m]: hm, remote execution CI job fails in your branch16:12
tlater[m]juergbi: Yeah, just spotted that16:13
tlater[m]No logging in CI unfortunately, I'll try to reproduce locally16:13
juergbionly in the last 3 pipelines16:13
tlater[m]Eh, it'll be easiest to push a commit with logging enabled16:14
tlater[m]Why is that test set to be allowed to fail anyway?16:14
juergbiit might be using buildgrid master16:16
juergbiideally we'd have two jobs. a gating one with a fixed buildgrid revision, and master non-gating16:16
*** kapip has joined #buildstream16:16
WSalmontpollard, docker exec -u 0 -it mycontainer bash16:32
WSalmonhttps://stackoverflow.com/a/3548534616:32
coldtomif i have an existing bst cache, is it safe to start up a bst-artifact-server using it as the cache dir?16:51
* coldtom needs to build on a separate machine but not lose his cache16:52
tlater[m]coldtom: Keep a copy around. I suspect the directory formats are ever so slightly different, but most of it should be compatible.16:52
tlater[m]The both use buildbox-casd, it's just some legacy stuff that might not entirely work16:52
tlater[m]juergbi: The branch seems to fail invoking local_cas.FetchMissingBlobs16:53
tlater[m]That wouldn't go through bst-artifact-server, right?16:53
juergbiif it's purely local, not via a CasRemote, then no16:54
tlater[m]It's going through casremote.py16:54
tlater[m]FetchMissingBlobs isn't even implemented on bst-artifact-server, so I wouldn't see how it could invoke that16:55
tlater[m]OTOH, that would explain the error16:56
juergbitlater[m]: FetchMissingBlobs is in casd. if that's done in a context with a remote, casd will talk to bst-artifact-server16:56
juergbiwith a regular CAS method16:56
juergbi(which will then proxy it to the 'remote' instance of casd, of course)16:57
* tlater[m] wonders if he accidentally removed a FetchTree method somewhere16:57
juergbionly failing with remote execution seems odd, though16:59
juergbiunless the issue is that it breaks compatibility with buildgrid's cas server17:00
juergbiI'm actually not sure whether that is used or bst-artifact-server for the CAS part17:00
tlater[m]This seems to be specifically workspace related17:01
tlater[m]All the other RE tests pass17:01
tlater[m]Ah, looks like what changed is that I rebased against master17:04
tlater[m]Which changed some stuff regarding workspaces17:04
juergbihm, but RE CI job passed in that branch, right?17:06
juergbiso the server changes break the new test. that seems possible17:07
tlater[m]It's annoyingly hard to debug locally :(17:08
*** lachlan has joined #buildstream17:11
*** lachlan has quit IRC17:28
benschuberttlater[m]: you were playing a lot with update_cache_key, do you remember whether the state can change when we get cached?17:32
tlater[m]benschubert: Let me double check17:32
tlater[m]`__update_artifact_sate` should be called17:33
tlater[m]But we'd already know the cache key, I assume?17:33
*** narispo has quit IRC17:34
tlater[m]The main state that will change is the state of reverse dependencies - some builds will be scheduled17:34
*** narispo has joined #buildstream17:34
benschubertright, thanks :)17:37
benschubertI *think* I have a clear path on untangling that, finally17:39
tlater[m]benschubert: Oh? I'd love to see that :D17:40
benschubertI should soon have a WIP17:40
*** jonathanmaw has quit IRC17:46
*** tme5 has quit IRC17:52
*** misterwhatever has joined #buildstream17:52
*** narispo has quit IRC17:58
*** misterwhatever has quit IRC17:58
*** narispo has joined #buildstream18:02
*** tiagogomes has quit IRC18:13
benschuberttlater[m]: !1739 is a start :)18:14
gitlab-br-botMR !1739: WIP: Optimize consistency and state handling https://gitlab.com/BuildStream/buildstream/merge_requests/173918:14
benschubertearly reviews are appreciated given the size this thing is going to be18:15
benschubertI'm not entirely sure about the intent of those two tests: https://gitlab.com/BuildStream/buildstream/blob/master/tests/frontend/track.py#L206-224 . Is it to make sure that when we check for consistency, we do catch errors on plugins? Or is there something more? Because I would then just use a 'bst show', which should be sufficient...18:22
benschuberttristan:  I think you wrote them? might be a long time ago though ^18:22
*** narispo has quit IRC18:28
*** narispo has joined #buildstream18:28
*** slaf_ has joined #buildstream18:30
*** slaf_ has joined #buildstream18:30
*** slaf_ has joined #buildstream18:30
*** slaf_ has joined #buildstream18:30
*** slaf has quit IRC18:32
*** slaf_ is now known as slaf18:32
tlater[m]benschubert: I'll take a peek in a bit18:39
tlater[m]Food first :D18:39
tlater[m]benschubert: Oh, I had to do things with those tests recently18:39
tlater[m]It's a bit more than that18:40
tlater[m]It's also to find bugs when running methods of plugins that are only invoked when tracking18:40
tlater[m]Essentially whether we'll get a stacktrace if you run one particular method in a plugin18:41
tlater[m]It definitely covers some things `bst show` wouldn't - there are sister methods for `fetch` as well18:41
tlater[m]s/methods/tests/18:41
benschubertwell the track one only triggers on get_consistency, which is done as soon as the element is instantiated... :D18:53
*** traveltissues has quit IRC19:19
*** rdale has quit IRC23:20
*** kapip has quit IRC23:23

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