/srv/irclogs.ubuntu.com/2012/06/18/#launchpad-dev.txt

wallyworld_wgrant: i ran into some issues with by branch but finally got them sorted. it would be great if you could review it01:28
wallyworld_https://code.launchpad.net/~wallyworld/launchpad/create-aag-privacy-transitions2-1009364/+merge/11070601:28
wgrantwallyworld_: Looking.01:41
wallyworld_thanks01:41
wgrantwallyworld_: That bugtasksearch change is worrisome.01:43
wgrantwallyworld_: eg. it breaks TextualBugTaskSearchListingView01:44
wallyworld_i didn't run all the tests01:44
wallyworld_we can leave it as it was but it will continue to return duplicates01:45
wgrantNormal bug searches return duplicates too.01:45
wallyworld_which is unfortunate01:45
lifelesshow so ?01:45
wgrantIt just happens that this method only returns the bug ID, so they're more obvious.01:45
wallyworld_lifeless: since when would it be expected a search result should be ok to return dups?01:46
wgrantThey're not strictly duplicates.01:46
wallyworld_they are if they are ids01:46
wgrantIn that particular format they are.01:46
wgrantI'm not sure it's useful to suppress them.01:47
wallyworld_i can use a set instead of a list when i consume them01:47
wgrantAnd the way you've done it there breaks textual searches and kills performance.01:47
wallyworld_so no problem, i'll revert and work around it01:48
wgrantI agree the method's current result is less than optimal.01:48
wgrantBut it's all-round easier and not too much uglier to work around it using set()01:48
wallyworld_apart from that, ok?01:48
wgrant+ if information_type in PRIVATE_INFORMATION_TYPES:01:49
wgrantshouldn't that check that it's coming from something public?01:49
wallyworld_probably01:49
wallyworld_but maybe not01:50
wallyworld_since i person may have had access before but not now01:50
wallyworld_due to the new info type01:50
wgrantAh, true.01:50
wallyworld_eg they had an APG01:50
wgrantYep, you are completely correct.01:50
wgrantBut a comment to that effect might be handy.01:50
wallyworld_ok, will d. this stuff can hurt one's brain01:51
wgrantYup01:51
StevenKwgrant: Can? Does.01:51
StevenKEr, wallyworld_, even.01:51
wallyworld_yep01:51
wgrantwallyworld_: findPeopleWithoutAccess doesn't seem to have a good reason to be on APGF, and it doesn't seem to check policy grants.01:55
wgrantAPGF is only flattened in one direction, not the other.01:56
wgrantA grant for an artifact shows up in APGF linked to all the artifact's policies.01:56
wgrantBut a grant for a policy doesn't show up linked to all of the artifacts, because that can be hundreds of thousands of rows.01:56
wgrantAnd that set is much quicker to query the other way.01:56
wallyworld_wgrant: it's there because it queries the aggf table, hence is with the other methods which do such queries01:57
wgrantwallyworld_: It queries the subset of APGF that is AAG.01:57
wgrantAPGF is good for getting all the grants related to a policy.01:58
wgrantIt *doesn't* work for getting all the grants related to an artifact.01:58
wallyworld_hmm. i will look at reworking it01:59
wgrantI'm pretty sure that CTE also just overcomplicates things.01:59
wallyworld_it makes the core query a bit simpler to grok02:00
wgrantIt should be a pretty simple query through TP, AAG, APA and APG02:00
wallyworld_which you are saying you would prefer in the service?02:00
lifelesswallyworld_: so its not that duplicates in that method are desired, its that; a) forcing distinct in the DB forces a sort and merge, and sometimes we don't want that; secondly bug search is a horrid engine today, and keeping it sane is tricky02:01
wgrantI think it's probably best in the service.02:01
wgrantGiven it's sort of over-arching and doesn't fit in any of the others.'02:01
wallyworld_lifeless: yeah, understood, i was just responding to my assumption that you were questioning my view on whether duplicates in search results were good or bad02:01
lifelessah02:02
lifelessso, on general searches, we have a discontinuity in the UI02:02
lifelesswe show tasks02:02
lifelessbut claim to show bugs02:02
wgrantWell02:02
wallyworld_yeah02:02
wgrantTasks don't exist.02:02
lifelessthis confuses folk :) and is where the 'duplicates' come from02:02
wgrantThe UI deliberately never mentions tasks.02:02
wallyworld_lifeless: sure, but in this case, i invoke the api that gives ids, and those are indeed duplicated02:03
lifelesswgrant: abstractions leak; this leaks.02:03
* StevenK stabs Django02:03
wgrantlifeless: Of course.02:03
wgrantwallyworld_: Apart from that method being wrong, and the bug search thing, this looks good, thanks.02:03
wallyworld_wgrant: cool, already fixed the search method, will move the other code, thanks for looking02:04
wgrantWe need a couple of nice big cleanup pass through all this once the legacy stuff is removed.02:04
wgrantGreat.02:04
StevenKwgrant: http://pastebin.ubuntu.com/1046567/02:11
StevenKlifeless: I can now import auditor.manage and auditor.settings in bin/auditor-manage, but it now can't find the module auditlog :-(02:17
lifelessthats auditor.auditlog, right ?02:22
wgrantStevenK: Hm, you didn't check security.py-cleanliness before you landed?02:25
StevenKlifeless: Yeah, but loading that in bin/auditor-manage doesn't help.02:34
StevenKwgrant: Obviously not. :-(02:34
wgrantStevenK: Anyway, should be fine. Land a fix now, but the default EXECUTE should be sufficient to make it all work for tonight.02:34
StevenKwgrant: Where should the three of them go? launchpad_main ?02:35
wgrant(in postgres, functions default to granting EXECUTE to PUBLIC)02:35
wgrantStevenK: public, with the ret.02:35
wgrantst02:35
wgrantrest02:35
wgrantPretty much every function should be in public.02:35
StevenKwgrant: Right, land to db-devel?02:35
wgrantStevenK: Indeed.02:36
wgrantAs long as nothing further has landed there after your patch.02:36
wgrant(other than merges from stable)02:36
* StevenK re-checks the deployment report.02:36
StevenKLooking good on that front.02:37
StevenKwgrant: Some of the functions are listed with no rights. How do I tell if the new functions should be no rights?02:42
wgrantStevenK: The ones that don't need any rights should have no rights :)02:44
wgrantThings that are only called as helpers from SECURITY DEFINER functions don't need to be executable by normal users.02:44
StevenKwgrant: http://pastebin.ubuntu.com/1046591/02:45
wgrantIt's not a problem for all of these methods to be publicly executable.02:45
wgrantBut they don't all need to be.02:45
wgrantStevenK: That should break.02:46
wgrantaccessartifact_denorm_to_artifacts is called by accessartifact_maintain_denorm_to_artifacts_trig02:46
wgrantWhich is not SECURITY DEFINER.02:46
* StevenK adds EXECUTE rights to it.02:47
wgrantbranch_denorm_access too02:47
wgrantbuild_access_cache can be EXECUTE if you want, but I don't believe it's necessary.02:47
StevenKwgrant: Hah, maintain_transitively_private() isn't in security.cfg.02:48
wgrantStevenK: It's a trigger function.02:51
StevenKwgrant: Those security.cfg changes don't cause any tests in test_branch_access_policy_triggers, test_bugtaskflat_triggers and test_bug_mirror_access_triggers to fail.02:55
wgrantThat's a start.02:55
StevenKwgrant: Shall I push it up?02:56
wgrantMight as well.02:56
wgrantThrow it off to ec2.02:56
StevenKOh, stub needs to sticky beak it?02:56
lifelessnup02:56
wgrantNot for security.cfg, no02:56
StevenKwgrant: https://code.launchpad.net/~stevenk/launchpad/db-branch-nap-security/+merge/110709 and it's currently in the middle of setting up ec2 test03:03
wgrantStevenK: Thanks.03:09
StevenKExcept it's testing against devel. Fail.03:14
StevenKec2 kill needs to die early if you don't specify an instance id rather than failing with an obtuse traceback.03:15
wgrantStevenK: Probably doesn't matter, if your branch is from db-devel in the first place.03:16
StevenKMmmmmm03:17
StevenKToo late, was the cry03:17
wallyworld_wgrant: i've pushed the changes to my branch03:24
wgrantwallyworld_: Looking03:24
wallyworld_thanks03:24
wgrantwallyworld_: The branch got cursed again?03:25
wallyworld_yep03:25
wgrantExcellent.03:25
wgrantMaybe we can work out what it's hanging on.03:25
wgrantwebops: Hi03:25
spmyo03:25
wgrantspm: The branch scanner hates some branches sometimes, hanging for more than 5 minutes before timing out. I'd like to trigger a hang and then get pg_stat_activity checked to see what it's doing.03:26
spmcan we do that in staging?03:26
wgrantWe've never reproduced it there.03:27
wgrantOr on dev.03:27
spmhave we ever tried? :-)03:27
wgrantYup03:27
spmjust checking, your wording could have been taken as very cautiously spaken03:27
wgrantHeh03:27
wgrantTrue.03:27
spmso we know which branches do this on a regular basis? it's not the on disk bzr side perhaps?03:28
wgrantNothing does it on a regular basis, AFAICT. It's normally a new branch that gets permanently cursed.03:29
wgrantPushing it up under another name works.03:29
spmhuh, weird.03:29
wgrantPrecisely.03:29
spmhow do you propose to trigger? and do we know which DB server(s) we need stats from? is it worth doing a * * * * * pg_stat_dump > logfile?03:29
wgrantspm: branchscanner user on wildcherry03:30
wgrantWe trigger by wallyworld forcing a scan on that branch.03:30
wgrantWith a push03:30
spmis wallyworld_ planning on promising cake to go with this debug? cause, you know, cake.03:30
wallyworld_wgrant: you want me to do that now?03:30
wallyworld_spm: i have no cake - the dog ate it03:31
spmso I hear03:31
spmwgrant: select * from pg_stat_activity where usename='branchscanner'; or do you want the full thing, jic?03:32
wgrantspm: That'll do03:32
wgrantwallyworld_: Please.03:32
wgrantI have my rsynctail running to observe the hang.03:33
wallyworld_wgrant: just pushed -r-2 and then -r-103:33
wgrantIt be scanning.03:34
wgrantspm: Can you check pg_stat_activity now?03:35
spmbeen grabbing heaps the past min or so03:35
wgrantGreat.03:35
wgrantBeen going for a minute now, which is itself a good sign that it's hung.03:35
wgrantShould normally take about 50s.03:35
spmprobably should have while looped, but anyway03:35
wgrantyay, it has hung.03:36
spmappears stuck in a SELECT03:36
wgrantFirst time we've caught it in the act.03:36
wgrantWhat is the SELECT?03:36
spmit's a secret, that will be exposed on production of cake03:36
wgrantSneaky.03:37
spmindeed. a cunning plan even03:37
spmwgrant: https://pastebin.canonical.com/68304/03:37
spmstill at the same place nearly a minute later too03:38
wgrantAha03:38
wgrantThanks.03:38
wgrantShould time out in 20s or so03:39
lifelessso, code review + http://okfnlabs.org/annotator/demo/03:39
spmstill holding atm03:39
wgrantspm: It's done, btw.03:42
wgranttimed out, as expected.03:42
spmand yes, cleared here as well03:42
wgrantspm: any more interesting queries?03:42
spmnot for branchsscanner03:42
wgrantI mean from before the SELECT of Doom.03:42
spmI can paste you a rather "long" session history, if you're interested?03:43
wgrantThat might be handy, thanks.03:43
spm<IDLE> in transaction <== a fair bit03:43
wgrantBetter than having to do this again.03:43
wgrantYeah03:43
spmwgrant: https://pastebin.canonical.com/68305/03:44
wgrantspm: Thanks!03:45
wgrantIt has traditionally been suspected that bzr slowness was the issue here, but this proves otherwise :)03:47
wgrantNow, it doesn't actually tell us how it's being so slow, but at least it's something.03:48
spmwgrant: I'd like to point out that your email address is in that query; QED, it's all your fault. <== advanced sysadmin debug.03:48
wgrantThat's good solid logic you have there :)03:48
spmI'm glad you approve03:48
wgrantHmmm04:05
wgrantSo the branch has a full set of BranchRevisions, but no last_scanned_id04:05
wgrantThis is causing subsequent runs to try to clear the entire history.04:06
wgrantBut it doesn't explain what happened during the initial failure.04:06
wgrantwallyworld_: How soon after pushing the branch did you create the MP?04:08
wallyworld_wgrant: almost straight away04:09
wgrantA saw a WIP MP pretty soon after the push04:09
wgrantLooks like that is how to repro it.04:09
wgrantI wonder if we're deadlocked with the MPJ runner.04:10
wallyworld_plausible04:10
wgrant2 minutes so far...04:10
wgrantThat means we have two bugs.04:10
wgrantFail04:10
wgrantTook 2.5 minutes, but it succeeded04:11
wallyworld_branch revision has a lot to answer for04:12
* wallyworld_ -> school and back04:12
wgrantwallyworld_: Why not do the grants after _reconcileAccess, so you can use APAs rather than having getPeopleWithoutAccess duplicate the pillar determination logic?04:27
StevenKwallyworld_: So, QA? :-)04:40
StevenKwgrant: Hmm, so you think MPJ and the scanner lock?04:40
StevenKPlausible, indeed.04:40
wgrantDiscounted in this case, it seems.04:42
wgrantThe first logged MPJ was 12 minutes after the scan timed out.04:42
wgrantwallyworld_: https://bugs.launchpad.net/launchpad/+bug/808930/comments/20 is the result of the debugging, btw.05:28
_mup_Bug #808930: Timeout running branch scanner job <escalated> <linaro> <oops> <Launchpad itself:In Progress by abentley> < https://launchpad.net/bugs/808930 >05:28
wallyworld_wgrant: so we really want to delete BranchRevision :-)05:43
wgrantwallyworld_: But it's my friend :(05:45
wallyworld_wgrant: i'm not sure i follow your review suggestion above05:48
wallyworld_i do call ensureAccessGrants after reconcileAccess05:48
wgrantwallyworld_: Right, then you don't need to manually determine the pillars for bugs and branches.05:49
wgrantYou can just use the APAs05:49
wallyworld_wgrant: so, i use IAccessPolicyArtifactSource.find() to fill out the policies_to_check array?05:52
wgrantwallyworld_: AccessPolicyArtifact.artifact = abstract_artifact.id AND AccessPolicyGrant.policy = AccessPolicyArtifact.policy AND AccessPolicyGrant.grantee = TeamParticipation.team05:53
wgrantPython never needs to see the policies.05:54
wgrantThey're purely used by the join from AccessArtifact to AccessPolicyGrant.05:54
wallyworld_ah ok.05:54
lifelessgary_poster: btw, trunk testrepository has a --concurrency option for you05:55
wgrantwallyworld_: Oh, also, that whole thing is pretty strange. Your top-level query has "Person.id IN person_ids AND Person.id NOT IN policy_grantees AND Person.id NOT IN artifact_grantees", but then policy_grantees and artifact_grantees also filter on person_ids.05:56
wallyworld_wgrant: i was attempting to limit the size of the in lists05:57
wallyworld_the top level In(Person.id, person_ids) is because we only want people withotu access from those that are specified05:58
wgrantwallyworld_: They're not lists, they're subquery expressions :)05:59
wgrantIt optimises through them.05:59
wallyworld_sure, but the subsquery still returns results05:59
wgrantNot really, no.05:59
wallyworld_internally06:00
wgrantAgain, not really :)06:00
wgrantTheoretically perhaps.06:00
wallyworld_so if i limit the size of the subquery, it's more efficient06:00
wallyworld_it is with oracle anyway06:00
wgrantNot necessarily.06:00
wgrantAlso not necessarily.06:00
wgrantIt depends on how you're limiting the size.06:00
wgrantSo06:00
wgrantI'd pull the TP join out.06:01
wgrantThere's no reason to have it all the way down there.06:01
wgrantIf I were postgres, I'd plan that as a nested loop, and the person_filter inside the subqueries would have no effect whatsoever.06:03
wallyworld_ok, i'll take a look. maybe a run on dogfood to check ite performance is needed06:03
wgrantAny reasonably query planner can see that.06:03
stubThe planner is smarter than you, except when it isn't.06:08
wgrantIn this case it should be :)06:08
wallyworld_wgrant: this should be ok i think https://pastebin.canonical.com/68312/06:10
wallyworld_except for flat maybe06:10
wallyworld_yes, flat is gone06:11
wallyworld_https://pastebin.canonical.com/68313/06:13
wgrantwallyworld_: If I were writing it, I'd phrase it as the set difference between the requested people and the result of https://pastebin.canonical.com/68315/06:27
wgrantBut your new version looks correct.06:27
wgrant(although the distincts on the subqueries are pointless)06:27
wallyworld_wgrant: looks like your version returns the oppoiste of what is wanted?06:28
wgrantwallyworld_: Right, positive queries are much easier to write directly.06:30
wgrantAnyway, yours is OK if you drop the distinct=Trues06:31
wgrantMine is much faster, but we shouldn't have performance issues here anyway.06:31
wgrantSince the dataset is small.06:31
lifelesswgrant: distinct on subquery is a planner hint06:33
lifelesswgrant: as is offset 0;06:33
lifelesss/hint/sledgehammer/06:33
wallyworld_wgrant:  i've removed the distincts, i can rework to match your logic06:34
wgrantlifeless: Maybe in postgres 6.106:37
wgrantlifeless: But IN implies distinct on the subquery nowadays06:37
wgrantPlus we have no reason to use planner deception techniques here.06:37
wgrantYou should use them once it's shown that you need them; not before :)06:38
wgrantwallyworld_: The rework's not critical, but I wonder if it makes more sense as a getPeopleWithAccess anyway06:38
wgrantwallyworld_: eg. for determining who gets notified.06:38
wgrant(for later structural subscription enablement)06:39
wallyworld_wgrant: we can add a method for that, but i'd rather use the db for now to find people without access06:39
wgrantYou're probably better off having a single method and doing integral set difference in Python.06:40
wallyworld_i used distinct onthe sub queries from prior experience, but whio know what postgres dowesa06:40
wallyworld_wgrant: i was trying to avoid anyting in python06:41
wgrantIt's almost always prettier to do set difference in Python than it is to describe non-trivial negative assertions in SQL :)06:41
wgrantPerhaps.06:41
wgrantStevenK: Going to qa-ok your db-stable rev?06:41
StevenKI got distracted by auditor06:44
StevenKwgrant: db-branch-nap-security => db-devel        [OK]       (up for 3:29:40) i-b2f88acb06:45
wgrantThat's encouraging.06:45
wallyworld_wgrant: are you ok to +1 the mp and i'll land after i've had a look at rejigging the query to you your logic? i'd still like to keep everything in the db for now06:49
wgrantJust +1ing now, yep.06:49
wallyworld_and we can pull out common query expr for notofications later if needed06:49
wallyworld_thanks06:49
wgrantIf loggerhead wakes up06:49
wgrantThere we go06:51
wgrantThanks.06:51
wallyworld_wgrant: thanks. btw, the bloody bug subscription removal  job still oopes on qas :-(06:54
wgrantwallyworld_: No idea why?06:54
wallyworld_error reading 'infoformation types' from job metadata06:54
wgrantwut06:54
wgrantexamining log06:54
wallyworld_yeah, haven't looked too much nto it06:54
wallyworld_the should should only be able to be constructed such that metadata is written with info type key06:55
wgrantOh06:55
wgrantWhat if it's old data?06:55
wgrantFrom before the jobs were merged.06:55
wallyworld_ah, that is it i think06:55
wgrantIt's certainly what it looks like.06:56
wallyworld_so, i'll do a branch to make the code robnust06:56
wgrantMmm06:56
wgrantNo06:56
wgrantIt shouldn't be robust against information_types being missing.06:56
wgrantOh, if it's in getOperationDescription, hm, maybe.06:56
wallyworld_it's trivial to do though06:56
wgrantIt is, yeah06:56
wallyworld_missing = []06:56
wallyworld_so close to being able to turn all this shit on06:57
wgrantHeh06:57
wgrantYeah06:57
wallyworld_finally06:57
wgrantStevenK: fdt requested06:59
StevenK\o/07:00
StevenKwgrant: What shall we do with this security.cfg branch, then?07:00
wgrantStevenK: It'll be landable on db-devel before this is deployed.07:00
wgrantLand it on db-devel before this is deployed.07:00
wgrantWe can then merge db-devel instead of the relevant rev of db-stable.07:01
wgrantSince nothing further of consequence has landed on db-devel to stop us from doing that.07:01
wgrantKeeps the MP happy.07:01
StevenKwgrant: Sounds like a good plan.07:02
StevenKwgrant: db-devel r1168807:43
adeuringgood morning07:45
wgrantStevenK: Thanks.07:45
=== almaisan-away is now known as al-maisan
lifelesswgrant: in 8.4 distinct made a different in subqueries, FWIW. Haven't tested in 9.1 yet.08:27
czajkowskijml: have to ask, what headset do you use and do you recommend it ?09:24
jmlczajkowski: I use my Bose QC3 headphones with a mic cable. I've successfully used Logitech USB headsets in the past.09:24
jmlczajkowski: ultimately, what matters is that it's well-tested and that it doesn't leak noise into the mic.09:25
jmlperhaps it's inevitable when you have > N people, but it always seems as if someone is on a combination of hardware/software that they are only using for the first time that day.09:26
jamwgrant: I'm planning on re starting the fix and then copy translations for Q today. I was hoping to get more insight into how it failed on friday. In case it is more of a systemic issue.10:34
jamWhat process was it that you thought was adding data? (User filling out translations for P and that somehow ending up in Q?)10:34
wgrantjam: Translations are shared between series.10:35
wgrantSo a translation in Precise can show up in Quantal.10:35
wgrantOr even a translation in an upstream project.10:35
jamwgrant: so I understand that they can be shared, and that is my understanding of why we are running a 'copy' script in the first place. But I'm trying to understand how/what decides to put a Q entry in when submitting a P entry.10:36
wgrantjam: The normal Translations model code in the webapp.10:36
jamwgrant: I'm poking through the code base, and I'm noticing a garbo script that touches the PO tables. Is that something we should be stopping along with the cron scripts?11:06
jamThe script is ScrubPOFileTranslator11:07
jamanyone else able to answer how and when garbo runs and how likely it is to be inserting data into the db for a table we're trying to clean up?11:09
wgrantjam: That's in garbo-daily.11:10
wgrantIt was introduced by jtv recently as part of this work.11:10
wgrantIt maintains POFileTranslator, both adding and deleting11:10
jamwgrant: right, it was something he wanted to move into a refresh-the-db stuff so that it doesn't block the copy stuff11:10
jambut I don't know if we need to deactivate it, etc.11:11
wgrant5 23 * * * $LP_PY /srv/launchpad.net/production/launchpad/cronscripts/garbo-daily.py --abort-script=72000 -q --log-file=INFO:/srv/launchpad.net/production-logs/garbo-daily.log11:11
wgrantIt died with fastdowntime, so it is not a concern.11:11
wgrantAnd it would have been dead on Friday too.11:11
jamwgrant: died with fastdowntime?11:11
jamas in, garbo-daily isn't working correctly?11:12
jamright now11:12
wgrantjam: fastdowntime killed its DB connection, as it was meant to.11:12
wgrantIt's working fine, but not running atm since we killed it 72 minutes ago11:12
jamah, and so won't be running again until tomorrow/tonight at 23:0511:12
jamUTC?11:12
wgrantRight.11:12
czajkowskijelmer: vila mgz could one of you look at https://answers.launchpad.net/launchpad/+question/200576  please.11:17
jelmerczajkowski: on it11:18
czajkowskijelmer: lovely thanks11:18
czajkowskiam looking forward to reading that fo my reference11:18
jamwgrant: another small thing (hopefully), we were getting email spam while the cron jobs were stopped. Is that something we can supress since we know that we manually stopped them?11:19
wgrantjam: You'll need to ask ops to disable the relevant script-monitor cronjobs.11:20
=== matsubara is now known as matsubara-lunch
czajkowskicjwatson: on the installer does it ask you which drive to install Ubuntu on ?11:21
jamestunnicliffeHi, since I don't have commit access but I have an approved branch, could someone kick off the test + check in cycle on this please: https://code.launchpad.net/~dooferlad/launchpad/workitems-bugfix/+merge/11056311:21
jamwgrant: so the table that was getting new data was POFileTranslator (IIRC). However, I see this in the db:11:28
jamhttps://pastebin.canonical.com/68246/11:28
jamsorry bad paste11:28
jamhttp://paste.ubuntu.com/1047080/11:28
jamso why is new data being inserted there if it is considered 5-year old legac11:28
jamlegacy.11:28
czajkowskijamestunnicliffe: not sure who does that is it a reviewer11:29
cjwatsonczajkowski: You should get to choose in the event that you have multiple drives, last I checked, yes11:29
jammaybe pofiletranslator is still new, but the others are not?11:29
czajkowskicjwatson: that's what I thought, but do kinda feel bad for https://answers.launchpad.net/ubuntu/+question/20073911:29
czajkowskicjwatson: last time I just installed ubuntu and wiped the machine when I bought it.11:30
jamyeah, that looks right. As it adds a function that does pretty much the same thing, to update POFileTranslator, but doing so from different source tables.11:30
wgrantjam: Huh?11:30
wgrantjam: That's dropping two functions to work with old tables.11:30
jamwgrant: I was misreading a comment. It was saying a table was legacy.11:30
wgrantRight.11:30
jamI thought it was saying POFileTranslator11:31
jamwas the legacy table11:31
jambut it was saying the other ones were11:31
wgrantRight, no :)11:31
wgrantjam: Anyway, I'd just try again11:32
wgrantSee what happens.11:32
jamyeah, I'm still waiting on ops, so I figured I'd try to at least understand how things are working together.11:32
wgrantTo be clear, Translations is by far my weakest point.11:33
wgrantI don't really know how it works.11:33
wgrantOnly very vaguely.11:33
jamIf a db table is getting updates while doing COPY that seems a good way for copy to break11:33
jamIt may not be the specific problem we've been running into.11:33
jamBut it was the problem we ran into on Friday.11:33
jamfor the delete step11:33
wgrantNot really.11:33
wgrantThat was just deleting some stuff which violated FK references.11:34
wgrantUnrelated to the COPY.11:34
jamwgrant: we got an insert into POFileTranslator *after* we deleted everything.11:34
wgrantSure.11:34
jamWhich isn't related to copy11:34
jambut it means something was happening concurrently11:34
wgrant21:33:40 < jam> But it was the problem we ran into on Friday.11:34
wgrantRight, people still translate through the web UI11:34
jamwgrant: right, we didn't get into copy on Friday.11:34
wgrantThat's the concurrency.11:34
wgrantAh11:34
jammy concern is that copy has been failing in the last couple of attempts,11:34
jamAnd I was trying to understand where the moving parts are11:35
jamin case there was an obvious trip up point.11:35
jamI could see copy failing if it expected something to be empty11:35
wgrantHas the copy been reached since the big changes that jtv did?11:35
jamno11:35
wgrantI thought that was in the second script.11:35
wgrantRight.11:35
wgrantSo, ignore that, it should be quick enough now hopefully.11:35
wgrantFirst step is to get the deletion working.11:35
jamwell, he thought delete should be small minutes, and at 40min it failed because of concurrent updates.11:36
wgrantAnd only debug it if it's broken :)11:36
jamand he isn't here for me to chat with today.11:36
jamthat was my original goal11:36
wgrantThis run should be a little quicker.11:36
wgrantSince it's already done most of the work.11:36
jamit deleted only about 40k rows, from POFIle, and I don't have a feeling for how many there should be.11:37
jamis it possibel to get that info from staging?11:37
jamor are those tables not copied over11:37
wgrantDidn't it get all the way through the first three phases, then fail on the fourth?11:37
wgrantThe entire database is copied over.11:37
jamwgrant: there are 7 'statements' it runs via batches.11:38
jamit got to 311:38
jam'delete_pofile'11:38
jamand got through 40k rows of that one11:38
jamI personally don't have a feel for how much data is there.11:38
wgrantLet me see.11:38
jamwgrant: its my understanding that some devs have direct SQL access on staging. It would appear that you might be one of them :)11:39
wgrantNo11:39
wgrantI have access to dogfood11:39
jamah11:39
wgrantWhich is less up to date11:39
lifelessjam: as a teamlead you should get ro access to stagng and qastaging11:39
wgrantand about a billion times slower11:39
lifelessjam: you may need to request that via RT11:39
jamlifeless: and somehow figure out how to use it :)11:39
lifelessjam: thats the easy part11:39
lifelessnight all11:39
wgrantlifeless: Why can't mortals have it too? :(11:40
jamlifeless: night11:40
jamisn't there a specific rt address you are supposed to file for launchpad-ish issues?11:40
jamrather than just rt@11:40
wgrantjam: There's about 100k11:41
wgrantjam: launchpad@rt.canonical.com11:41
jamwgrant: so about halfway through that one. and then however many for the other tables11:42
wgrantjam: Right. But that should be the only widely referenced one.11:42
jamtranslationtemplateitem, packagingjob, translationimportqueueentry_potemplate, potemplate11:42
jamsure11:42
wgrantAs long as the POFiles go, the POTemplates should have no trouble leaving.11:42
wgrantAnd the others are fine.11:42
jamwgrant: do you think the 40 min was a db load thing? (Anything to indicate db load was particularly high/low on Fri afternoon?)11:44
wgrantjam: I thought it was expected to be 30±20min11:44
wgrantThe copy afterwards should be <10min AIUI11:44
jamwell, I believe jtv said "minutes" but to me that is <30min11:45
jamyou could argue it is just <1hr11:45
wgrantOh, I had them the wrong way around.11:46
wgrantThe fix script has never been used before AIUI11:46
wgrantSo i's unsurprising that we don't know how long it takes.11:46
jamI'm a bit surprised that DBLoopTuner says it can only delete 20rows in 2s.11:46
jamhttps://pastebin.canonical.com/68241/11:46
jam(goal_seconds was 2.0)11:47
jamspeaking of DB stuff, hey stub11:47
wgrantWell11:48
stub...and his amazing bouncing 'net connection11:48
wgrantThe queries probably aren't exactly well-optimised.11:48
wgrantThere are some multi-table joins in the where clauses of those deletes.11:48
wgrantSOme of the FKs are also unindexed.11:49
wgranteg. poexportrequest.pofil11:49
wgrantBut that table should be small.11:49
wgrantHowever, the join is slow.11:50
wgrantI suspect that's why it takes so long.11:50
wgrantOn DF it chooses a merge join.11:52
wgrantWhich is entirely ridiculous.11:52
wgrantBut it can't be doing that on prod; it would be even slower then.11:53
=== benji changed the topic of #launchpad-dev to: http://dev.launchpad.net/ | Welcome our new intern: ivory | On call reviewer: benji | Firefighting: - | Critical bugs: 3.47*10^2
gary_posterI saw on the bugreport that you had added it.  Thank you lifeless!12:04
=== matsubara-lunch is now known as matsubara
jmlgary_poster: hi12:36
gary_posterhey jml!  I was just considering procrastinating from my other tasks by replying to your email. :-)12:37
jmlgary_poster: out of curiosity, is there a hit-list of bugs that have to be fixed before we can all enter into 40 min test time nirvana?12:37
* jml almost remembers when it was 40 minutes even without parallelization. I think it was 50m when I started. 12:38
jmlgary_poster: it just strikes me that if ever I were to do some spontaneous Launchpad hacking, that would be the single most selfish thing I could do.12:38
jml(or lazy or whatever vice pundits are parading as a virtue these days)12:39
* jml is also procrastinating12:40
gary_posterjml, There is a paralleltest tag, but I use the kanban board for my daily view so I'm not sure how accurate it is.  We are at a relatively small number of actual bugs.  Of the ones on my board, bug 1013921 is a nice to have (should increase speed by about 5 minutes) and is up your alley; investigating the fact that bug 994752 didn't really give us the stability we needed is not yet cooked enough.  The main thing we12:40
gary_posterare waiting on now is getting the machines ready12:40
_mup_Bug #1013921: our zope.testing fork needs to emit subunit time immediately before test start and immediately before test completion <paralleltest> <Launchpad itself:Triaged> < https://launchpad.net/bugs/1013921 >12:40
_mup_Bug #994752: lxc-start-ephemeral's use of dhcp lease table is fragile <patch> <verification-done> <lxc (Ubuntu):Fix Released> <lxc (Ubuntu Precise):Fix Released by stgraber> <lxc (Ubuntu Quantal):Fix Released> < https://launchpad.net/bugs/994752 >12:40
gary_posterthat is, purchasing the new two 24 core machines for the data center12:41
jmlwow.12:41
jmlit's such a pity about the fork. :(12:41
jmlI'm sorry for my part in that.12:41
gary_posterI'm not sure you had much to do with it, if any.  The big problem is that we never want to pay the cost for a full zope package upgrade12:42
gary_posterAt least, that's my guess in retrospect...12:42
jmlevery time I think about it I think, "We should stop using zope.testing. That means we must stop using layers. OK, let's start with the librarian layer. Ugh, that has some problem that lifeless tells me that I always forget about."12:42
jmland then give up12:42
gary_posterheh12:42
gary_posterand then I think "oh well, if we ever get to SOA it will SOLVE THE WORLD!"12:43
jmlwell, I have an opportunistic todo for incrementally approaching that12:43
jmlsome of the ugly monkey patches to zope.testing are mine, that makes upgrade harder12:44
jmlalso I think I might have done one of the first local patches. once you start down that path it's very hard to get back to the main road.12:44
gary_posterit's true that it is hard.  And yeah, once we got to p4, it seemed less like a temporary situation and more like a road.  We're on...p13 now, thanks to us. :-/12:45
gary_posterSome of which includes our hilarity such as12:46
gary_poster# p11 reverts p9.12:46
gary_poster# p12 reverts p11, restoring p9.12:46
gary_posterwhee! :-)12:46
gary_posterI was directly involved in that, so I think I am allowed to giggle12:47
jmlheh :)12:47
jmlThere's also a sense in which zope forked away from us too.12:48
gary_posteryeah12:48
gary_posterit dying doesn't help anything either12:48
jmlI can just imagine someone rubbing their hands and thinking, "At last! Our plot to alienate the last of our users is complete!"12:48
jmlAnd then doing a wicked opera laugh.12:48
gary_posterlol12:48
jmlfwiw, I did this as a braindump of things to have in a new project: https://docs.google.com/a/canonical.com/document/d/1A8qTOYZd7p9dhjmlnnEKW46h38ydt9yNbmfgX3yhPGw/edit – it's not a tested checklist, and it's depressingly long & in need of automation. I just started lp:libdep-service, so I'll probably use that to test this12:51
gary_posterjml, I like that list--"one other core contributor" in particular as a good insight12:53
* gary_poster looks up libdep-service12:53
gary_posterah cool12:54
jmlit's nothing special, just another microservice.12:56
=== al-maisan is now known as almaisan-away
=== Ursinha` is now known as Ursinha
czajkowskicjwatson: can I assign you https://answers.launchpad.net/launchpad/+question/200735  or can you let me knowthe info that needs to go to that page please.13:53
gary_postermatsubara, hey.  I'm going to reboot to see if my camera works again then, and then I'll be ready13:59
matsubaragary_poster, sure, I don't have a camera, so if you want to use phone only it's fine by me14:00
gary_postermatsubara, oh ok, cool14:00
rick_hivory: https://plus.google.com/hangouts/_/f2e9cf4efd2664584bc55d299ce1ff8075141388?authuser=0&hl=en-US14:00
gary_posterwe can be blue heads together then14:00
matsubaraheh14:01
matsubaraok, let me create the hang out14:01
matsubaragary_poster, https://plus.google.com/hangouts/_/bbe5d4266ba176d0f201f8eed73db4ac6b50640a?authuser=0&hl=en14:03
dobeyfrom second life to google hangouts…14:03
cjwatsonczajkowski: Yeah, you can assign that to me14:04
czajkowskicjwatson: cheers14:06
gary_postermatsubara, http://ec2-23-20-214-51.compute-1.amazonaws.com:8010/waterfall14:12
nigelbwtf. gmail just marked all of lifeless' emails as spam. :/14:24
jmlheh heh.14:27
jamdpm: the copy translations scripts has run, need to verify the results now14:29
dpmjam, cool :)14:29
nigelbjml: I've been wondering why lifeless hasn't been sending emails lately, heh.14:30
cjwatsonczajkowski: done14:48
czajkowskicjwatson: oh if they were all only that simple today14:49
cjwatsonczajkowski: Simple for you, anyway ;-)14:52
czajkowskicjwatson: I'm having a feel sorry for the users day today14:52
czajkowskiissues with Ubuntu is getting logged in lp14:52
czajkowskiI am intrigued how they get as far as creating a LP ac, filing a bug or a question, ticking Ubutu -> LP and not just leaving it as Ubuntu14:53
jamdpm: I see https://translations.launchpad.net/ubuntu/quantal is available, I won't have the time today to verify anything, but I'll look into that tomorrow.14:56
dpmjam, thanks. I'm a bit busy today too, but I'll look at it tomorrow too.14:58
jmlcjwatson: https://code.launchpad.net/~jml/lazr.restfulclient/disable-ssl-cert-verification/+merge/110503 ; https://code.launchpad.net/~jml/launchpadlib/ssl-creds/+merge/11084816:06
cjwatsonjml: I *think* those are all the sites I found myself having to modify, yes.  LGTM16:10
jmlcjwatson: I managed a successful API call to dev with those.16:10
jmlcjwatson: thanks.16:10
cjwatson(But I'm not an LP reviewer)16:10
jmlbenji: https://code.launchpad.net/~jml/lazr.restfulclient/disable-ssl-cert-verification/+merge/110503 ; https://code.launchpad.net/~jml/launchpadlib/ssl-creds/+merge/11084816:11
cjwatsonIIRC it's worth checking that it also works the second time round, with cached credentials.16:11
jmlcjwatson: ah, thanks.16:15
jmlall good.16:15
=== salgado is now known as salgado-lunch
jmlbenji: ta16:16
benjijml: np16:17
cjwatsonwgrant: For PCJ unembargo support, I'm taking the approach of pushing the update_files_privacy work down to _do_direct_copy "if not archive.private and has_restricted_files(source)", and adding explicit unembargo flags to a couple of places (Archive.copyPackage and the PackageCopier script) to avoid people unembargoing private files by accident; then for the time being making UnembargoSecurityPackage a trivial shell ...16:25
cjwatson... around PackageCopier.  Does that sound about right as an initial approach?16:26
cjwatsonSo PlainPCJ will unembargo files happily, but only if it has an appropriate flag set in its metadata.16:26
cjwatsonThis seems to be passing the initial set of plausible tests I can think of, although I'm waiting for 'bin/test -vvct soyuz' to run.16:27
cjwatsonI suspect that delayed jobs need to be ripped out in a separate landing, just in case there are pending delayed jobs when a rollout happens.16:28
cjwatsonEr, delayed copies.16:28
=== almaisan-away is now known as al-maisan
rick_h_sinzui: <3 the sprite stuff.16:49
=== salgado-lunch is now known as salgado
sinzuirick_h_, thank you. I noticed you playing with awesomefont. Its CSS rules for icons are very similar to the rules I wrote for sprites...inline-block + text-indent to control what is seen17:05
rick_h_sinzui: right, works out pretty well so far17:06
rick_h_having a FF issue with awesomefont atm, but hopefully once I work it out it'll be a nice way to go17:06
rick_h_talked with some dev friends also kind of neat to think that in the high-res world coming they'll work on smoothly hopefully17:06
sinzuiyes. I have no experience with that issue.17:07
rick_h_yea, I don't think most of us have yet, only really been in the mobile space17:07
sinzuiI last worked with embedded on in 1999.17:07
sinzuirick_h_, oh, are you certain that firefox really understands the type? Does the server have to know the mime-type?17:09
rick_h_sinzui: yea, I'm not sure what it is. The error is generic that firefox's font-sanitizer rejected the font17:09
rick_h_so it might be a header from the server, not sure17:09
rick_h_was hoping someone from FF land would see/point me out17:09
rick_h_tried finding the code/source behing the sanitizer to see what kind of rules it enforces17:09
rick_h_but yea, with the 'retina' macbook, high-res assets in sites is going to get more and more important I think17:10
sinzuiI believe dobey have some deep knowledge of browsers17:10
dobey?17:10
rick_h_already a ton of work around sizing of images/etc around responsive and <3 the ability to size icons via css font-size for that17:10
rick_h_dobey: oh, we were just discussin I was having some FF issues with an icon-font due to their font-sanitizer rejecting my font17:11
rick_h_discussing, ugh mondays17:11
dobeyoh17:11
dobeyhtml VMs17:11
rick_h_looks like someone's starting to help http://stackoverflow.com/questions/11072655/firefox-font-face-fail-with-fontawesome/1108512617:12
rick_h_but anyway, might be something interesting for our type of sites as things go forward. sinzui has been doing some awesome work cleaning up our sprite usages and it resembles using an icon font17:12
sinzuihuwshimi has been suspiciously quiet for weeks. He was planed to make the sprites greyscale and colour on hover/activate. A font would be much easier to maintain.17:15
rick_h_well I know we were keeping him busy some on our side for a bit17:15
czajkowskigary_poster: loving the retrospective mins of yellow team meetings19:25
gary_posterthank you czajkowski!  It helps me write the darn things to get positive feedback :-)19:26
czajkowskigary_poster: I can almost get the tone and accent in my head when reading it19:26
gary_posterczajkowski, lol19:27
czajkowskiit's nice to view meetings postively and in a fun interactive manner19:27
czajkowskigary_poster: want me to put them over on the LP FB and G+ pages to show others what we're doing19:27
czajkowskiwas in the new office today adn all I got was wouldnt it be nice if LP did this, and my answer is yes it would be but the squads are doing X,Y,z19:28
gary_posterczajkowski, uh.  The secret is that I'm really kind of shy, so my initial internal reaction is "augh!".  Even though I was an opera singer in a former life.  But feel free if you think it would help anything. :-)19:29
lifelessgary_poster: hiya19:29
lifelessgary_poster: dunno if you saw in scrollback, I've added a knob for concurrency for test19:30
gary_posterhey lifeless.  thanks for the two parachutes you sent19:30
lifelessr19:30
lifelessgary_poster: ah you did, cool.19:30
gary_posteryeah, definitely, and also the hint for the zope.testing thing19:30
gary_poster(the subunit times)19:31
lifelessgary_poster: oh right19:31
lifelessgary_poster: yeah, useful tool - testr uses it itself to timestamp incoming streams in case they are not timestamped.19:31
lifelessgary_poster: so you get socket latency effects, but better than round robin.19:31
gary_postercool, lifeless.  we may stick the times directly in the stream but if that's problematic at all we'll investigate throwing the adapter in.  (I don't expect it to be problematic at all, but who knows.)  What you said though...that sounds cool, but so wouldn't testr be applying that to the parallelized streams?  Or maybe it's not in there yet for that use case?19:33
gary_posteryou don't have to dig in now, just was curious19:34
czajkowskigary_poster: done thanks :)19:37
gary_posterczajkowski, :-) cool19:37
lifelessgary_poster: timing at source and sink is fine19:42
lifelessgary_poster: the decorator shuts up if a stream is timestamped already19:42
gary_posterah!19:42
gary_posterso it sees any time and says "I'm outta here"19:42
gary_postermakes sense19:42
lifelessclose :)19:43
gary_poster:-)19:43
lifelessit has the idea of a clock, and if its unset, anytime time is needed, it asks the system19:43
lifelessif its set, it uses what it was last set to19:43
lifelessand a stream with times in it has the effect of setting its clock.19:43
gary_posterah!19:43
gary_posteryes19:43
gary_posterI saw those entered into the stream by testr19:44
gary_posterbut since the clock is only advanced at not particularly helpful times..19:44
gary_posterthe adapter cannot put particularly helpful times back in19:44
gary_posterbtw, lifeless, the clock can go backwards, right?19:44
lifelesstestrepository/repository/__init__.py line 84 for reference.19:44
lifelessyes, the clock can go backwards (a necessity with multiplexing)19:45
gary_posterright19:45
gary_postercool19:45
gary_posterok I need to restart to see if my webcam will work then :-P19:45
gary_posterthanks and biab19:45
lifelessuhm, so get_inserter is whats doing the timing19:45
=== al-maisan is now known as almaisan-away
lifelessgary_poster: found something interesting, replied to the bug19:56
lifelessgary_poster: the testr auto-timing location is deep in the pipeline (after the mux stage), so is going to be producing garbage atm.19:57
=== gary_poster changed the topic of #launchpad-dev to: http://dev.launchpad.net/ | Welcome our new intern: ivory | On call reviewer: - | Firefighting: - | Critical bugs: 3.47*10^2
sinzuijcsackett, mumble?22:05
jcsackettsinzui: omw.22:07
=== jelmer is now known as Guest12454
=== Guest12454 is now known as jelmer
wgrantcjwatson: That sounds good.23:35
wgrantcjwatson: Delayed copies should be ripped out in a separate landing anyway.23:36
wgrantcjwatson: Let's not conflate changes that shouldn't be conflated.23:36

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