/srv/irclogs.ubuntu.com/2011/04/12/#launchpad-dev.txt

sinzuithumper: mumble?00:04
huwshimisinzui: I think he's away today00:08
=== salgado is now known as salgado-afk
=== Ursinha-afk is now known as Ursinha
wgrantwallyworld: I may be misunderstanding here, but picker.js' animate_validation_content and reset_form appear to be global. Is that intentional?01:22
wallyworldwgrant: no, they should be global but i though because they were not added to the namespace they wouldn't be exposed??01:24
wallyworldshould *not* be01:24
wgrantwallyworld: I'm not really sure how that works.01:26
wgrantAs I said, I may be misunderstanding.01:26
wallyworldwgrant: i'm not sure either but i thought i was doing it correctly. that's why i've asked for a ui review cause whoever does that typically knows javascript better than me01:26
* wallyworld sighs. doctests make me sad01:27
wgrantwallyworld: I just tried it myself... it's very pretty.01:29
wgrantAlthough it has the issue that plagues most LP overlays: it resizes a lot.01:29
wallyworldwgrant: it was a bit of a learning curve for me but i enjoyed it. the resizing i didn't think was too obtrusive. i thought it better than leaving the overlay way too big for the content01:30
wgrantwallyworld: Yeah, it's a general problem that we don't really have a solution for.01:32
wallyworldwgrant: the animation really helps i think. not sure why but it's easier on the eye when there's resizing involved rather than something just splatting onto the screen01:34
wgrantYeah.01:34
wgrantAlthough it's possibly a bit long, it looks great.01:34
wallyworldwgrant: i experimented with the timing. it';s easy to change. i didn't think it was too bad myself but i'll happily be guided bu someone else01:35
wallyworldif it's too short you don't see the effect01:36
wgrantwallyworld: Re-reviewed.01:48
wallyworldwgrant: thanks. looking now01:49
lifelessok, so bugtag needs to be redesigned01:52
wallyworldwgrant: the use of inline styles for the buttons div was copied from an existing usage01:55
wgrantwallyworld: Ugh. OK.01:55
lifelesssinzui: still around ?01:55
sinzuiI am01:55
lifelesssinzui: oh hai01:55
lifelesssinzui: there is a refactoring we need to do to fix performance in soyuz/recipes/translation template builds01:56
lifelesssinzui: I don't know if wgrant has mentioned it to you yet (or not)01:56
wallyworldwgrant: but we should propogate bad practice so i'll fix it01:56
wallyworld*shouldn't*01:56
wgrantwallyworld: Thanks.01:57
wgrantlifeless: I hadn't.01:57
lifelesssinzui: the BFJ/PB tables need to be folded into their adjacent tables (which are all 1:1) to permit context specific scans rather than all-builds-ever-history-scans01:57
sinzuilifeless: I can make those related bug the next ones to be started01:57
wgrantwallyworld: Oh, one other thing... are there spinners on both ends of the picker, if there is latency before it updates?01:57
lifelesssinzui: its going to be a new-schema, migrate-over-a-week-or-so, then start using transition job01:58
lifelesssinzui: I'll get a bug filed with supporting analysis and point you at it.01:59
wallyworldwgrant: you mean when the confirmation info is loaded? no. i don't see an obvious place to put a spinner.  even though there probably should be one02:00
wgrantwallyworld: Yeah, that was my thought, too... it's not clear where it should be.02:00
wallyworldthere no need for one when the user confirms the selection cause there's already one there as per a normal save02:00
wgrantRight.02:00
wallyworldif it were a desktop app i'd change the cursor02:01
wgrantOuch.02:03
wgrant      138 /  434  Distribution:EntryResource:searchTasks02:03
lifelesswgrant: btw we repacked the fti index last night02:04
wgrantI saw that.02:04
wgrantAnd the resulting timeouts :)02:04
wgrant(looks like the lock was held for a little too long)02:05
lifelesssinzui: bug 75825802:20
_mup_Bug #758258: buildfarmjob schema is inefficient for reporting <timeout> <Launchpad itself:Triaged> < https://launchpad.net/bugs/758258 >02:20
sinzuiI assigned it to the green squad02:20
lifelessthank you!02:27
lifelessits almost small enough that I tackled it mysself02:27
lifelessbut not quite02:27
wgrantlifeless: Could you please mentor https://code.launchpad.net/~wallyworld/launchpad/disabled-project-bugs-shown/+merge/57265?02:52
lifelesswgrant: you missed a bit :)03:10
wgrantMm, I guess.03:11
wgrantWell.03:11
wgrantSomething has completely destroyed my monospace fonts.03:12
wgrantI think I may reboot and see if it is any better.03:12
wgrantbrb03:12
wallyworldlifeless: the reason for just adding to the doc tests is that all the other testing for getBugTaskAndNominationViews is done there. i new unit tests were written, then the doc test would have to be ported over to keep it all together. i can do that, but it seemed like much extra work for marginal benefit03:14
lifelesswallyworld: I don't buy the keep it together argument03:14
lifelesswallyworld: given the following options:03:15
lifeless - a longer doctest03:15
lifeless - unaltered doctest and some unit tests03:15
lifeless - all unit tests03:15
lifelessclearly the third option is best03:15
lifelessbut I argue that the second option is better than the first03:15
wallyworldlifeless: i agree that #1 or #3 is preferable but #2 is bad. all tests for a given piece of code should be together so they are easily discoverable  etc imho03:16
wallyworldyou don't want to fragment the tests for a given module/class all over the code base03:17
lifelessdepends on what you value03:18
lifelessright now, you can't safely change that function and only run that doctest03:18
lifelessI think the tech debt of increasing the doctest outweighs the tech debt of having the tests in two different places03:18
lifelessbut thats up to you, I can only share why I would do it differently.03:19
wallyworldlifeless: np. it's a matter of opinion in this case. i'll add a new unit test then03:19
lifelesswallyworld: the other issues are significantly more important :)03:20
wallyworldlifeless: with the filter - there was already filtering being done in the list comprehension. i just added an extra condition.03:20
lifelesswallyworld: I think you are reading too shallowly03:21
lifelesswallyworld: Thats a partition, not a filter03:21
lifelessor 'thats a partition special case of multiple filters'03:21
wallyworldmy thinking was that the bugtasks were already eagerly loaded prior to the method being called. we were already extracting the ones we wanted from that list using a comprehension. why not add another condition to the filter?03:22
lifelesswallyworld: because:03:23
lifeless - things that iterate on the bugtasks will show too many03:23
lifeless - we'll be eager loading too much data03:23
wallyworldah ok. so you want the initial loading of the self.bugtasks to be filtered03:24
wallyworldalthough these com from the context03:25
lifelessright, the context has the wrong bugtasks03:25
lifelesssearchTasks knows how to do all the filtering you're doing03:25
lifeless(though, why are you filtering on experimental distroseries?!)03:26
wallyworldok. makes more sense now. i was trying to make the smallest change to fix the reported issue03:26
lifelesswallyworld: I am totally in favour of doing the simplest thing that meets all the criteria03:26
wallyworldbut in this case it made sense to look a little further afield03:27
lifelessI don't think that this code need sto change at all though, and the filtering rules need to be harmonised - we don't want to duplicate stuff03:27
lifelessnote this:03:28
lifeless         self.bugtasks = list(self.context.bugtasks)03:28
wallyworldyes, agreed. sometimes i'm more wary than needed for fear of breaking things like code i'm not 100% fmilar with03:28
wallyworldlifeless: so self.context.bugtasks a resultset then?03:29
lifelesswallyworld: *blink*03:30
wallyworldis a03:30
lifelesswallyworld: no, nor should it be03:30
wallyworldok. a collection. which is not loaded until the list() is constructed. but we want to so a search instead03:32
lifelessyup03:32
lifelessself.context is a Bug03:32
lifelessso do a bugtask search with bug=self.context.id03:33
lifelesslistify the result03:33
wallyworldright. i knew self.context was a bug but didn;t realise it's bugtasks would not already be loaded03:33
lifelesswallyworld: one of them will be03:33
lifelesswallyworld: (the one for the url we're on)03:33
lifelesswallyworld: more /may be/ - but the key thing is the eager loading03:33
lifelesswallyworld: see all the other work the constructor does03:33
lifelesswallyworld: we dont' want to do that on unwanted bugtasks.03:34
wallyworldsure. but i thought they would all already be loaded, hence not seeing the issue with the list comprehension. makes more sense now.03:34
wallyworldthanks for the input03:35
lifelesswallyworld: no worries03:35
lifelesswallyworld: the trick here when looking at other cases03:35
lifelesswallyworld: is to look at what *else* is done to the same data03:35
lifelesswallyworld: sorry that I wasn't clearer in my review; I guess I had some hidden assumptions aout what you'd looked at03:44
wallyworldlifeless: np. i had a wrong assumption about what had already been loaded and that lead me down an incorrect path03:45
lifelesswgrant: I would analyse the current searchTasks timeouts but04:01
lifelessbug 74075004:01
_mup_Bug #740750: API timeouts broken and returning no useful data... <regression> <Launchpad itself:Triaged> <lazr.restful:Triaged> < https://launchpad.net/bugs/740750 >04:01
wallyworldlifeless: turns out self.bugtasks = list(self.context.bugtasks) doesn't do any new sql cause all bugtasks are already loaded earlier. so doing a search actually *increases* the sql count. i'm tracking down where the earlier loading of all bugtasks is done04:40
lifelesswallyworld: traversal04:41
wallyworldlifeless: yeah, just got a hit on my conditional breakpoint. gotta figure out what to do about it04:42
lifelesswallyworld: I'd ignore it; the traversal load almost certainly doesn't do the right query04:47
lifelesswallyworld: and its not a significant cost04:47
wallyworldlifeless: in the traversal code BugTargetTraversalMixin._get_task_for_context() it just loops through bug.bugtasks, hence loading them all04:48
lifeless[compared to loading milestones etc for disabled rows]04:48
lifelesswallyworld: yup04:48
wallyworldlifeless:  ok, will do the search. bugtaskset.search() only filters on active projects. not distroseries or productseries. i guess that doesn't matter and it's really just the active projects we care about filtering?04:50
lifelesswallyworld: right, I wasn't aware distros could be inactive04:50
wallyworldlifeless: (product|distro)series have a read only property "active"04:51
wallyworldset to false when the status is experimental etc04:51
lifelesswallyworld: ah, this is different to the pillar 'active' field I think04:51
lifelesswallyworld: the pillar active is set to false when we disable and hide a product/project04:51
wallyworldok. that's me not fully understanding the domain model then04:51
lifelessor me, IMBW04:52
lifelesssecond opinon time04:52
lifelesswgrant: ^ second opinion plox04:52
lifelesswallyworld: anyhow, if we should filter more, then searchtasks should be filtering more.04:57
lifelesswallyworld: so useing searchtasks is right either way04:57
lifelessjtv: hi04:57
lifelesshttps://devpad.canonical.com/~lpqateam/qa_reports/deployment-db-stable.html04:57
jtvhi lifeless04:57
lifelesshas a few patches from you needing qa04:58
wallyworldlifeless: agreed. i'll just leave it as is for now (filtering only on active projects) since that appears to be the issue at hand04:58
jtvlifeless: I shall see to it fortwith—think all of it is probably safe-to-deploy regardless of actual Q/A.04:59
jtvforthwith.04:59
lifelessjtv: cool04:59
jtvThank you spell checquer.04:59
lifelessjtv: we have a couple of weaks (sic) :)04:59
jtv(sick)04:59
jtvWee half er Koppel05:00
wgrantlifeless: Hi, sorry, having fglrx issues.05:01
wgrantlifeless, wallyworld: IPillar['active'] is what we want here.05:01
wgrantProduct has a DB field, Distribution is always True.05:01
wgrantBut it's what we want.05:01
jtvlifeless: the first one is the only one where deployment has any repercussions at all.05:01
lifelesswgrant: bugtaskset.searchtasks is required to honour this anyway05:02
lifelesswgrant: right?05:02
wgrantlifeless: I believe it is fixed, yes.05:02
lifelessright05:02
lifelessso , searchtasks ftw05:02
lifelessregistry will be able to see the disabled tasks (which is appropriate)05:02
wgrantYeah.05:03
jtvwgrant: the branch that gets rid of all the cache-flushing and gc'ing in the publisher… you tried it out on dogfood before it landed; did you see enough detail to know that it's safe to deploy?05:03
* jtv corrects himself05:03
jtv"that it looks reasonably safe to deploy"05:03
wgrantjtv: Let me just look through the diff again, but it all seemed to work OK.05:03
wgrantI'd like to try fully publishing lucid to get a memory worst-case, but we don't have enough disk.05:04
wgrantSo natty will have to do, and it manages that fine.05:04
jtvThen I think the only reasonable concern is memory usage, which is _probably_ solved and even if it's not, we'd ultimately be better off addressing afresh.05:05
jtvSo… let's say that makes it qa-ok.05:06
wgrantRight. I'm going to get it to publish natty again and watch the peak usage, but I would qa-ok it.05:06
jtvThanks!05:06
jtvThe effects won't be as dramatic as they were in the test, since we tested with the replacement publish-ftpmaster script.05:07
jtvThat means that publish-distro will have its memory to itself, and any flushing it fails to do won't affect anything else in the procedure.05:07
jtvlifeless: you have a clear runway05:09
lifeless\o/05:11
lifelesswe really should finish up the lmirror stuff05:12
wgrantI haven't heard much about that in a while.05:12
lifelessI haven't had time to optimise the parser, which was the only scaling problem I recall in it05:14
lifelesswallyworld: ping05:22
lifelesswallyworld: bug 75687805:22
_mup_Bug #756878: Old bzr-builder <Launchpad itself:Won't Fix> < https://launchpad.net/bugs/756878 >05:22
lifelesswallyworld: why did you close it wont fix ?05:22
wallyworldlifeless: there's nothing to fix? nest-part is already supported since 0.4 and the current release is 0.605:23
wgrantThe bug suggests we've reverted Launchpad's.05:23
lifelesswallyworld: the version in natty has /nothing/ to do with what we're running on the web servers.05:24
lifelesswallyworld: nor with the version we run on the build slaves.05:24
StevenKOr on the buildds themselves, where it matters.05:24
StevenKlifeless: Snap05:24
lifelesswallyworld: both of which matter, because the one on the web server is where our validation code runs05:24
lifelesswallyworld: and the buildds is where the actual builds happen05:24
wallyworldlifeless: where do we get the package for the servers you just mentioned?05:25
wallyworldmaybe i misunderstood the bug, sorry :-(05:25
wgrantThe buildds use hardy-cat, the webapp should use sourcecode.05:25
lifelesswallyworld: there are three dependency systems we have05:25
lifelesswallyworld: launchpad-dependencies package05:25
lifelesswallyworld: utilities/sourcedeps.conf05:26
lifelesswallyworld: and versions.cfg05:26
StevenKwgrant: hardy-cat? They're still hardy?05:26
wgrantStevenK: Yes, until dapper dies.05:26
StevenKAh05:26
StevenKWhich is soon, I think05:26
wgrantYes!05:26
lifelesswallyworld: so in this case, if you check utilities/sourcedeps.conf and look at the branch, you can see there is unused work on the branch05:27
lifelessnot to mention it may be arbitrarily out of date with upstream05:27
wallyworldlooking now05:27
lifelesswallyworld: in general nothing in lp will depend on current distro versions - not because we don't use them - we do, but because we're version locked, in one of those dependency tools, and we have custom archives for things that aren't present on the LTS release of the distro we are running05:29
wallyworldlifeless: ok. sorry. sourcedeps.conf does refer to a really ancient rev05:30
wallyworldshould we be updating that?05:30
lifelesswallyworld: its only one rev back on the branch we run from05:31
lifelesswallyworld: but yes.05:31
lifelessbzr-builder is  alittle more complex because you need to upgrade the web ui & the buildds separately05:31
wallyworldlifeless: rev 68 was around jan 2010. tip is 11905:31
lifelesswallyworld: different branches05:31
lifelesswallyworld: you can't compare the revnos05:31
wallyworldlifeless: i thought i was looking just at trunk05:32
lifelesswallyworld: sourcedeps.conf lists a branch and a revno05:32
lifelesswallyworld: that branch is the lp branch, not the upstream branch05:33
lifelessrevno: 68 [merge]05:33
lifelesscommitter: Launchpad Patch Queue Manager <launchpad@pqm.canonical.com>05:33
lifelessbranch nick: trunk05:33
lifelesstimestamp: Tue 2010-11-23 18:32:13 +000005:33
lifelesswe're running a version merged in late november 201005:33
lifelessrev 6905:33
lifelesstimestamp: Tue 2010-12-07 21:24:13 +000005:33
lifelessmessage:05:33
lifeless  [r=me] Update to lp:bzr-builder tip05:33
lifelessis available05:33
StevenKIsn't there some test harness thing that takes care of running scripts? I thought it was 'runscript' but I can't find it.05:33
lifelessand presumably there is more work in upstream trunk too05:33
wallyworldok. so i'll re-open the bug05:33
lifelesswallyworld: checking the work missing against trunk just requires branching our branch and running bzr missing lp:bzr-builder05:34
wallyworldlifeless: ok. should the bug be marked as "high"? or "critical" since it affects a major lp feature?05:36
lifelessI don't know if we ever actually supported nest-part05:36
lifelessI suspect someone got mostly through upgrading but didn't quite finish it (that rev 69 in our branch)05:37
lifelessit may be as simple as s/68/69/ in sourcedeps.conf and send to pqm05:37
wallyworldwell we can hope05:38
wallyworldi'll take a look later05:39
huwshimiCan someone explain to me the rules for what types of links/info we display in the sidebar?05:42
huwshimior point me to a doc05:42
wallyworldlifeless: the gui does say "Assign", "Choose Again". but the code is generic. the labels to put on the buttons are specified by the caller05:55
lifelessah, kk.05:56
StevenKCan haz review?06:02
lifelessno06:05
lifelesscan't has06:05
lifelesswgrant: want to, and I"ll mentor?06:07
wgrantStevenK: Where is it?06:07
StevenKwgrant: https://code.launchpad.net/~stevenk/launchpad/ids-bugfixes/+merge/5727006:07
lifelesshttps://mail.google.com/mail/u/1/?ui=2&shva=1#inbox/12f481611058e60106:07
lifeless:P06:07
StevenKI was so tempted to answer "On Launchpad. Duh."06:08
wgrantStevenK: IDSJ takes forever... the job runner won't block on that?06:08
StevenKwgrant: IDS or IDSJ?06:09
wgrantBoth.06:09
StevenKwgrant: Oh, I should have added to the MP that I've QA'd this on dogfood before submitting.06:09
StevenKwgrant: But run_jobs -v initialisedistroseries is happy enough on DF06:10
wgrantStevenK: Oh, you give run_jobs a job type to run, it doesn't just run all of them?06:12
StevenKwgrant: Exactly -- the run_jobs cronscript looks pretty much identical to the one I removed, it just pulls the source interface from the schema.06:14
=== Ursinha is now known as Ursinha-afk
StevenKwgrant: The flush did seem to be required, when running the job runner it would OOPS saying the DAS could not be found.06:29
StevenKwgrant: You're right, it seems it just wants ChildSeries.parent_series to get at the parent. I'd *love* to rewrite that horrible query, but it scares me.06:32
StevenKwgrant: That error came from i-f-p. I got Julian'd into keeping the wording when I originally did the work.06:33
=== Ursinha-afk is now known as Ursinha
StevenKwgrant: I've reverted the Store.find() change, and fixed the query. You feel nervous about the pending builds change?07:21
wgrantStevenK: It has potentially disastrous consequences.07:21
wgrantCopying an incomplete build set is terrible terrible thing to do in the current model.07:22
wgrantIn the worst case you can never copy that source again!07:22
StevenKwgrant: You know IDS just uses the package cloner, right?07:23
wgrantYes. And?07:23
StevenKBut it doesn't touch BPB at all07:24
wgrantcreateMissingBuilds does...07:24
StevenKSo, we copy a SPPH for a source, and a BPPH for the completed i386 build, since the amd64 build is NEEDSBUILD. The package cloner calls createMissingBuilds() which creates the missing amd64 build. And this is wrong?07:26
wgrantStevenK: You now have two amd64 NEEDSBUILD builds in the same archive.07:26
wgrantOne can upload, the other will fail.07:27
wgrantAnd you can never reconcile that.07:27
StevenKEven if they are targeted to different distroseries?07:27
lifelessso07:27
lifelessbig picture, IIUC07:27
wgrantSame binary name in same archive = oh god what have we done07:27
lifelessis that we need to do this $anytime07:27
lifelessso waiting for quiesced == problem07:28
wgrantlifeless: Sure.07:28
wgrantBut we cannot resolve this until we make binary copying not stupid.07:28
StevenKwgrant: Right, so it's okay, IFF it's a different archive?07:28
lifelessis this the same root issue as uploading to both poopies ?07:28
wgrantStevenK: It's not okay, it's just not definitely going to fuck shit up.07:28
wgrantlifeless: Not really.07:28
wgrantlifeless: Not at all, actually.07:29
lifelesswgrant: I asked because bigjools said that the upload issue and in-ui copying were the same problem07:29
lifelessor at least, thats what I thought he said07:29
wgrantlifeless: Yes, but that is a different in-UI copying issue.07:29
wgrantThey both have the same file conflict race.07:29
wgrantBut the race there is that the conflict will not be detected.07:30
wgrantHere it will be detected, but you are stuck with it forever.07:30
lifelesswhy would it create a missing build when there is a pending build?07:31
StevenKBecause .createMissingBuilds() is dumb.07:32
lifelessok07:32
wgrantNo, because our binary copying model is dumb.07:32
wgrantAnd impossible to handle sanely.07:32
lifelessso given my (admittedly shallow) understanding, we have more work todo before we can do this safely.07:32
lifelesshowever07:32
wgrantIt's going to be amusing when we have armel PPAs.07:32
lifelessgiven our isolation levels we're probably not entirely safe even when there are no pending builds07:33
wgrantYou will no longer be able to copy between all series.07:33
lifeless[we only require serializable]07:33
wgrantUpload to one series, builds (i386, amd64, armel). Copy to hardy, creates new lpia build. Can no longer copy either, because they don't have a superset of the archive's binaries.07:33
lifelessargh bug 434733  comments07:34
_mup_Bug #434733: marking public bug as duplicate of private bug leads to confusing UI <404> <confusing-ui> <disclosure> <lp-bugs> <privacy> <regression> <ui> <Launchpad itself:Triaged> < https://launchpad.net/bugs/434733 >07:34
StevenKwgrant: Okay, so this obviously requires more thought. If I revert the NEEDSBUILD changes, are you broadly happy with the MP?07:36
wgrantStevenK: I'll look over it again, but that is indeed the only deal- and distro-breaker.07:37
poolie_does https://bugs.launchpad.net/launchpadlib/+bug/758460 ring any bells?07:46
_mup_Bug #758460: ConfigParser.NoOptionError: No option 'consumer_key' in section: '1' <launchpadlib :New> < https://launchpad.net/bugs/758460 >07:46
=== poolie_ is now known as poolie
StevenKwgrant: Changes pushed, diff updated.07:48
wgrantStevenK: You've fixed bug #744849, right?07:58
_mup_Bug #744849: populate-archive.py unusably slow <Launchpad itself:Triaged> < https://launchpad.net/bugs/744849 >07:58
poolieah it's just the same as bug 74580107:59
_mup_Bug #745801: system-based authorization doesn't store useful credentials in gnome-keyring <amd64> <apport-bug> <natty> <launchpadlib :New> <python-launchpadlib (Ubuntu):New> < https://launchpad.net/bugs/745801 >07:59
wgrantlifeless: Can bug #637761 be closed?08:00
_mup_Bug #637761: single-thread appserver experiment (rt41361) <lp-foundations> <Launchpad itself:Triaged> < https://launchpad.net/bugs/637761 >08:00
wgrantlifeless: Given that it was the greatest success we have had in years?08:00
lifelessin a sense08:00
lifelessthough we're not migrated yet08:00
lifelessI don't mind either way08:00
wgrantWe've run the experiment.08:01
wgrant=> experiment bug is old.08:01
lifelesswgrant: like I say, I don't mind either way08:04
StevenKwgrant: The branch that fixes bug #744849 landed this morning.08:04
_mup_Bug #744849: populate-archive.py unusably slow <Launchpad itself:Triaged> < https://launchpad.net/bugs/744849 >08:04
lifelessman, conflict wise, its going to be a long month08:05
StevenKArgh structual-subscription.js AGAIN?08:05
StevenKwgrant: In fact, the fix hit stable about 30 minutes ago.08:06
wgrantlifeless: Yeah, it's tempting to restrict features to a single branch :(08:07
wgrantlifeless: Or just roll out more frequently.08:07
wgrants/roll out/DB-downtime/08:07
StevenKwgrant: The qa-tagger would have done that in about 30 minutes? :-)08:08
wgrantStevenK: Is it linked?08:08
StevenK[r=lifeless, wgrant][bug=744849][no-qa] ...08:09
lifelesswgrant: well, working on more often08:09
wgrantStevenK: Ah.08:10
wgrantlifeless: :(08:10
lifelesswgrant: bigger branches have worse penalties08:11
wgrantlifeless: One branch meaning either db-devel or devel.08:11
wgrantNot a single feature branch.08:11
StevenKYes, a single feature branch would be crackful.08:12
wgrantStevenK: pre-2008-Soyuz crackful, yes.08:12
StevenKwgrant: You don't think the commit is needed?08:12
wgrantStevenK: It wasn't before, was it?08:12
wgrantWhat has changed?08:12
StevenKI wanted to be explicit, I guess08:12
wgrantOh, did the thing at the end commit itself?08:12
wgrantWhereas setParent does not?08:13
wgrantI guess.08:13
wgrantThat's a reasonable justification :)08:13
StevenKSo you just withdrew your objection to the commit?08:13
wgrantI asked for a reason.08:13
wgrantYou gave one!08:14
StevenKWell, that's sort of an objection08:14
StevenKThe flush is due to a number of OOPS I saw on dogfood08:14
lifelesswgrant: oh; hmmm08:14
wgrantlifeless: Otherwise it's going to be a very long month on this side of the world :)08:15
StevenKwgrant: According to Julian, large parts of Soyuz use parent_series as a "Yes, this series is initialised."08:15
wgrantStevenK: Those are bugs.08:15
StevenKNot according to Julian.08:15
StevenKI've had this argument with him, I lost.08:15
wgrantHe is going to lose to me.08:16
wgrant:)08:16
lifelessif /any/ part of the system does not honour that, using it as such a flag would be a bug.08:16
wgrantStevenK: Warty exists, so Soyuz does not require it.08:16
lifelessAs there must be at least one series with no parent.08:16
wgrantStevenK: Warty even had lots of security uploads.08:16
lifelessSome part of the system cannot honour it.08:16
lifelessAnd thus using parent_series to pun with 'is initialised' is a bug.08:17
wgrantPrecisely.08:17
wgrantIt is both a stupid overloading and *impossible*.08:17
StevenKwgrant: Julian also said that if Warty was touched Soyuz would blow up.08:17
lifelessStevenK: add a field08:17
wgrantStevenK: You couldn't +edit warty for a while, no.08:17
wgrantStevenK: But you can do anything else to it.08:17
StevenKlifeless: I like that idea even less.08:17
lifelessStevenK: its entirely appropriate to be explicit about these things.08:17
StevenKThe other option is IDSJ.Job.status08:18
wgrantDistroSeries.i_am_not_going_to_break_everything08:18
wgrantStevenK: No.08:18
wgrantStevenK: Hardy doesn't have an IDSJ.08:18
lifelessStevenK: whats your objection08:18
wgrantEven Natty probably doesn't.08:18
StevenKI'm just moving the set parent call to the end08:19
=== Ursinha is now known as Ursinha-afk
lifelessStevenK: does this run as one transaction ?08:19
StevenKlifeless: To other useless field? DistroSeries is bloated already, and it's a use-once thing08:19
StevenKOnce the distroseries is done initialized it's pointless08:19
lifelessStevenK: thats rather beside the point08:20
lifelessStevenK: either this thing is atomic and always consistent08:20
lifelessor its eventually consistent08:20
lifelessif its eventually consistent then the rest of the system has to handle it being inconsistent08:21
lifelessthere are multiple ways you can do that08:21
StevenKlifeless: No, it doesn't run as one transaction, the package cloner calls commit a lot08:21
lifelessa flag which is propogated atomically once and only once the thing is consistent is a simple way to do this.08:21
lifelessStevenK: distroseries - the whole table - is 16kb08:22
StevenKSorry, I'm not talking about the table, I'm talking about the *object*08:23
StevenKIDistroSeries is *enormous*08:23
lifelessStevenK: so, either design out the eventual consistency, or embrace it.08:25
lifelessStevenK: conflating 'used in a particular way' with 'has had all its initial data copied in' seems guaranteed to create boobytraps08:25
StevenKwgrant: So you think my reasoning is crack, and I should revert the placement of set parent?08:27
lifelesswhat we did in bzr was take out a write lock on the object and only release that when the object was usable08:27
wgrantStevenK: Yes. I will defeat bigjools on this if I have to.08:28
StevenKlifeless: Given it takes 10 minutes or more to initialise a series, I suspect you'll shoot me.08:28
lifelessStevenK: if you were to do one transaction, yes08:29
wgrantAnyone want to review https://code.launchpad.net/~wgrant/launchpad/bug-736002/+merge/57278?08:32
jtvwgrant: I'll trade you for this one, since you're OCR: https://code.launchpad.net/~jtv/launchpad/db-bug-752279/+merge/5727708:32
wgrantI am intrigued to see how "Simplify and harden directory movements in publish-ftpmaster." works out to 819 lines.08:33
jtvwgrant: there's one way to find out!08:33
wgrantIndeed.08:33
lifelesswgrant: what does the executed sql look like08:33
wgranthttp://paste.ubuntu.com/593003/08:35
wgrantlifeless: WITH made the code terribly hard to work with, and this is just as fast AFAICT.08:35
wgrantAlthough the SQL is much cleaner with WITH.08:35
lifelesswgrant: how did it make it hard to work with ?08:37
wgrantlifeless: I would have had to do the union inside gUBTWOC.08:38
jtvwgrant: isn't "top 10 unofficial tags" a matter of querying the top 10+<#official tags> tags and eliminating the official ones?08:39
wgrantjtv: It is.08:39
wgrantBut I doubt anybody will notice.08:39
wgrantSpeed > trivialities that nobody will notice08:39
lifelessjtv: you'd need to query the top 2008:40
lifelessjtv: and then take official + 10 more08:40
jtvBut is it a triviality or a specialized workflow?  I imagine there is a useful process of reviewing the most popular unofficial tags and blessing them.08:40
wgrantjtv: I considered that.08:40
lifelessin fact, you need to take 10 more than the count of official tags08:40
wgrantBut decided I didn't care enough. I can do it if someone convinces me to, but it seems to be of very limited utility.08:41
wgrantlifeless: That's what jtv said.08:41
jtv:-P08:41
lifelessI'm slow :)08:41
jtvwgrant: I'm not particularly bothered, just bringing it up.  Maybe we'll find we want a marker for "(unofficial)" instead or something.08:41
lifelessTime: 4001.783 ms08:42
lifelesscool08:42
wgrantlifeless: Is that cold?08:42
jtvCool is sort of cold…08:42
wgrantHot was more like 3700ms yesterday... although this is a different official tag set.08:42
wgrantAlso the DB has been restored since then.08:42
wgrantSo I guess that's OK.08:42
lifelesswgrant: hot08:43
StevenKwgrant: The last thing is the enormous if block -- can you suggest something? I touched it because I hated the idea of if <>: raise ; if <>: raise which is what is was before08:44
wgrantStevenK: You could just remove the bool() bits.08:45
lifelessalso08:45
wgrantOr use any()08:45
lifelessonly sqlobjectresultset has __nonzero__08:45
wgrantRight.08:45
lifelessdon't use it. anywhere.08:45
wgrantI did suggest is_empty08:45
wgrantSo...08:45
wgrantif not all(map(lambda r: r.is_empty(), [foo, bar, baz]))!08:46
StevenKLet me get a rusty spoon08:46
wgrantYes, lambda syntax is foul :(08:46
lifelessany(map(methodcaller('is_empty'), [foo, bar, baz]))08:47
StevenKwgrant: http://pastebin.ubuntu.com/593012/08:47
lifelessif you're going to go functional, go all the way08:47
wgrantlifeless: Bah, forgot about methodcaller.08:49
wgrantI normally only have cause to use attrgetter and itemgetter.08:49
wgrantStevenK: That is using __nonzero__.08:49
wgrantWhich I discourage, and lifeless forbids.08:49
lifelesswe're trying to migrate to stormresultsets everywhere08:50
lifelessbecause of the storm migration08:50
wgrantRight.08:50
lifelessusing __nonzero__ is a step backwards08:50
lifelessnot to mention horribly confusing08:50
jtvwgrant: in your top-tags branch, is "factor" used for anything but sorting?08:51
wgrantjtv: It's used as size in the tag cloud.08:52
jtvAFAICS you could make the "bonus" that official tags clearer by adding max_count/2 to count, instead of adding 0.5 to count/max_count.08:52
lifelesswwwwow08:53
lifelessthat was a fun test blowup08:53
lifeless File "/var/launchpad/tmp/eggs/bzr-2.2.2_lp_2-py2.6-linux-x86_64.egg/bzrlib/lazy_import.py", line 97, in _cleanup08:53
lifeless   del self._factory08:53
lifelessAttributeError: _factory08:53
lifeless------------08:53
jtvwgrant: although maybe that just moves it closer towards the "how do we arrive at this" side at the cost of the "what does this imply for the tag clould" side.08:54
jtv*cloud08:54
StevenKIs methodcaller in 2.6?08:54
spivlifeless: threading race, I guess?08:54
wgrantStevenK: Yes.08:55
lifelessspiv: https://bugs.launchpad.net/bzr/+bug/39681908:55
_mup_Bug #396819: AttributeError: _factory - lazy imports are not threadsafe <lazy-imports> <Bazaar:Confirmed> < https://launchpad.net/bugs/396819 >08:55
spivlifeless: threads racing to replace a lazy import stub with a real object I guess.08:55
jtvYe olde concurrent singleton update problemme08:55
spivlifeless: yeah08:56
StevenKwgrant: Ah, it's hiding in operator. Sneaky.08:56
StevenKWhich leads to: ForbiddenAttribute: ('is_empty', <storm.sqlobject.SQLObjectResultSet object at 0xe6cab90>)08:57
lifelessughhhh08:57
lifelessheaddesk headdesk headdesk headdesk08:57
wgrantStevenK: Ah, I guess SQLObjectResultSet doesn't have an is_empty :/08:58
wgrantOr maybe it's just not on the interface.08:58
lifelessits on the interface08:58
lifelessbah08:58
lifelessnot on08:59
lifelessit is on the class08:59
lifelessline 563 of sqlobject.py08:59
lifelessstorm/zope/interfaces.py is bust08:59
lifelessif you want to be lazy you can add is_empty manually in lp09:00
adeuringgood morning09:03
jtvhi adeuring09:07
adeuringgood evening jtv!09:07
jtvnew year's eve :)09:07
adeuringjtv: so, have a nice party!09:12
jtvThanks09:12
bigjoolsgood morning all09:13
wgrantMorning bigjools.09:15
wgrantjtv: Reviewed.09:15
jtvwgrant: thanks, that was fast.  Reviewed yours as well.09:15
=== Ursinha-afk is now known as Ursinha
wgrantjtv: Thanks.09:18
lifelessstub: thinking about a fact table for bug tags09:27
lifelessstub: I think we might also cater for milestones & bug status at the same time09:27
lifelessmore rows (because more unique combinations) but still very few09:28
stubon phone09:28
lifelessstub: sure, no worries09:28
wgrantlifeless: But milestone and status are on BugTask... are they a problem?09:28
lifelesswgrant: so will the bug tag sumamry09:28
wgrantlifeless: When are milestones and statuses slow?09:29
wgrantWe can index directly into those.09:29
lifelesswgrant: all the time09:29
lifelesswe have three portlets09:30
lifelessall of which have now had *an* optimisation pass done09:30
lifelessand none of which are snappy.09:30
lifeless53 /  101  Distribution:+bugtarget-portlet-tags-content you have just done09:30
wgrantAh, right, that sort of query.09:31
wgrantI was thinking of searches.09:31
lifelesswgrant: status is slow when the scope is huge09:31
lifelesswe've more work to do there, but I was thinking about the aggregate case specifically09:32
stubyo09:35
stublifeless: This is moving towards a bugSearch table, which I've considered before.09:36
stubie. throwing together the information we query on in a denormalized format suitable for querying09:36
lifelessstub: hmm09:37
lifelessstub: so we'd what - add a link to the summary row in the bugtask; so we could pick the summaries we want and search for bugs matching ?09:37
stub(bug, status, bugtag[], milestones[], fti, ...)09:39
lifelessstub: ah so - no this is different09:39
lifelessstub: opposite direction of denorm09:39
stublifeless: Something like that. GIN indexes on the arrays should allow us to match rows containing certain milestones09:39
stubk09:39
lifelessstub: we may well need both09:40
lifelessstub: this is a bug that may benefit from a bugsearch table - 75742609:40
lifelessbug 75742609:41
_mup_Bug #757426: Distribution:+bugs timeout with combinator ALL <timeout> <Launchpad itself:Triaged> < https://launchpad.net/bugs/757426 >09:41
lifeless(warning, eye bleeding and gouging may result)09:41
lifelessalso bug 75044509:41
_mup_Bug #750445: MaloneApplication:+bugs timeout on 'any tag {pcert, blockshwcert}' <timeout> <Launchpad itself:Triaged> < https://launchpad.net/bugs/750445 >09:41
stublifeless: oic. This is purely for caching the aggregate values so we don't have to calculate on the fly.09:42
lifelessyeah09:42
stublifeless: Sure. We have some similar structures already btw.09:42
lifelessI'm filing a bug describing the problem clearly now09:43
lifelessif there is an existing one I should update, I'd be delighted to09:43
lifeless(existing structure)09:43
stubkarmacache and karmatotalcache are the ones I can think of atm.09:44
lifelesswe have some stuff shoved into pillars too09:44
lifelesswhich I think is a locking mistake09:44
wgrantAnd archives.09:44
wgrantAnd D(S)PC09:45
jtvwgrant: responded to your review — please let me know if you agree.  Also, since this is EOW for me, any chance you could assume the Q/A burden for the combined changes to publish-ftpmaster?09:52
wgrantjtv: Sure.09:52
jtvThanks.09:52
wgrantI was going to QA it myself anyway.09:52
wgrantSomething like this..09:52
wgrantjtv: Looks good.09:54
wgrantlifeless: Still around to mentor https://code.launchpad.net/~jtv/launchpad/db-bug-752279/+merge/57277?09:54
jtvwgrant: thanks.  Yes, I've had to rely on you for the soyuz Q/A anyway — the difference is I may not be online to change the bug tags.  :)  Note that the branch actually attaches to two bugs.09:55
lifelesswgrant: its late; my eyes are trying to shut :)10:23
lifelesswgrant: I can look first thing tomorrow, or you can nab someone else to mentor10:23
lifelesssorry10:23
rvbaI'd be happy if someone could give me a hand with the branch I'm working with. I've a strange problem with a test and I think the problem is either:10:26
rvbaa) something stupid that I don't see anymore because my nose is too close to my screen10:26
rvbab) something wrong with the way feature flags are setup in tests10:26
rvbahere is the MP (still in the works) https://code.launchpad.net/~rvb/launchpad/dds-stats-portlet/+merge/5728010:26
rvbamy problem is that this test "./bin/test -cvv test_series_views test_differences_portlet_all_differences" is failing basically the feature flag is not set.10:27
rvbaif I remove the line "tal:condition="request/features/soyuz.derived-series-ui.enabled">" the test passes10:27
rvbathe feature flag in the test is set the same way it's set in other tests (I think) and that's why I don't understand why it's not working.10:27
rvbaPutting a breakpoint inside the feature flag controller code told me that, for some reason, the NullFeatureController is used ... I guess that's the reason why the feature flag is not set and the test is failing ... but can't figure out how to do it properly.10:27
lifelessnight all11:03
stubjtv: So at the moment, we block dblooptuner stuff on long running transactions to avoid bloat.11:39
jtvstub: I'm not complaining—only about the check being cluster-wide rather than local to the database.11:40
stubjtv: Instead, I wonder if it is sane to occasionally check dead tuples on a specified list of tables, and if there is a large enough number, block until autovacuum can clean them up?11:40
jtvRisky.11:40
stubWe have had some huge bloat on indexes and tables that have been migrated, despite the check for long running transactions. I think autovacuum is backing off because the batch job wants access.11:41
jtvI mean, if we get that wrong, isn't there a danger that we block just because autovacuum doesn't think it's worth cleaning up yet?11:41
stubYes, so we need a higher threshold than autovacuum.11:41
jtvOnce things get that bad though, is it really a matter for the dblooptuner?  It sounds as if it might be more something we should raise alarms about and fix.11:42
jtv(Once the thresholds are high enough, obviously)11:42
stubWhen we raise alarms, the bloat has already happened.11:43
stubAnd cleaning it up is sometimes impossible (bloated primary key indexes for instance...) without rebuilding nodes.11:43
jtvI see.11:43
stubI suspect there is a flaw somewhere, or else autovacuum would check dead tuple counts rather than #updates. Maybe the dead tuple count doesn't get updated until autovacuum has had a look?11:44
* stub goes to do some research11:44
stubMaybe I just need to stick in delays, which would suck.11:45
jtvThis is what I mean: I like the idea, but not the way you need to model the database's internals somewhat correctly to make it robust.11:45
stubjtv: The alternative is to keep the existing long running transaction checks (to cope with vacuum not doing anything useful due to the backups being in progress) and manually vacuum in dblooptuner on occasions.11:46
jtvBTW I'm not as deeply into this as you are, but it does sound sensible that we don't know the number of dead tuples until we've done a vacuum.  And dead tuples don't really matter I guess until a "vacuum full" because until then you can't reclaim the space anyway.11:47
jtvI don't suppose there's some subtle tweak to count transaction time from the time an actual transaction id is assigned?11:47
stubdead tuples matter because when dead tuples are not converted to free space quickly enough we get bloat.11:48
stubjtv: Not sure if they are actually different. I just use what pg_stat_activity gives me, and if it is wrong tough because there is no other source of information :)11:49
stubI suspect they are the same - <IDLE> connections don't have a transaction start time11:51
jtvLate transaction id assignment was added pretty recently — 8.3 or so I think.  Shame.  :(11:52
jtvNowadays, transaction ids only get assigned when the transaction starts making changes.11:52
stuboic.11:52
jtvWhich I'm guessing a backup doesn't do.11:52
stubbackup needs a consistent snapshot of the database, so vacuum can't clean up stuff until the backup transaction is completed.11:53
=== henninge_ is now known as henninge-lunch
deryckMorning, all.12:07
jmlderyck: good morning!12:18
jmlderyck: I wish to talk with you12:18
jtvbigjools: oh!  I just realized I could just compare using "IS DISTINCT FROM."  That'll treat nulls as equal, but we're not going to get two nulls there.12:19
deryckjml, ok, let's do.  mumble or chat?12:20
bigjoolsjtv: that's the same as the old code?12:20
jmlderyck: chat.12:20
jtvbigjools: yup, does the same thing.12:20
bigjoolsjtv: the old *buggy* code?12:21
jtvbigjools: no, not _that_ old :)12:21
jtvThis is internet time.12:21
jtvIt does the same as the "IS NOT TRUE" expression.12:21
jtvBut more succinctly.12:22
jtv(And FTR it passes tests)12:22
* bigjools is confused!12:22
jtvbigjools: IS DISTINCT FROM will return True or False.12:23
jtvSo "'foo' is distinct from null" → true, whereas "'foo' <> null" → null12:24
bigjoolsjtv: what are you comparing?12:24
jtvversion numbers.12:24
jtvOne or the other may be null, that that's considered "different."12:24
jtv*and that's considered "different."12:24
jtvbigjools: oh I see what you mean now—it's the same operator that the old, deployed code uses.12:25
jtvSorry, was a bit rushed.12:26
bigjoolsjtv: ok, now it makes more sense :)12:26
* jtv blushes12:26
bigjoolsjtv: approved the MP, thanks12:29
jtvthanks12:30
=== jtv is now known as jtv-afk
LPCIBotProject devel build #630: FAILURE in 5 hr 11 min: https://lpci.wedontsleep.org/job/devel/630/14:08
=== almaisan-away is now known as al-maisan
abentley_deryck: http://pastebin.ubuntu.com/593119/14:32
=== jkakar_ is now known as jkakar
abentleybac: I am trying to extend lazr.FormOverlay, but getting a rendering bug.  I understand you've navigated these murky waters before.  Could you give me a hand?14:42
bacabentley: sure.  the work we did is in registry/javascript/structuralsubscription.js14:43
bacabentley: we didn't actually extend FormOverlay, though.  just instantiated and used one14:44
abentleybac: This is what I have so far: http://pastebin.ubuntu.com/593119/14:45
=== al-maisan is now known as almaisan-away
bacabentley: you're going down a completely different path.  it is probably the right thing to do i just haven't done it before.14:48
abentleybac: Okay, thanks.14:48
=== almaisan-away is now known as al-maisan
=== Chex_ is now known as Chex
=== salgado is now known as salgado-lunch
jkakarCan anyone think of a reason why my launchpadlib-based code is talking to staging when I've specified LPNET_SERVICE_ROOT as the endpoint...?  This is on natty with the latest updated.17:07
=== al-maisan is now known as almaisan-away
sinzuijkakar: I am not sure, but I stopped using LPNET_SERVICE_ROOT and non-versioned scripts17:12
jkakarsinzui: What do you use instead of LPNET_SERVICE_ROOT?17:13
sinzuijkakar: I use this to be precise:17:13
sinzuilp = Launchpad.login_with(17:13
sinzui        'testing', service_root='https://api.launchpad.net', version='devel')17:13
jkakarI have code like this: credentials = Credentials(); credentials.load(<path-to-credentials>); return Launchpad(credentials, LPNET_SERVICE_ROOT, getCachePath())17:14
jkakarsinzui: ^^ I should be using login_with instead of that?17:14
sinzuijkakar: I think that is a very old way of setting up credentials and oauth17:16
=== almaisan-away is now known as al-maisan
jkakarsinzui: Okay, I'll try login_with, thanks.17:17
sinzuiI do not see LPNET_SERVICE_ROOT in the modern version of launchpadlib17:17
sinzuiI see staging and edge, and I know edge is dead17:18
jkakarsinzui: It's in launchpadlib.uris.17:18
jkakarsinzui: With a bunch of other odd looking stuff. :)17:18
sinzuiI see. Yes, that is odd17:19
bigjoolsjames_w: hey, got a moment?17:20
sinzuiI like to use the real URL so that I do not need to guess what I am talking too17:20
bigjoolsjkakar: hello there, still hanging around? :)17:21
jkakarbigjools: Hi :)17:22
james_wbigjools, yeah17:23
jkakarsinzui: That seems to have done the trick, thanks for the advice.17:23
bigjoolsjames_w: remember we talked about pockets in derived distros?  Would it be a blocker for Linaro if you had to use the same pocket paradigm as Ubuntu?17:23
james_wbigjools, I don't think so17:24
bigjoolsjames_w: you made my day17:24
james_wI expect OEM will be the difficulty with things like that17:24
bigjoolsyes, they are17:24
bigjoolsbut we're like Cylons, we have a plan17:24
=== beuno is now known as beuno-lunch
=== al-maisan is now known as almaisan-away
=== deryck is now known as deryck[lunch]
=== salgado-lunch is now known as salgado
jmlgah, bad punctuation.18:02
bigjoolsgood night folks18:12
=== beuno-lunch is now known as beuno
=== Ursinha is now known as Ursinha-afk
=== Ursinha-afk is now known as Ursinha
jcsackettis anyone available to review https://code.launchpad.net/~jcsackett/launchpad/private-bugs-40418:39
jcsackettit's some template changes and a test.18:39
jcsackettsorry, mp link is https://code.launchpad.net/~jcsackett/launchpad/private-bugs-404/+merge/5724418:39
=== Ursinha is now known as Ursinha-afk
=== deryck[lunch] is now known as deryck
LPCIBotYippie, build fixed!19:56
LPCIBotProject devel build #631: FIXED in 5 hr 7 min: https://lpci.wedontsleep.org/job/devel/631/19:56
sinzuiA user has errors building a recipe. https://answers.launchpad.net/launchpad/+question/15253420:10
sinzui^ I think the solution is to delete then recreate https://code.launchpad.net/~vcs-imports/bugzilla/main so that the branch is modern20:11
jelmersinzui: the branch should be upgraded20:19
sinzuijelmer: how do I upgrade a ~vcs-imports branch20:19
jelmersinzui: I've been wondering the same thing :-/20:21
jelmerI think Bazaar experts can do upgrades, or at least LOSAs20:21
sinzuijelmer, the bzr and Lp teams might all have permission to branch, upgrade, and push to ~vcs-imports...20:23
sinzuiwhich begs the question, if so, why haven't we done it for the 1000's of branchs20:23
jelmersinzui: the problem is that some users of ~vcs-imports might still be using an older version of bzr that doesn't support the 2a format20:23
jelmersinzui: and each upstream URL can only have one matching Launchpad branch20:24
sinzuijelmer :(20:24
sinzuiI think users making recipes that using different formats will then need to do all the work to make alternate branches to ensure everything is the same format20:25
jelmersinzui: it's impossible to register alternate branches at the moment as launchpad only allows one vcs import for a particular upstream URL :-/20:26
sinzuiright20:26
sinzuiso the 1000s of imported branches might prove to be useless. Developers are keeping current, but we keep the formats to support old distros20:27
sinzuiI do mean old distros because a developer can always update his tools20:28
jelmersinzui: perhaps we should bring this up on the list20:28
sinzuiI think so. I will20:28
jelmersinzui: at this point or within a year from now, it's probably reasonable to require users to upgrade. It's something that we will keep hitting though as bzr adds new features20:29
jelmerIt might well be something we can fix on the Bazaar side, by not making format changes as rigorous as they are at the moment20:30
sinzuiWell I think the issue is a little different. Most of the vcs-imports exist to feed Ubuntu, and it only cares about new code. I think that is true of all developers. Lp should be using the latest version. bzr and Lp both need to inform users where they are using old tools and how to upgrade20:32
lifelessmoin20:36
lifelessgary_poster: hi20:36
gary_posterlifeless, hi20:43
timrcsinzui: We talked awhile ago when I reported a problem with attempting to set a PPA private via launchpadlib (https://pastebin.canonical.com/46008/).  The problem was linked to https://bugs.launchpad.net/bugs/72452221:53
_mup_Bug #724522: Retried transactions retry forever <canonical-losa-lp> <qa-ok> <regression> <Launchpad itself:Fix Released by wgrant> < https://launchpad.net/bugs/724522 >21:53
timrcsinzui: it's still not possible to make a ppa private via the api… are there plans to do this? or maybe there is a way, now, and I'm just unfamiliar with it21:54
sinzuitimrc: I do not know the  answer off hand21:54
sinzuioh, maybe I do. I think we verified that no, it cannot be done now21:55
sinzuitimrc: There are no plans at the moment to allow setting a PPA private over the api. The state is bool, but making the PPA private actually requires several things to happen, among them you would need to provide a secret21:57
cody-somervillesinzui, I believe the secret is automatically generated (it is for the form).21:59
timrcsinzui: So how does launchpad achieve this?21:59
sinzuiThe view is doing lots of things21:59
lifelesssinzui: why can't the api generate a random secret on the server ?21:59
sinzuiA methods must be added to archive that allows an archive to be made private21:59
sinzui^ lifeless My answer remains the same22:00
lifelesssinzui: possible in principle but not being worked on right now ?22:00
sinzuilifeless: yes. I am channeling someone's voice from Soyuz.22:00
lifelesssinzui: cool22:01
sinzuiI wanted to do the same and it was explained to me that there are missing steps to accomplish the bool state we see22:01
sinzuiOh, I can see I have search for this bug before22:02
lifelessbug 724740 ?22:02
_mup_Bug #724740: setting a ppa private fails for commercial admins <oem-services> <Launchpad itself:Triaged> < https://launchpad.net/bugs/724740 >22:02
sinzuilifeless: timrc: bug 72474022:03
_mup_Bug #724740: setting a ppa private cannot be done over the API <oem-services> <Launchpad itself:Triaged> < https://launchpad.net/bugs/724740 >22:03
cody-somervilleSo sounds like a simple fix.22:04
sinzuibugzilla uses bzr now?22:06
lifelessyes22:06
lifelessdavemiller (who registered launchpad.net/bugzilla and is a prime mover upstream) spearheaded a migration22:07
timrccody-somerville: you volunteering? :) *bats eyelashes*22:07
timrccody-somerville: while you're add it can you add support to enable arm builders?22:07
timrcs/add/at/22:07
sinzuilifeless: I think I am running in circles here since I am just trying to get our copy on format 2a so that a recipe will build22:08
lifelessI think we need a mirrored branch22:10
lifelessbzr://bzr.mozilla.org/bugzilla/trunk is trunk22:11
sinzuiyep: https://code.launchpad.net/~registry/bugzilla/trunk22:11
sinzuiI am waiting for the import to start22:11
lifelesswe have a typo22:12
sinzuiThis is a unholy recipe using an import from github and buzilla22:12
lifelessisHosted22:12
lifelesson https://code.launchpad.net/~registry/bugzilla/trunk/+edit22:12
sinzuiI bet that is string concatenation in the interface. I fix my own mistake like that a few months ago22:13
lifelesswow, so why are they using a github branch as well...22:15
lifelessoh, I see22:16
lifelesstheir branch should be in the packaging namespace22:16
lifelessbut I guess code imports don't support that yet22:16
sinzuilifeless: the user only knows git and is a github user. I want to try new lp features22:18
sinzuiThis has been an adventure moving from the concept of "I have code" to "lets share code"22:19
* sinzui just fized ishosted22:22
lifelessthanks!22:22
sinzuiI have a trivial branch open as I make movies of how to use Launchpad22:23
lifelesscan anyone make heads or tails of Bug 75916022:23
_mup_Bug #759160: normal search <Launchpad itself:New> < https://launchpad.net/bugs/759160 >22:23
sinzuiThe experience is not pleasant. I keep feeling like I have to apologies tp users22:23
sinzuilooks like batching does not scale with that app. But is that app using Lp's API?22:26
lifelesssinzui: I have *no* idea22:26
sinzuiah22:26
sinzuiretarget the bug to webtrees22:27
=== Ursinha-afk is now known as Ursinha
sinzuiThat project was registered recently.22:28
sinzuiThe owner is not too familar with Lp22:28
=== salgado is now known as salgado-afk
groo_hi/2 all22:46
groo_im already using LP dev22:46
groo_is there a branch i could use to be able to use git nested trees? and dont get : The repository you are fetching from contains submodules. To continue, upgrade your Bazaar repository to a format that supports nested trees, such as 'development-subtree'22:46
sinzuigroo_: I do not think bzr supports nested trees23:02
sinzuigroo_: See http://wiki.bazaar.canonical.com/NestedTrees23:03
lifelessgroo_: jelmer, in #bzr, can tell you more about where the progress has gotten to.23:04
groo_tks lifeless, sinzui23:06

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