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

StevenKAh ha. lifeless's comments are a little misleading.00:02
StevenKBugNominationView._getListingItem isn't it at all, it's BugListingBatchNavigator._getListingItem00:03
poolieStevenK, hey00:05
pooliein pursuit of splitting out the buildd tree00:05
pooliei'm thinking of moving the tests that rely on zopelessdblayer etc out of the buildd tree into lp00:05
poolieso they will rely on a buildd but not be part of it00:05
StevenKpoolie: And making lp-buildd be pulled in via sourcecode or the download-cache?00:06
poolieyep00:06
pooliehttps://bugs.launchpad.net/launchpad/+bug/800295 fwiw00:06
_mup_Bug #800295: buildd is unnecessarily coupled  to the launchpad tree through tac file and readyservice <tech-debt> <Launchpad itself:In Progress by mbp> < https://launchpad.net/bugs/800295 >00:06
pooliewelcome back, bot00:06
StevenKActually, it's not. It's NominatedBugListingBatchNavigator.00:10
wgrantStevenK: Do you know if overlay distros work yet?00:18
wgrantI think they probably function.00:18
wgrantEnough for someone to kill archivepurpose 4 with a few hours of work.00:19
StevenKHa. Maybe they do.00:19
StevenKwgrant: Should I put up a NDT for r14231?00:20
wgrantSince I've got Julian convinced that we should kill archivepurpose 7...00:20
wgrantStevenK: Was hoping you'd ask :)00:20
wgrantAnd 4 is pretty clearly actually an overlay distro.00:20
StevenKWhat's 7 again?00:20
wgrant7 is DEBUG00:20
wgrantI successfully convinced him that it's a terrible idea.00:20
StevenKAnd 4 is PARTNER00:20
wgrantYes.00:20
StevenKThey both need to die.00:20
wgrantYes.00:20
wgrantAnd I think 4 can die pretty cheaply by being turned into https://launchpad.net/canonical-partner00:21
wgrantAnd that lets us remove a tonnnnnne of awfulness.00:21
wgrantall_distro_archives can fuck off.00:21
StevenKNeeds IS involvment to get it onto archive.c.c.00:21
StevenKBut certainly doable00:21
wgrantWe can remove all the Distribution and DistroSeries publication-related methods.00:21
wgrantIT WILL BE BEAUTIFUL00:22
wgrantYes, it requires some IS involvement.00:22
wgrantBut I think it's very doable.00:22
wgrantAlthough I bet it's signed with the Ubuntu archive key.00:22
wgrantJust to make things difficult.00:22
StevenKOh, rofl00:22
* StevenK starts putting together a NDT00:22
wgrantStevenK: Have you heard about my new solution to kill off 7?00:24
wgrantI'm not sure if I've run it past you.00:24
wgrantNeed to run it past Colin and Adam and the like too, but I think it's sensible.00:26
StevenKwgrant: Only in vague terms, I think.00:27
wgrantStevenK: We publish them in separate $COMPONENT/debug indices, like $COMPONENT/debian-installer, and handle the split like we do with security and ports.00:28
wgrantEventually when Soyuz gets archive views, we can move the split to there... but until then we might as well utilise the existing mechanism.00:28
StevenKDoesn't that make archive.u.c explode in size?00:29
wgrantRemember that there's already the secret magic splitter that throws ports binaries and indices elsewhere.00:30
wgrantAnd keeps security on security.u.c.00:30
wgrantWe repurpose that to create a fourth archive -- ddebs.ubuntu.com00:30
wgrantBecause this is really the same thing as the ports split.00:30
StevenKOh, right.00:31
wgrantWe need to keep some binaries off the mirrors.00:31
wgrantIt's divided by component instead of arch, but it's really the same thing.00:31
StevenKWith the appropriate magic-mirror hacking, that sounds like a good plan.00:32
StevenKwgrant: And ddebs.u.c already exists on macquarie00:32
wgrantYes. The retracers will probably need to look at both for a while.00:32
wgrantFor values of "a while" that probably number in the several years.00:33
wgrantBut details, details.00:33
wgrantapt and apt-ftparchive seem happy with custom slashed components.00:35
wgrantYay00:35
wgrantIt is practical.00:35
wgrantAnd the Soyuz side is dead-easy.00:35
wgrantSo, we now have feasible solutions to both partner and debug that probably take less than two days each.00:37
wgrantOne is already escalated...00:37
StevenKwgrant: Isn't there a better method to call to get upload perms for a user than distribution.main_archive.verifyUpload(person, name, component, distroseries) ?00:43
wgrantDon't think so.00:43
wgrantjml cleaned it up a couple of years back.00:44
wgrantIt would be nice if it was set-based, but it's not.00:44
StevenKSince I think the lookup of the component is grabbing SPPH, and then verifyUpload does the same thing.00:44
wgrantIt's grabbing it to check the component?00:44
wgrantIt could be cleaned up further, but it's a deep hole.00:44
StevenK                component = self.distroseries.getSourcePackage(00:45
StevenK                    name).latest_published_component00:45
StevenK                if distribution.main_archive.verifyUpload(00:45
StevenK                    person, name, component, self.distroseries) is None:00:45
StevenK                    return True00:45
wgrantOne I plan to follow eventually, but hopefully after abolishing archivepurpose (4, 7).00:45
wgrantStevenK: You could possibly check how branches do it.;00:45
wgrantlaunchpad.Edit for IBranch needs to do the same thing as IBugNomination.canApprove.00:46
wallyworld_poolie: hi. i claimed your 678090-affected-count mp and then read the comments. are you still working on it?00:49
StevenKwgrant: Digging around IBranch isn't turning up anything00:49
pooliewallyworld_, not right at this moment but i will00:49
wgrant    def checkAuthenticated(self, user):00:50
wgrant        can_edit = (00:50
wgrant            user.inTeam(self.obj.owner) or00:50
wgrant            user_has_special_branch_access(user.person) or00:50
wgrant            can_upload_linked_package(user, self.obj))00:50
wgrant    for ssp in ssp_list:00:50
wgrant        archive = ssp.sourcepackage.get_default_archive()00:50
wgrant        if archive.canUploadSuiteSourcePackage(person_role.person, ssp):00:50
wgrant            return True00:50
wallyworld_poolie: ok. just wanted to see if i needed to review now or not. thanks00:50
pooliedo you have any comments beyond what robert and i said?00:50
wgrantWhich uses latest_published_component.00:50
wallyworld_poolie: not sure. didn't get that far. i'll have a look00:50
StevenKwgrant: Ah, where is that?00:52
wgrantStevenK: c.l.security00:52
wallyworld_poolie: so you can delete the view property 'other_users_affected_count' i think00:55
poolieyep probably00:55
poolieis my change to @cachedproperty ok?00:56
wallyworld_poolie: other than that, looks like a nice change. i was going to also suggest the feature flag00:56
wallyworld_poolie: i like it how you've been doing these polish 'paper cut' bugs of late00:56
pooliethanks00:57
wallyworld_poolie: i think the cachedproperty change is ok00:57
wallyworld_i've run into issues before with cached permissions but i think this case is ok00:57
poolieit's just cached for the duration of the page view, right?00:58
wallyworld_yep. the rendering00:58
wallyworld_poolie:  so, a cached property is good if a property is accessed more than once during a render. is this property used more than once?00:59
poolieyes, the template puts it in twice00:59
pooliefor something to do with js fallbacks00:59
wallyworld_ok00:59
pooliewhich seems ugly but i didn't want to change it without fully understanding it00:59
poolieand just caching it seemed fine00:59
wallyworld_sure01:00
poolielifeless, do you have any opinion where TacTestSetup ought to live, so that it can be used by both lp and buildd tests?01:01
poolieit is not enormous but not trivial01:01
wgrantIn Twisted :)01:01
poolieit would seem like a waste to make a new package just for that01:01
poolie:)01:01
poolieperhaps it could go in testfixtures01:01
lifelesspoolie: you could create a txfixtures01:02
lifelessavoiding packages just makes problems01:02
poolieas a new package, depended upon by both?01:02
lifelessyes01:02
lifelesstxfixtures with twisted specific Fixtures01:03
lifelessit can depend on fixtures01:03
lifelesslp and buildd can both use txfixtures01:03
pooliek01:03
poolieaside from that i think it's all ready to be cut out01:03
poolienb it doesn't actually depend on twisted01:04
poolieso, in a sense it could go in plain fixtures01:04
pooliewell, you probably cannot run its owntests without twisted01:04
pooliewallyworld_, while you're here can you read https://code.launchpad.net/~mbp/launchpad/800295-buildd-split/+merge/8111101:05
* wallyworld_ reads01:05
wallyworld_poolie: looks ok to me, but i think the port to listen on needs to be paramaterised01:17
wgrantlifeless: Do you know exactly what OEM needs? Just bugs with foo and hwe-foo tasks?01:27
wgrantlifeless: I wonder if we can just have a temporary owning context.01:27
wgrantlifeless: There's no real need to respect multiple policies.01:28
lifelessI don't know precisely know; nor do I understand what you mean :)01:28
wgrantlifeless: What if we say that OEM's multi-pillar bugs favour one of the targets, and use the access policy from that target?01:29
wgrantRather than respecting the union of policies from each target.01:29
lifelessI have no objection to that01:30
lifelessseems harder to do well01:30
lifelessbut thats your problem :)O01:30
wgrantlifeless: Also, I forget some details of yesterday's conversation. IIRC you suggested just having the enum value on Bug/BugTask, without the pillar reference. But then we have to indirect through Product/Distribution/ProductSeries/DistroSeries to work out the policy.01:32
pooliesome of these osutils almost need their own package01:34
lifelessfor full observers01:34
lifelessnot for restricted01:34
wgrantSure.01:34
lifelesswhich is a small set01:34
wgrantSure, but it makes queries far worse.01:34
lifelessyou've tested ?01:34
wgrantI mean in terms of complexity.01:35
wgrantSpeed, I haven't tested yet.01:35
lifelessthe are a little more awkward to write, thats true.01:35
lifelessmight be a driver for having two separate tables01:35
wgrantHow?01:35
* lifeless speculates wildly01:35
wgrantThe problem is not that there's one table.01:35
lifelesswgrant: its a lopsided table01:36
wgrantTHe problem is that we have to indirect through four other tables to get to the one table.01:36
lifelesswgrant: task -> policyuse -> grants01:36
lifelessgnuoy: one in between table01:36
lifelessbah01:36
lifelesswgrant: ^01:36
wgrantlifeless: How do you get from task to policyuse unless you refer to policyuse on task?01:37
wgrantYou'd have to go through ProductSeries or DistroSeries.01:37
lifelesstask.product == policyuse.product01:37
lifelessmmm, sure. ok - 2 tables01:37
lifelesstask -> [*series] -> policyuse01:37
wgrantAnd we already have to denorm this slightly, on grant.01:37
wgrantI'm not sure that one is avoidable.01:37
lifelessgrant knowing the asset ?01:38
wgrantRight, an artifact-specific grant has to know the artifact, its target, and its policy.01:38
lifelesstarget == user ?01:38
lifeless'person' ?01:39
wgrantpillar01:39
lifelesswhy does it need pillar? it can use policyuse.id01:39
lifeless(person, artifact, policyuse)01:39
wgrantRight, but policyuse requires target and policy.01:39
lifelessyes01:39
wgrantWhich means we're denorming (target, policy) from bugtask onto grant.01:40
wgrantIt's indirect, but it's still denormed.01:40
lifelessmmm01:40
lifelessso we'd do that for reporting01:40
lifelessack, its a denorm01:40
lifelessthats part of your schema anyhow though, right ?01:41
wgrantYes.01:41
lifelessso no-change01:41
wgrantThe change is that you suggest I no longer denorm that on bugtask itself.01:41
wgrantWhich seems odd, when we're already denorming it elsewhere.01:42
wgrantFurther away.01:42
lifelesswell, denorms are done for a reason01:42
lifelesswhats the reason for it to be denormalised on bugtask ?01:42
lifelessor rather01:42
lifelesslet me ask it differently01:42
lifelessif bug is the native location for this01:42
lifelesswhats the best denorm to use on bugtask01:43
lifelessso bug.policy = ENUM01:43
wgrantRight, better question.01:43
lifelessbugtask.whatshouldwehavehere.01:43
lifelessbrb, nature01:44
wgrantI suspect policyuse. So setting Bug.access_policy calculates policyuse and throws it at BugTask and artifact.01:44
wgrantAlthough then we can't optimise public bugs.01:45
wgrantBecause we'd have to look up the public policy. But that may not be a problem.01:45
poolieok, lp:txfixtures exists!01:59
wgrantlifeless: We seem to have an OOPS issue.02:04
wgrant * 308 Exceptions02:04
wgrantAll the None/None OOPSes are missing.02:04
* wgrant checks devpad.02:04
wgrantdjango.db.utils.DatabaseError: invalid byte sequence for encoding "UTF8": 0xf802:05
wgrantHINT:  This error can also happen if the byte sequence does not match the encoding expected by the server, which is controlled by "client_encoding".02:05
wgrantyay02:05
wgrant raised with datedir: /srv/launchpad.net-logs/production/chaenomeles/2011-11-03 filename: OOPS-4e0b81ac6e642ee8099df77672c8be1a02:05
wgrantfwiw02:05
wgrant['HTTP_USER_AGENT', '\xf8\x07p\x01']02:07
wgrantThat's a new one...02:07
poolieM-x ^g p ^a02:09
pooliehelp!02:09
pooliewallyworld_, so what did you think of https://code.launchpad.net/~mbp/launchpad/800295-buildd-split/+merge/8111102:09
poolielifeless, i'm just going to copy some of the osutils functions in to txfixtures to stop this recursing too much02:10
wallyworld_[11:17:10] <wallyworld_> poolie: looks ok to me, but i think the port to listen on needs to be paramaterised02:10
pooliesome kind of global osutils02:11
pooliewallyworld_, where?02:11
lifelesswgrant: win02:12
lifelesswgrant: rye has a branch up that should help with this02:12
wgrantlifeless: .decode('utf-8', 'replace')?02:12
lifelesswgrant: not proposed for merging yet02:12
wallyworld_poolie: _hasDaemonStarted().... return self._isPortListening('localhost', 8221)02:12
lifelesswell, the db schema is royally messed up. headers are bytes.02:12
wgrantNot sure whether to hack code or OOPS now..02:12
pooliewgrant, that particular one looks a lot like unix keyboard input not broken utf802:13
wgrantYes.02:13
lifelesswgrant: https://bugs.launchpad.net/python-oops-tools/+bug/88426502:13
_mup_Bug #884265: req_vars header values may cause crash in dboopsloader <python-oops-tools:Triaged> < https://launchpad.net/bugs/884265 >02:13
poolieof course in general escaping might be good02:13
wallyworld_poolie: but i'm not very familiar with that stuff so i could be wrong02:13
pooliewallyworld_, it's already hardcoded in the tac file...02:13
pooliethe coupling is not ideal but since we're apparently happy just counting on that port for these tests i can live with it02:13
lifelessI think someone is going around attempting an exploit02:14
wallyworld_poolie: so, my ignorance - i thought hasDaemonStarted() is a generic method used for different services02:14
wallyworld_hence each would be on a different port02:14
lifelesswgrant: https://code.launchpad.net/~rye/python-oops-tools/quote-req-vars02:14
pooliei guess i could make a tac file in a tmpfile02:14
wgrantlifeless: Intriguing.02:14
pooliewallyworld_, the version that hardcodes the value is specific to tests that always use buildd-slave-test.conf which is always 822102:14
wgrantBut I guess that works.02:15
wgrantFor now.02:15
wallyworld_poolie: ok. thanks for clarifying02:15
* wgrant cowboys.02:15
poolie np02:16
pooliethanks for the speedy review02:16
poolieall good then?02:16
lifelesswgrant: where did you see the error ?02:17
wgrantlifeless: Ran make update_db manually.02:18
lifelesspoolie: lazr.utils might be a place you can put osutils things02:18
wgrant        if isinstance(value, str):02:18
wgrantNeeded to add that.02:18
wgrantSince we have floats.02:18
wgrantPerhaps U1 does not.02:18
poolieok lunch, biab02:18
lifelesspoolie: though I have not checked the dependencies it would drag in02:18
lifelesswgrant: well, they don't have native types at all yet (rfc822 still)02:18
pooliei don't have a good bias towards lazr.* but perhaps it's only restfulclient02:19
lifelesswgrant: I'm working on the IBodyProducer thing they need to migrate02:19
wgrantlifeless: Ah, of course.02:19
wallyworld_poolie: looks ok02:20
wgrantlifeless: Thanks.02:22
wgrantlifeless: Any thoughts on bugtask?02:22
lifelesspermit bug.accesspolicy to be NULL02:24
lifelessI agree; trigger updates both denormed locations (grant + tasks)02:25
wgrantGreat.02:26
lifelesswgrant: raises the question, perhaps the artifact table should denorm the policyuse, rather than the grants.02:26
lifeless(Or does it already?02:26
lifeless)02:26
wgrantIt doesn't already. It could. But currently the only method to manipulate artifacts is ensure(), which is nice.02:26
lifelessso bug.accesspolicy being null implies task.policyuse is nullable, so public case is optimisable02:27
wgrantYep.02:27
wgrantI'm not sure what to do with artifact-specific permissions when the artifact becomes public.02:27
lifelessnow, when the policy changes, there are less artifact rows to change than grant rows02:27
wgrantIndeed.02:27
wgrantAnd querying through artifact for reporting should be quickish... hopefully.02:27
lifelesswhich, if you're hitting artifact anyway on reports02:28
lifeless-> I would put the policyuse on artifact for restricted observers02:28
lifeless-> and on grant for full observers.02:28
wgrantRight.02:28
lifelessyes, that breaks your combined schema. I'm feeling more and more sure it should be separate.02:28
wgrantPossibly, yes.02:29
wgrantIt shouldn't make a significant performance difference.02:29
wgrantTo have to go through artifact.02:29
lifelessWell, I think you are anyway, aren't you ?02:29
lifelessor were you thinking to just report 'there are N total grants'02:29
wgrantPretty much that.02:30
lifelessbeing able to report 'there are N private objects' and 'Y security ones' might be useful itself.02:30
wgrantIn order to be fast.02:30
wgrantYes.02:30
wgrantTrue.02:30
lifelessso, O(artifacts) < O(restricted grants) if there are 1 restricted grant per artifact. But there may not be.02:30
lifelessso you could denorm to both.02:30
wgrantI had considered putting policy on artifact, but it makes reporting slightly awkward.02:30
wgrantBut should be fine.02:30
lifelessHard to predict.02:30
wgrantIt really depends on the project.02:31
wgrantSecurity will usually have one restricted observer.02:31
lifelessthe reporter?02:31
wgrantArtifacts in private projects probably won't have any.02:31
wgrantRight.02:31
lifelessok, so plan: bug.accesspolicy nullable; task.policyuse nullable; possibly add an artifact.policyuse; possibly drop grant.policyuse02:32
lifelesslast two subject to scaling testing by you02:32
wgrantIt's going to be awkward to get something representative, but I'll do what I can.02:32
lifelessI feel your pain02:33
lifelessyou could do what I did with bugsummary02:34
wgrantWhat's that?02:34
lifelessconversion script into temp tables02:34
lifelessran it repeatedly on staging until happy02:34
wgrantFSVO "you"02:34
lifelesswe should have a reasonable corpus already, particularly if you use private branches02:34
lifelesswgrant: s/staging/dogfood/02:34
wgrantNot very representative of performance, but maybe.02:34
lifelessif its fast there...02:34
wgrantSometimes hundreds of times faster, sometimes infinitely slower :)02:34
wgrantHeh02:35
wgrantTrue02:35
lifelessits not the resources that make us make things fast, its the constraints :)02:35
wgrantMmm, yeah, but there's so many bad queries and schema in LP that pretty much anything happening on mawson blows away the cache and kills everything.02:36
wgrantI will turn everything off :)02:36
wgrantlifeless: Ah, denorming like this also more easily allows us to have a master target for The OEM Conundrum.02:38
wgrantSince the policyuse is not calculated from each task's target separately.02:39
lifelessit seems to make that unneeded though02:39
lifelessI suspect doing a master target may be a big fail02:39
lifelessI wouldn't try it myself02:39
lifeless(because what if hwe aren't allowed to see all of oem's bugs)02:40
wgrantlifeless: Then they can have restricted observers on all the relevant artifacts, just like they do now.02:45
lifelesstrue02:46
wgrantUnless they're in the OEM bug supervisor team (which is subscribed automatically, and will be the observer in the new model), they are being subscribed manually.02:46
wgrantHow would you do it without a master task? Which target would it use to look up the policy?02:46
lifelesswould what02:47
wgrantit == the trigger to push Bug.access_policy through to BugTask.policy_use02:47
wgrantAnd to AccessPolicyArtifact.policy_use, or AccessPolicyGrant.policy_use.02:48
lifelesswgrant: I was assuming it would run a small function (task, policy enum) on each task.02:49
wgrantlifeless: One of those has to win, in order to be put into AccessPolicyArtifact or AccessPolicyGrant.02:50
lifelessah02:51
lifelessok, I see. Yes, go ahead.02:51
wgrantI figure most of the cases are bugs with $foo and hwe-$foo tasks, in which case $foo should win. Not sure how we'll define that, but that can be clarified next week.02:51
wgrantfuuuu02:59
wgrant  File "/srv/lp-oops.canonical.com/cgi-bin/lpoops/src/oopstools/oops/models.py", line 370, in _get_oops_tuple02:59
wgrant    for (start, end, db_id, statement) in statements:03:00
wgrantValueError: need more than 3 values to unpack03:00
* wgrant enfixorates further.03:00
lifelessEWTFISGOINGON03:00
lifelessdon't tell me bson is translating (foo, None) as (foo,)03:00
lifelessthat would be fuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu03:00
wgrantIt would indeed.03:00
wgrantI remember we ran into problems like this when I instrumented openid.03:01
wgrantI assume that's what this is.03:01
wgrantBut I guess we'll find out in a sec.03:01
wgrantExcept we've had 2000ish openid timeouts since we moved, and they haven't been problematic.03:01
wgrant[212, 212, 'sendmail'], [215, 215, 'sendmail'], [218, 218, 'sendmail']03:02
wgrantetc.03:02
wgrantsigh.03:02
* wgrant greps.03:03
lifelessare they old oopses or something ?03:03
wgrantNo, this is OOPS-11a3f88d3d139e90764487de402825c403:03
lifelesscan we make sure we have bugs on the producer side as well as whatever you do to fix the consumption ?03:04
wgrantThe fourth item should be the detail, shouldn't it?03:04
lifelessyes03:04
lifelessthe statement03:04
lifeless(start, end, db_id, statement)03:04
wgrantFor this issue I'll file a producer bug, sure.03:04
wgrantFor the user-agent one it probably didn't make sense.03:04
lifelessthe missing value one needs a bug too03:05
lifelessuser agent is crap data, I'm fine with sanitising that in oops-tools03:05
wgrantThe missing value one is quite possibly the same thing.03:05
lifelessyes03:06
wgrantHmm, putting such an array through bson works fine.03:06
wgrantwith None and ''.03:06
wgrantSo not quite that trivial and awful, sadly.03:06
lifelessheadddeeeeesk03:09
wgrant?03:09
lifelessjust at the symptoms03:12
wgrantOh.03:12
wgrantfwe9ofju*(OW#YU894723894238923403:13
wgrant\03:13
wgrant>>> bson.loads(bson.dumps({'blah': (1, 2, object())}))03:13
wgrant{u'blah': [1, 2]}03:13
wgrantIt's unrepresentable, so just omit it :D03:13
wgrantlifeless: reasons for hating BSON++03:14
lifelesswgrant: so we have unrepresentable objects in the dict ?03:14
lifelesswgrant: I doubt json does better.03:15
lifelesswgrant: or things we expect to stringify() ?03:15
lifelesswgrant: anyhow, if we're doing that (or analagous) we're breaking the oops contract *anyhow*03:15
lifeless>>> json.dumps({'blah': (1, 2, object())})03:16
lifelessTypeError: <object object at 0x1731080> is not JSON serializable03:16
stubGiven this is error handling, a case can be made to sanitize the dictionary before serialization, converting unrepresentable stuff to repr(foo) and maybe logging a warning.03:17
wgrantlifeless: JSON crashes, yes.03:17
wgrantWhich is better.03:17
wgrantIt tells you that you're being a moron, rather than nodding and ignoring you.03:17
wgrantAh.03:23
wgrantIn the sendmail case it's an email.header.Header.03:23
wgrantWhich stringifies fine.03:23
wgrantBut doesn't JSON.03:24
wgrantHMmm.03:24
wgrantOh, but we've probably never used it with JSON.03:24
wgrantOnly RFC822.03:24
lifelesswhere it worked by chance03:24
wgrantYep.03:24
lifelessits against the oops contract03:24
wgrant(Pdb) bson.loads(bson.dumps({'foo': object()}))03:25
wgrant{}03:25
wgrantyay03:25
wgrantI guess that explains the field.blob thing too.03:27
wgrantIt'll be an uploaded file thingy.03:27
lifelessyeah03:27
lifelessreasonable to not include it :)03:27
wgrantYeah, but not to just exclude it.03:28
wgrantParticularly since once it's a dict the key will just disappear.03:28
lifelessyes03:28
lifelessworth a bug filed ustream03:28
stubDoes the bson library provide hooks for serialization of custom objects?03:28
wgrantOh god bson uses tabs.03:29
wgrantI guess the problem is encode_value()03:29
wgrantWhich has a huge long if/elif, and no catch-all.03:30
wgrantlifeless: What happens if the OOPS serialiser raises an exception?03:31
lifelesswgrant: it blows up the stack03:32
lifelesswgrant: there isn't [yet] a fallback mechanism.03:32
wgrantProbably ending up in the appserver error log.03:32
wgrantSo we can't very well just make this blow up.03:32
lifelesswgrant: core oops + oops-twisted is a place to put one, and it probably makes sense to do so.03:32
lifelesse.g. generate an oops saying 'could not generate this oops' with the dict keys and values coerced, nonrecursive, to strings, with try:excepts everywhere.03:33
wgrantSo, should I file LP bugs complaining about the sendmail and field.blob cases?03:35
lifelessyes03:36
lifelessfield.blob might be oops-wsgi03:37
lifelessdunno if it was a loggerhead or appserver oops03:37
wgrantDon't see why loggerhead would have Zope field names and uploaded blobs :)03:38
lifelesswallyworld_: yo04:00
lifelesswallyworld_: OCR time :) - https://code.launchpad.net/~lifeless/python-oops-wsgi/0.0.6/+merge/8123004:00
* wallyworld_ looks04:00
* wallyworld_ wishes txlongpoll was done so he didn't have to wait for the mp diff04:01
lifelessyou'd still be waiting04:03
lifelessyou just wouldn't be refreshing04:03
wallyworld_lifeless: at the last epic, the longpoll demo session made a point of showing that the diff generation was instant04:18
wgrantwallyworld_: The page updates instantly once the diff is generated.04:19
wgrantwallyworld_: The diff generation still takes a while, and is even still on a minutely cronjob.04:19
wallyworld_that's a shame :-(04:19
wallyworld_i hate cron jobs for this sort of stuff04:19
wallyworld_should be event driven04:20
wgrantEventually we'll have an MQ-based jobrunner, I assume.04:20
wallyworld_lifeless: dumb question given i'm not familiar with the the code i'm looking at - does it matter that the default tracker will call ensure_start_response twice?04:20
lifelesswallyworld_: thats whats passed into it04:41
lifelesswallyworld_: no it doesn't matter04:41
lifelesswallyworld_: the code is structured to let that change without folk that write custom trackers having to know it changes04:42
lifelesswallyworld_: on_first_bytes is called once only, and on_finish once only04:42
wallyworld_lifeless: cool. it all seems ok but lacking any familiarity with the package, i'm not sure if i've missed anything04:43
lifelessthats fine :)04:44
lifelessunless you want to become a wsgi expert - you can cross reference with PEP 333304:44
wallyworld_to save stalling i'll +1 it :-)04:46
lifeless<elvis>thankyouverramuch</elvis>04:47
stubwgrant: https://code.launchpad.net/~wgrant/launchpad/observer-db/+merge/81104 is flagged as in progress, but the db patch seems done (including the partial index on AccessPolicyGrant which I thought was staying as it was). Want me to tick it yet?04:50
wgrantstub: lifeless revealed some additional requirements last night. And convinced me to enum it.04:52
stubok :-)04:52
stubAnyone know if there is a bug open for the slow bugsubscription,teamparticipation join we were discussing the other day?04:54
lifelessmore strictly, OEM revealed ...04:54
wgrantlifeless: Well, I assume you found out earlier than you let on :)04:55
lifelessyesterday early aco04:55
lifeless*avo*04:55
wgrantOh.04:55
lifeless~EOD in florida04:56
stubWhere did the 'deployable revisions' reports go? By bookmarks are no longer valid04:56
StevenKstub: I removed the private redirect yesterday04:57
StevenKstub: Didn't you see my mail about the deployment reports becoming public, and that I would remove the redirect in one month?04:58
stubStevenK: I probably saw it and ignored it :-)04:58
lifelessStevenK: in such cases a follow up at the time can be very useful04:58
StevenKBad stub, no cookie.04:58
stubI can just about cope with tomorrow. One months time? Ha!04:59
StevenKstub: lpqateam.canonical.com/qa-reports04:59
spm[15:58:40] <stub> StevenK: I probably saw it and it was washed away in the flood waters, while I desperately tried to recover it; but alas; twas not to be <== fixed04:59
StevenKspm: Now do it in haiku?05:00
spmI wouldn't like to keep stealing the limelight like that05:01
spmI'm a shy retiring type doncha know05:01
lifelessterrible liar05:01
StevenKWho are you, and what have you done with the real spm?05:01
lifelessspm 1, StevenK 005:02
StevenKOh, pft.05:02
pooliei'm ready to add txfixtures as a dependency05:10
poolieare there any docs for this?05:10
pooliealso, i presume it will be an egg rather than a branch?05:10
lifelessso, are intel 320 class SSD's good ?05:34
pooliegenerally reckoned to be05:36
StevenKThis X201 has a 160, I think, and it's excellent.05:36
lifelessI've hit the wall on my laptop05:40
lifeless130GB just isn't enough05:40
StevenKI only have 160GB, but I also have a desktop and a fileserver05:41
lifelessso do I but the pain of rotating stuff on and off had gotten to me05:41
StevenKSigh. Forgot to unmount NFS partition before moving networks.05:42
StevenKwgrant: Can I get from ISPPH to ISourcePackage easily?05:46
StevenKlifeless: What do you need to rotate on and off the laptop?05:47
wgrantStevenK: Maybe.05:48
StevenKwgrant: In a test/harness environment, so feel free to suggest evils like rSP()05:49
wgrantStevenK: SPPH.meta_sourcepackage05:51
poolielifeless, oh they come up to 300gb now? or more?05:51
pooliedo i need a review to add the tar to the download-cache, or do i just add it?05:53
wgrantJust add it.05:53
poolieand then propose an addition to versions.conf05:54
StevenK\06:02
StevenKwgrant: I thought that returned a DSP?06:03
wgrantStevenK: No.06:03
wgrantYou might be thinking of SP.distribution_sourcepackage06:03
StevenKBleh. Still doesn't make SPPH queries locally.06:14
wgrantYou're probably an admin.06:16
lifelesspoolie: yeah 360GB06:18
lifelesspoolie: faster too if you have  6GBps SATA06:19
StevenKwgrant: No, I'm logged in as a user.06:20
StevenKI already thought of that too.06:21
wgrantIt's not the archive owner?06:21
wgrantOr the distribution or distroseries owner or driver?06:22
StevenKLogged in as myself, as a member of ubuntu-team06:23
wgrantThat would do it.06:23
wgrantDon't be a member of ubuntu-team.06:23
StevenKNice. ?batch=80 == 1500 queries06:26
* StevenK tries to work out how to make IBugNomination.canApprove() nicer.06:30
stublifeless: The Intel drives are what people are currently recommending for databases - at a decent price point, reliable but a little slower than some less reliable drives06:39
lifelessstub: the 320 series are laptop form factor06:41
lifelessstub: there are larger ones around I believe06:41
stublifeless: Intel 320's is what I'm seeing. Not sure if there are server versions too.06:42
stublifeless: http://postgresql.1045698.n5.nabble.com/Recommendations-for-SSDs-in-production-td4958689.html for a thread I saw today06:43
StevenKBleh. Brain fried.06:43
lifelesshah up to 600GB now06:44
lifelesshttp://ark.intel.com/products/56569/Intel-SSD-320-Series-%28600GB-2_5in-SATA-3Gbs-25nm-MLC%2906:44
pooliedo i have to do something special to get the egg hooked up by buildout06:44
poolieafter putting it in the download cache and in versions.cfg06:44
stubAparently there is a review of the Intel SSDs on Tom's Hardware today06:44
lifelessthe 71006:45
lifelesshttp://www.tomshardware.com/reviews/ssd-710-enterprise-x25-e,3038.html06:45
pooliewhen i try to import it (and do nothing else with it)06:52
lifelesswhich looks to be that product http://ark.intel.com/products/56585/Intel-SSD-710-Series-%28300GB-2_5in-SATA-3Gbs-25nm-MLC%2906:52
pooliei get an importerror kind of mixed together with a zopexmlconfigurationerror06:52
wallyworld_poolie: did you do a make?06:57
poolieyeah06:57
wallyworld_you need to do that06:57
pooliei hadn't mentioned it it setup.py, perhaps that was it06:57
poolieyep got it07:09
=== wallyworld_ changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: - | Critical bugtasks: 266
poolieavagoodweekend wallyworld_07:14
wallyworld_poolie: still here. just don't want any last minute reviews. i'm fighting doc tests :-(07:14
pooliewhat's the oldest python version lp deploys on? 2.4?07:26
lifeless2.607:29
pooliegreat thanks07:31
poolieso i can use relative imports to help the transition of buildd code?07:31
lifelessmaybe :) we has some trouble there recently07:35
pooliei see https://bugs.launchpad.net/bugs/82548507:37
_mup_Bug #825485: canonical.launchpad.scripts.oops imports broken on natty & oneiric <qa-untestable> <Launchpad itself:Fix Released by abentley> < https://launchpad.net/bugs/825485 >07:37
poolieso i guess that's a no07:38
poolieor, it's dangerous07:38
pooliewell, it's fine without07:39
wgrantpoolie, lifeless: LP deploys on 2.6. lp-buildd has no such guarantee.07:41
poolieright and on hardy it may be earlier07:42
wgrantIndeed, it's 2.5.07:42
wgrantAnd lp-buildd is largely deployed on Hardy.07:42
poolieit's only the tests07:42
pooliebut, it would be nice to run the tests there07:42
lifelesswgrant: oh? we missed a platform07:45
lifelesswgrant: is there a bug ?07:45
wgrantlifeless: Huh?07:50
wgrantlp-buildd has always has entirely unrelated deployment constraints.07:51
wgrantBecause it deploys on crap like hppa.07:51
pooliehttps://code.launchpad.net/~mbp/launchpad/use-txfixtures/+merge/8124307:51
poolieone step closer to deploying it separately07:51
wgrantAnd has to build for 5 year old distroseries.07:51
wgrantSo can't run recent kernels.07:51
lifelesswgrant: I thought it ran outside the build environment07:52
lifelesswgrant: hppa I can understand :(07:52
wgrantIt runs outside the chroot.07:52
lifelessright, so why does that constrain us07:52
wgrantThere were issues with building dapper on recent kernels, and we have to support hppa for another 18 months, which sticks them back on hardy.07:54
wgrantlpia is similar.07:54
wgrantBecause those archs don't existing in >= lucid.07:54
wgrantOur powerpc buildds also don't really like to boot on most releases.07:54
wgrantsparc as well.07:54
wgrantia64/sparc can never come past lucid, hppa/lpia past hardy.07:54
wgrantBut we need to support ia64/sparc for another 3.5 years.07:55
poolieok07:56
pooliei fixed a 2.5ism in txfixtures07:57
pooliethat's it for me for today07:57
adeuringgood morning08:40
=== adeuring changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: adeuring | Critical bugtasks: 266
jelmerhi adeuring, do you have time for a quick review?11:25
adeuringjelmer: sure11:25
jelmeradeuring: https://code.launchpad.net/~jelmer/launchpad/newer-bzr-git/+merge/8125911:26
jelmerit's a single revision, the diff is also here: http://bazaar.launchpad.net/~jelmer/launchpad/newer-bzr-git/revision/1425111:26
adeuringjelmer: r=me11:36
rvbaadeuring: Hi! Could you please have a look at this tiny optimization branch? https://code.launchpad.net/~rvb/launchpad/branches-timeout-bug-827935-3/+merge/8126211:59
bigjoolsanyone else seeing MP preview diffs that just say "Empty" ?12:11
StevenKbigjools: The MPJ ran after the branch was merged.12:11
nigelbah, if it was merged it can't find the diff?12:12
StevenKIt compares the branch against tip. If the tip has the contents merged, the diff is nil.12:12
nigelbAHHH.12:12
bigjoolsspecial12:13
StevenKJust slow.12:13
bigjoolsthanks12:13
nigelbActually, that means fast.12:13
bigjoolsit means I pushed and lp-landed quickly12:13
StevenKIt may mean the MPJ ran slow.12:13
nigelbbigjools managed to beat the cron.12:13
bigjoolsrabbit is coming!12:13
StevenKMPJ is horrible and needs to be beaten with a stick.12:13
nigelbrabbit is the holder of the stick I hear.12:14
StevenKPossibly over rabbit.12:14
nigelbWait, I thought this bit wwas done in Qastaging wwith rabbit!12:15
nigelbI meant to test!12:15
bigjoolsnigelb: no, I am talking about starting jobs with rabbit12:19
bigjoolsdifferent to the browser doing long-polling12:20
nigelbbigjools: as opposed to a cron?12:20
bigjoolsyes12:20
nigelbYeah, that'd be nice :)12:20
bigjoolswe turn cronscripts into daemons12:20
nigelbINSTANT GRATIFICATION12:20
nigelbor at least more instant than currently.12:20
StevenKThen we can remove the job system entirely.12:21
StevenKAND IT WILL BE GLORIOUS12:21
nigelbSome of the stuff discussed in the launchpad session at UDS was nice as well. Like the brainstorm for the new profile page.12:21
bigjoolsStevenK: I doubt we can remove the job system for a while.  Although I'd love to replace it with celery etc.12:22
StevenK:-(12:22
StevenKThe job system makes me very sad.12:22
bigjoolsin what way?12:22
StevenKThe horrid duplication of effort12:23
bigjoolsI only have one problem12:23
bigjoolsit's NIH12:23
StevenKbigjools: My main issue is the sixty-four million interfaces and model classes you have to add for a new job type and they're all subtly different12:23
StevenKAnd require different cron jobs12:23
StevenK /wrists12:24
bigjoolsyeah it's complex and over-engineered12:24
StevenKbigjools: Preaching. Choir.12:24
bigjoolsand on cue my random music selection starts playing Rage Against the Machine12:24
nigelbbigjools: Excellent timing ;)12:25
bigjoolsStevenK: I also get frustrated at the myriad ways to start a job off12:28
=== bac changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: adeuring, bac | Critical bugtasks: 266
jtvAnyone mind if I run the archive publisher on dogfood?12:38
jtvbigjools, StevenK, wgrant?12:38
wgrantNot I.12:39
nigelbWCPGW.12:39
StevenKnigelb: It's dogfood. Don't ask that.12:40
nigelbheh12:40
bigjoolsjtv: fine12:41
bigjoolsbtw you can cancel virtual builds over the API now. You'll also be able to do it in the UI at the next rollout12:42
* StevenK QA'd it this morning12:44
bigjoolsStevenK: it should not have been marked released though, because you qa-ed the wrong thing :)12:44
StevenKI QA'd the UI only12:44
bigjoolsah ok - but it's not released12:44
bigjoolswe need a permanent QA team in AsiaPac :)12:45
bigjoolsright, food time, ttyl12:46
wgrantYay, ddebs built on prod.12:47
wgrantFinally.12:47
bacbigjools: would you revisit https://code.launchpad.net/~mbp/launchpad/800295-buildd-split/+merge/81111 and perhaps change your vote to 'approve' if you agree or make another comment?  horse is out of the barn.12:48
adeuringrvba: sure, I'll look (sorry for the delay -- had lunch)12:52
rvbaadeuring: thanks!12:53
adeuringrvba: the changes look good, but a suggestion nevertheless: What about making is_branch_count_zero a @cachedproperty? after all, its accessed more than once and it calls a method. (I hva no idea though how expensive the method is...)13:10
rvbaadeuring: well, the method is definitely no expensive: because self.branches().visible_branches_for_view and self.branch_count are @cacheproperty.13:12
rvbas/no/not/13:12
adeuringrvba: ah, ok, so let's leave the @property13:12
adeuringrvba: another question: If branch_count needs to be evaluated in is_branchcount__zero: DO you expect the query in these cases to be faster?13:12
adeuring...if not, would it make sense to call resulstset.any() instead?13:13
maxbHm13:14
maxbhttps://launchpad.net/builders --> Forbidden13:14
rvbaadeuring: I'm not sure I understand your suggestion, this branch does not bring any improvement to the cases where branch_count needs to be evaluated.13:14
maxbI suppose a private object has leaked onto the page?13:14
wgrantmaxb: yeah, that happens when a recipe is building int a private archive13:15
wgrantinto13:15
rvbaadeuring: When the batch is empty that is.  But hopefully this wont happen in many cases because when the number of branches is huge, chances are that you have all the statuses represented and the only filtering possible is by status.13:15
wgrantmaxb: There's a bug about it.13:16
adeuringrvba: right; i I just wondered if it would be hard to add that case too. But that's probably my bad habit to squeeze too much changes into one branch ;)13:17
adeuringrbva: r=me then13:17
nigelbg2213:17
rvbaadeuring: Thank you.  I know it's strange but for these requests .is_empty() is almost as expensive as .count().13:18
deryckabentley, adeuring -- I'm on weekly checkpoint call for feature so will need to hold standup for a bit.13:19
rvbaI know that's utterly bizarre but that's what the profiling I've do says.13:19
deryckabentley, adeuring -- I can ping when done.13:19
abentleyderyck: Okay.13:19
adeuringrvba: well, SQL queries can be "strucluraaly slow" ;)13:20
adeuringderyck: ok13:20
jelmerthanks adeuring, bac13:31
danhg#ubuntu-uds13:47
deryckabentley, adeuring -- let's do standup at top of hour.  cool?13:49
adeuringderyck: ok13:49
abentleyderyck: sure.13:49
rvbaadeuring: It's not a rewiew but I'd like your help for something if you have 2 minutes…14:23
adeuringrvba: sure14:23
rvbaadeuring: I'd like you to hit https://code.qastaging.launchpad.net/~ubuntu-branches 5-6 time and give me the oops links14:24
rvba:)14:24
rvbatimes* even14:24
rvbathe reason for this:14:24
rvbaI have landed 2 branches to try some improvements on this page. All is protected by a FF that is on only for me.14:24
adeuringok14:25
rvbaAnd since this page is heavily dependent on TeamParticipation I need someone in the same teams.14:25
rvbato compare how my branches improve things14:25
adeuringrvba: https://lp-oops.canonical.com/oops.py/?oopsid=OOPS-a22826044c7c82ef553e7d363ecb35d8 https://lp-oops.canonical.com/oops.py/?oopsid=OOPS-06fabadb8b802665135e2f048d72e8ba https://lp-oops.canonical.com/oops.py/?oopsid=OOPS-e13505381303340a3d138501c0f14c3a https://lp-oops.canonical.com/oops.py/?oopsid=OOPS-51525de16620edd7a8c6c5ecfa64e39b https://lp-oops.canonical.com/oops.py/?oopsid=OOPS-e7b00379ecad43e9a36798e84a87fb7a https://lp-oops.c14:27
rvbaadeuring: thank you very much.14:28
adeuringwelcome :)14:28
rvbaadeuring: sorry to bother you again… but did one of the requests succeed?  I'd like to make sure the FF has been properly set…14:41
adeuringrvba: no, all requests timed out14:41
rvbaadeuring: ok, thanks.14:42
gmbdanhg: You've marked bug 240067 as New... It's going to pop up when we come to process the to-Triage list, so I'm just wondering if there's any reason we should leave it as New.14:44
_mup_Bug #240067: Launchpad projects need wikis <feature> <lp-foundations> <ubuntu-platform> <Launchpad itself:New> < https://launchpad.net/bugs/240067 >14:44
jelmerdanhg: did you really mean to change the status of bug 240067 back to new?14:48
_mup_Bug #240067: Launchpad projects need wikis <feature> <lp-foundations> <ubuntu-platform> <Launchpad itself:Triaged> < https://launchpad.net/bugs/240067 >14:48
bigjoolsjelmer: you scared him off14:50
rvbaadeuring: could you have a look at this tiny MP? https://code.launchpad.net/~rvb/launchpad/branches-timeout-bug-827935-4/+merge/8129015:37
adeuringrvba: sure15:37
rvbathx15:37
adeuringrvba: looks good; I think always showing the link is fine. But again a question, just out of curiosity: Would it be possible to use a UNION ALL in the query? Tht might  be faster than the current query15:43
adeuringrvba: r=me, btw15:44
rvbaadeuring: I tried a bunch of things with this query: the problem is not the OR in itself.15:44
adeuringok15:45
rvbaThe problem is simply Branch.transitively_private = FALSE fetches 300k rows (in the bad case I'm working on)15:45
rvbaSo we get a seq scan which is the right thing to do.15:45
rvbaBecause 1/3 of the table is returned.15:46
rvbaBut this is painfully slow.15:46
rvbaAll of this simply to choose whether or not to display a link…15:46
rvbaYou see what I mean :)15:46
adeuringrvba: right...15:46
rvbaWith the branch that you reviewed earlier, I expect a 50% gain.15:47
adeuringrvba: sounds good!15:47
rvbaIndeed, but this is so sensible that I'll say "victory" when I see the numbers ;)15:48
rvbaadeuring: thanks for the review.15:48
adeuringrvba: yeah, I know the feeling "what else might come next" with timeout issues ;)15:48
rvbaadeuring: exactly15:48
adeuringrvba: but work on timeout bugs can be fiun nevertheless15:49
rvbaadeuring: It's rather interesting I think.  It feels a little bit like open heart surgery.15:49
adeuringrvba: interesting comparison :) To me it felt sometimes like tinkering with a motorbike engine, when I was a youngster ;)  as a15:51
rvbaadeuring: ;)15:53
bigjoolsjml: hello. I am just looking into the escalated debtags bug and wondered how much you've looked at that so far?15:56
gary_posterdanhg, are you around?  If so, may I assign this commercial feedback ticket to you?  https://support.one.ubuntu.com/Ticket/Display.html?id=727216:46
nigelbIs there a way for me to tell launchpadlib to use my local launchpad?17:05
nigelb(besides hacking hosts file)17:05
=== beuno is now known as beuno-lunch
gary_posteryes, nigelb.  /me tries to remember how17:11
nigelbyay!17:11
gary_posternigelb, use the service_root argument, and specify 'https://api.launchpad.dev/'17:13
gary_posteror launchpadlib.uris.DEV_SERVICE_ROOT17:14
nigelbgary_poster: Aha, thanks!17:14
gary_posterwelcome17:14
nigelbI want to make it a setting in summit so I can move it out to local lp for testing :)17:14
deryckabentley, adeuring -- I think by Monday or Tuesday, whenever we get the current branches all landed and deployed, we should turn on the new bug lists for ourselves.17:15
adeuringderyck: yeah17:15
abentleyderyck: that includes the beta banner that lets us turn it off, right?17:16
deryckshould, yes.  depending on how well things go for adeuring.17:16
nigelbbuglists is ready?17:16
deryckwell, actually, I don't think adeuring will have this off switch in his first pass.17:16
derycknigelb, gettting very close.17:16
nigelbderyck: Exciting! :)17:16
derycknigelb, we have two weeks left of polish and then we will turn them on for beta testers.17:17
adeuringI'm still dealing with a test failure...17:17
nigelbderyck: Yay! Looking forward :)17:17
deryckadeuring, I looked at the MP for the python side today.  I imagine there is some test fallout :)17:18
deryckadeuring, but I like the approach you've taken.17:18
adeuringderyck: thanks!17:18
deryckadeuring, I got it intellectually, but seeing it in code made it real for me.  And I like it.17:18
deryckbac, I have a js branch for review if you have the time.17:20
* bigjools outta here, have a nice weekend all17:54
jmlthe answer to bigjools's question is "not at all"18:12
abentleybac: could you please review https://code.launchpad.net/~abentley/launchpad/new-bug-fields/+merge/81310 ?18:44
bacderyck: done18:44
bacabentley: sure18:44
deryckbac, thanks!  I've struggled with the naming too.  Configurer was even an option at one point. ;)18:48
deryckI thought "settings" might be more obvious, too.18:48
* deryck has to leave now.18:55
=== beuno-lunch is now known as beuno
benjidoes anyone know how to get a branch scan job to run in a dev environment?19:13
nigelbI did that once.19:14
abentleybenji: make scan_branches19:15
nigelbaha.19:15
abentleybenji: or just run cronscripts/scan_branches.py19:16
benjiabentley: right I know how to get the jobs to run, but it is creating the jobs to begin with that I don't see a sane way of doing19:16
abentleybenji: scheduling the jobs is done by codehosting.  Locking the branch (e.g. by pushing to it) will schedule a scan.19:17
benjiok, let me see if I can do something with that (I have a branch that I want to get scanned, but it's foreign to the dev environment)19:19
abentleybenji: I don't understand how you could scan a branch that was not part of the dev environment.19:20
benjiabentley: I can't ;)  I want to get it into the environment so I can get a scan job created.19:22
abentleybenji: Okay, you need to push it, which will create a scan job, which will run when you do make scan_branches.19:23
benjiwill someone with code import fu take a look at this question?  https://answers.launchpad.net/launchpad/+question/17671019:48
benjiI /think/ the answer is "no" but want to be sure.19:48
abentleybenji: the answer is "no", because you cannot move a branch from one project to another.19:50
benjithanks abentley!  I'll reply thusly.19:51
jelmerother than some extra resource usage on lp, deleteing and creating the branch again should have the same effect as moving19:52
abentleybac: like this? http://pastebin.ubuntu.com/728537/20:55
bacabentley: sure.  i just thought the test *after* it had been recalculated looked funny.  i'm sure it was correct but i had to think about it.20:56
abentleybac: Yes, it had to be correct, (because x / 60 !=0 if x > 60) but it was confusing.20:58
=== bac changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: - | Critical bugtasks: 266
wgrantbenji, abentley: You *can* move a branch from one project to another, but the UI was removed because it was too hard to make it work for package branches as well. It's still perfectly doable through the API.22:24
jelmerwgrant: oh, interesting22:29
jelmerwgrant: moving between package branches and product branches would actually be a very nice use of such a UI22:30
wgrantjelmer: Yes.22:30
wgrantjelmer: Although I somewhat disagree with how package branches were implemented.22:35
wgrantjelmer: Really they should probably be special distro-related branches on the product.22:35
wgrantIMO22:35
wgrantRather than splitting all the branches for a codebase across $lots of places.22:36
jelmerwgrant: agreed22:37
jelmerwgrant: that still seems possible though, it mainly seems like a UI issue to me22:38
wgrantIt's going to be particularly awkward for derived distros, because they are going to need cross-pillar stacking or hundreds of gigabytes of extra storage.22:38
jelmerwe support multiple levels of stacking fine afaik22:39
wgrantWe do, but we rarely do it cross-pillar.22:39
wgrantBecause that crosses privilege boundaries, which is very riksy.22:40
jelmerHmm, I'm not sure I understand what you mean by cross-pilar in this context.. perhaps my understanding of that term is incorrect22:41
jelmerdo you mean between the different derived distros? Isn't there an implicit trust of the parent distro?22:41
wgrantWell, say Linaro wants to use package branches.22:41
wgrantRight.22:41
wgrantI guess.22:41

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