IRC logs for #buildstream for Tuesday, 2019-09-24

*** phoenix has quit IRC00:01
jjardonbenschubert: buildstream should be compatible with buildbarn to use it as a remote cache. It will not work if you use it for remote execution (yet)01:10
*** tristan has joined #buildstream04:01
*** ChanServ sets mode: +o tristan04:01
*** tristan has quit IRC05:17
*** tristan has joined #buildstream06:57
*** mohan43u has quit IRC07:04
*** phil has joined #buildstream07:04
*** mohan43u has joined #buildstream07:10
*** mohan43u has quit IRC07:21
*** mohan43u has joined #buildstream07:21
*** ahmed89 has joined #buildstream08:08
gitlab-br-botmarge-bot123 merged MR !1609 (coldtom/mark-filter-test-integration->master: tests: Add some missing integration marks) on buildstream https://gitlab.com/BuildStream/buildstream/merge_requests/160908:16
benschubertjjardon: oh great, thanks!08:19
*** bochecha has joined #buildstream08:38
*** tiagogomes has joined #buildstream08:44
*** tristan has quit IRC08:59
*** traveltissues has joined #buildstream09:04
*** tristan has joined #buildstream09:07
*** tpollard has joined #buildstream09:08
benschubertjuergbi: question about the artifactserver, the way we store our artifact proto is not cas-based correct? Where would be the best place to look to understand how it works?09:15
juergbibenschubert: correct, the protos are stored as simple files outside CAS, the relative path matches the artifact cache key09:16
benschubertawesome, thanks!09:17
benschubertand the artifact proto is stored as  the content of the file, correct?09:18
juergbiI don't think there is comprehensive documentation about this. relevant code is in _artifactcache.py and casserver.py09:18
juergbiyes09:18
juergbiand fields in that proto file point to CAS digests09:18
benschubertthanks!09:18
*** raoul has joined #buildstream09:27
*** lachlan has joined #buildstream09:28
*** jonathanmaw has joined #buildstream09:46
benschubertjuergbi: (sorry for the amount of questions, I'm working on a talk for next week and want to make sure I'm not saying wrong stuff), For RE, does BuildStream need to download all sources and dependencies locally before launching the build? Or does it try first without uploading anything, and only download then reuploads the missing parts?09:53
juergbibenschubert: regarding dependencies, it initially downloads only the Directory protos, not the actual blobs. missing blobs are downloaded from the artifact server and then uploaded to RE CAS as needed right before sending the Action09:57
benschubertjuergbi: right before sending the action or whenever we get a PRECONDITION_FAILED?09:58
juergbithe same should apply to sources, however, I forgot whether we actually got around implementing it09:59
benschubertalso, what's the directory protos? I'm not sure I heard this one yet :/09:59
juergbiwe always call FindMissingBlobs before sending the action, so we do it in response of that09:59
juergbigiven that we construct the staged tree for each action, it's unlikely that e.g. the toplevel directory is already on the server10:00
juergbii.e., we very likely anyway have to upload a few blobs10:00
juergbiDirectory is the CAS proto that describes directory entries (subdirectories and files)10:01
benschubertSo the protocol is the following: fetch source proto if not available -> fetch tree proto for sources -> fetch artifact proto for build dependencies -> fetch tree proto for each dependency artifact -> merge both source and artifact input iinto a new input tree -> findMissingBlob() -> download then upload all missing -> create REAPI Action -> submit to RE server10:01
benschubertis that accurate?10:02
juergbithat's pretty close10:03
benschubertwhat's missing? :)10:03
juergbiwe create the REAPI Action a bit earlier and check the action cache if one is configured. although that's probably not helpful typically10:03
juergbiand we only work with Directory protos in BuildStream, not complete Trees10:04
benschubertSo REAPI Action is called before the findMissingBlob() correct?10:04
benschubertok, so we fetch the directory protos instead of the tree protos?10:04
juergbiif the optional action cache endpoint is configured, we query that before findMissingBlobs10:05
juergbihowever, this should probably normally not even be configured, assuming the RE server checks it internally10:05
juergbi(one less round trip)10:06
benschubertI see, thanks a lot10:07
benschubertI think I'll omit this part from the slides, but the rest is much clearer now, thanks10:07
juergbiwe use Tree only for action output but otherwise plain Directory protos10:08
juergbi(Tree is anyway just a combination of Directory protos)10:09
benschubertOk, so we combine the directory protos of each source and put them in a single one10:11
*** tristan has quit IRC10:17
*** tristan has joined #buildstream10:24
*** lachlan has quit IRC11:10
*** lachlan has joined #buildstream11:17
*** lachlan has quit IRC11:31
*** narispo has joined #buildstream12:45
*** lachlan has joined #buildstream13:10
*** lachlan has quit IRC13:18
*** lachlan has joined #buildstream13:19
*** lachlan has quit IRC13:31
*** lachlan has joined #buildstream13:40
benschubert      File "/usr/local/lib/python3.7/dist-packages/buildstream/source.py", line 637, in mark_download_url13:40
benschubert        "Primary URL marked twice with different URLs"13:40
benschubert    AssertionError: Primary URL marked twice with different URLs13:40
benschubertUh? How would I go debugging this?13:40
*** lachlan has quit IRC13:48
*** lachlan has joined #buildstream13:50
juergbibenschubert: is this with an upstream plugin? do you have a backtrace?13:51
coldtomi've seen that a few times with the git plugin i think, but i can't recall what the issue was13:55
coldtommaybe due to submodules iirc13:55
benschubertYep, git plugin when trying to open a workspace13:55
benschubertAnd yep it has submodules13:55
cs-shadowdo the submodules (including transitive ones) point to the same repo by  any chance?13:56
benschubertThat is possible, I have 15 submodules at the first level13:56
benschuberthttps://gitlab.com/snippets/1897698 for the stack13:57
*** lachlan has quit IRC14:02
*** ahmed89 has quit IRC14:14
*** lachlan has joined #buildstream14:35
benschubertah yeah, two different submodule of the same repo14:56
benschubertOk, listing explicitely all the submodules removed the problem15:09
cs-shadowsorry i was afk for a while, but bst could surely do a better job in this case if it's going to error out15:10
benschubertYep, an assertion is definitely not what I would expect :'D15:10
juergbiyes, the question is whether we should catch this in core or in the git plugin15:13
coldtomhttps://gitlab.com/BuildStream/buildstream/issues/757 is a related issue to this15:14
coldtomis there a way i can tell BuildStream not to cache a certain element?15:16
*** lachlan has quit IRC15:18
cs-shadowjuergbi: I think the source class at least should raise an error instead of asserting this. But that will likely be generic error about getting two URLs for the same primary.15:18
cs-shadowOn top of that, the git source can perhaps raise a nicer error just before it marks all the submodule urls15:18
tpollardcoldtom: not explicitly afaik15:18
gitlab-br-botBenjaminSchubert opened issue #1142 (Autocompletion of artifacts is throwing stack traces) on buildstream https://gitlab.com/BuildStream/buildstream/issues/114215:19
juergbics-shadow: if we consider it a plugin bug, isn't assertion failure correct? maybe we should be clearer in the message we present to the user that this is a bug in a particular plugin15:19
cs-shadowI'm not sure. For example, assertions may be disabled in production, which would make it more difficult to catch such errors if one has buggy plugins15:21
cs-shadowfor the messaging, I agree that we should mention that it's plugin's fault15:21
coldtomtpollard: ack, essentially I want to build something against a proprietary binary blob, but I'm pretty sure caching said binary blob so that I could build against it would be redistribution15:24
* coldtom will open an issue 15:24
juergbics-shadow: if we want to move away from assertions for bugs, we'll have to discuss this as a contribution policy change and provide a new mechanism that buildstream core handles properly. and possibly switch over the whole code base at once15:25
tpollardcoldtom: hmm, can the `exclude:` provide something like that for you?15:28
*** lachlan has joined #buildstream15:31
coldtomtpollard: perhaps not `exclude` but I think craftily downloading them as sources and staging them separately could work? I'll probably have to investigate more15:32
cs-shadowjuergbi: fair enough, maybe asserts to exceptions is an orthogonal issue15:32
cs-shadowin which case, I'd say this is a plugin issue and gitsourcebase should fix this15:33
tpollardcoldtom: potentially yeh, might have to be aware of buildtrees though (not cached by default in master though)15:33
gitlab-br-bottraveltissues opened (was WIP) MR !1563 (traveltissues/985->master: workspaces via sourcecache 1) on buildstream https://gitlab.com/BuildStream/buildstream/merge_requests/156315:54
*** lachlan has quit IRC15:55
*** lachlan has joined #buildstream16:00
*** bochecha has quit IRC16:29
*** lachlan has quit IRC16:35
*** lachlan has joined #buildstream16:52
laurencejuergbi, just doing some old ticket tidy up - do you think we can close off https://gitlab.com/BuildStream/buildstream/issues/866 ?16:54
juergbilaurence: no, that's still valid16:56
juergbiwell, partially16:56
juergbiyou no longer get a fatal error message like that (and with the pending casd MR the quota will automatically be adjusted)16:57
juergbihowever, the potential confusion because the quota size only applies to cas (and not the separate sources directory) still holds16:58
gitlab-br-botmarge-bot123 closed issue #1088 (Do not force reset workspace cache data) on buildstream https://gitlab.com/BuildStream/buildstream/issues/108817:00
gitlab-br-botmarge-bot123 merged MR !1563 (traveltissues/985->master: workspaces via sourcecache 1) on buildstream https://gitlab.com/BuildStream/buildstream/merge_requests/156317:00
*** lachlan has quit IRC17:02
juergbilaurence: I added a comment17:04
laurencealright, cheers juergbi17:06
*** traveltissues has quit IRC17:08
*** jonathanmaw has quit IRC17:10
benschubertuh? With the latest master, my resolve time for cached state jumped from 17s to 1:40m ? On a tree of 195 elements. Is that expected?17:10
*** tristan has left #buildstream17:11
*** tristan has joined #buildstream17:11
*** tiagogomes has quit IRC17:13
tpollarddoes that included !1563 ?17:21
benschuberttpollard: yep, that's my only change, including this MR :/17:21
benschubertbut the benchmarks don't seem to agree there17:22
tpollardin the MR it was reported that show took a hit17:22
tpollardalthough not to that severity....17:22
benschubertand I don't have a workspace :/17:22
tpollardyep indeed17:23
tpollard:S that's not quite ~20%.....17:23
benschubertand it's without anything cached either17:23
benschubertwhich is .35% in the benchmarks17:24
benschubertOh well, I'll have a look tomorrow17:24
*** lachlan has joined #buildstream17:35
*** lachlan has quit IRC17:38
*** traveltissues has joined #buildstream19:45
*** traveltissues has quit IRC20:20
*** tristan has quit IRC22:26
*** narispo has quit IRC22:59
*** narispo has joined #buildstream22:59
*** narispo has quit IRC23:08
*** narispo has joined #buildstream23:08

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