/srv/irclogs.ubuntu.com/2005/09/19/#launchpad.txt

=== bradb adds a distro sp bug listing and filebug page, gets ready to review the URL changes (and a million other fixes) diff
sabdflgood work bradb12:07
lifelesssabdfl: revisions 2121/2373 1:09:2412:07
lifelesshiatus while I went to the xtc meeting12:08
lifelesswill let it run overnight, but I have high hopes12:08
sabdfllifeless: no ways, still 1:09?12:08
bradbthere's some improvements i'd like to jump in on right after this branch lands, like adding a sane distro sp details portlet (the DR SP doesn't feel right for a DSP, to me)12:08
lifelesssabdfl: yeah, it was suspended :)12:08
sabdflbradb: i will do fresh content objects for D+SPN, DR+SPN, etc soon12:08
bradbnoted12:09
sabdfllifeless: if it crashes, can you resume it gracefully?12:09
lifelesssabdfl: no, though you can run it in segments and resume frm those12:09
mdzkiko: wasn't I supposed to get a langpack export a few "tomorrows" ago?12:23
=== mpool [n=mbp@cor5-ppp1627.for.dsl.connect.net.au] has joined #launchpad
mpool#malone12:29
mpoolhi, BjornT or bradb?12:30
bradbmpool: hi12:30
mpoolhi bradb12:32
mpoolso we'd like to start tracking bzr bugs on malone12:32
mpoolas you (probably) know, we have two codebases in one product, with one of them probably fading away12:33
mpoolhow should we set this up in malone12:33
mpoolthe main requirement is that users or developers interested in the bzr python codebase should never see baz bugs12:33
mpooland vice versa12:33
mpoolit would be confusing and annoying if they get mixed in together12:33
mpoolshould we just create two products, or is there some way to keep them separate within one product?12:33
mpooloh, maybe we should have two products inside one project?12:34
bradbThere's already a bazaar product in Malone12:34
mpoolyes i know12:34
mpoolbut there doesn't seem to be any way to segregate bugs within it?12:34
dilysMerge to rocketfuel@canonical.com/launchpad--devel--0: [r=SteveA]  clean up spec tracker pages (patch-2403: mpt@canonical.com)12:34
bradbmpool: Nope. Can you just create another product specific to bzr?12:35
mpoolsure12:35
mpooljust wanted to check if i was missing something12:35
mpoolthanks!12:35
bradbno prob12:35
mpoolbtw, what do you expect the weather will be like at UBZ?12:35
bradbmpool: slightly BZ probably :)12:35
mpoolbut not -10 yet?12:36
bradbpossibly, but i wouldn't expect that to be the average at that time of year12:36
mpoolthanks12:37
bradb"124 files changed, 2033 insertions(+), 1107 deletions(-)" -- in BjornT's queue now12:56
=== Alinux [n=Ubuntu@p54A382F4.dip0.t-ipconnect.de] has joined #launchpad
lifelessnight all12:59
lifelesssabdfl: looking good : revisions 2307/2373 0:18:0812:59
dilysMerge to rocketfuel@canonical.com/launchpad--devel--0: [r=SteveA]  clean up spec tracker pages (patch-2404)01:07
=== bradb & # out
=== robitaille [n=robitail@p235-083.public.uvic.ca] has joined #launchpad
dilysMerge to rocketfuel@canonical.com/launchpad--devel--0: [r=SteveA]  clean up spec tracker pages (patch-2405)01:38
=== Lovechild [n=dnielsen@love-sources/Lovechild] has joined #launchpad
=== stub [n=stub@203.214.4.72] has joined #launchpad
=== camilotelles [n=Camilo@20132139198.user.veloxzone.com.br] has joined #launchpad
=== depoll is now known as dePOLL
dilysMerge to rocketfuel@canonical.com/dists--devel--0: [trivial]  Next production config (patch-112: stuart.bishop@canonical.com)03:47
=== mpool [n=mbp@cor5-ppp1627.for.dsl.connect.net.au] has left #launchpad []
=== dePOLL is now known as depoll
dilysMerge to rocketfuel@canonical.com/dists--devel--0: [trivial]  Fix production version number in config (patch-113: stuart.bishop@canonical.com)04:52
=== bradb [n=bradb@modemcable033.209-70-69.mc.videotron.ca] has left #launchpad []
=== BjornT_ [i=10183@82-135-221-189.ip.takas.lt] has joined #launchpad
=== Virtuall is now known as Virtuall[BZA]
dilysMerge to rocketfuel@canonical.com/launchpad--production--1.32: Cherry pick patch-2399 into production (patch-1: guilherme.salgado@canonical.com, rocketfuel@canonical.com)05:45
=== robitaille [n=robitail@d154-5-117-228.bchsia.telus.net] has joined #launchpad
dilysMerge to rocketfuel@canonical.com/launchpad--production--1.32: Cherry pick patch-2400 into production (patch-2: mpt@canonical.com, rocketfuel@canonical.com)06:13
dilysMerge to rocketfuel@canonical.com/launchpad--devel--0: [trivial]  Switch on db_statement_timeout in production Launchpad instances (patch-2406: stuart.bishop@canonical.com)06:49
=== _Rappy_ [n=hunt-pre@dsl-253-122.monet.no] has joined #launchpad
stubAnyone going to bitch loudly if I take Launchpad down now for upgrades? Might be two hours or so this time.08:28
spivstub: Database too?08:29
stubYup08:29
spivHmm, the authserver might be an issue for some people :/08:29
stubNeed to do a full dump/restore I've been putting off for a while08:29
lifelessthink of the children08:29
spivI should implement AuthServerCaching, I guess ;08:30
spiv;)08:30
stubspiv: I think that is pretty much in my court for 'setup a read only replica'08:30
=== spiv quickly re-reads the spec
=== spiv smiles at Moin: "/!\The authentication database is temporarily unavailable. Anonymous access only."
spivstub: Hmm, there's a small amount of authserver code required too :)08:32
stubBut I think I've worked out how to do that with a minimum of hassle, but need to clear out a few other tasks first. Will give steve his readonly db too.08:32
stubspiv: Yer, but that will only take you a few minutes ;)08:33
spivHeh.08:33
SteveAmorning people08:33
stubhail08:36
stubAnd SteveA can see the launchpad down for maintenance page right now if he likes08:38
stubPitty Pound roots it by sticking its own headers at the top08:39
SteveAewww08:41
SteveAdoes it *have* to?08:41
jameshit is probably a simple matter of code to fix it08:42
stubLooks like it. We could hack Pound (and then we would need to repackage it for installation), or just do it in Apache.08:42
=== dand [n=dand@gw.datagroup.ro] has joined #launchpad
spivEek, gotta go...09:36
=== spiv -> yoga
=== Keybuk [n=scott@217.205.109.249] has joined #launchpad
dilysMerge to rocketfuel@canonical.com/launchpad--devel--0: [trivial]  Tweak Gina warning levels (patch-2407: stuart.bishop@canonical.com)09:58
=== sabdf1 [n=mark@217.205.109.249] has joined #launchpad
=== sabdf1 [n=mark@217.205.109.249] has left #launchpad []
=== mdke [n=matt@unaffiliated/mdke] has joined #launchpad
mdkehi all10:27
mdkewhat is the ETA for lp being back?10:27
SteveA20 mins10:27
mdkethanks10:27
=== niemeyer [n=niemeyer@217.205.109.249] has joined #launchpad
=== jinty [n=jinty@205.134.224.215] has joined #launchpad
sivangMorning all!10:49
Kinnisonstub: did you mean to merge the fix-whitespace stuff in -2407?11:04
stubThat's fine. PQM just ate my previous [trivial]  on that branch.11:05
Kinnisonrigh11:07
Kinnison+t11:07
Kinnisonjust thought I'd point it out in case it wasn't meant to have happened11:07
lifelessKinnison: are you coming up tonight ?11:07
Kinnisonlifeless: No, tomorrow morning11:08
=== Kinnison is literally just doing the day
lifelessKinnison: K11:08
=== Kinnison expects to hit the office ca. 9.30 to 9.45
Kinnisonany earlier and I'd have to leave tonight practically11:08
Kinnisonand I have a date with a steel rule and a circular saw tonight11:09
Kinnisongotta prepare the kitchen for having the floor put in11:09
sivangKinnison: into home improvements eh? :)11:15
=== BjornT_ [i=10183@82-135-221-189.ip.takas.lt] has joined #launchpad
sivangKinnison: howdy 11:15
mdkejordi, around?11:15
Kinnisonsivang: aye11:15
=== sabdfl [n=mark@217.205.109.249] has joined #launchpad
mdkeSteveA, how about now?11:21
sabdflstub: ping11:21
stubsabdfl: Pong11:21
sabdflstub: can i privmsg you a db patch?11:21
jordimdke: for a few mins11:22
mdkejordi, we have a huge problem with the faqguide.pot :/11:22
stubpaste is better -- https://chinstrap.ubuntu.com/~dsilvers/paste/ 11:22
jordimdke: really? what is it?11:22
mdkejordi, launchpad is down so I can't show you it in rosetta, but if you go to sg you a db patch?11:23
mdkeargh11:23
mdkestart again11:23
jordiyeah, I can't parse that at all :D11:23
mdkeif you go to https://docteam.ubuntu.com/repos/branches/breezy/generic/faqguide/C/faqguide.pot11:23
jordiok11:24
mdkejordi, then search for installing-applications.xml:10(para)11:24
jordidone11:24
mdkethat line is totally ridiculously long and includes a number of paragraphs in the actual text11:24
jordiwow11:25
jordithere's "See . " stuff in there.11:25
=== jinty [n=jinty@205.134.224.215] has joined #launchpad
jordiHave you contacted shaunm about it?11:25
jordiI suspect somethign in your xml is not so good.11:25
jordiwher'es the xml?11:25
mdkejordi, i pinged him now11:25
jordiI see it11:26
mdkehttps://docteam.ubuntu.com/repos/branches/breezy/generic/faqguide/C/installing-applications.xml11:26
mdkejordi, moving channel11:27
jordi#docs?11:28
=== mdz [n=mdz@ca-studio-bsr1o-251.vnnyca.adelphia.net] has joined #launchpad
mdkejordi, what really worries me is that if we use a different utility to create a better pot file, then upload it, a lot of translation will be lost :/11:33
=== Seveas [n=seveas@seveas.demon.nl] has joined #launchpad
stubSteveA: ping11:43
=== WaterSevenUb [n=WaterSev@azevedo.astro.up.pt] has joined #launchpad
sabdflstub: mailed11:46
sabdflmdke, jordi: PO is really not ideal for documents11:46
sabdflbut i can't think of a better plan right no9w11:46
mdke:(11:47
=== camilotelles [n=Camilo@20132139198.user.veloxzone.com.br] has joined #launchpad
sabdflstub: s/person/owner/g11:55
stublifeless: If there are no dependancies of cscsv on launchpad, why do we need to run cscvs tests when we commit launchpad changes? It would be impossible for a launchpad commit to stop cscsv tests passing.11:56
mdkesabdfl, jordi, i don't know whether I should send an email to warn translators to stop translating the guide until the issue with the pot is resolved, what do you think?11:57
lifelessstub: eh? cscvs uses lp interfaces11:57
stubIt does? Ahh bugger11:57
lifelessare you referring to the race condition with nc ?11:58
stubsabdfl: Argh.... a diff. Now I need to strip all the '+' signs :-(11:58
sabdflstub: if you are happy with the comments i can send you the patch directly12:01
sabdflsorry, the .sql file12:01
stubsabdfl: Nah - got it. 12:01
=== stub is a master of vim
stubsabdfl: Looks fine. patch-25-26-0.sql. 12:02
sabdflstub: super, thanks12:03
stubsabdfl: (pending the person->owner change of course)12:03
sabdflstub: done12:04
jordimdke: maybe it's wise. Let's see if you get something from the mailing list.12:05
jordiHopefully you will12:05
=== Kinnison workraves :-(
Kinnisonanyone want to review a quick publisher change?12:15
KinnisonIt's a touch large to [trivial]  but it needs to get in fairly soon12:15
Kinnisonhttps://chinstrap.ubuntu.com/~dsilvers/paste/fileiJyx2B.html12:16
KinnisonIt's d-i support for the C.A.P.12:16
lifelesspep8ness12:17
lifelessself._has_di, not _hasdi12:17
lifelessdituples->di_tuples12:17
lifelessalso tup and tuples are really hirrble variable names12:18
lifelesswhat is a didr ?12:18
lifelesswhats a comp ?12:19
Kinnisona didr is a debian_installer_distrorelease12:19
lifelessif you have to explain it, the variable name is probably wrong12:19
Kinnisonthe variable's existence is there purely because otherwise the line is too long12:19
KinnisonI wanted to do self._has_di.setdefault(dr, Set()).add(comp)12:20
Kinnisonbut that wraps12:20
Kinnisonand I think it's less ugly to use a temp var than to split it on the comma12:20
lifelessits also pretty darn opaque12:20
KinnisonI'd docstring self._has_di if you could do that sort of thing12:20
lifelessI didn't critque the temp vars existnece, I critiqued its name12:20
lifelessyou'll have less problems with line wrapping if you write smaller functions too12:21
KinnisonHmm12:22
KinnisonOkay, I'll tidy up the pep8ness and try and make the stuff more understandable12:22
lifelessso rather than a detailed review, I suggest you read it out loud to a teddy bear.12:22
lifelessand anytime its face gets blank, make the code more clear12:23
=== Kinnison points out that he pair-programmed this with freddybear anyway
=== Kinnison waves freddy at lifeless
lifelessfreddybear obviously knows too much about buildds12:24
KinnisonHe helped me write the publisher :-)12:24
mdkejordi, mailed12:25
jordimdke: the list?12:25
jordioh, the translators.12:25
jordilet's hope we can resolve this ASAP12:25
mdkeeverything :D12:25
mdkejordi, i'm going to try the kde util and see if the pot file is any better12:26
jordimdke: xml2po was missing info, or was it just doing huge para's?12:26
jordimdke: nod12:26
mdkejordi, both I think12:26
jordilet's see what you find out12:26
jordimaybe <answer> confuses it.12:26
KinnisonWhat's the dict iterator which gives you key,value tuples?12:26
Kinnisonis it .items()12:26
Kinnison?12:26
lifelessddping12:27
mdkejordi, yes, it may not support qanda set12:27
mdkejordi, can you push my mail through to rosetta-users, it needs to be moderated12:29
jordiin a min12:29
mdkethanks12:30
mdkeit hasn't got through to any list :/12:30
mdkei'll cancel and try again12:31
jordiyours is accepted12:32
mdkethanks12:32
WaterSevenUbmdke, thx12:35
SteveAstub: pong12:56
stubSteveA: We are still getting lockups. Looks like long running or blocked queries.12:56
stubSteveA: Possibly update-stats.py is the culprit12:57
SteveAinteresting.  why would that lock up the webapp?  because the postgres backend is so busy?12:57
SteveAor are some tables locked?12:57
stubSteveA: If a process has updated rows, but not committed, anything selecting on that table will block12:58
SteveAdoes update-stats.py do that?  as in, not commit for a while after updating stuff?12:59
SteveAif you selectively kill off cron jobs, does the webapp return?01:00
stubSteveA: Yes. But I'm not 100% sure yet.01:00
stubSteveA: It might also be these rosetta queries too just taking too long01:01
SteveAwell, i can't access launchpad.net now01:10
SteveAcan you kill all cron scripts ?01:10
SteveAwould the DB need bouncing too?01:11
Kinnisonlifeless: is https://chinstrap.ubuntu.com/~dsilvers/paste/file9TWzrW.html better?01:12
SteveAhas_di ?01:12
SteveAwhat's a "di" >?01:12
SteveAcomment or better variable name please01:13
lifelessahahaha01:13
lifelessKinnison: see!01:14
=== ddaa [n=ddaa@ordo.xlii.org] has joined #launchpad
lifelessKinnison: still very opaque. steve's commend is right on01:15
lifelesss/mend/ment01:15
=== ddaa [n=ddaa@ordo.xlii.org] has joined #launchpad
lifelessKinnison: i.e. whats a di_tuple ? really, what does it _mean_ not what typ eit is.01:15
Kinnisonokies01:17
=== Kinnison tries not to assume that anyone playing in the publisher will understand what di is
=== Kinnison goes through to add comments
lifelessbetter names >> comments01:18
Kinnisonso _has_debian_installer_inside_components_for_distrorelease ?01:18
KinnisonI'm all for good variable names for simple things :-)01:18
lifelessI don't get whaat has debian installer inside components for distrorelease means01:19
lifelesstell me about this, here, in englihsh01:19
lifelessI'll try and translate to english.01:19
KinnisonOkay01:19
Kinnisonso each distrorelease has a bunch of components in it01:19
Kinnisonsome of those components will contain binaries which are for debian-installer rather than the distrorelease itself01:20
Kinnisonwe have to note down which components of which distroreleases have debian-installer bits in them so that we can construct the correct configuration for apt-ftparchive later01:20
Kinnisonin _has_di I store (keyed by distrorelease name) a Set of the component names which contain debian-installer binaries01:20
lifelessso that is the 'debian installer components for distrorelease' ?01:21
KinnisonMore 'components for debian-installer by distrorelease'01:21
lifelessok.01:22
lifelessthats understandable.01:22
KinnisonBut that's 'what' rather than 'why'01:22
lifelessnow, you have a dictionary of distroreleases with the components for d-i in that release01:22
lifelesswhat about _di_release_components ? with a comment that this is the components for d-i in each distro release01:23
lifelessor release_di_components01:23
lifelessmay well still need a comment, but at least is a vaguely informative variable name01:24
sabdflis PQM jammed?01:24
KinnisonI've put a comment in anyway, detailing what it stores, where it is generated and where it is consumed01:24
Kinnisonbecause I think that'll be useful01:24
Kinnisonso it's just chosing a name01:25
lifelesssabdfl: was01:25
=== WaterSevenUb [n=WaterSev@azevedo.astro.up.pt] has joined #launchpad
SteveApqm didn't allow my merge, with ERROR: testAnwersOnce (CVS.tests.test_CVS.PServerHelperTest)01:26
lifelessSteveA: thats the CVS race condition01:26
SteveAlifeless: can we disable these CVS tests for a while, until they are reliable again?01:26
lifelessSteveA: up to you, do you trust us not to break launchpad via cscvs, or vice verca01:28
lifelesss/launchpad/importd01:28
lifelessKinnison: moving right aling01:28
SteveAi don't care about breaking the specific code that the tests that have a race condition test01:28
SteveAbecause the tests are faulty01:28
lifelessuhm, they aren't testing a race condition, there is a race condition in th etests that is causing the problem01:29
SteveAthat's what i meant.  my english was ambiguous.01:29
SteveAjamesh: ping01:30
jameshSteveA: pong01:31
SteveAhi.  stub says that the code that is supposed to make long-running queries time-out doesn't seem to be working.01:32
Kinnisonlifeless: okay, added explanatory comment in __init__ and renamed _has_di to _di_release_components01:32
SteveAi'm looking at canonical/database/adapter.py now01:32
lifelessKinnison: rediff, lets have a look01:33
Kinnisonrunning now01:33
=== Kinnison hasn't had a chance to flcow his desktop yet
SteveAjamesh: can you take a fresh look at it, just to see if anything obvious looks wrong01:33
jameshSteveA: what value do you have db_statement_timeout set to in the launchpad.conf?01:34
stub6001:36
SteveAwe should have at least a manually runnable functional test for that01:36
stub(Originally 4000, but I knocked it down a bit in case it was seconds instead of ms)01:36
SteveAlike, a deliberately slow query on a page on the debug skin01:36
stubDoesn't need to be a page test. Can fake a slow query easily enough using a Python server side procedure.01:37
jameshit seems to work here01:37
=== stub continues to wait until his branches commit so he can test
SteveAjamesh: how did you test it?01:38
jameshSteveA: set it to a low value, and then ran some other job to burn CPU time01:38
lifelessddaa: ping01:38
SteveAalso, the "print" should be a log surely01:38
ddaalifeless: pong01:38
lifelessddaa: how did pythons cvs import go ?01:39
lifelessddaa: and how is the svn fi for samba looking ?01:39
jameshI got a "ProgrammingError: ERROR:  canceling query due to user request" exception01:39
ddaapython has failed twice since the sprint for various connection problems, right now it's at changeset 1004301:40
jameshSteveA: unfortunately, it is a statement timeout rather than a transaction timeout01:40
lifelessddaa: out of ?01:40
jameshso it is possible for a query to do a lot of work and still not hit the timeout01:40
ddaaout of 3242501:40
lifelessddaa: thanks.01:41
SteveAjamesh: okay.  so, we should also have an overall request processing timeout.01:41
SteveAstub and i discussed this before.01:41
SteveAone way to do it is to have the database adapter check some value before each query01:41
ddaayesterday, had a short day to sort some appartment related issues, and spent it all on replying spiv's review for the nested log parsing (python fix) patch for cscvs01:42
SteveAand have that value change when the request has gone on too long01:42
stubjamesh: Can you issue a few more requests and see if it still happens (ie. that the setting isn't reset next time that handler thread handles a query)01:42
ddaaso, nothing new for samba, but it's the next thing to do01:42
=== stub is still waiting for his commit to commit
Kinnisonlifeless: https://chinstrap.ubuntu.com/~dsilvers/paste/fileXl82lz.html01:42
SteveAeither the value can be the latest time some query can start to be executed01:42
SteveAor the value can be a boolean that is set by an event01:42
lifelessddaa: ok. please keep me posted, Its very urgent01:42
jameshI suppose we could do that by recording when the transaction started, and rollback/fail any future statements past the timeout01:43
SteveAsetting to a max value is probably the simplest, although it does mean regular calls to time.time() i guess01:43
SteveAi don't know how expensive time.time() is01:43
SteveAnot for a transaction -- for the whole web request.01:43
SteveAso, the web publisher would set the value upon receiving the request for processing01:43
SteveAand unset the value at the end of that request's processing01:44
SteveAthe value would be thread.local01:44
SteveAor, set on the connection used for that thread, if there is definiely one connection per request.01:44
SteveAa thread.local seems less tightly coupled to connection policies though01:45
SteveAand, i want to decouple these things for supporting read-only connections for GETs 01:45
jameshso at what points do we check the timeout?01:45
stubYou could perform the check in the database adapter - that seems a common point to do the check and raise an exception if the request has taken too long01:45
jameshokay01:45
SteveAstub: yes, i think that's what i meant to say above01:45
SteveAboth these things together, that is, max request time and max single query time, should make the webapp more available in general.01:47
stubRead only connections are just a case issuing  'set transaction read only' it turns out btw.01:47
SteveAoh01:47
SteveAso, no need for an extra user01:47
SteveAthat's cool01:47
SteveAi can do that today ;-)01:47
SteveAso, that can be added to the launchpad database adapter too01:47
SteveAi mean, a method to say "set transaction read only"01:47
stubJust make sure it gets set back again too ;)01:48
SteveAhmm...01:48
SteveAbut there can be many transactions in a single request01:48
SteveAi want all transactions for that request to be read only01:48
stubeh? There is only one transaction per request. You are thinking connections.01:49
SteveAthere can be more than one transaction per request01:50
SteveAfor example, when someone commits 01:50
stubNobody should be committing in the webapp01:50
stubAnd Zopeless doesn't use the DA anyway01:51
SteveAaccording to my grep, only script code is committing01:51
SteveAso, that's good01:51
SteveAi'd still rather do it right, if it isn't so hard to do01:52
jordimdke: oh dear. 01:53
jordiI suspected xml2po didn't like something in the doc.01:53
=== spiv [n=andrew@adsl-66-203.swiftdsl.com.au] has joined #launchpad
stubWe should make the publisher raise a 503 or something if there are more than X requests in the queue waiting to be handled01:54
stuberm... the http service I mean, not the publisher01:54
lifelessKinnison: your comment talks about _has_di!01:55
Kinnisonlifeless: arse, well spotted01:55
lifelessstill go tthis 'di_tuples' thing01:56
lifelesstell me about di_tuples01:56
Kinnisonit is a list of the tuples we save to output to the di overrides instead of the normal overrides01:56
lifelessthats in these tuples ?01:56
lifelesss/that/what/01:57
Kinnisonassuming you mean "what's in these tuples?" the answer is "a set of columns to be output tab-separated to the override files"01:57
Kinnisonspecifically package name, priority and section01:57
lifelessso it would be reasonable to call them 'di_overrides' ?01:57
Kinnisonaye, I guess that'd be sane01:57
=== Kinnison makes that change
lifelesswould it be clearer :)01:58
=== Kinnison gets workraved, keep on complaining here :-)
lifelesscalling something that is a list of type-X's thing-'Xs' or 'X'-things is usually very unclear01:59
=== mpt [n=mpt@200-171-140-32.dsl.telesp.net.br] has joined #launchpad
lifelessits like 01:59
lifelessints = [1,2,3,5,7,11,13 ..] 01:59
lifelesswhen what you use it for is 'for prime in ..'02:00
lifelessso, rule of thumb I'd like you to imprint on your brain: when you see a type name in a variable name, THINK HARD.02:00
lifelessfor name in names -> what are they names of? package_names ? file_names ?02:01
=== Kinnison nods. I'll do my best to remember that
Kinnisonfile_names02:02
lifelessdrfullname <- pep8ify please02:02
SteveAstub: surely apache / pound can do the "too many requests" error, and not even pass it on to zope02:02
=== Kinnison yeuchs
KinnisonI do so hate under_scored_variable_names02:03
Kinnisonthey're uggerlee :-)02:03
SteveAhttps://launchpad.net/ gave me a 502 proxy error, with a nasty error page.02:03
stubSteveA: Pound can't. No idea about Apache.02:03
=== Kinnison must print out the parts of PEP8 which he keeps forgetting and stick them to his wall
SteveAi'm getting launchpad pages again. hurrah02:04
stubYay specs page not found02:04
dilysMerge to rocketfuel@canonical.com/launchpad--production--1.32: Cherry pick patch-2406 into production (patch-3: stuart.bishop@canonical.com, rocketfuel@canonical.com)02:04
SteveAstub: one line fix02:04
SteveAstub: the link in the menu is to /+specs, but the page is (and should be) just /specs02:05
SteveAit is correct in staging02:05
SteveAwant me to find you the line that needs to change?02:05
lifelessKinnison: +                        cnf.write(s % {02:06
lifeless+                            "LISTPATH": self._config.overrideroot,02:06
stubI'm working on lockups atm ;)02:06
lifelessthat stuff, could benefit by being put in a smaller more readable funtion02:06
=== SteveA finds the line for stub
lifelessKinnison: i.e. 'self.write_component'02:06
=== Kinnison fails to see how that'll actually improve matters
Kinnisongiven that it's a long argument list, so it'd be best served with named arguments02:07
lifelessthe calling code will be a shorter semantic statement02:07
Kinnisonand thus won't be any timpler02:07
lifelessthe dirty stuff will be out of the way02:07
Kinnisonyou mean hide the d-i changes behind some "isDebianInstaller=True" argument or something?02:08
lifelessdef write_di_component (self, dr, pocketsuffix[pocket] , component, arches)02:08
lifelessdor instance.02:08
lifelessbah, for.02:08
Kinnisonit'd have to cope with the non-di situation too02:08
lifelessdef write_component(...)02:09
lifelesslet me put it another way. you ahve a _long_ function that you are making longer.02:09
=== Kinnison shrugs
Kinnisonit doesn't feel right/useful to me to split it out, but I'll do so if you think it's important02:10
lifelesscan you paste the entire file up?  I'd like to see it in context02:11
mdkejordi, yeah. well at least hopefully we can figure out how to fix it02:11
mdkejordi, this danilo guy sounds helpful :D02:11
Kinnisonhttps://chinstrap.ubuntu.com/~dsilvers/publishing.py02:11
jordimdke: danilo is the man02:12
lifelessInternal Server Error02:12
mdkejordi, cool02:12
Kinnisonlifeless: wowyay02:12
Kinnisonhttps://chinstrap.ubuntu.com/~dsilvers/publishing.py.txt ?02:12
jordimdke: plus, lives in a decent timezone :)02:12
lifelessInternal Server Error02:12
lifelesstry publishing.txt02:12
Kinnisonpub.txt02:13
lifelessok.02:14
lifelessthis makes some stuff clearer02:14
lifeless's' is a template for the apt output yes ?02:14
Kinnisonyeah02:14
KinnisonIt's a poor name02:14
KinnisonI've already changed it to "stanza"02:14
lifelesswhy is it in the for pocked in loop ?02:14
Kinnisonbut I didn't upload that02:14
lifelessthats ok, I'm not blaming you :)02:14
Kinnisonbecause it's dumb02:15
=== Kinnison moves it out
Kinnisonupdated pub.txt02:15
lifelessok, I suggest this, before # replace those tokens02:16
=== salgado [n=salgado@200-171-140-32.dsl.telesp.net.br] has joined #launchpad
sabdflstub, jamesh: what's the best way to store a date, rather than a datetime?02:16
SteveAdepends what you want to do with it02:16
SteveAfor example, the string YYYY-MM-DD is good for some things02:17
SteveAa date is good02:17
sabdflfor example, the date a sprint starts, and the date it ends02:17
SteveAif it is a date you want02:17
SteveAa datetime.date object then02:17
sabdflalso, the date a person arrives at a sprint, and the date they depart02:17
sabdflin SQL?02:17
SteveAthis is why i dislike our use of datecreated etc. in the database02:17
SteveAbecause these are datetimes created02:17
lifelessdef write_pocket(components, sections, extensions, cache_prefix):02:17
SteveAa better name would be "whencreated"02:17
jameshsabdfl: postgres has a date type.  I haven't tried it with DateTimeCol or UtcDateTimeCol though02:17
SteveAso as not to confuse things with pure dates02:17
SteveA    def getPendingTasksEstimate():02:18
SteveA        """Returns an estimate of the number of tasks waiting to be serviced.02:18
SteveA        This method may be useful for monitoring purposes.  If the02:18
SteveA        number of pending tasks is continually climbing, your server02:18
SteveA        is becoming overloaded and the operator should be notified.02:18
SteveA        """02:18
lifeless    cnf.write(stance ...)02:18
SteveAstub: see above02:18
spivjamesh: There's a DateCol in SQLObject.02:18
spivjamesh: Which expects a column of type DATE in postgres.02:18
SteveAstub: we can hook something in that uses that on accepting new connections02:18
sabdfljamesh: is it smart about things like start and end dates? the tricky questions are, like, if your "departure date is 11/09/01, are you still around on that date?"02:18
Kinnisonlifeless: as a nested function?02:18
lifelessthat will nicely factor this out, without a stupidly long parameter list02:18
lifelessKinnison: yes02:18
KinnisonOkay, I'll try02:19
Kinnisonone sec02:19
lifelessit also makes the stanza template local.02:19
jameshsabdfl: it simply stores yyyy-mm-dd.  You can do arithmetic at the granularity of days02:19
KinnisonY'know, I'm still unconvinced02:19
Kinnisonconsider how different the input is for the d-i stanzas02:20
Kinnisonit'll be an ugly param list there anyway02:20
sabdfljamesh: i think it might be easiest just to use datetimes, and use 8am for arrival, and 5pm for departure02:20
sabdfljamesh: this is in support of your schedul-o-matic, anyhow ;-)02:20
lifelessactually, thats a question. why do you write one di component at a time, when you write all of them above ?02:21
lifelessthats probably the root of my confusion02:21
Kinnisonbecause they're different tree {} stanzas in apt-ftparchive's config02:21
Kinnisoncheck out /tmp/fileklVXM9 on mawson if you want to see an example02:22
Kinnisonas elmo said, d-i is a "fucking bodge"02:22
spivsabdfl: Hmm, wouldn't an second column, datekind, that is an enum of ARRIVAL_DATE or DEPARTURE_DATE be better than magic time components?02:22
jameshsabdfl: that might be easiest.  If you just store dates, you'd need to assign some time of day to them before being able to tell if someone is available at a given time02:22
lifelessKinnison: I belive you. ok, lets move on02:22
=== Kinnison nods
lifelessminor factor out:02:23
lifelessdef safe_makedirs(path):02:23
sabdflspiv: accurate times allow us to say "John is here till 1pm on Friday"02:23
lifeless  if not os.path.exists(path):02:24
lifeless        os.makedirs(path)02:24
SteveAsabdfl: that happens a lot with special guests02:24
lifelesswill simpify the end02:24
Kinnisonlifeless: *nod* I like that02:24
=== Kinnison does so
=== cprov [n=cprov@200-171-140-32.dsl.telesp.net.br] has joined #launchpad
sabdflSteveA: yup02:25
lifelessthe di makdirs should be outside the arch list anyway02:25
lifelessas they dont use the arch variable02:25
Kinnisonyep02:25
Kinnisonthat was an oopsie in indentation02:25
spivsabdfl: ah, I thought you were proposing using something different (using 5pm to mean "the date component of this timestamp is a departure date"), rather than actually using the time.  That makes sense, then.02:26
lifelessthis may be clearer:02:26
lifeless+                    if drfullname in self._di_release_components:02:26
lifeless+                        if comp in self._di_release_components[drfullname] :02:26
lifeless->02:26
Kinnisonlifeless: I've updated pub.txt02:26
lifelessif dr_fullname, componens in self._di_release_components.items():02:26
lifeless    if comp in components02:26
Kinnisonlifeless: ergh02:27
Kinnisonthat would confuse the hell out of me02:27
mdkejordi, it might be a good idea to get yourself added as moderator for ubuntu-translators@lists too, for when carlos isn't here02:27
Kinnisonmagically instantiating the "components" bit in the if statement02:27
Kinnison(I assume)02:27
lifelessKinnison: its a standard use of tuple expansion. what is confusin about ? 02:27
Kinnisonlifeless: if it's standard for python programmers, and stevea says it's not confusing, I'll use it02:28
Kinnisonit looks confusing to me02:28
Kinnisonbecause I'd be looking above to see where 'components' came from and thusly what was I looking for in the dict02:28
lifelessKinnison: hmm, I misread that, I was thinking for, not if02:28
Kinnisonoh thank christ02:28
SteveAi'd put that one in explicit ()02:28
KinnisonI thought I'd got another reason to dislike python02:28
lifelessif (drfullname, comp) in self._di_release_components.items():02:28
lifelessthat is the correct usage02:29
Kinnisoneh?!02:29
Kinnisonand that'll automatically do the "if comp in self._di_release_components[drfullname] " ?02:29
spivlifeless: hmm, except it's O(n) not O(1).02:29
lifelessspiv: erk.02:29
lifeless.me twiddles fingers02:29
lifelessthe code looks unneecessarily complex there02:30
spiv"if self._di_release_components.get(drfullname, None) == comp"?02:30
spivAssuming comp cannot be None.02:30
KinnisonFFS, self._di_release_components[drfullname]  will be a *Set*02:30
Kinnison(or None)02:30
lifelessyes yes02:30
Kinnisonnot a component name02:30
KinnisonYou're all confusing me a hell of a lot here02:30
spivKinnison: Er, right.02:30
=== mpt waves the magic chicken over production
lifelesslets move on02:30
spiv"if comp in self._di_release_components.get(drfullname, set())"02:31
spivKinnison: blame lifeless ;)02:31
spivKinnison: But I think two lines is still clear enough.02:31
lifeless[ os.path.join(02:31
lifeless                         self._config.distsroot,02:31
lifeless                         dr+pocketsuffix[pocket] ,02:31
lifeless-                        comp)02:31
lifelessthat is used a couple of times too, factoring it would make it cleaner, and shut me up about the two if lines02:31
Kinnisonokay02:32
=== spiv tries to avoid suggestions that only marginally improve readability when reviewing, although it's hard to fight the temptation to nitpick.
Kinnisonupdated pub.txt02:32
lifelessdef component_path(*args): return os.pth.join ...02:32
lifelessspiv: generally I do to, its just this thing is seriously opaque already, dont want it to get worse.02:33
spivlifeless: Fair enough.  I didn't mean that to be comment on your reviewing; I don't have the context to do that :)02:34
BjornTstub: have you seen the process-mail.py failure?02:34
lifelessKinnison: I'm happy enough now. There are still occasional foobar not foo_bar names02:34
lifelessKinnison: if you audit your diff for those, I'm happy.02:34
stubBjornT: no02:34
spivI was more meaning that I was tempted to go off and fiddle more with that expression, which would silly of me :)02:34
Kinnisonlifeless: okay, I'll try and get as many of them as I can stomach02:34
=== Kinnison really_hates under_scored_names
BjornTstub: if fails with: ZConfig.ConfigurationSyntaxError: no values for 'buildd_download_url'; 1 required02:35
BjornT(line 164 in file:///srv/launchpad.net/production/launchpad/configs/production/launchpad.conf)02:35
stubok02:35
mptwhoo02:35
=== mpt sees the Launchpad offline page for the first time
asmodaiyea02:35
=== asmodai was just updating some info and got the lovely 503 ;)
SteveAlifeless: are you going to disable those particular CVS tests that are causing problems?02:36
lifelessSteveA: I don't known which specific ones are causing problems.02:36
lifelessSteveA: I'd rather just up the delay before the thing tries to connect TBH02:37
SteveAok02:37
SteveA ERROR: testAnwersOnce (CVS.tests.test_CVS.PServerHelperTest)02:38
SteveAthat's one of them02:38
SteveAi can't find my reply from pqm with the full list of errors02:38
SteveAmaybe i deleted it in disgust ;-002:38
SteveA;-)02:38
lifelessSteveA: so thats in the pserver tests, wthere are also virtual server usage in the main tests, its going to be ~= disableing most tests02:39
SteveAor upping the timeout on most tests02:40
lifelessright. upping the timeout is my preferred course of action02:41
lifelessddaa: is there code to deal with '<<< no such revision >>>' in pybaz already ?02:41
lifelessddaa: and how much breakage does archivelocations patch cause ?02:42
ddaanah02:42
lifelessddaa: lastly, is the archivelocations patch in pubic pybaz yet ?02:42
ddaaI do not understand your second question.02:42
SteveAlifeless: okay, so please up the timeout in those tests02:42
lifelessddaa: what incompatabilities does the archivelocation pybaz patch inttroduce ?02:43
=== lifeless delegates
lifelessddaa: can you please double the timeout used for the local-pserver startup?02:43
ddaalifeless: [incompatibilities]  not much that I recall. The biggest issue was deprecation of all registered-name related things, that SteveA made me remove from the rocketfuel branch.02:44
ddaamh...02:44
ddaain the light of the new baz roadmap, I guess there's little point in having those deprecations in the public branch either02:44
ddaa[public]  yes it's there02:46
ddaas/biggest issue that I recall/only issue that I recall/02:47
ddaalifeless: I'll try to do the cscvs fixing once I managed to merge my nested-log patch. Which was rejected because of that exact problem.02:47
lifelessddaa: please just do it today, its 10 minutes max.02:48
ddaaI thought that's what I said...02:49
spiv:q02:49
lifelessno, you said you'l do it after some other thing, which is AIUI after the samba fix in your pipeline02:49
ddaathe some other thing is actually merging the python fix02:50
lifelessddaa: it may have been clear to you but it wants to me.02:50
lifelessddaa: I asked for 'do X', and got 'sure, after Y' where 'Y' had no eta.02:51
ddaaokay, I guess I'm expecting you to carry too much state02:51
lifelessddaa: I have no issue if you do it as after Y, but I want to keep steve et al happy, so I'm asking for anm ETA of X for today, irrespctive of the ta for Y02:51
lifelesss/ ta/ eta/02:51
ddaaSo, short answer, yes.02:52
lifelessthanks02:52
lifelessI've just put a     *02:53
lifeless      robert.collins@canonical.com/pybaz--devel--0--patch-902:53
lifeless          o02:53
lifeless            support for <<< no such revision >>> and !!!!nothing should depend on this.02:53
lifeless            needs-review [@DATE@] 02:53
lifelessreview request up for pybaz code.02:53
ddaaAck. How urgent is that? Today? Once I'm bored with the samba fix? Once I'm done with it?02:54
lifelesswjust letting you know, it will pass normal review process and then I'll land it, but I'll want it i nthe public branch too 02:55
ddaaI thought you requested a review.02:55
dilysMerge to rocketfuel@canonical.com/launchpad--devel--0: r=spiv new tests for some menu system functionality.  reorganisation of browser publication code. (patch-2408: steve.alexander@canonical.com)02:57
lifelessddaa: yes, from the review team.02:58
lifelessddaa: very happy for you to review it too.02:58
ddaaOh, right. You are not requesting a review but you'd be happy for me to do one "If I have the time"... I'll try to.02:59
=== ddaa realises he is being vaguely rude
SteveAkiko-zzz: dude?03:01
SteveABjornT, lifeless, salgado, jamesh, spiv03:02
SteveAreviewers team meeting on #canonical-meeting03:02
SteveAstub: you're invited too, as dba fascist03:03
=== mpt [n=mpt@200-171-140-32.dsl.telesp.net.br] has joined #launchpad
=== bradb [n=bradb@modemcable033.209-70-69.mc.videotron.ca] has joined #launchpad
segfaultis there any problem with LP?03:16
spivI'm getting 502 proxy error.03:17
dilysMerge to rocketfuel@canonical.com/cscvs--devel--1.0: [r=spiv]  nested log parsing, cleanups (patch-108: david.allouche@canonical.com)03:17
=== Kinnison lunches
Kinnisonciao dudes03:19
mdkejordi, i have created a new pot from danilo's instructions, already it has twice the entries than the original one...03:21
mdkejordi, we're going to have to angry translators I think03:22
ddaayay!03:22
Kinnisonlifeless: Given that cprov has fixed all the stuff you pointed out in your review, can he now merge with r=lifeless? (You seem to have missed saying that bit)03:26
lifelesskiko-zzz:  said I was happy once pep8ificastion was audited by you03:27
lifelesskiko-zzz: oh, you mean his doc branch ? I'lll check the current diff03:27
kiko-zzzhey ho03:29
lifelessbzr branch of rocketfuel is now being uploaded to chinstrap:/home/warthogs/archives/rocketfuel-bzr-demo03:29
kikosorry guys, had a lame morning03:29
lifelessyou will need the symlink baz2bzr branch of bzr to pull this, its at people.ubuntu.com/~robertc/baz2.0/bzr-baz2bzr03:29
lifelessITS NOT FINAL. warning warning warning alert alert alert danger will robinson03:30
Kinnisonlifeless: I'm very confused. What is the status of the review of cprov's buildui branch?03:30
lifelessKinnison: I sent a review to him and the list, then steve and I talked about one aspect of that reviw, and I have not heard from cprov since03:31
Kinnisoncprov: status?03:31
cprovlifeless: will check03:31
lifelesshttps://chinstrap.ubuntu.com/~jamesh/pending-reviews/ - its in needs-reply03:32
sabdflkiko: the distro boys are baying to LangPacks, what's the latest status?03:32
lifelessit currently has conflicts with rf03:33
cprovlifeless: Sep 12 8:08PM at LP-reviews lists, the reply is there03:34
kikosabdfl, stuart did an overnight (for me) whitespace fix run, I need to generate a new pack to see03:34
kikosabdfl, we can talk about this at the reviewer's meeting, but the whole lag is very frustrating -- I feel like I have my hands tied03:34
kikos/reviewers/mgmt03:34
kikostub, rock on -- has the script finished running?03:35
spivlifeless: permission denied.03:37
cprovlifeless: moved the bits in the wiki page, but I don't believe you haven't seen the email ... anyway, it was my fault.03:38
Keybukthe ssssssh.py in Launchpad seems to be taking my stderr away and not giving it back03:39
KinnisonKeybuk: aye, it does that unless you exit non-zero03:43
Keybukno, it exited non-zero and still hid stderr03:44
Keybuk:'(03:44
Kinnisonoh :-(03:44
Kinnisonsux03:44
Keybukthe "ZOPE CAN'T WRITE CONFORMANT C" error got hidden03:44
Kinnisonyeah there is that03:44
Kinnisonis this a launchpad-on-breezy issue?03:44
Keybukyes03:45
Kinnisoncan we "fix" it by saying CC=gcc-3.403:45
lifelesscprov: I hadn't, it was waay down my inbox in a thread03:45
Kinnisonor are you on a mission to make it gcc4 compliant?03:45
KeybukKinnison: you can fix it by editing the C file and fixing the one bug03:45
lifelesscprov: I've replied - short answer, lastBuilds can too move.03:45
Keybukniemeyer found it03:45
Keybuka variable is declared both static and extern03:46
Kinnisonwooyay03:46
cprovlifeless: again, sorry, it was really my fault ... thank you 03:46
lifelessnp03:47
stubkiko: Yes, the script is finished (which is why the email said 'run' instead if 'is running')03:49
dilysMerge to rocketfuel@canonical.com/launchpad--devel--0: [trivial]  add table and classes for development manifests (patch-2409: mark.shuttleworth@canonical.com)03:50
=== terrex [n=terrex@84-122-83-29.onocable.ono.com] has joined #launchpad
kikostub, yeah, I assumed so, just wanted to double-check because language can be oh so subtle03:51
stubYou accusing me of being subtle?03:52
kikostub, language is subtle. you're just australian03:52
ddaalifeless: 100ms pserver spawn delay in cscvs on course03:53
kikoddaa, aha03:53
ddaakiko: just a band-aid, I think the proper fix would involve special casing so "connection refused" would cause "fast" retries only on tests...03:54
ddaaNot trivial by any mean.03:54
lifelessddaa: thanks03:54
ddaaCrododile Dundee is my bible about .au subtlety :P03:55
sabdflstub: another little landing on the way, sent mail, will you have a chance to look at it this evening? straightforward, i think03:56
stubI'll have a look03:57
stubsabdfl: Will you be converting walltimes for scheduling into utctimes for storage?04:02
sabdflstub: faahrk04:02
sabdflfaahaaark04:02
sabdflso yes, i guess so. jamesh, you prefer to store everything in UTC, right?04:02
sabdfli mean, the db does anyway04:03
stubIf we assume sprints are physical, and not virtual, there is a use case for storing them in localtime04:03
stubAre we going to have attendees via IRC? ;)04:03
Kinnisonalways store in UTC and translate for timezones (IMO)04:04
dilysMerge to rocketfuel@canonical.com/zope--test--3.0: Fix apidoc interface/class browser and GCC 4.0 fix (patch-19: stuart.bishop@canonical.com)04:05
lifelessonly sane way04:05
lifelessoh, hello dilys, you're back04:05
mptsabdfl: Why are "Edit Ticket", "Edit Priority and Assignee", and "Administer" separate pages? They partly intersect with each other, so I guess they're meant to be used by different people, but they all show up in the portlet for everyone04:06
SteveAstub: mailed you a test webserver that cancels connections when there's more than 3 pending04:06
stublifeless: I can provide counter arguments, but in general I agree ;)04:06
sabdflmpt: just trying a slight variation in style04:07
stubSteveA: I'll look at that tomorrow04:07
sabdflsome folks will get irritated at having to visit three pages if they want to change everything04:08
stubSteveA: I've sorted the current production issue anyway.04:08
SteveAstub: just stick the file in launchpad/lib/ and run it, then go to localhost:8080 and hit reload lots04:08
sabdflbut i'm guessing people will generally be touching one, or the other page04:08
sabdfland then they will prefer tighter, more focused pages04:08
SteveAstub: can you check it works for you now?  should only take a moment.04:09
stubSteveA: Table statistics for some of the bigger tables had gotten out of date, so some of the scary queries where choosing really stoopid plans and running in glacial time.04:09
mptsabdfl: There's only six fields in total involved here, so I doubt tightness is an issue really04:09
SteveAstub: does staging use teh same query plans as production?04:10
stubSteveA: It does when the table statistics are similar on both, which guided me to the real issue.04:10
SteveAhttps://chinstrap.ubuntu.com/~dsilvers/paste/fileYoiFDV.html04:13
SteveAstub, lifeless: this is what happens when you make a request that my zope.server additions will reject04:13
SteveAi could conceivably make it reject the connection earlier04:14
SteveAbut it would be more work04:14
=== stub is just building a local Pound to test
SteveAthe current experiment is simple to make work with launchpad as it is now04:14
SteveAlifeless: i'm interested in getting your opinion on this04:14
lifelessif you want pound etc to think the host is down, it should not call accept()04:15
kikostub, I have a question about the 503 page if I may04:15
lifeless(the host should not)04:15
stubsabdfl: In case you are bored, this is the log of queries executed to render a single one of the translation pages. There are rather a lot of queries... https://chinstrap.ubuntu.com/~dsilvers/paste/fileM78Eyf.html04:15
kikostub, when the server is down, I've never seen this "launchpad is down page"04:15
spivkiko: I have :)04:16
SteveAkiko: i saw it today04:16
SteveAit has to be a 50304:16
SteveAnot a 50404:16
stubkiko: That is because you havn't seen the server down in the last week, which is about how long it has been installed04:16
kikoSteveA, spiv: why don't we see it when the server crashes?04:16
SteveAbeacuse that is often a 50404:16
spivDepends on how it's down.04:16
kikostub, no, we saw it down yesterday04:16
SteveAit was a 504 yesterday04:16
kikoah.04:16
stubLaunchpad wasn't down, it was happily accepting connections...04:16
SteveAlifeless: so, i have to stop the connection at a lower level?04:16
kikoand there's no such thing as a 504 page, I imagine?04:16
SteveAi'm sure there is04:17
SteveAwe'd just have to make one, and ask elmo to install it04:17
SteveAor ask him to use the same one... although "down for maintenance" would be untrue in that case04:17
lifelessSteveA: yah. IIRC we can leave the socket bound, and not call accept(), and then the proxy will see tcp fail and know to fail over04:17
lifelessso your accept loop needs a flag, if(!busy): faccept04:18
=== spiv knows how to do achieve that with Twisted
spivs/do//04:19
lifelessfrom label: come [do something here.] 04:19
spivlifeless: :)04:19
lifeless5 points if you spot the language that was in04:19
stubPound doesn't do 50404:20
stubBut Apache probably does.04:20
lifelesspqm going down04:20
lifelessmagic wand time04:20
SteveAspiv: would be easy if zope3 used twisted already.  sadly, doesn't04:20
spivYeah.  (Not that it's clearly documented how to do this with Twisted... just that I happen to know the trick)04:21
lifelessthe issue is, once yyou call accept() the 3-way handshake has been shook04:22
SteveAi think i see where i need to do this04:22
lifelessand your load balancer now has to deetect application level errors, not tcp errors.04:22
lifelessIIRC squid does app level errors :)04:22
SteveAstub: i'll send you a new version in a few minutes04:23
stubSteveA: With that version I'm getting a 500 error04:30
SteveAis that good?04:30
ddaalifeless: what is the trick to make "cscvs log" work with svn checkouts?04:31
SteveAi can easily make it explicitly give a particular error04:31
lifelessddaa: erm, cscvs -d :pserver:ficticious@home log 04:31
ddaabwahaha04:32
stubSteveA: It means the load balancer thinks it is still up and running04:32
lifelessSteveA: as I sexpected04:32
stubSteveA: Which isn't good, if only one of the backends is screwed04:32
SteveAok04:32
=== spiv hopes that was a typo
stubAhem04:33
ddaalifeless: SCM.NotAWorkingTree: Path is not a CVS working directory04:34
ddaaI mean, I know it's not a CVS working tree, it's a SVN one...04:34
ddaaokay, I guess the answer is "you don't"04:34
lifelessddaa: hmm, it *should* be able to work, but anway, I use svn log as it good enough04:35
dilysMerge to rocketfuel@canonical.com/launchpad--devel--0: Make publisher aware of d-i. Fix up some non-PEP8ish code along the way. Make sure overrides are pocket aware. r=lifeless (patch-2410: daniel.silverstone@canonical.com)04:35
mdkejordi, around?04:36
SteveAstub: there's an argument to socket.listen() which is the "backlog"04:36
SteveAthat is the max number of queued connections04:37
SteveAmaybe reducing that would work04:37
lifelessSteveA: what is your bavcklog set to ?04:37
SteveA102404:37
lifelessjesus04:37
ddaalifeless: I you recall what it is that needs to be fixed for samba, I'd appreciate some refreshing. I sort of remember I must do something just like DeletedAdapter but the other way around, maybe for nested adds whatever that means, but I'm a bit at a loss.04:37
SteveAwe have two things: one is the backlog.  the other is the number of queued tasks.  these are of course related04:37
lifelesshow many threads to we have? 4 ?04:37
SteveAmaybe just reducing the backlog will be enough.04:38
stub4 by default, and I think an upper limit of 7 still04:38
lifelessif we have 4 threads, I would suggset a backlog of 4004:38
SteveA    # Stop accepting new connections if too many are already active.04:38
SteveA    connection_limit = maxsockets.max_select_sockets() - 3  # Safe04:38
SteveAaha04:38
SteveAso, there is a connection_limit too04:38
SteveAdon't know if it is used or not, though04:38
SteveAyep, it ought to be04:39
SteveAso, we can probably do it by changing backlog and connection_limit04:40
SteveAconnection_limit is 97 on my machine04:43
lifeless97 is _way_ to high for something that does synchronous service on 4 requests at once04:44
lifelesstheres incredibly little point in having more than 8 connections if you do 4 things ar once.04:45
lifelessddaa: adds of a dir that have a copyfrom_revision set need to to a recursive copy04:46
lifelessi.e the inverse of deleted adapter04:46
ddaamhr, right what I recall04:47
ddaathx04:47
stubSteveA: if connection limit works, could be worth defaulting it to 4*threads upstream (assuming there isn't already a config item to set it...)04:48
SteveAi'm going to add some config items for these04:48
stub(or 10* as per robs suggestion)04:48
SteveAbut, i'm still trying to get them to show the desired behaviour04:49
stubBed!04:49
=== ddaa [n=ddaa@marvin.xlii.org] has joined #launchpad
jordimdke: yeah05:12
jordimdke: I'm following this discussion..05:12
jordihm05:12
bradbmpt: http://69.70.209.33:8086/products/ubuntu/+bug/105:14
bradbmpt: spot the demystification in under 5 seconds.05:14
mdkejordi, i wanted your opinion on the question of how many translations will get lost, and how many might be kept05:14
jordimdke: did many translate the huge line?05:15
mdkejordi, if the msgid string is exactly the same, but with a different comment, will the existing translation be kept, or lost?05:15
jordior lines?05:15
jordikept05:15
mdkeok then we should be good to go05:15
jordicomments are not taken into account when merging.05:15
mdkegreat05:16
mdkeso, I think that we can consider uploading the new pot05:16
mdkejordi, the only question is whether to merge the original into one file first, or to do it later05:17
mptSteveA: fyi, I added a couple of problems (that might be the same problem) to LaunchpadMenusInProgress05:17
SteveAokay, cool05:18
jordimdke: if xml2po will handle a well formed file with xincludes, I would do different xml files, for manageability05:18
jordimdke: but would of course generate just one pot file.05:18
jordimdke: the GNOME docs are like this and they work ok.05:18
jordimdke: if you want help with setting up makefiles, we can have a look too.05:18
mptbradb: whoa05:18
mdkejordi, yeah, it's just a question of whether we can get different xml files back from the translations05:18
mptbradb: Tony Robbins would love that page, it has a Massive Actions portlet :-)05:19
mdkethere's not much point having different xml files for the original and single ones for the translations05:19
bradbmpt: massive? heh, it's a mini portlet compared to, say, the person page.05:20
mpttrue, but more of them here are multiple lines05:20
mptmaybe that's just my minimum font size talking05:21
bradbbut it's big. it's also got useful links, and it's been observed then when users want to do something, they quickly adapt to always looking in that space to find the golden path05:21
jordimdke: gnome release notes have 10 xml files, the process generates 1 though.05:22
mptmaybe, but adaptable != pleasant05:22
jordiIt may still be useful to have your sources in multiple, but distribute the final, single doc.05:22
mptIt's still daft that subscribing is on the opposite side of the page from the list of subscribers05:22
mptbradb: What's that "Subscribe someone else" for?05:22
bradbmpt: Indeed it is. Maybe at some point we'll be able to sell the idea of putting links in logical, easy to trip over (in a good way) places.05:23
jordimdke: scratch that for a minute05:23
bradbmpt: To Cc someone else on the bug report. I believe sabdfl was the one that tweaked those bits.05:23
jorditotally wrong05:23
jordimdke: 10 source xml files, 10 output xml files for each language.05:25
bradbI believe this last tweak will significantly reduce the repeated (and well-merited, I might add) whining about not being able to figure out how to assign a bug.05:25
jordimdke: so way to go05:25
mdkehmm05:26
mdkejordi, just a question of whether we can do that too05:26
sabdflsalgado, kiko: the "preserve edit message" landing, does that use the general mechanism we described in Brazil?05:27
jordiyeah?05:27
salgadosabdfl, "preserve edit message"?05:27
sabdflyes05:28
sabdflFix the person-edit view to preserve the message displayed by the edit view when we redirect to their new canonical_url (as a consequence of a name change). r=kiko'05:28
bradbmpt: There are various ways we can pull stuff out of the actions portlet though. e.g. [Edit]  link beside the description (afterall, you decide to edit a description when you're looking at the description, more-than-likely); same principle with "secrecy", subscriptions (which is a portlet that should always be present, I think), we can drop adding web links, etc.05:28
sabdflis that done without a tacky ?message=Your%20Edit%20Message url?05:28
salgadosabdfl, ah, no. AFAICT that mechanism is not yet implemented05:28
sabdflbradb, mpt: the main way to pull stuff out of the actions portlet is to get the menu system implemented. please stuff everything in the actions portlet until menu systems are done05:29
salgadoso, yes, it does use a special GET parameter, but the message is not in the GET itself05:29
sabdfldon't spend any effort trying to optimise the actions portlet, which is obsoleted by the menu system05:29
bradbsabdfl: yep, i'm stuffing everything in there: http://69.70.209.33:8086/products/ubuntu/+bug/105:29
sabdflwe wanted menu systems in before UDU, I will BREAK BALLS IN MONTREAL if it's not done by the time our session starts there05:30
sabdflbradb: good man05:30
sabdflerrr05:30
sabdflspecial get parameter?05:30
salgadojust an ?updated=date05:31
SteveAsabdfl: stu is working on the messages stuff05:35
sabdflsalgado: that's rather minor bling, and we have a general mechanism on the way, so let's not do that anywhere else?05:36
salgadosabdfl, you mean, simply redirect without any message until we have the mechanism implemented?05:37
=== bradb takes a look at what stub's form error message infrastructure can do to help de-robotize Malone error messages
sabdflsalgado: yes please05:41
sabdflbradb: you'll like the new FormView05:41
sabdflit's under review, will hopefully land tomorrow05:42
sabdflpending my hearing back from jamesh ;-)05:42
bradbsabdfl: It's got some support for notices?05:42
=== jinty [n=jinty@205.134.224.215] has joined #launchpad
sabdflbradb: yes05:43
sabdflmore importantly, its a simpler and more flexible thing than addform05:43
sabdfland with some tweaks it could improve editform too (just need to figure out how to pre-set the fields)05:44
bradbsabdfl: I think setUpWidgets knows how to init edit fields.05:45
bradbUnless you were referring to something else.05:46
jordisabdfl: do you know by chance what needs to be done with those "dont-use" or "breezy-review" pots in rosetta?05:51
jordiie, what do I need to do exactly to "fix" them? I don't want to fuckup.05:51
sabdflbradb: the problem is that an editform assumes that you are editing the context05:51
sabdfli want to be a bit more relaxed than that05:52
sabdfleditforms, so far, are ok, so i'm leaving it as it is for the moment05:52
sabdfljordi: i don't know. i think there is a "hide" checkbox somewhere. BUT, the real solution is not to import them in the first place05:52
sabdfli'll want carlos to address that first thing when he's back05:53
sabdflbecause those damn things are building up05:53
bradbsabdfl: right. i look forward to being liberated from browser:addform, at least. :)05:53
sabdflbradb: the new form is a good replacement for addform, yes05:53
jordisabdfl: yeah :(05:54
jordisabdfl: so should I hold this until next week?05:54
sabdfljordi: yes05:54
sabdflit would be possible to put "DO NOT USE THIS" on the description of each of them, but i don't think it's worth doing that05:54
jordiok. I'll do some email processing and FAQ work05:55
jordiI think mdke has the faqguide problem under control now. That was worrying for a moment, but it boiled down to a not so well formed xml05:56
kikogool05:56
dilysMerge to rocketfuel@canonical.com/cscvs--devel--1.0: [trivial]  wait for local psever to spawn for 100ms (patch-109: david.allouche@canonical.com)05:56
bradbwoohoo, stub's form error message thing seems pretty straightforward06:15
=== bradb & # will write more useful error messages after lunch
SteveAbradb: it's implemented already?06:19
SteveAi didn't see it land06:19
kikome neither06:21
SteveAmpt: ping06:22
Kinnisonelmo: ping?06:23
dilysMerge to rocketfuel@canonical.com/launchpad--devel--0: Fix the person-edit view to preserve the message displayed by the edit view when we redirect to their new canonical_url (as a consequence of a name change). r=kiko (patch-2411)06:27
KinnisonSteveA: what's the best way to get "now" formatted as a string in UTC in python?06:28
KinnisonSteveA: this is independant of the database06:28
SteveAnow is what?06:28
SteveAa time06:28
SteveAa datetime?06:28
SteveAimport datetime ; datetime.datetime.utcnow().strftime('....')06:29
SteveA>>> datetime.datetime.utcnow().isoformat()06:29
SteveA'2005-09-14T16:29:16.310295'06:29
salgadoelmo, around?06:29
SteveA>>> datetime.datetime.utcnow().ctime()06:29
SteveA'Wed Sep 14 16:29:33 2005'06:29
Kinnison"""Date: Fri, 13 May 2005 12:42:31 UTC"""06:29
KinnisonI want that format06:29
KinnisonI can obviously shove the 'Date: ' on the front myself06:30
SteveAhttp://docs.python.org/lib/module-time.html06:30
SteveA>>> datetime.datetime.utcnow().strftime('Date: %a, %d %b')06:31
SteveAthere's the first part06:31
Kinnisonta06:31
KinnisonNow all I need is to work out how to do a buggerload of md5sums and sha1sums and how to format things like I would in perl using a format string06:33
=== Kinnison ponders
=== Seveas [n=seveas@seveas.demon.nl] has joined #launchpad
=== cprov [n=cprov@200-171-140-32.dsl.telesp.net.br] has joined #launchpad
SteveAbradb: ping06:55
SteveABjornT: ping06:56
dilysMerge to rocketfuel@canonical.com/launchpad--devel--0: [trivial]  Use a different <form> for adding a new email address in a person's email address page. Fix https://launchpad.ubuntu.com/malone/bugs/1348. (patch-2412)06:56
SteveAbrad filed this bug: https://launchpad.net/malone/bugs/1515   i want to know if it is still an issue, as written, or if it needs updating06:57
Kinnisonalright, who is sending empty merges into pqm?06:58
Kinnisonand why haven't we modified check_merge to spot these and error out?06:58
=== SnakeBite [n=SnakeBit@84.242.143.64] has joined #launchpad
SteveAmaybe someone isn't mirroring, and is using tree-version rather than tree-id in their submit script07:00
cprovKinnison: it's probably related to a non mirrored change ..07:00
cprov;)07:00
Kinnisonindeed, but even so, surely it's easy to spot?07:01
SteveAin what script?07:01
=== camilotelles [n=Camilo@200.128.80.250] has joined #launchpad
Kinnisonhow about in the check_merge target of the top level makefile07:02
SteveAisn't it too late by then?07:03
SteveAi mean, the merge has already taken place07:03
mptSteveA: pong07:03
SteveAhi07:03
cprovmpt: let me know when you have 10 min for help me with some facets issues in builddUI07:04
=== camilotelles_ [n=Camilo@200.128.80.250] has joined #launchpad
bradbSteveA: pong. yes, it's landed (i saw it land, i also tried it out before going for lunch). as for 1515, I don't know whether or not it's still an issue, because I haven't looked at Malone menu code since before brazil.07:29
=== gneuman [n=guest@200-171-140-32.dsl.telesp.net.br] has joined #launchpad
=== SteveA notes that the network connection from async has gone down
Kinnisonciao, dinner time07:48
cprovKinnison: see you07:48
mdkejordi, got the new pot ready. shall I upload it straight away or do you want to have a quick look?07:48
=== dand [n=dand@83.103.205.67] has joined #launchpad
=== mp1 [n=mpt@200-171-140-32.dsl.telesp.net.br] has joined #launchpad
SteveAmp1: network back?07:53
cprovSteveA: it is ...07:54
mptSteveA: yup07:54
mdkejordi, uploading, fingers crossed08:25
=== cprov -> out, back in 1 hour
SteveAmpt: i'm off home shortly.  can you mail me details of the branch, or patch or whatever for those person menus we discussed?08:26
bradbBjornT: Do you think you'll have a chance to review the URL change patch tomorrow?08:26
SteveAi'll continue work on that tomorrow morning.08:26
mptSteveA: ok08:27
mdkejordi, eureka08:27
BjornTbradb: don't know. i'll definitely dedicate some time tomorrow for reviewing it, but i'm not sure that i will be able to review all of it.08:31
bradbBjornT: ok, thanks08:31
bradbI'm working on a branch that's branch off of it atm, to improve our failure modes in forms and such.08:31
bradbs/branch off/branched off/08:31
jordimdke: that's great08:32
BjornTcool08:32
mdkejordi, looks like the translations have not been lost08:33
mdkejordi, thanks very much indeed for your help08:33
jordimdke: no worries!08:35
jordimdke: used -e?08:35
mdkeyes08:36
WaterSevenUbmdke, https://launchpad.net/distros/ubuntu/breezy/+sources/ubuntu-docs/+pots/faqguide/pt/+translate?offset=210 08:36
=== Burgundavia [n=corey@S0106000000cc07fc.gv.shawcable.net] has joined #launchpad
WaterSevenUbmdke, excellent... these big lines though :)08:37
WaterSevenUbmdke, great job! ;)08:37
mdkebig lines?08:37
WaterSevenUbmdke, a little detail... they don't fit in the screen ... something completely different.. nevermind :)08:38
mdkegah, that can't be my fault08:38
mdkeblame jordi 08:38
WaterSevenUbmdke, eheh08:38
kikoSteveA, as for your question, salgado has tested the email locally but not in production or staging08:48
kikostaging doesn't send email08:48
kikoproduction...08:48
kikothere are tests for it in the code though08:48
salgadowe can test it in production now08:49
kikoah, /shipit08:50
salgadokiko, shhhhhh08:50
kiko:)08:55
=== camilotelles_ is now known as camilotelles_sfk
=== camilotelles_sfk is now known as camilotelles_afk
kikojordi?09:20
sabdflkiko: pong09:22
kikosabdfl, did you ever give elmo his gift? :)09:23
lifelesslater all09:23
kikolaters lifeless 09:23
=== camilotelles_afk is now known as camilotelles
salgadosabdfl, should we have a separate ShippingAddress table (as stub suggested) or should we put the addresses in the ShippingRequest table?09:39
=== cprov [n=cprov@200-171-140-32.dsl.telesp.net.br] has joined #launchpad
cprovPQM seems to be stalled, processing my job for 1,5 hours09:49
elmoit's doing stuff09:50
elmopqm      10134 40.8  1.8 112584 68780 ?        R    20:41   3:25                  \_ /usr/bin/python2.4 test.py -vv --dir hct --dir sourcerer09:50
=== mdke [n=matt@unaffiliated/mdke] has left #launchpad []
cprovelmo: ok, thank you for looking, let's wait 09:52
sabdflsalgado: it's fine where it is for the moment10:07
sabdflkiko: doh10:07
sabdflnow i need to find them10:07
salgadosabdfl, we need to allow Marilize to place new orders for people which she doesn't have an email address, and thus we can't create a person for these requests. Jane said this is a real use case and we need to implement it soon10:11
sabdflsalgado: we do not require an email address for a user in LP10:12
kikosabdfl, stub has reservations to adding dummy users to launchpad10:12
sabdflkiko: they would be real users with real names, would they not?10:13
kikothere is also the issue of supporting users that want to request to multiple addresses10:13
kikosabdfl, I don't think so -- think S-n-A.10:13
kikodo you really have names for all the recipients?10:13
sabdflmm... The Manager, Foo Bar Internet Cafe10:13
kikoand by name I mean "George T. Washington" not "New Delhi Computer Outlet"10:13
sabdfli guess not...10:13
sabdflso who logs in to request another order?10:14
kikoIt appears to me that it's a lot cleaner to decouple addresses from people10:14
kikoshipit admins can generate requests as well10:14
kikothe data model would allow for the shipment to indicate a recipient name10:14
kikoand thus not using the name of the person who created it.10:15
kikootoh we could also just piggyback request and add address information there10:15
kikothere is little difference between the two models10:15
sabdflyes there is10:16
kiko(if using a separate shippingaddress table, users' edits to it will be used in non-exported shipments, otherwise, it's fire-n-forget)10:16
sabdflfollowon requests should be tied to the same address10:16
kikothere is difference10:16
kikooh10:16
kikosorry10:16
kikoI was incomplete10:16
kikoperson would have address information -- and we'd copy that into a shippingrequest when placed.10:17
kikothat's the other alternative10:17
kikothe disadvantage is that it duplicates information10:19
kikopreferences, sabdfl?10:19
sabdflif we leave address in person, and copy over, how does that decouple requests from people?10:20
sabdfldo we just allow the person to be NULL?10:20
sabdfland have a mechanism to create the person if they come back with their token?10:20
kikoright10:20
kikothat's precisely what stuart suggested, too10:20
kikohe reckons few people are actually going to validate their tokens, which means that most users will just be used as a hanger for address information.10:21
kikoI can't say I disagree10:21
kikoI mean, salgado and I don't /want/ to change the data model, but acknowledge it's the right thing to do10:22
sabdflok10:23
sabdflthen put the address in the shippingrequest10:23
sabdflleave address details in the person record10:24
sabdflwe can copy it there for defaults if the person has filled it in, and comes back10:24
sabdflother way around10:24
sabdflwe can copy from person to shipping request if they come back to make a new shipping request10:24
sabdflamazon allows you to add  addresses10:24
sabdfland then select one for each order10:24
sabdflbut we don't want to get that fancy10:24
kikookay10:25
sabdflgood call, stub10:25
kikoI think you're right -- it's the simpler solution.10:25
sabdfland it's easy to refactor that later10:26
kikowell, it involves some cut-n-pastage of data10:26
sabdflthey are two different bits of data10:27
sabdflone is "my current address"10:27
sabdflthe other is "the address of this shipping request"10:27
sabdflit's not a badness to have it in both places, in this case10:27
kikoyes10:27
kikoagreed, entirely10:27
kikoI was just saying that if you want to move to having multiple addresses per person, it involves moving the address out of person. but anyway..10:28
sabdflwell, not even10:28
sabdflmaybe10:28
sabdflcross that bridge when we get to it10:28
kikoright10:28
salgadowe would need to have a displayname together with the address (in the shippingrequest table), so Marilize can place orders for other people (not S-n-A). otherwise all requests would be sent with Marilize's name. either we do that or we'll be creating person objects for this people?10:31
=== mpt leaves baz to its ponderosity, and heads homeward
kikosalgado, the former -- a displayname with the address10:34
kikoit appears to be the best way to handle this10:34
salgadothat's what I think too10:34
kikoyou might get smart and make the code pull owner.displayname when displayname is NULL, but..10:34
sabdfljamesh: ping10:43
=== bradb finishes humanizing the error messages on pages linked off the bug page; entering bad data has never felt so good.
sabdflsalgado: make the shipping address have a .addressee attribute, which looks at a local field, or person.browsername10:55
salgadosabdfl, yeah, that will make life easier for client code11:00
=== bradb & # later

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