IRC logs for #buildstream for Friday, 2018-05-25

gitlab-br-botbuildstream: merge request (albfan/gitignore->master: .gitignore: Ignore autogenerated docs) #473 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/47304:29
gitlab-br-botbuildstream: merge request (gitignore->master: .gitignore: Ignore autogenerated docs) #464 changed state ("closed"): https://gitlab.com/BuildStream/buildstream/merge_requests/46404:31
*** Prince781 has joined #buildstream04:43
*** Prince781 has quit IRC04:53
*** noisecell has joined #buildstream06:17
gitlab-br-botbuildstream: merge request (jjardon/doc_sandbox->master: WIP: docs: Fix build with latest version of sphinx) #414 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/41406:53
*** finn has joined #buildstream08:05
*** jonathanmaw has joined #buildstream08:16
*** aday has joined #buildstream09:39
jmacI'd like to raise a WIP MR for the CAS-backed virtual directory work today. However, at the moment it's a merge of my previous unmerged virtual directory work and juergbi's CAS artifact cache work, so it will be difficult to see my recent changes among the rest of the work. Any idea how to proceed?09:39
Nexusjuergbi: any news on CAS?09:50
jmacjuergbi doesn't typically do buildstream on Fridays09:51
Nexusi know, just incase he happens to glance10:03
Nexushe's still in the channel, so he might10:03
juergbijmac: as long as you rebase and keep the dependent commits at the bottom, it shouldn't be too difficult to distinguish10:20
juergbi(when looking at per-commit history instead of overall changes)10:20
jmacOK, if you're happy browsing commits rather than a whole MR, that is fine10:21
juergbiah, or maybe you could specify my cas branch / your previous virtual directory work as target branch10:21
juergbieven if we won't merge it right now. i think we can change it to master later10:21
jmacI haven't tried that on GitLab before but I'll see what I can do10:21
jmacOtherwise I'll just squash the commits down to something sensible10:21
juergbiI haven't tried it either but it might work10:21
juergbiwould also be an option10:21
juergbiNexus: the CAS MR should be complete. jjardon is planning to put it under test using the freedesktop-sdk10:22
* jennis rushes10:23
jennislol10:23
Nexusjuergbi: ok, so what's the plan regarding using that over splitting the artifact?10:23
Nexusas per the "Stop the train" email chain10:23
juergbiwould probably make sense to go straight towards a CAS-based approach10:25
juergbiafaik the splitting approach is not in a MR yet, and the .git/.bzr reduction prerequisite is also not in master yet10:25
juergbibut I can't say for sure when CAS will be merged. will need a review by tristan and he's on holiday10:26
jennisHi guys, would appreciate some thoughts on the following. I'm looking at determining how much disk space has been used by calling a subprocess which essentially calls `df`, fiddling with the output of this and putting it into a list and parsing the list10:26
juergbihm, is there no Python API for this?10:27
jennisSo essentially looking how much is "used" under "/"10:27
jennisMaybe I haven't looked hard enough, but I thought this may work10:27
juergbiwhy `/`, not the artifact/cache directory?10:27
juergbios.statvfs() should work for this10:28
jennisBecause of what subprocess(['df' 'h']) returns10:28
jennisOh, I will look at this, ta juergbi :)10:28
Nexusjuergbi: i'm working on pushing a WIP MR for the reduction now :)10:29
juergbigreat. that can go in independent of CAS anyway10:29
Nexuscool10:29
jennismhmm, I remember looking at os.statvfs the other day and iirc what it was returning was very different to what the _get_dir_size() function returned10:30
jennis(the latter function walked through the directory and summed the size of every file10:30
jennis)10:30
gitlab-br-botbuildstream: merge request (caching_build_trees->master: WIP: Caching buildtrees) #474 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/47410:30
juergbijennis: yes, os.statvfs() is a replacement for a `df` subprocess, not a direct replacement for _get_dir_size()10:31
jmacstatvfs returns stats about the file system free space, not about the space used by a directory10:31
gitlab-br-botbuildstream: merge request (caching_build_trees->master: WIP: Caching buildtrees) #474 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/47410:31
jennisOk, so I guess I'm confused why we specify a path for this10:32
juergbiyou may have multiple partitions10:32
juergbieach which their own filesystem and free/used space10:32
jennisahh ofc, so calling os.statvfs in /home and /home/buildstream for example should return the same, if I understood that correctly10:33
juergbion typical systems, yes10:33
juergbiin our case we should use the root directory of the artifact cache10:33
jennisOk, I'll look into this function, ta juergbi10:36
jennisYou say use the root dir, atm i'm walking through the directory which is situated at a variable called "repopath", this is just: path/to/ostree/cache, so it seems that calling os.statvfs on this should return the same...?10:38
tlaterjennis: Yes, it should, but it may be a bit more robust to call it on the artifact dir (i.e. /buiki10:41
tlater~/.local/buildstream/artifacts10:41
tlater^ Note that that is configurable, so whatever the variable that points to it says, of course10:42
tlaterIt's more robust in case the artifact directory doesn't exist anymore, because implementation changes or somesuch :)10:43
jennisSorry, the repopath is the absolute path to that directory10:43
tlaterAh, alright, should be fine then10:43
jennisBecause on the server we don't have the same dir structure as local10:43
tlaterOh, right, I forgot you were working on the server for a second10:43
jennishehe10:44
*** Trevinho has joined #buildstream10:54
gitlab-br-botbuildstream: merge request (awacheux/artifact-type-error->master: Fix artifact initialization result tuple) #469 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/46910:55
*** cs_shadow has joined #buildstream11:00
jennisSo I'm thinking with this approach we may not even need the user to set a quota11:19
jennis^ for the remote server11:20
jennisRather, I'm thinking, let's just check the free space on the file system, if it's not much, we'll start expiring objects?11:20
paulsherwoodjennis: then you need a decision about which objects to expire11:21
jennisWe expire the least recently pushed objects11:21
paulsherwoodit's not that simple11:21
paulsherwoodwhat if old objects are being used recently?11:21
jennisoh yes, this has been discussed before11:22
jennisIdeally it would be least recently used11:22
jennishowever there is currently not a good way to do this with ostree11:22
paulsherwoodybd and kbas both handle culling/cleanup to free space11:22
jennishowever, juergbi has mentioned that it is possible with CAS11:22
paulsherwood(fwiw, in case folks want to look at prior examples)11:23
jennisthanks paulsherwood11:23
juergbiyes, with CAS the plan is to remove least recently used11:23
paulsherwoodfor the client case (ybd), the time clean up is at the start of a run (but fork so we don't hold ourselves up)11:24
juergbijennis: quota is much better configurability wise as the artifact cache might not be the only (significant) thing in the partition11:24
paulsherwoodtime to clean up11:24
paulsherwoodcleaning up at the end may cause things to be lost that we would rather not lose11:24
jennisahh, juergbi I've been assuming a server which is *just* an artifact cache11:24
juergbipaulsherwood: our plan for client side is to have two thresholds and start purging if one is reached, which can be at the beginning or in the middle of a session11:26
jennispaulsherwood, as it currently stands, on my branch, we try to push something, check it's size before pushing and if the current cache size + incoming artifact size exceeds the quota, we expire LRP objects until there is enough room11:26
paulsherwoodjennis: i don't like that very much... we're in danger of arbitrarily delaying the current push... why not keep ensuring that we (nearly) always have enough room to upload a largest artifact?11:27
paulsherwoodbut i may be wrong11:27
paulsherwoodjuergbi: what are the two thresholds?11:28
paulsherwoodand how do we define 'middle'?11:28
jennisSo before we push, check the size and expire LRP artifacts until we're in a "safe-zone", this kind of approach?11:28
tlaterjennis: Rather, I think checkinf *after* the push completes is what paulsherwood suggests11:29
paulsherwoodjennis: no, on 'server', always clean up after artifact upload, to ensure enough free space for n inbound largest artifacts (where n is expected number of maximum simultaneous uploads)11:29
tlaterI don't think this works with our architecture, unfortunately, since the script terminates with the push command11:29
juergbipaulsherwood: tlater has been working on this, I yet have to check the latest MR, but iirc the thresholds are configurable and we purge in the background when we hit the first threshold, and suspend building if we hit the second threshold11:29
juergbitlater: with CAS we'll have a persistent server process11:30
tlaterjuergbi: Yup, it's just not possible with the current implementation jennis is working on11:30
juergbiindeed11:30
paulsherwoodtlater: where is the script? on the client? nothing on the server?11:31
tlaterpaulsherwood: The script is on the server and executed by ssh's ForceCommand setting. I dislike this implementation, it was a hack around ostree11:32
paulsherwooderk :)11:32
juergbiobviously no longer exists in the CAS branch11:33
paulsherwoodjuergbi: i'm not sure i like the thresholds approach, unless the defaults are "if this can possibly be built, it will be, even if you have to clear out all existing unused artifacts"11:33
tlaterpaulsherwood: That's how it works :)11:34
paulsherwoodok, i'm misunderstanding 'threshold' then11:34
* paulsherwood wonders if tlater is sure about the above11:35
tlaterThe upper threshold is when buildstream runs a command to delete artifacts until we only have ~50% of the size left.11:35
* tlater is pretty sure this works and has about a gazillion tests to assert it does :)11:36
*** bochecha_ has joined #buildstream11:36
* tlater takes it paulsherwood is wondering about the case in which the artifact is still too big when we're at the lower threshold11:37
tlaterI'm not sure I have a test for that actually, probably worth writing one.11:37
paulsherwoodtlater: i'm sorry to seem difficult, but i have prior experience where the actual program behaviour from a user perspective was clearly wrong, in spite of many passing tests11:37
paulsherwoodtlater: no, i'm not (quite) thinking about that case11:37
* paulsherwood goes to remind himself of what ugliness ybd does, and try to remember why11:39
tlaterpaulsherwood: Yeah, user expectation is definitely still a concern, feel free to point out anything you'd find disruptive11:41
paulsherwoodi'm happy to, but will it get fixed? :-)11:41
tlaterIt might, if others agree with your interpretation ;)11:42
paulsherwoodbefore i spend too mcuh time thinking about this... are we *deprecating* the ostree implementation entirely, in favour of the CAS approach?11:42
jmacThat's the plan.11:42
paulsherwoodtlater: that's a lottery, then :)11:42
tlaterHehe, I'd certainly still appreciate your comments, the branch hasn't landed yet.11:43
paulsherwoodok, so presumably we are only thinking about the new implementation, ignoring the ostree issues?11:43
tlaterNot *quite*, for the sake of landing things in order without breaking master we'll probably have to have an intermediate implementation for ostree11:44
tlaterThis is more relevant to jennis' branch, since I think ostree will remain an option for the local cache in certain environments.11:45
juergbino, that's not planned11:46
juergbito land the expiry branches now, they have to work with ostree, of course11:47
juergbihowever, when thinking about long term user experience, we can ignore ostree limitations11:47
jennisI still don't see the need for a quota on the server's artifact cache. Can we not just address the fact that once a server (which hosts an artifact cache) runs out of free disk space, we expire the artifact cache until there is room for the incoming artifact11:47
juergbinot sure, we'll have to discuss this11:48
juergbifor the initial implementation, I'd definitely be fine with just relying on free disk space11:48
juergbii.e., we can discuss this later11:48
jennisOk, I should be able to implement this today, but I'll keep the commits that allow the user to set a quota11:49
jennisThen we can discuss further on mondya11:49
jennisTuesday*11:49
juergbiok11:49
jennis:p11:49
*** Prince781 has joined #buildstream13:21
*** tiagogomes has joined #buildstream13:29
gitlab-br-botbuildstream: merge request (caching_build_trees->master: WIP: Caching buildtrees) #474 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/47413:37
*** toscalix has joined #buildstream13:50
*** tiago_ has joined #buildstream13:50
*** tiagogomes has quit IRC13:51
*** Prince781 has quit IRC14:09
*** Prince781 has joined #buildstream14:15
*** xjuan has joined #buildstream14:19
*** toscalix has quit IRC14:21
*** Prince781 has quit IRC14:22
gitlab-br-botbuildstream: merge request (albfan/gitignore->master: .gitignore: Ignore autogenerated docs) #473 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/47314:39
*** toscalix has joined #buildstream14:41
albfan[m]juergbi: finally ^^14:42
gitlab-br-botbuildstream: merge request (richardmaw/cache-fail->master: WIP: Store failed builds in the cache) #475 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/47514:51
*** xjuan has quit IRC14:58
gitlab-br-botbuildstream: merge request (caching_build_trees->master: WIP: Caching buildtrees) #474 changed state ("opened"): https://gitlab.com/BuildStream/buildstream/merge_requests/47415:01
*** Prince781 has joined #buildstream15:02
*** tristan has joined #buildstream15:02
*** noisecell has quit IRC15:16
gitlab-br-botbuildstream: merge request (albfan/gitignore->master: .gitignore: Ignore autogenerated docs) #473 changed state ("merged"): https://gitlab.com/BuildStream/buildstream/merge_requests/47315:18
*** jennis has quit IRC15:26
*** tiago_ has quit IRC15:26
*** jonathanmaw has quit IRC15:27
*** toscalix has quit IRC15:35
*** tiago has joined #buildstream15:44
*** xjuan has joined #buildstream15:58
*** tiago has quit IRC16:02
*** tiago has joined #buildstream16:02
*** solid_black has joined #buildstream16:03
*** tiago has quit IRC16:08
*** jonathanmaw has joined #buildstream16:24
albfan[m]nice! juergbi I miss to make more clear that https://buildstream.gitlab.io/buildstream/examples_flatpak_autotools.html project sources are on https://gitlab.com/BuildStream/buildstream/tree/master/doc/examples/flatpak-autotools, what do you think?16:26
*** aday has quit IRC16:35
*** aday has joined #buildstream16:36
*** solid_black has quit IRC16:38
juergbialbfan[m]: there is a note about it already. do you think it's at the wrong place (too far down)?16:59
*** jonathanmaw has quit IRC17:00
albfan[m]juergbi: exactly. Sonething like: complete example is here, now let ?me describe to you. I find at least it should be a link.17:36
*** Prince781 has quit IRC18:06
*** Prince781 has joined #buildstream18:07
*** Prince781 has quit IRC18:31
*** Prince781 has joined #buildstream18:38
*** aday has quit IRC19:00
*** aday has joined #buildstream19:13
*** aday has quit IRC19:16
*** Prince781 has quit IRC19:26
*** Prince781 has joined #buildstream19:40
*** Prince781 has quit IRC19:51
*** Prince781_ has joined #buildstream19:52
*** Prince781_ is now known as Prince78119:52
*** Prince781 has quit IRC19:54
*** Prince781 has joined #buildstream19:55
*** xjuan has quit IRC20:24
*** aday has joined #buildstream20:43
*** aday has quit IRC20:49
*** aday has joined #buildstream20:54
*** aday has quit IRC21:00
*** aday has joined #buildstream21:04
*** bochecha_ has quit IRC21:11
*** bochecha_ has joined #buildstream21:14
*** aday has quit IRC21:23
*** bochecha_ has quit IRC21:24
*** cs_shadow has quit IRC21:39
*** aday has joined #buildstream21:52
*** aday has quit IRC22:01
*** Prince781 has quit IRC22:58

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