/srv/irclogs.ubuntu.com/2004/10/12/#launchpad.txt

=== BradB|London [~bradb@224-21-161-212.DSL.ONCOLT.COM] has joined #launchpad
=== debonzi [~debonzi@224-21-161-212.DSL.ONCOLT.COM] has joined #launchpad
=== mdz [~mdz@69-167-148-207.vnnyca.adelphia.net] has joined #launchpad
=== mdz [~mdz@69-167-148-207.vnnyca.adelphia.net] has joined #launchpad
=== cprov_ [~cprov@224-21-161-212.DSL.ONCOLT.COM] has joined #launchpad
=== lalo [~lalo@201.10.27.117] has joined #launchpad
=== lalo [~lalo@201.10.27.117] has left #launchpad []
=== lalo [~lalo@201.10.27.117] has joined #launchpad
=== lalo adds more to his reputation for being weird by switching to dvorak
=== cprov__ [~cprov@224-21-161-212.DSL.ONCOLT.COM] has joined #launchpad
=== jdub [~jdub@home.waugh.id.au] has joined #launchpad
jdubahar02:11
jdublaunchpad dudes02:11
jdubnow i have the megaphone02:11
jdubmuhahaha02:11
jdubhttps://www.warthogs.hbd.com/Launchpad/Testers02:11
jdubjust added a page for potential launchpad testers02:11
jdubgive it love02:12
jduband stuff02:12
=== jdub blows kisses
=== jdub [~jdub@home.waugh.id.au] has left #launchpad []
=== kiko [~kiko@224-21-161-212.DSL.ONCOLT.COM] has joined #launchpad
kikoboing02:23
kikostub?02:23
=== cprov_ [~cprov@224-21-161-212.DSL.ONCOLT.COM] has joined #launchpad
=== kiko_ [~kiko@224-21-161-212.DSL.ONCOLT.COM] has joined #launchpad
=== lalo [~lalo@201.10.27.117] has joined #launchpad
=== lalo [~lalo@201.10.27.117] has left #launchpad []
=== lalo [~lalo@201.10.27.117] has joined #launchpad
=== lalo [~lalo@201.10.27.117] has left #launchpad []
=== lalo [~lalo@201.10.27.117] has joined #launchpad
=== mdz [~mdz@69-167-148-207.vnnyca.adelphia.net] has joined #launchpad
=== lalo [~lalo@200.96.104.254] has joined #launchpad
sabdflany idea what creates a ,,star-merge directory, and whether i can safely delete it?09:56
=== BradB|London [~bradb@host217-37-231-28.in-addr.btopenworld.com] has joined #launchpad
=== debonzi [~debonzi@host217-37-231-28.in-addr.btopenworld.com] has joined #launchpad
=== BradB|London is now known as BradB
=== cprov [~cprov@host217-37-231-28.in-addr.btopenworld.com] has joined #launchpad
=== kiko [~kiko@host217-37-231-28.in-addr.btopenworld.com] has joined #launchpad
kikohey lunchpad10:50
kikostub, around?10:50
SteveAsabdfl: AIUI, any files beginning with ,, are working files11:01
SteveAso, if the star merge is done, then you won't need it any more11:01
sabdfltnx11:01
=== elmo_ [~james@host217-37-231-28.in-addr.btopenworld.com] has joined #launchpad
stubkiko: Yo11:28
stubkiko: Re your indexes11:28
kikoand the gpg thingies11:28
kiko:)11:28
kikothose indexes are gold dude11:29
stubI'm trying to work out if two of them are necessary (which I will get to when my mail folder opens...)11:29
kikoI spent a lot of time in explain, I am quite sure they are11:30
kikothese fields are not unique 11:30
kikoso they are not indexed by default11:31
kikogiven we join on them (for instance sourcepackage.sourcepackagename) a lot, seq scan shows its ugly head everywhere11:31
kikoI can paste in some killer queries if you still need convincing11:31
stubThe index on binarypackage (binarypackagename) should not be necessary, as the unique (binarypackagename, version) index should be used.11:31
kikoit isn't11:32
stubThe index on sourcepackageupload(sourcepackagerelease) should not be used if you are also matching on distrorelease (which you might not be)11:32
kikohmmm11:32
kikoit was also necessary11:32
kikowell11:32
kikohere's how I proceeded11:32
kikotimed query, explained it11:32
kikoadded index11:33
kikotimed query, explained it11:33
kikorepeat11:33
stubDid you run a vacuume analyze, explain, create index, vacuume analyze, explain?11:33
kikoobviously the second query benefits from cached data11:33
kikoyes, but I wasn't too interested in the time, more in the explain output11:33
=== stub can't spell
kikothis set of indexes removed all the seq scans but one in both the queries that were biting us11:34
stubOk. If you did the analyze before trusting the explain output I'll add them too.11:34
kikointerestingly enough vaccum analyze didn't change the explain output (iirc)11:34
stubIt is more a paranoia check - I think a goal for postgres would be to make it totally unnecessary ;)11:35
kikostub, there was something else I wanted to ask you11:35
kikoyeah, definitely11:35
kikowe used a view to make the package list render in non-geological time in the end11:35
stubIt might be that it is more expensive to use the combined index, and postgres decided a seq scan was more efficient.11:35
kikomaybe11:36
kikoI am not concerned with the time it takes to insert a new package11:36
kikobecause that is not the bottleneck in that task (we need to open and process the package and that makes me sleepy)11:36
kikoanyway, about the view11:36
kikothe trick is that is allows me to "pre-query" for all the attributes on the object I wanted11:36
kikoI was doing a query on sourcepackage and then when displaying their names *each* package resulted in a query for the sourcepackagename.name 11:37
kikowhich means that queries scaled according to O(n) which is evil11:37
kikothe view allows us to prefetch all the information and just use it11:37
kikowhat's your view on this, and how do you think we should deal with this on the sqlobject level11:38
stubHmm... sqlobject should cache the sourcepackagename instance11:39
kikoit does11:39
kikobut not the sourcepackagename's name 11:39
kikoah, I see what you mean11:39
kikowell11:39
kikoit *could* add fields to the join output to make sure it has all the data it might need to display all possible traverses from that object11:40
kikobut I think that would require hinting11:40
stubBy caching I mean 'assert id(SourcepackageName.get(1)) == id(SourcepackageName.get(1))' succeeds11:41
kikodoesn't it do that?11:42
kikoI thought we cached instances properly in sqlobj11:42
kikothe issue is pre-filling their dicts based on joins they participated in :)11:43
stubSo why is getting the sourcepackage's name causing extra database hits?11:44
kikobecause sourcepackagename's instance's dict doesn't prefill11:44
kikowe just have its id11:44
kikonot the "name" attribute11:44
kikodoes that make sense?11:44
kiko(sortof like a "ghosted" zodb persistent object if you are familiar with that)11:45
kikoso11:46
kikoprint sourcepackagename.get(1).__dict__ just contains {"id": 2232}11:46
=== kiko cries
kikogina needs dbschema11:49
stuboic what you are getting at now :-)11:49
stubI personally would rather destroy the sourcepackagename table and move the field back into sourcepackage11:50
stubIt doesn't gain us anything, and just makes queries hairier.11:51
stub(ditto binarypackagename)11:51
kikothat will get you in trouble with sabdfl11:51
sabdflstub: normalisation tradeoff? may be worth it11:52
stubThere isn't really a normalisation tradeoff - there is only one column of data in the sourcepackagename table so you don't gain anything. 11:53
kikowell11:54
kikoit avoids duplicating the string in sourcepackage/binarypackage11:54
stubupdate sourcepackagename set name='newname' where name='oldname' vs. update sourcepackage set name='newname' where name='oldname'.11:54
kikothat's about it though.11:54
stubIt is a bigger waste of space to maintain the extra table, so that is a furfy.11:54
kikothank god someone knows what a furfy is11:55
stubI just don't think I can spell it :-)11:55
stub(or is that right?)11:55
kikoI had never even heard the word but I assume I know what it is11:56
kikoanyway, if this bothers us enough I'll ask you to kill it11:56
kikohowever, it doesn't invalidate the sql view discussion because hah11:56
kikothere are other tables we want to get data from :-/11:57
stubjust let me know how many views, the queries and how often they need to be updated (I suspect they need to be 'live' and maintained with triggers)11:57
stubOr maybe it would be better to work out how to 'prefetch' all the data. eg. If you did SourcepackageName.select('1==1'), it might suck the entire table in.11:59
stubMmm.... sweet potatoe and tofu daal with couscous....12:02
kikoI think prefetch could be done easily by providing an extraFields argument to query() but you didn't hear that from me :)12:07
kikothe views are just regular create view views -- they are fast enough as it is.12:07
kikothe only reason we're using them is to make sqlobject back12:07
stubok. sounds like a plan.12:07
kikosqlobject happy, sorry.12:08
stubI wonder if you can flag a SQLObject subclass as 'readonly'... Hmmm...12:08
stubI guess it is called 'documentation'12:09
stubsabdfl: Can I revert sourcepackagename and binarypackagename? Can I do it now or wait until after the migration work?12:11
stubkiko: I'll want to give the views a prefix so people don't confuse them with tables. Lowercase 'v'? 'SoyuzView'? 'SView' ?12:16
spivstub: wait until after the migration12:23
kikoI'd rather we suffixed them just with View -- I don't think they are application-specific12:24
lalo'morning12:27
SteveAThe work on re-arranging the source code will be starting very soon.12:28
SteveAWho has outstanding merges?12:31
spivLooks like a merge from stub is being processed atm.12:31
lalooooh. I don't merge my stuff into rf ever since I crashed it a few days ago.12:32
=== lalo goes submit a merge
SteveAlalo: I sent an email to the list yesterday12:32
SteveAlalo: I was very clear that all merges must be submitted by 0900 UTC12:32
laloSteveA: I read it12:32
SteveAand...12:33
lalowell12:33
SteveAtell me why seven people here should be delayed by however long it takes your merge to go through12:33
SteveAsitting around doing nothing productive?12:33
laloif you need to begin, go on - I'll sort out my conflicts later12:34
SteveAok.  don't merge.  we'll start as soon as the pqm queue is empty12:34
sabdfllalo: that's not good teamwork12:34
=== kiko tap taps for pqm
lalowhen I said I was going to submit, I didn't consider that it is already more than 9UTC; and I would have realized that and given up submitting, if you didn't warn me12:36
SteveAapt-get install grandfatherclock12:37
laloso, sorry for thinking out loud :-P I'm still waking up12:37
lalo(as a matter of policy I never commit anything *or* submit merges till I'm sure I'm safely awake)12:39
=== lalo goes read mail
=== carlos [~carlos@69.Red-80-33-181.pooles.rima-tde.net] has joined #launchpad
lalo'morning carlos12:41
carlosmorning12:42
dilysNew bug 2068 for Launchpad/Launchpad: Wishlist: view PQM's pending queue12:42
dilyshttps://bugzilla.warthogs.hbd.com/bugzilla/show_bug.cgi?id=206812:42
elmo_"dilys" ??01:02
lalothat's daf's bugzilla-watching bot01:04
elmo_oh01:04
elmo_I thought it was his new nick ;)01:05
SteveAdaf: ping01:08
dafSteveA: pong01:09
carlosSteveA: could we work with rocketfuel or should we wait for the changes you are doing ?01:16
=== kiko [~kiko@host217-37-231-28.in-addr.btopenworld.com] has joined #launchpad
kikohey daf dude01:18
kikocan you roll the database on at rosetta.wh?01:18
daf"roll"? :)01:19
kikowell every second page generates a programming error traceback01:19
kikoso that's bad publicity for soyuz01:19
dafyou want me to reset it?01:19
kikoyou're missing the "name" changes01:20
kikohttps://rosetta.warthogs.hbd.com/++skin++Debug/soyuz/distros/ubuntu01:20
kikofmi check the uri above01:20
dafdone01:20
kikoinvalid gateway?01:21
kikoor bad gateway?01:21
dafinteresting01:21
dafdidn't run01:21
kikodaf, kick that lunchpad man01:22
daf    IOError: [Errno 2]  No such file or directory: '/home/daf/launchpad-devel/launchpad/lib/canonical/doap/sql.zcml'01:22
dafspiv: was that you? :)01:23
kikoit was sabdfl01:24
kikoso we need to wait now01:24
=== kiko grumbles
dafsabdfl: you broke Launchpad01:25
dafsabdfl: naughty!01:25
kikodaf, maybe just touch the file or somthing?01:25
dafI'll try it01:25
dafnope, doesn't work01:26
=== kiko cries crocodile tears
dafah, got it running01:28
kikoah dude you are da man01:28
kikolet me run my crapola tester again01:28
daf"crapola tester"?01:30
dafis this the wget -r testing thing?01:30
kikoa traceback checker through wget01:30
kikoyes01:31
dafgroovy01:31
kikoyou make me decide it's going to be called crapola 01:31
dafthat explains the request rate01:31
kikoit's as slow as molasses right now though01:31
kikoI'll put it on chinstrap or something 01:31
dafkiko: when you're done, you need to write an input thingy for dilys to show results :)01:32
kikowow that would rock 01:32
kikoyeah01:32
kikoi'll email dilys and you parse the output?01:32
dafexactly01:32
kikowow01:33
kikoyeah01:33
dafwell, you email me and procmail catches it and feeds it to dilys01:33
kiko"page foo just busted, latest checkin was by stub the nasty penguin "01:33
SteveAdaf: how has sabdfl broken launchpad?01:33
dafSteveA: by adding an include in ZCML for a file which doesn't exist01:34
dafSteveA: AFAICT01:34
SteveAok, that will be fixed soon01:34
SteveAdaf: did all the rosetta test failures get fixed?01:34
SteveAwe talked about this a week or so ago01:34
lalodaf: you should hook it to pqm01:35
kikoI'm thinking lunchpad01:35
SteveAwe will be making all launchpad checkins run all tests01:35
carlosthe unittest are working01:35
SteveAall unit tests are passing?01:36
carloswe have a functional test failing (hope will be fixed today)01:36
sabdfldaf: what'd i do?01:36
=== ..[topic/#launchpad:SteveA] : Source code re-arrangement in progress. No merges into rocketfuel until further notice!
SteveAsabdfl: the missed file01:37
sabdfldaf, sorry, it exists in my tree, forgot to add it01:37
SteveAdon't worry about it, it will be fixed when we merge stuff soon01:37
dafsabdfl: no worries01:37
carlosshit 01:37
carlosIt was passing yesterday01:37
carlos5 errors today?01:37
dafsabdfl: by the way, I think "tla tree-lint" would have complained about the file if you didn't add it01:37
dafcarlos: have you modified your database?01:38
dafcarlos: they're affected by that01:38
SteveAwe need an "I want to commit" script01:38
SteveAit should run tree-lint01:38
SteveAand run tests01:38
sabdflyes, it would... does it also give a useful exit code?01:38
carlosdaf: the unittest should not depend on that, right?01:38
SteveAthe unit test should not depend on any zcml01:38
dafsabdfl: I think the --strict option gives you that01:38
=== carlos should leave to have lunch so will be back in time for the daily meeting
carloslater01:39
dafdo we need to have the broken symlinks in lib/?01:40
SteveAdaf: yes01:40
SteveAor, you can install the extra software01:41
SteveAso that the symlinks will not be broken01:41
dafwhy aren't the symlinks created when the extra software is installed?01:41
SteveAif you remove these symlinks then lifeless will complain at you01:41
SteveAand then add them back01:41
SteveAplease ask lifeless about them :-)01:41
dafwill do :)01:41
dafhaving tree-lint perpetually complaining is like having tests that perpetually fail01:42
dafpeople get used to it and don't fix it01:42
SteveAdaf: I'm kinda busy, but please file a bug for this!01:44
dafgood idea01:45
BradBdaf: We've got some problems coming from the rosetta tests. I ran 81 launchpad tests, 5 failures, 8 errors. These seem to be mostly shallow, e.g. test_TranslatePOemplate_mungeMessageID has a few "NameError: name 't' is not defined" which appears to be because of the t = TranslatePOTemplate(context, request) assignment failing.01:53
dafBradB: interesting01:54
BradBIt's possible that it's only on my machine. It's possible that it's a Real Problem though.01:55
dafI'll try and duplicate it01:55
BradBok, thanks01:55
dafhow are you running the tests?01:55
daflalo: wow, canonical.rosetta.ftests.test_poexport.POExportTestCase is really intense01:57
daflalo: it's been running at ~90% CPU for a minute or two01:58
lalodaf: import is worse :-P01:58
daf!!01:58
lalothese ftests suck01:59
dafcan they be improved?01:59
carlosBradB: it's a real problem01:59
laloit's the kind of thing that is a nightmare to test automatically02:00
BradBdaf: python test.py -u02:00
laloI've been beating them in a branch, but nothing concrete came out of it yet02:00
dafBradB: works for me02:01
daflalo: is it the size of the test data?02:01
lalothere's always some greater priority coming up02:01
carlosdaf: not here02:01
BradBdaf: Maybe you have something carlos and I don't.02:01
=== carlos recreating the db
dafBradB: or you have something I don't :)02:02
carlosdaf: I don't have any change that is not already in rocketfuel02:03
lalono, it's probably, to begin with, that it's still on autocommit02:03
dafautocommit?02:03
dafoh, right02:03
dafis that easy to fix?02:03
lalono :-)02:03
carlossame problem after the db refresh02:04
dafcarlos: which test is failing for you?02:04
carlosFailure in example: t._mungeMessageID(u'foo\nbar', [] )02:04
lalobut the *proper* fix is already in my work list02:04
carlosFAIL: test_TranslatePOemplate_mungeMessageID02:04
carloshmm, I think it should be TranslatePOTemplate...02:05
carlosnot POemplate02:05
carlos:-P02:05
dafcarlos: dude, that's a unit test -- it doesn't touch the DB at all :)02:05
carlosdaf: I know, I told you that already :-P02:05
dafno, Rocketfuel is not missing any changes from me02:05
carlosdaf: btw, the functional test fails also with the bug I told you yesterday that has msgid_plural == msgid02:05
dafcarlos: hmmm02:06
dafcarlos: what happens if you run "tla missing -s daf@canonical.com--2004/launchpad--devel--0" in your tree?02:08
carlosnone missing02:09
dafsigh02:09
carlosI'm executing make fullcheck inside rosetta directory02:10
dafI think my patch 451 changed the tests02:10
dafsorry, rocketfuel@canonical.com/launchpad--devel--0--patch-45102:10
carlosI changed the tests somedays ago02:11
carlosfor the line wrap fix02:11
carlosbut that's unrelated to this bug, or are you talking about other change?02:12
dafanother change02:12
dafwhen I added the c-format hilighting02:12
dafI added a new test and changed some existing ones02:12
carloscarlos@frodo ~/Work/launchpad $ tla missing -s rocketfuel@canonical.com/launchpad--devel--002:13
carlosgpg: Good signature from "Patch Queue Manager (Canonical.com arch-pqm) <pqm@canonical.com>"02:13
carlosgpg: Good signature from "Patch Queue Manager (Canonical.com arch-pqm) <pqm@canonical.com>"02:13
carlospatch-42202:13
carlos    get bug browsing by source package under way02:13
carlospatch-46202:13
carlos    Stub files for canonical.launchpad02:13
carlosis that normal?02:13
dafcarlos: so I changed then in patch-451 and you changed them in patch-45302:14
dafI don't have patch-453, so perhaps that broke them02:14
dafI'll star-merge and try again02:15
carlosshould I get the patch-422 by hand?02:15
=== carlos is confused
dafask an arch person02:15
carloslifeless?02:15
dafcarlos: it's 22:15 in Sydney02:17
carlos[lifeless]  idle 00:00:02, signon: Tue Sep 28 02:05:3302:17
carlosI suppose he's online :-P02:17
lifelesscarlos: no, but I haven't time to look at it right now. just ignore it02:18
carlosok02:18
dafokay, the tests fail now02:19
carlosdaf: so it's a problem with my patch?02:19
dafI think so02:19
carlosI changed only the line wrap :-?02:20
carloslalo: could you look at it?02:20
carlosplease02:20
dafno02:20
dafit was the statistics that broke it02:20
dafthe changes to browser.py02:20
carlosdaf: ok, you are talking about the unittest02:20
dafyes02:21
carlosthat makes sense, I forgot to upgrade the tests for the browser.py02:21
carloswhat about the functional test?02:21
carlosdaf: I will fix it now02:21
dafthat should not have been affected02:21
dafcarlos: I'm already fixing it :)02:21
carlosok02:21
carlosthanks02:21
carlosbtw, I will look at it to know how works those tests02:22
dafsure02:22
dafthe problem is this:02:22
dafsince the unit tests can't depend on the database, they use dummy objects02:22
dafDummyPOFile doesn't have the statistics attributes, so the browser.py code that tries to access them fails02:22
carlosoh, you are using stub like objects02:23
carlosok, I get the idea02:23
daf--- orig/lib/canonical/rosetta/tests/test_browser.py02:25
daf+++ mod/lib/canonical/rosetta/tests/test_browser.py02:25
daf@@ -56,6 +56,12 @@02:25
daf class DummyPOFile:02:25
daf     pluralForms = 402:25
daf02:25
daf+    def __init__(self, template):02:25
daf+        self.poTemplate = template02:25
daf+02:25
daf+    def translatedCount(self):02:25
daf+        return 302:25
daf+02:25
daf02:25
daf class DummyMessageID:02:25
daf     msgid = "foo"02:25
daf@@ -83,7 +89,7 @@02:25
daf         self.language_code = language_code02:25
daf02:25
daf         if language_code in ('ja', 'es'):02:25
daf-            return DummyPOFile()02:25
daf+            return DummyPOFile(self)02:25
daf         else:02:25
daf             raise KeyError02:25
daf^^^ the fix02:25
dafby the way, the unit tests should test the statistics code02:26
carlosdaf: Now that you talk about the statistics, we should talk about the policy we will follow to get/update that information...02:26
dafwell02:26
dafif we update the statistics02:27
daf1) when we import02:27
daf2) when we get new translations through the web02:27
dafthen they should always be up to date02:27
dafagreed?02:27
carlosyes02:27
daflalo is working on (1)02:27
carlosbut, when will be updated "through the web"?02:27
carloswith every commit?02:27
dafyes02:28
carlossorry, submit02:28
dafyes02:28
lalobut 2 is only +1/-1, right?02:28
carloslalo: not really02:28
carlosyou can update more than one string02:28
dafdoor02:28
carlosI think our limit is 5 now02:28
laloit doesn't involve actually calling pofile.updateStatistics()?02:29
lalobecause that method is awfully slow, and I don't think that is fixable02:30
carloslalo: we could get the value and increment or decrement it as needed02:31
carlosbut we could get some race conditions02:31
lalough02:31
carloswe could forget that for now02:32
carlos:-)02:32
carlosso don't worry02:32
carloslalo, daf: could you confirm me that the functional tests fails for you?02:35
laloI do02:36
carlosok02:36
carlosthanks02:37
dafcan we avoid race conditions by having atomic database queries?02:46
dafokay, my unit test merge has gone in02:46
dafBradB: a star-merge should fix it02:47
SteveAdaf: what does the channel title say?02:49
SteveAdaf: and what do you mean "atomic database queries?"  we're using transactions.02:50
dafSteveA: sorry02:50
dafSteveA: does changing lib/canonical/rosetta/tests/test_browser.py affect the rearranging?02:51
SteveAjust don't touch it in RF until further notice 02:51
dafSteveA: I'm thinking of ways of accessing the database that avoid race conditions02:51
SteveAwhat race conditions02:52
carlosdaf: the problem is not the access to one field02:52
carlosdaf: is that you could increment the count from the web interface02:52
SteveAdaf: please express what you are saying in terms of multiple transactions02:52
carlosand at the same time import a new .po file so the cache is out of sync02:53
dafI was just thinking of concurrent accesses through the web02:54
carlosdaf: that's easy to fix02:54
carloswith a "select for update" or things like that02:54
SteveAdaf: each is in a separate transaction02:55
carlosyou block the field, you can read it and write into it later and will be blocked for other transactions02:55
SteveAdaf: this is fundamental to web applications02:55
SteveAdaf: do not try to "fix" this, unless you can explain to me clearly what the problem is02:55
dafI won't try to fix it unless I'm sure there's a problem02:56
dafand I'm not sure at the moment02:56
dafI thinking of a situation like this:02:56
dafA: x = (SELECT foo FROM bar WHERE baz);02:57
dafB: y = (SELECT foo FROM bar WHERE baz);02:57
dafA: UPDATE foo SET bar=(x + i) WHERE baz;02:57
dafB: UPDATE foo SET bar=(y + j) WHERE baz;02:57
laloto this point, I believed the plan was to update the stats from cron or something like that02:58
daflalo: I'd like to avoid out-of-date stats if possible02:58
laloI mean - on import AND from cron02:58
dafI suspect that caching the statistics may have been a premature optimisation02:58
carlosdaf: UPDATE foo SET bar =(bar +i) WHERE baz; should work02:58
dafcarlos: I think that would avoid the proble,02:59
dafproblem02:59
carloshttp://www.postgresql.org/docs/7.4/static/dml-update.html02:59
carloslalo: yes, but from the interface, is interesting to know the real statistics when you are translationg03:00
carlos /s/translationg/translating/03:00
dafnot only "interesting", but useful03:00
dafif the statistics say that there are 5 untranslated messages when there are actually 0, you're going to wonder where they are03:01
carlosyeah03:01
lalomaybe we should either uncache the stats, or cache them more?03:02
dafmore?03:02
lalooption 1. leave everything as is03:03
lalo2. uncache03:03
carlosdaf: http://www.postgresql.org/docs/7.4/static/transaction-iso.html03:03
carloswe should use the cache03:03
daflalo: by 2, you mean always calculate03:03
daflalo: right?03:03
carlosthat way any query to see status will be fast03:03
laloyes03:03
dafcarlos: but we don't know how fast it is not to use the cache03:04
dafcarlos: premature optimisation03:04
carlosand we try to update it always that it could change (an import or translation update from rosetta)03:04
dafcarlos: (the root of all evil)03:04
lalo3. add a "state" enum field to POMessageSet03:04
carlosdaf: well, I can tell you that it will not scale, as lalo says, the current rutine to update the cached values takes some time03:05
lalo4. add that field *and* remove *count from POFile03:05
dafcarlos: have we tried optimising it?03:05
carlosand that should be executed every time we get a request...03:05
daflalo: how would this new field work?03:05
carlosdaf: <daf> carlos: premature optimisation <daf> carlos: (the root of all evil)03:05
carlos:-P03:05
=== carlos hides
dafcarlos: if it's fast enough, it doesn't matter if it gets executed each time03:06
lalo(missing, current, updated, in_rosetta, obsolete)03:06
dafsince we already have the cache, let's just try keeping it up to date as much as we can03:06
carlosdaf: sure, but it will be executed with every page request, I don't think it will scale...03:07
laloso currentCount = select count(*) from pomessageset where state = current;03:07
carloslalo: I don't see the "state" enum field, I mean I don't understand it :-)03:07
daflalo: ah, so the point of this new field is to speed up the statistic calculations?03:08
laloyes03:08
dafwell, I suppose it could be useful in other ways too03:08
lalowhat I meant by "cache more" :-)03:08
=== kiko [~kiko@host217-37-231-28.in-addr.btopenworld.com] has joined #launchpad
carloshhmm, well, I think we have something like that already 03:09
carlosif iscomplete == TRUE03:09
lalodo we?03:09
carlosit's translated03:09
kikohey guys03:09
lalocarlos: that's orthogonal03:10
carlosso if iscomplete == TRUE && primemsgid = pot.primemsgid && pot.sequence > 003:10
carlosit's the same03:10
carlospo.iscomplete == TRUE && po.primemsgid = pot.primemsgid && pot.sequence > 003:10
carloskiko: hey03:11
=== daf goes to make food
kikohey big c03:25
dilysBug 2066 resolved: Error if I add a language that has a label from sampledata to my languages03:34
dilyshttps://bugzilla.warthogs.hbd.com/bugzilla/show_bug.cgi?id=206603:34
=== lifeless_ [~robertc@dsl-66.7.240.220.rns01-kent-syd.dsl.comindico.com.au] has joined #launchpad
=== lifeless_ is now known as lifeless
kikolifeless, we're blowing up the repo :)04:23
=== ..[topic/#launchpad:SteveA] : Source code re-arrangement pretty much done.
SteveAthe major changes are now in rocketfuel04:30
SteveAplease merge from RF, and start fixing up things you find are broken in the apps that you're responsible for.04:30
SteveAit is likely that the zcml files will be pointing to the wrong places for the SQL object classes04:30
SteveAAll templates are now in lib/canonical/launchpad/templates04:31
SteveAAll interfaces that we own are now in lib/canonical/launchpad/interfaces.py04:31
SteveAAll SQL classes are now in lib/canonical/launchpad/database.py04:31
SteveA(or, will be once various other merges go through)04:32
carlosso is it better if we wait some minutes until pqm finish all merges?04:33
kikocarlos, I'd wait. it's not even running currently04:33
carlosdaf, lalo: Are you going to fix Rosetta?04:43
=== carlos is ready to do it now, if I don't see anything against it I will start in 5 minutes
laloI suppose :-)04:44
carloslalo: well, we should do it only one time :-P04:44
lalook, do it if you wish04:44
laloI'm doing sth else04:45
carlosok04:45
carlosWhat's imark.py, ikiko.py, etc...?04:56
kikocarlos, temparary crap that is to be consolidated04:58
=== carlos waits more time
carlos:-P04:59
SteveAdaf: ping05:05
dafpong05:06
SteveAthere's some sql classes in rosetta/sql.py that need moving05:07
SteveAthey need moving into lib/canonical/launchpad/database.py05:07
SteveAcan you, or one of your team, do this?  (and fix up the consequences) ?05:07
dafok05:08
lalois POFile one of these?05:12
laloif it is, I ask to be responsible for doing this, as I can do it in the same process as merging my conflicts (which won't even be actual conflicts in this case)05:15
kikojust do it fast05:16
SteveAdaf: and, like, do it now? ;-)05:18
daflalo: why is it diffcult to get the functional tests running without autocommit?05:18
lalodaf: no relation05:18
daflalo: I know there's no relation, but I'd like to know05:19
daflalo: will you take repsonsibility for moving stuff out of rosetta/sql.py?05:19
dafSteveA: what's a vocabulary?05:20
kikono idea eiter05:20
lalodaf: there is no relation between ftests being hard and transactions; I never said there is05:21
SteveAdaf: stub is using them to make widgets for malone05:21
lalothere is, however, relation between ftests being SLOW and transactions05:22
SteveAa vocabulary is an interface to a queriable list of things05:22
daflalo: ok, I got the impression that it would be difficult earlier05:22
daflalo: if it's easy to make the functional tests use transactions, can you do it?05:23
dafSteveA: ok05:23
laloit is difficult too, for completely unrelated reasons :-)05:23
laloyes, that's what I'm doing05:24
dafoh, it *is* difficult05:24
lalomaking ftests - and everything zopeless at once - use transactions05:24
dafthat's what I was asking :)05:25
dafwhy is it difficult?05:25
lalobut now I'll interrupt that to integrate stuff05:25
laloaha, I understand your question now :-) we had a precedence mismatch05:26
kikolalo, dude, land these changes :)05:27
laloI had understood "daf: lalo: why is it diffcult to (get the functional tests running) without autocommit?" and you meant "daf: lalo: why is it diffcult to get the functional tests (running without autocommit)?"05:28
lalokiko: merging in05:28
kikothanx05:29
lalodaf: it's not, per se. But we agreed in the list that, rather than doing that, I'd make zopeless itself use transactions.05:30
lalowhich is what I'm working on.05:31
dafok, and that's difficult?05:34
laloin a 1..10 scale, 4 or 505:35
dafok05:36
dafthat's fine05:36
laloSteveA: should I stick them into database.py for great justice, or use a temp drosetta (or dlalo) module like you guys did?05:41
carlosdaf: I have the import script running with curl, thanks for the idea, works perfectly05:41
dafcarlos: nice05:42
lalothere is the problem of integrating RosettaProduct with the canonical [:-)]  Product class05:42
kikoyes05:43
kikodont worry stuff it into ilalo or whatever05:43
laloshould I touch "your" code and do that?05:43
kikoand we'll sort it out (steveA says at least ;)05:43
kikonah, keep rosettaproduct around but in ifoo.py05:43
kikoand we'll have to fix up the dupes after that05:43
lalook05:44
daflooks like I'll be offline for a while -- does anyone need something from me urgently before that happens?05:44
laloand rename it to Product so that it conflicts, or leave it RosettaProduct so that it's easy to find?05:45
dafleave it for now, I think05:46
carlosdaf: nothing from Spain :-P05:46
dafcarlos: ok05:46
kikolalo, leave it05:46
dafLondon? Brazil?05:46
kikobrazil wants a pillow05:46
lalodaf: I'm fine :-)05:47
SteveAdaf: how long for?05:48
dafSteveA: no more than an hour or two, I think05:49
SteveAok, see you later05:50
laloSteveA: I assume helper classes like RosettaLanguages are going along06:03
kikolalo: only SQLBase-inheriting stuff for now, I think06:05
kikolalo, and hold off from mergeing anything else until this mess is sorted out06:05
lalohmm. where do I leave RosettaLanguages etc then?06:07
kikowhat sort of class is it?06:08
laloset-of-all-foo06:08
laloan utility to fetch Foo's06:09
kikoit will probably go as well, but it can be later06:09
kikoI'm going to suggest we have multiple database modules at least 06:09
lalowell, it'd be easier if it went all at once :-/06:12
lalootherwise some integration work gets done twice06:12
kikohave you actually seen how hard the tree has been whacked?06:13
laloyes :-)06:16
laloprecisely, I'd rather only have to recover from sth like that once ;-)06:17
kikomoving a couple of classes later shouldn't be hard, in comparison06:23
lalowhat did other subprojects do with similar classes?  I notice most sql.py's are gone06:25
lalohmm06:28
laloI can't test my changes, because yours don't actually import06:29
SteveAI think RosettaLanguages should go in database.py06:32
lalothanks06:32
lalodo you want me to commit the important part (actually moving the classes) so that you guys can resume work, while I chase the orphan dependencies?06:35
lalothat part is done, I can commit right now06:35
SteveAlalo: don't check in now06:37
SteveAupdate from rf and see what mark has moved06:37
lalook06:37
=== justdave [~dave@24.247.63.44.gha.mi.chartermi.net] has joined #launchpad
-dmwaters_(dmwaters@dmwaters-gentoo.staff.freenode)- {global notice} Hi all! You guys can blame this netsplit on me.:) I restarted the firewall on that server, and didn't realize it wasn't running to start with, so it dropped all active connections.... sorry about that.... Thank you for your patience, and thank you for using freenode!06:45
laloI'm up to date now06:48
kikonow the *real* trouble begins07:03
carloskiko: I have already troubles with the local changes I did this morning...07:04
carlosso, I'm not scared :-P07:04
kikowell07:04
laloSteveA: what about stuff that are not classes, like our pet ugly hack personFromPrincipal?07:10
=== lalo ready to commit
SteveAhow is that a hack?07:13
SteveA;-)07:13
SteveAthat should live in lp for now07:13
SteveAit is an application component07:13
SteveAor, an application function07:13
SteveAor adapter07:14
SteveAor whatever07:14
lalowell, I'll leave it with the rest of the stuff then07:14
laloyou can sort out a "helpers.py" module later if you wish :-)07:15
=== lalo merges AGAIN before submitting his stuff
=== npmccallum [~npmccallu@69-162-252-7.ironoh.adelphia.net] has joined #launchpad
dilysNew bug 2069 for Launchpad/Launchpad: lib/canonical/database/configure.zcml should go to hell07:35
dilyshttps://bugzilla.warthogs.hbd.com/bugzilla/show_bug.cgi?id=206907:35
spivlalo: Um, you didn't update launchpad.database.__init__ to import dlalo ;)07:37
lalooops.  I lost that when I used "undo" before updating from RF07:38
laloI restored only dlalo from the undo :-)07:39
dilysNew bug 2070 for Launchpad/Soyuz: Update the Wiki Documentation07:40
dilyshttps://bugzilla.warthogs.hbd.com/bugzilla/show_bug.cgi?id=207007:40
laloI'll take a few hours break, then when you guys are done beating this stuff till it imports, I'll beat Rosetta till it runs again -- ok?07:41
lalo("runs" defined as "accessible from the web, tests pass, scripts run")07:42
=== justdave [~dave@24.247.63.44.gha.mi.chartermi.net] has left #launchpad ["Poof"]
laloI believe daf and carlos will soon be past their working hours anyway07:43
=== justdave [~dave@24.247.63.44.gha.mi.chartermi.net] has joined #launchpad
carloslalo: but I will be online if you need anything from me07:44
lalothx07:44
carlosI have still about two hours of work07:44
lalowell07:45
laloif you want to merge from RF and start fixing orphan imports and references, have fun :-)07:46
carlosbut did they finished all changes?07:47
=== carlos has some conflicts waiting for the end of the merge to be able to fix it
carlosWorking on a unrelated part, a script that does not needs anything from launchpad 07:47
lalofix the mess or leave it for me, either way it's fine with me.  Now I'm leaving, bbl.07:51
carloslalo: later07:54
dilysNew bug 2073 for Launchpad/Soyuz:  James Troup(elmo) as Soyuz Tester/Guide08:03
dilyshttps://bugzilla.warthogs.hbd.com/bugzilla/show_bug.cgi?id=207308:03
dilysNew bug 2074 for Launchpad/Soyuz: Create the Postgresql Views for Soyuz App08:08
dilyshttps://bugzilla.warthogs.hbd.com/bugzilla/show_bug.cgi?id=207408:08
cprovdilys: sorry, why are you in CC by default ?08:11
carloscprov: he wants to have full control08:12
carloscprov: he's THE big brother!!08:12
cprovcarlos: aha08:13
cprovdilys: anyway, sorry for the spams :) 08:14
dilyscprov: no problem08:18
dafcarlos: it's "she", not "he" :)08:19
carlosdaf: dilys is a girl name?08:20
carlosdilys: sorry :-P08:20
dafcarlos: yep08:20
carlosdaf: man, that sounds like she's your girlfriend :-P08:20
dafcarlos: are you jealous?08:21
carloskiko, cprov, SteveA: Are  the rocketfuel changes over?08:21
carlosdaf: not really :-P08:21
=== carlos is really loves python, with a 90 lines script I'm downloading and uncompressing all sources that are using cdbs, and I'm sure there should be a way to reduce the line numbers
cprovcarlos: not yet ...08:24
carloswell, please, forget the "is" in "carlos is really"08:24
carloscprov: ok08:24
kikocarlos, no, the world is falling on my head08:39
carloskiko: go go go08:40
=== lalo lends kiko a helmet
kikonow it's raining scissors08:57
=== justdave [~dave@24.247.63.44.gha.mi.chartermi.net] has joined #launchpad
=== stub [~stub@dsl-246.248.240.220.dsl.comindico.com.au] has joined #launchpad
=== stub [~stub@dsl-246.248.240.220.dsl.comindico.com.au] has joined #launchpad
=== lal1 [~lalo@200-102-074-223.paemt7014.dsl.brasiltelecom.net.br] has joined #launchpad
=== lal1 [~lalo@200-102-074-223.paemt7014.dsl.brasiltelecom.net.br] has left #launchpad []
!lilo:*! Hi all. Please welcome sysfault's #philosophy channel....if you are interested in such things, please stop by and look in!11:31

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