IRC logs for #buildstream for Sunday, 2018-09-09

*** tristan has joined #buildstream00:05
*** leopi has joined #buildstream04:06
*** leopi has quit IRC06:53
*** tristan has quit IRC07:19
*** tristan has joined #buildstream08:01
*** ChanServ sets mode: +o tristan08:31
*** alatiera_ has joined #buildstream08:32
tristantlater[m], I didn't notice your reply yesterday (lost connection temporarily it seems)08:32
tristantlater[m], later in log I elaborate on *some* of the things I've been seeing: https://irclogs.baserock.org/buildstream/%23buildstream.2018-09-08.log.html#t2018-09-08T10:55:5208:33
tristantlater[m], I am a bit flabbergasted as to how messy things have gotten, but I'm not on a witch hunt... I am however thinking of writing these up and calling them out on the mailing list08:35
tristanthe headline is basically that; we need to do better in review; all of us08:35
tristanThat shouldn't have happened to bochecha, looks like a gitlab bug :-S08:40
tristanbst-external has master as a protected branch, and only maintainers allowed to merge; bochecha is developer08:41
* tristan files https://gitlab.com/gitlab-org/gitlab-ce/issues/5127908:55
*** abderrahim has quit IRC09:11
*** abderrahim has joined #buildstream09:11
*** alatiera_ has quit IRC09:18
*** alatiera_ has joined #buildstream09:19
*** alatiera_ has quit IRC09:20
*** alatiera_ has joined #buildstream09:20
*** alatiera_ has quit IRC09:25
*** bochecha has joined #buildstream12:06
tristantlater[m], I have an awesome branch now to cleanup... only about 80% of the mess, I will share tomorrow - I want to run some tests12:42
tristantests/artifactcache/expiry.py::test_never_delete_dependencies will have to be disabled unless we can get better synchronization, for that test to work realistically; we need more elaborate prevention of builds in the main process, but the test is rather unimportant12:43
tristanI.e. once we determine that our estimate of the size has exceeded the quota... we need to run a cache calculation job in advance of the cleanup; that job is not exclusive of builds12:44
tristanOr, it could be a "calculate cache size and maybe cleanup job" which is exclusive at that point; that would be straightforward and work12:44
tlater[m]Hrm, it's annoying that we'd have to block builds with cache size calculation with the latter.12:46
*** tristan has quit IRC12:50
*** tristan has joined #buildstream13:19
bochechavalentind, hi, I'm looking at https://gitlab.com/BuildStream/buildstream/issues/523 ; I tried hardcoding 'aarch64' in the SandboxConfig key instead of using the result of os.uname, just to test… I still don't hit the cache key :-/13:45
*** leopi has joined #buildstream14:23
*** leopi has quit IRC14:38
*** alatiera_ has joined #buildstream14:58
persiabochecha: Have you tried running BuildStream in an aarch64 chroot on your laptop?  My guess is that while the binfmt trick lets you execute aarch64 binaries, something about BuildStream arch autodetection is running a native binary (might be some python internal, for example).15:55
bochechapersia, buildstream is running native on my laptop,i.e x86_6415:56
bochechaI haven't tried runningit in an aarch64 chroot, I should probably try that, thanks15:56
persiaAlso note that even if your kernel has the binfmt stuff configured, the interpreter needs to be injected into the chroot to run the foreign arch in the chroot, which I think BuildStream may need help doing.15:57
bochechawhat do you mean?16:05
persiaAs I understand it, one runs commands under an interpreter, so one can define interpreters with entries in /proc/sys/fs/binfmt_misc16:07
persiaFor example, you might have a file named "qemu-aarch64" in that directory, in which there is a line that says something like "interpreter /usr/bin/qemu-aarch64-static"16:08
persiaThis means that when an aarch64 ELF file is encountered, it will call that interpreter to run the file.  If one is operating in a chroot environment, one needs to copy the interpreter from the host to that path in the chroot (or bind-mount or something).16:09
persiaIf the interpreter is not found in the choot, then when the foreign binary is encountered, it will fail in the same way it would for a system not using binfmt to run foreign code.16:10
persia(or at least, such is my experience: someone might have done something cool to make it work differently since I last looked)16:10
gitlab-br-botbuildstream: merge request (Qinusty/skipped-rework->master: Add SkipError for indicating a skipped activity) #765 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/76516:35
*** alatiera_ has quit IRC16:47
*** leopi has joined #buildstream16:49
tristanbochecha, I filed https://gitlab.com/gitlab-org/gitlab-ce/issues/51279 btw17:01
tristantlater[m], I'm not sure how annoying it actually is, though; because note that that "maybe_cleanup" job only happens when the estimated artificial artifact cache size exceeds the quota17:03
tristanthen again, not doing it at all seems not horrible either, considering our logic is already fuzzy17:04
tlater[m]It depends on the project, if you have a lot of deduplication there will be lots of cache size recalculation... But maybe it's not that big of an issue in practice.17:04
tristanat least, if we reach an out of space disk condition for some reason (calculating the size took a very very long time perhaps ?), then we *still* have to fail gracefully17:05
tristanWell, if you have a lot of deduplication, then it will be a long time between "maybe_cleanup" jobs17:05
tristanIf you do not have a lot of deduplication, then a real cleanup is "coming soon"17:06
tlater[m]I feel like this is the sort of thing you'll want to test with lots of different kinds of projects.17:07
tlater[m]I suppose that in a long build a few minutes of cleanup probably won't matter much.17:09
tristantlater[m], Does the "current thing" somehow make sense, though ? From what I can tell; the mentioned test case is basically a race condition17:09
tristanIt says that "If I try to build twice as many artifacts than my quota size, then only the artifacts which fit should get into the cache, and the build should fail"17:09
tristanBut, we launch a calculate size job once we reach the quota, and then we might launch a cleanup when that calculate size job completes17:10
tristanIn the mean time, we're dispatching those other two build jobs17:10
tlater[m]Yes, I see what you mean.17:11
tristantlater[m], It *could* fail at the time that those build jobs try to commit the artifacts which cause the cache quota to be busted, but that seems rather disingenious17:11
tristanwe already built them, and barring an actual "disk out of space" condition, it's better to just cache them17:11
tlater[m]This is definitely easier to handle if calculation and cleanup are one thing.17:13
tristanConsidering the current crashing state of things, that is definitely better17:16
tlater[m]Yeah, I agree, it's probably better just to keep this logic from blowing up completely.17:16
tristanBut, we could equally not have that test; Or we could manufacture that test in such a way to have a sleep() to ensure it's not a race in some way17:16
tristanMy branch btw, does not have a distinction between 'cache_size' or 'estimated_size', there is only '_cache_size', and nobody except artifactcache.py can access it17:17
tristanactually all of that related public stuff in artifactcache.py is now safely private17:18
tristanand cache_size is never allowed to be set to None, to cause weird intentional side effects that are extremely hard to follow17:18
tristanThe elementjob.py and queue.py don't communicate the cache_size anymore, either; that is reported back to the main thread only through explicit channels, not like workspaces17:20
tristananyway; it's much simplified; I needed to get things simple just to really be sure of what I was doing at this point17:21
*** alatiera_ has joined #buildstream17:55
*** dtf has quit IRC17:59
bochechatristan, yeah, I received the email18:07
bochechatristan, I get a 404 though, is it private/hidden?18:08
*** mohan43u has quit IRC18:35
tristanbochecha, somebody set it to confidential yeah, strange that you cannot see it even you are in the participants18:40
tristananyway; I guess it means they are taking it seriously, it's a kind of security breach18:41
bochechayeah18:54
*** alatiera_ has quit IRC18:56
*** alatiera_ has joined #buildstream18:56
*** leopi has quit IRC19:00
bochechabasically, the field is called "Target branch", which means it's the branch you'll commit to19:13
bochechaexcept usually in gitlab, "target branch" is the branch your MR will be merged into19:13
bochechaso when I saw "target branch: master", I thought sure,that's where I want the MR to be merged in19:13
bochechaturns out, I was supposed to change the value inthat field, and that would have created a new branch, and an MR for it19:14
bochechaso it's a bad UX issue19:14
bochechacoupled with a permission issue19:14
*** bochecha_ has joined #buildstream19:43
*** bochecha has quit IRC19:44
tristanbochecha_, indeed, either the UX should work as you describe, or it shouldn't even let you start editing the file at all where you don't have permission20:44
bochecha_I've edited files in repos I had 0 permissions20:44
bochecha_and that just made MRs20:44
*** bochecha_ has quit IRC22:43
*** alatiera_ has quit IRC23:29
*** tristan has quit IRC23:51

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