=== stub [~zen@dsl-] has joined #launchpad
=== stub [~zen@dsl-] has joined #launchpad
=== stu1 [~stub@dsl-] has joined #launchpad
=== kiko [~kiko@200-206-134-238.async.com.br] has joined #launchpad
=== stu1 is now known as stub
=== SteveA [~steve@adsl-213-190-44-43.takas.lt] has joined #launchpad
=== lulu [~lu@host217-37-231-28.in-addr.btopenworld.com] has joined #launchpad
=== sabdfl [~mark@host217-37-231-28.in-addr.btopenworld.com] has joined #launchpad
lifelessstub: around10:46
sabdflmorning everyone10:55
sabdfltime for a little launchpad love10:55
stublifeless: pong10:55
sabdfldaf, rosetta.warthogs.hbd.com seems borked in malone, db errors everywhere11:02
dafsabdfl: interesting11:04
sabdfldaf: can you see the cause?11:04
daflooks like it might be related to some work spiv was doing yesterday11:05
dafProgrammingError: ERROR: current transaction is aborted, commands ignored until end of transaction block11:05
sabdflalso, earlier on it was asking me for a username and password, which should i use on that server?11:05
dafyour username is your email address, assuming there is one for you in the sample data11:05
dafthe password is also set in the sample data11:06
daflet me check...11:06
daflooks like you have an email address, but no password11:07
stubdaf: I've seen that error before - if you get a database exception (such as you violated a key), the connection gets in a weird state and the server needs to be restarted. 11:07
dafyou can use test@canonical.com, password "test"11:07
sabdfldaf: thanks11:08
stubdaf: I don't know if it sqlos, SQLObject or Zope3 yet - I'll be chasing it soon unless someone beats me to it.11:10
dafstub: ok, I don't think spiv's up yet, so i'ts probably up for grabs :)11:10
dafstub: do you know about the changes spiv made?11:11
stubHe patched the publish routine didn't he? I don't know the reason he needed to11:11
stubI don't think it is related to the ProgrammingError exception though - that is an older bug.11:12
dafright, the problem we were seeing was that Zope was seeing stale DB data11:12
dafso spiv added an explicit transaction abort11:13
dafwhich apparently fixed the problem11:13
stubWas this stale data being retrieved from sqlobject/sqlos?11:13
dafnot sure11:14
dafwell, I assume it was11:14
dafsince I'm pretty sure it wasn't being retrieved from anywhere else11:14
dafhttps://bugzilla.warthogs.hbd.com/bugzilla/show_bug.cgi?id=2005 is related, but I don't think it's the change in question11:15
stubI thought I'd fixed something similar with sqlos (by destroying the connection pool in the publish method, which sounds a similar fix to what spiv needed to do. Maybe my patch has been lost?)11:15
dafit's possible11:15
daf(that the patch was lost)11:15
dafcan you check?11:15
stubIts still there at the top of beforeTraversal in publication.py11:17
stubI'll suck down spiv's changes as soon as I have my new arch archive online to see what he needed to add.11:19
stub(I think this was discussed on the launchpad@ list while I was 'away'11:19
dafwell, the change I'm thinking of was something spiv did yesterday11:20
dafactually, forget that11:21
dafthe change I'm thinking of *was* the patch at #200511:21
dafand it hasn't been merged to rocketfuel11:21
stubHmm... actually... the ProgrammingError should be impossible if my fix is being invoked, as the connection object should not be reused in different requests. I suspect my fix is not being called :-(11:21
dafit's only been applied to the alpha server as a workaround11:21
dafI can test that11:22
dafwhere's the fix, exactly?11:23
daf(I can't find a method called "publish")11:28
stubJust above spiv's patch - lib/canonical/publication.py in beforeTraverse11:29
dafhmm, now that I've restarted the server the problem doesn't seem to occur11:32
dafok, now I'm seeing "AttributeError: 'NoneType' object has no attribute 'id'11:34
=== carlos [~carlos@67.Red-81-32-123.pooles.rima-tde.net] has joined #launchpad
dafhrm, things are being weird11:40
dafhi carlos11:40
carlosdaf: so we launch today Rosetta?11:44
dafthat's the plan11:45
luludaf: are you removing things like:11:46
luluJoin translation team, Start transaltion effort in https://rosetta.ubuntulinux.org/rosetta/search11:46
lulugives an error11:46
luluto reproduce: I searched for firefox11:47
daflulu: oops11:47
dafI'd forgotten about the "advanced" search page11:47
luluin advanced search, search results we ahve some dummy data still11:47
luluok - could you sort that before go live?11:47
dafyep -- best thing is to disable it for now11:47
dafI'll file a bug about implementing it11:48
luludaf: perhaps do a check of all pages of functionality you are launching to double check they are all working.11:48
daflulu: right11:50
daflulu: thanks for finding that11:50
luludaf: no problem. The about page needs some info - I'm finding some for you...11:51
luludaf: have you written the announcement yet?11:51
luludaf: we also need rosetta@ubuntulinux.org mailing list set up11:53
carloslulu: Will we create accounts into rosetta to anyone that ask for it?11:56
carlosI'm talking about the alpha11:56
luludaf: oh - I see you have rosetta-testers for now - that should do the trick and shows it's still an Alpha.11:56
stubdaf: Yes - the problem appears after you have violated a database constraint somehow, and stays around until you restart (as restarting the server resets all the database connections).11:59
=== carlos goes to have breakfast
lulucarlos: why? do you want to restrict it only to those who are on your testing list?12:00
ddaaspiv: did I mention to you how I hate twisted?12:08
=== lalo [~lalo@] has joined #launchpad
ddaaspiv: I need your help for a quick crash course to twisted-proof subprocess handling.12:20
spivddaa: Ok... what do you need to know?12:21
spivOr what problem are you having?12:21
ddaaSomething totally weird like being unable to fdopen a fd we just created with pipe.12:22
ddaaWe decided to use the twisted process handling when the environment has been twistedized.12:22
ddaaSo as to avoid all the grief. Twisted assumes that everything going on is using it's process and thread stuff, so we'd rather make it happy312:23
spivddaa: Are you passing the right mode to fdopen?12:23
lulucarlos: Rosetta Alpha - people won't be able to create their own accounts. They will on the Beta when everything is integrated.12:24
ddaaYes I'm passing the right mode. The problematic code is _working_ it only breaks on production in a twisted env...12:24
spiv(i.e. os.fdopen(os.pipe()[1] ) will fail, but os.fdopen(os.pipe()[1] , 'w') will work)12:24
spivOk, that's weird. :)12:24
spivWhere's the code?12:24
ddaaWe had too much of that insanity.12:25
spiv(I've never heard of something like this before)12:25
ddaaIt's just a bad idea to do things non-twistedly when twisted has pissed all over the place.12:25
ddaaWell, it's happening with some pretty ugly stuff... ya know the thread-that-reads-on-a-bloking-pipe12:26
ddaaBut it would be simply least risky to just do things the twisted way.12:26
ddaa1. I would like to know what it is in twisted that do plenty of things with signal handlers, thread processing whatever which might cause grief.12:27
spivTwisted doesn't nothing that should affect threads.12:28
ddaa2. How can I detect that the environment has been twistized? So I could use twisted process handling in that case, and only in that case.12:28
spiv(There are some things in Twisted and libraries for Twisted that spawn threads, and manage their own thread pools etc, but that's the extent of it)12:29
ddaaOkay. I take your word for it.12:29
ddaaApparently, twisted _do_ things to the environment which cause my ugly subprocess handling to die in horrible ways.12:30
spivSignal handling happens at reactor.run() time.12:30
spiv(unless you pass installSignalHandlers=0 to it)12:30
spivIt installs handlers for:12:30
ddaaour problem occurs within12:31
=== npmccallum [~npmccallu@69-162-252-7.ironoh.adelphia.net] has joined #launchpad
spivSIGINT (unless there's one already), SIGTERM (always), SIGBREAK (if it exists), and SIGCHLD (ditto)12:31
ddaais that within reactor.run()?12:31
spivYes, that won't happen until the reactor has already started.12:32
spivOh, actually...12:32
spivYou could call that at any time.  What's the error you get at that line.12:32
ddaaNothing at that line12:32
ddaaThe error happens much lower in the stack in pyarch process handling code.12:33
spivSo, if that's the first call to that, that may cause a call to reactor._initThreadPool()...12:33
ddaaWhen I do things with the evil-blocking-pipe12:33
spivWhat's the last line of the traceback, and the error?12:34
ddaaThe pb is that this was the highest visible line in the backtrace lifeless gave me. 12:34
spivOk, but what's the lowest? :)12:35
ddaaexceptions.OSError, [Errno 9]  Bad file descriptor12:35
ddaaself.readfile = os.fdopen(read_end, 'r', 0)12:35
ddaaThe line just before that is:12:35
ddaaread_end, self.write_end = os.pipe()12:35
ddaaDude, I create a pipe, fdopen it and it barfs!12:36
ddaaI got another backtrace when closing self.readfile12:36
spivWhat's the value of read_end?  Perhaps you've run out of fds in that process?12:37
spivThe reactor does the exact same thing internally for it's "waker".12:37
ddaado not have the value of read_end...12:38
spiv(See _UnixWaker in twisted/internet/default.py if you're curious)12:38
ddaanot going there unarmed...12:38
ddaaThe problem here _might_ be a fd leak.12:39
spivHmm, although that should raise an OSError at the os.pipe call.12:39
spiv(I just tested)12:39
ddaaBut then it would not explain the error on close.12:39
ddaaSo, at this point, I just want to avoid doing things twisted is apparently not prepared for.12:40
carloslulu: yes, that's why I was asking because I thought that, Alpha -> only accounts we created, Beta -> everyone12:40
ddaaWe already had quite a lot of grief previously (remember at Oxford?)12:40
ddaaAnd know it breaking prod.12:41
spivWell, I honestly don't know of anything in Twisted that interferes with this stuff.12:41
spivIn fact, Twisted internally relies on doing the exact same thing.12:41
ddaaSo, please, just help me to figure out when the environment has been touched by twisted.12:41
ddaaSo that the code would use twisted when run in a twisted program, and would use something else in other cases.12:42
spivSo unless there's some sort of bizarre race in your threads where another thread somehow can be closing the wrong fd, which seems unlikely, I don't know what's causing that problem (I don't know how to reproduce that behaviour even if I'm trying to...)12:42
spivOh, is this code running with my evil hack from Oxford?12:42
ddaaNo. Your evil hack was only something for the test suite, and it did not work anyway.12:43
spivOk :)12:43
ddaai separated the test suite in a twisted part and a pyarch part.12:43
ddaaI do not want to know what's the cause of the problem.12:44
ddaaI just want to use twisted when twisted is being used already.12:44
ddaaSee what I mean?12:44
spivYes, I'm just looking that up12:44
spivThe .running attribute of the reactor can tell you if the reactor is running.12:45
ddaaOnce I have that bit, i can dig up the "how to spawn coprocesses" part myself.12:45
ddaaHow can I find the reactor?12:45
spivfrom twisted.internet import reactor12:45
ddaaIt's a module-global object?12:46
spivA known design flaw, but convenient.12:46
ddaaGood for my purposes.12:46
ddaaI'll try reproduce the pb and do the twisted things, then. Thanks.12:47
spivYou're welcome.12:48
spivI'd love to know what the problem is, it's very odd :)12:48
=== lalo [~lalo@200-102-070-253.paemt7003.dsl.brasiltelecom.net.br] has joined #launchpad
carloslalo: hey!01:06
=== lalo replaced the motherboard and stuff remains borked
lalothat leaves two possibilities; either it's my cpu (that would suck, as it's not in warranty), or the hardware is now fine but the libc is borked due to having been compiled on faulty ram01:08
lalomeanwhile, gossip and lostirc to the rescue01:09
dafhi lalo01:12
dafgood to have you on IRC again01:12
=== cprov [~cprov@] has joined #launchpad
lifelesssqlos questions...01:22
lifelesshow do I say 'NOW()' to sqlos01:22
lifelessand how do I say '1 day' to an interval field.01:22
daflifeless: 'NOW' for 'NOW()'01:22
lifelessthis is in an assigmnet:01:22
lifelessself._sync.processingapproved=NOW 01:22
lifeless ?01:22
dafuse the string 'NOW'01:23
lifelessoh, the string.01:23
=== SteveA goes to get lunch
=== mdz [~mdz@69-167-148-207.vnnyca.adelphia.net] has joined #launchpad
carlosstub: do you think we should add indexes also for foreign key or with inner joins is enough? (talking about improving the speed)01:27
spivlifeless: A quick google suggests 'import sqlobject.sqlbuilder; sqlobject.sqlbuilder.SQLConstant("INTERVAL 1 DAY")'01:30
=== lalo [~lalo@200-102-070-253.paemt7003.dsl.brasiltelecom.net.br] has joined #launchpad
lifelessspiv , oh ewww. so much for domain & data separation01:31
spivThere might be a nicer way using mxDateTime's DateTimeDelta or something like that.01:32
spivOr even datetime.timedelta(1)01:33
cprovspiv, stub: hi guys !01:34
laloI seem to remember me and Daf wasting a good half hour in Oxford trying to find what kind of datetime objects sqlo uses01:34
laloI think it was mx01:34
spivlalo: It has "converters", so in theory it can support multiple kinds.01:34
spivGlancing at the source though, it doesn't have any sane support for intervals, though, just absolute dates :/01:35
laloin theory :-) I don't know whether these converters are recent enough to know about the datetime module01:35
laloanyway, the reason we were looking was because we wanted to know what objects it would *return*01:35
spivlalo: They are.01:36
spivBut not smart enough to know about datetime.timedetla.01:36
spivdatetime.timedelta, rather.01:36
lalodaf: fix, part 1 of 3, done; if we're importing a pofile we already know about (in the db), and the db row has pluralform info, we use that01:38
lalopart 2 (being done now) is, if we don't have that, try the languages table; part 3 is scream bloody murder if we don't have either01:39
lifelessspiv: so how do I protect a form so only I can set a specific field01:41
carloslalo: you need to take care of a fourth case, if the default plural form is not correct for that .po file01:41
lalocarlos: what kind of care?01:42
carloslalo: the error should say that error is that the plural forms used on that file are not the same that the header info01:42
carlosor the table info so we can fix it easily01:42
lifelessspiv: that interval 1 day thing isn't working01:42
carloswhere table == Language table01:43
spivlifeless: Try SQLConstant("INTERVAL '1 DAY'")01:43
lalocarlos: ouch. That would be... rather involved :-P01:44
spivlifeless: I'm currently working on making SQLObject support timedelta, it doesn't seem too hard...01:44
lifelessstill not setting it01:44
spivTry just the literal string? :/01:44
spivlifeless: You mean protect a field in a form in zope?  I'm not sure, SteveA would know though...01:46
lalooooh, found a bug01:47
lifelesswell, not web form, the business logic level. Sync.enable() can only be called by me01:47
lalooooh, found *another* bug01:50
spivlifeless: andrew.bennetts@canonical.com/sqlobject--interval-support--0 should allow you to use datetime.timedelta(1)01:52
spivlifeless: Only very lightly tested so far, though.01:52
lifelessand 1 is one second or 1 day ?01:53
spiv1 day.01:53
spivargs for timedelta are days, seconds, microseconds.01:53
lifelessok, cool01:53
daflalo: I have a couple more interesting errors that happened overnight01:53
carlosdaf: I'm testing the indexs part, I think with 3 indexs will be enough for the import 01:54
dafcarlos: yeah?01:55
dafcarlos: what are they?01:55
carlosCREATE INDEX pomsgidsighting_index_inlastrevision ON POMsgIDSighting (pomsgset, pomsgid, inlastrevision);01:55
carlosCREATE INDEX pomsgidsighting_index_pluralform ON POMsgIDSighting (pomsgset, pluralform);01:55
carlosCREATE INDEX pomsgset_index_primemsgid ON POMsgSet (potemplate, pofile, primemsgid);01:55
carlosthat's based on postgresql logs01:55
dafdo you have any information on how they affect performance?01:55
carlosdaf: I'm doing some tests now01:56
carlosmy first test yesterday save me one minute importing the .pot file01:56
dafyou gave me a link to some Postgres doc -- can you paste that again?01:56
lalodaf: good thing all pofiles we have are imported, because the header we're storing in newPOFile was absolutely BS and it would have breaken the exporter01:56
spivlifeless: Ooops, give me 2 minutes before testing that :)01:57
lifelessspiv: ah ha01:57
lifelessI'll get a drink then shall I01:57
daflalo: don't we have a but open on that?01:57
daflalo: s/but/bug/01:57
=== daf awaits the inevitable Beavis and Butt-head joke
lalodaf: do we?01:57
spivlifeless: Ok, working version mirroring now :)01:58
dafI thought we ded01:58
dafer, did01:58
lalodude, get some caffeine :-P01:58
daflalo: just made some Earl Grey :)01:59
dafcarlos:  a01:59
dafcarlos: thanks02:00
carlosdaf: :-P02:00
spivlifeless: My branch lets you set values, but don't expect to get sane values back from reading that field yet :/02:01
dafspiv: aren't you the SQLObject maintainer already?02:01
lalough. I need to recreate the database each time I want to test this, because zopeless doesn't abort :-/02:02
spivdaf: Hah.02:03
lifelessspiv: its still coming across as null.02:03
lifeless  IntCol('frequency', dbName='syncinterval', default=None),02:03
lifeless        # WARNING: syncinterval column type is "interval", not "integer"02:03
lifeless        # WARNING: make sure the data is what buildbot expects02:03
lifelessI blame you.02:03
lalocool, there is no case 2. The database will always have info (from an old version or from languages table) due to newPOFile()02:03
spivlifeless: Oh, d'oh.02:04
spivlifeless: Change that to DateTimeCol.02:04
laloso either case 1 (the database knows the info) or 3 (it doesn't, scream loud)02:04
spivIncidentally, there's been a new upstream release of SQLObject, finally.02:05
dafoh, 0.6?02:08
lalois that good? :-)02:08
spivdaf: yeah.02:08
spivAlthough we're basically running it anyway... we're using a recent SVN snapshot.02:08
spivBut it's a sign that maybe upstream will get around to doing something about my bug reports one day ;)02:09
dafsince we're basically including the source code in RF, I don't see any pressing need for me to update my packages, then02:09
lifelessspiv: thank thee.02:10
spivthou art welcome ;)02:12
=== carlos goes to have a shower
=== debonzi [~debonzi@] has joined #launchpad
=== stub [~stub@dsl-] has joined #launchpad
dafstub: I haven't seen any cache deletions happening yet02:26
dafbut "yet" is about 3 requests02:26
sabdfldebonzi, cprov: good work on making the soyuz tables visible02:26
sabdflfor malone testing, we need some more sample data of packages, do you guys have any scripts that can populate the test db with a bunch of source packages and versions?02:26
stubdaf: You lost me. You mean you stuck a debug message in the beforeTraverse and that fix is not being called?02:29
dafstub: exactly02:29
stubSteveA: ping02:29
dafstub: well, it gets the key, but they key is not in the cache02:29
dafstub: SteveA said he was having lunch02:30
stubdaf: Hmm... maybe I'm just using the wrong key then? Can you dump repr(the_connection_cache_mapping) to see what is in it, and more importantly, what the keys are?02:31
stubIt was working when I nuked the entire dictionary, but that isn't thread safe.02:31
dafeach request seems to have a different key02:31
daf(16386, u'launchpad')02:31
daf(32771, u'launchpad')02:32
cprovsabdfl: tks, we still working to have better results til sprint .02:32
dafstub: oh, ok, I'm seeing a deletion now02:33
dafstub: the error seems to occur when the cache deletions do02:33
dafstub: emphasis on "seems"02:33
dafI'll try dumping the entire cache mapping02:34
stubdaf: You will only see a deletion the second time that thread handles a request. I think there are 4 threads by default,  so you might not see one until you have loaded 4 or 5 pages.02:34
sabdflcprov: what's the best way for us to get package data in for a couple of thousand packages?02:35
dafstub: right, that explains what I've been seeing02:35
=== stub wonders if z3 can be run in single thread mode like z2's '-t' command line argument
=== stub reboots again
stubI think I've got this wireless nutted so it will come up on a reboot :)02:37
cprovsabdfl:  I hope spiv is working on a DEB importer or something related 02:37
cprovsabdfl: a extra component to get information of deb packages and insert automagicly(?) on DB02:38
=== stub [~stub@dsl-] has joined #launchpad
lifelessstub: so can you approve some of those projectproduct things?02:41
dafok, the cache deletions seem to be working after all02:41
dafspiv: spiv is doubting that deleting the adapter is rolling back the transaction02:42
dafstub: that was supposed to be directed at you02:42
=== daf is having a bad finger day
stubdaf: We can explicitly abort the connection at that point if we want (before we nuke it from the cache? spiv's fix might be running to late?)02:44
stublifeless: I can't spell, and I get to approve them??02:44
lifelessstub: yes. the only thing *I* care about is the project & product name so I can enter them into launchpad.02:45
lifelessthat will probably make mark unhappy though, as his beloved shortdesc & description (whats with that?!??) will still need to be fleshed out.02:46
stubIn the name of the senate and people of rome... *thwack*02:46
lifelessstub: well.. I just /need/ to be able to put them into the system such that I can associate Sync's to products, and then run the syncs.,02:48
stubSsh... I'm reading the wiki page...02:48
lifelessstub: ok, sshing. I've emailed mark asking to be able to ignore the desc & shortdesc, but haven't heard back.02:50
stublifeless: So this is where we have to get the project -> product mapping right. I'd assumed bison was part of the GNU project, but you think it is part of its own. Isn't this getting very political?02:51
dafstub: I was worried about this happening :(02:51
lifelessstub: not my problem.02:52
lifelessmy problem is getting cvs converted to arch.02:52
spivDoes it really matter if the mapping isn't quite right?  We can update them later, surely?02:53
lifelessNot meaning to be a 'boundary drawing arsehole' .. just already about 20 imports behind.02:53
lifelessspiv: given the choice, I'd 100% ignore the projects and products until someone has time to add them and reattach the syncs.02:53
stubI'm not sure I can do that. I don't understand what it means when a package has a package or product of "". I also don't know what half of the packages are, and those I do recognize I'm not sure what the project should be :-( 03:01
stubDoes the project name get encoded anywhere permanent in arch (such as the repository name) that we can't fix without rebuilding?03:03
lifelessstub: package comes from the debian package name03:07
lifelessproject "" means 'same name as the package'03:08
lifelessproduct "" means 'same name as the package'03:08
lifelessthe project name is used as the arch archive name (project@arch.ubuntu.com) except when I decide otherwise.03:08
lifelessand you cannot fix that: these are one-shot.03:08
lifelessexcept when there is a very very very good reason, and /no one/ accessing it.03:09
lifeless(accessing it - ever)03:09
lifelessstub: if you can't do it, then I need Mark to be told that: he was trying to delegate it out of being his problem...03:09
stubCan a product move between projects, ever?03:10
lifelessI don't know: there are no use cases for these object.03:11
lifelessdaf may know as rosetta directly exposes these all the time.03:11
laloit is not immutable03:12
lifelessAIUI every aspect of launchpad depended on these objects.03:12
stubAn example would be mod_python, which after being developed for a few years became an Apache project.03:12
stubWhere nothing changed except their web server and their logos03:12
lifelessstub: again though: this isn't terribly relevant: we want to know what they should be to perform the imports /today/.03:12
lifelessif someone changes location in the arch world, they just tag across.03:12
lifelessthat will be fine:: once we get arch available to the project.03:13
stubCool. So the project looks quite changable - we just need to implement that if it becomes a problem.03:13
lifelessthus my "ignore them all and just do the imports' wish..03:13
dafstub: "ever", sure03:14
=== lalo cries
=== stub had also assumed that product names would be changable too
lalodone recompiling the libc, and stuff remain broken :-(03:15
dafthat leaves the CPU, then?03:15
lifelessstub: I presume its all mutable. this is just hte initialdata load.03:16
stubRight. So what is all the fuss about then?03:16
laloI'll try downgrading it03:16
=== stub ducks
lalo(the libc, not the cpu :-P)03:16
stublifeless: I'll go through and approve the ones I recognize, and reply-all to your email saying if they need approval we really should get a package maintainer or someone with the right knowledge to become involved.03:18
laloah well, firefox 1.0pre runs03:19
laloYAY, gaim runs too! :-D my system is fixed03:20
=== lalo [~lalo@200-102-070-253.paemt7003.dsl.brasiltelecom.net.br] has joined #launchpad
dafso it was a software problem all along?03:21
lalono - a combo :-)03:22
lalothe libc was broken because it had been compiled on faulty ram03:22
laloI've seen that before03:22
dafand you wonder why we say that Gentoo is crack :)03:22
lalowhat if a debian maintainer gets faulty ram? :-)03:23
laloat least I got bummered due to my own mistake, not someone else's03:24
dafonly teasing :)03:24
laloooh, firefox1 knows about gnome and gconf03:25
laloit just told me "it's not set as my default browser" :-P I never thought I'd see this message outside windows03:25
dafstub: ProgrammingError: ERROR: column sourcepackage.name does not exist03:42
stubYer - I know that one. 03:42
spivstub: I'd be interested in your thoughts on my latest patches for #2005.03:43
stubdaf: If you want to test Malone, click on the products link on the front page and use that (or the bug list). Sourcepackage browsing is buggered atm.03:43
dafthey seem to be working fine03:43
daf(the patches)03:44
stubspiv: What is the thread issue being discussed in the comments of the SQLObject patch (seems to be about returning a list rather than an iterator from the database)03:47
spivI'm not sure, exactly :)03:48
spivI think the concern is that SQLObject can have multiple active cursors for a connection alive under some circumstances.03:48
spivSo if we have lazy iterator in one thread, and another releases the connection, then the lazy iterator will break.03:49
spivHence the listification.03:49
spivPerhaps a safer change to SQLObject would've been to wrap the result in iter(...), rather than strip the list(...).03:49
stubspiv: So IZopeSQLConnection(newconn()).transaction() registeres the connection with the transaction system, starting the database transaction at the same time?03:49
spivI think so :)03:50
stubspiv: The connections shouldn't be shared between threads. It might be that the cursor is being reused?03:51
spivMy basic thinking was that if we use the Transaction object that SQLObject can give us, that's a better fit for the model Zope expects.03:51
spiv(i.e. a web request gets its own transaction)03:51
=== lulu [~lu@host217-37-231-28.in-addr.btopenworld.com] has joined #launchpad
stubSo the sqlos lazy updating stuff is now useless?03:52
stub(as in unnecessary)03:52
=== ddaa [~david@nemesis.xlii.org] has joined #launchpad
spivI suppose so, except as an optimisation maybe.03:53
spiv(to avoid unnecessary round trips to the DB)03:53
lifelessstub, spiv - enterprise patterns applies here :)03:53
lifelessAPE probably has it already too...03:53
stubI don't know too much about the SQLObject level stuff, and haven't dealt with that layer.03:54
spivstub: Well, you haven't pointed out any reason why it's obviously stupid, which was my main concern ;)03:58
dafI'd be interested to hear what Steve thinks03:59
stubspiv: Seems fine actually04:03
SteveAhi stub04:10
SteveAis there still a problem with transactions etc?04:15
stubYes - to do with database connection ending up in a 'you are not in a transaction so I'm going to just raise exceptions' state, which shouldn't be happening since we are supposed to be creating a new database connection every transaction (the last time we fixed sqlobject/sqlos).04:18
stubSounds like spiv fixed it though - I havn't tested myself yet.04:18
stubOoh... just got an announcement that SQLObject 0.6 has been released04:19
stubfrom whats new: "n 0.5.3: some small bug fixes, and an important fix when iterating over  selects in threaded environments" <-- spiv04:20
spivstub: Hmm!04:39
SteveAcan we have a launchpad meeting tomorrow?04:49
dafSteveA: I don't see why not04:50
spivstub: Hmm, that change is the one my patch backed out04:50
carlosSteveA: it's ok for me04:51
spivstub: But current 0.6 SVN has an iter(...) around that value.04:51
spivstub: So we probably should update our SVN snapshot to the 0.6 release.04:51
carlosdaf: with the indexes I get sometimes 11 minutes, other times 5 minutes... :-?04:51
stubJust gimme the time04:51
dafcarlos: running VACUUM ANALYZE might affect it04:51
dafcarlos: it might be worth trying EXPLAIN also04:52
stubspiv: Yes. I've lost track if we have local changes to ours though :-(04:52
dafcarlos: I've been profiling the importer, and I should have some data soon04:52
carlosEXPLAIN with what?04:52
SteveAstub: what's the earliest time after 1200UTC that works for you?04:53
carlosdaf: I mean, I'm not quering anything, is the script04:54
spivstub: We do :(04:55
stubAs early as possible - 1200UTC is 10PM here.04:55
dafcarlos: sure, but VACUUM ANALYZE will update the indexes04:55
carlosdaf: I know04:55
lalonow my system is too stable. I should install gnome 2.8.  }:-)04:56
carlosdaf: BTW seems like now it's more stable, a reimport takes always 5 minutes04:57
carlosand before the index it took about 10 minutes04:57
carlosI will do a last test before send the request to merge those database changes04:57
carlosto be sure we are improving anything04:57
carloslalo: apt-get install warty :-P04:58
SteveAlalo: can you make any earlier than 1200 UTC?05:00
laloSteveA: sure05:00
dafcarlos: nice!05:00
=== kiko [~kiko@200-206-134-238.async.com.br] has joined #launchpad
dafcarlos: reimporting was getting progressively slower on the server05:00
SteveAlalo: suggest a time?05:01
laloI've been 9-to-5 London time, except yesterday that I had to go out, and I intend to continue with this time schedule till the end of the month05:01
kikomorning guys05:01
laloit's just less trouble to me05:01
lalohello kiko05:01
SteveAkiko, cprov, debonzi: how much earlier than 1200 UTC is good for you for a launchpad meeting?05:01
kikoSteveA, 11UTC is the bare minimum05:02
kikoSteveA, what day?05:02
dafkiko: tomorrow05:02
dafcarlos: have you looked at http://www.postgresql.org/docs/7.4/static/performance-tips.html?05:02
SteveAkiko: is 11.30 UTC okay?05:03
kikoyes, definitely.05:03
SteveAok.  I'll mail that out05:03
carloslalo: cool05:03
carlosdaf: same here, but I think the VACUUM command should improve it05:04
carlosdaf: no, I will look at it now05:04
lalocarlos: can you verify that my latest merge closed #1979?05:19
lalonot urgent by any means05:20
carloslalo: ok, added to the queue of tasks in my mind05:20
carlosas soon as I finish with the speed tests I will look at it05:20
lalogreat, thanks05:20
laloif I'm not around when you do, pls mark the bug "verified"05:21
dafSteveA: could you take a look at #1907 and #1908?05:22
dafSteveA: they shouldn't take long05:22
lalodaf: what about zopeless... will we leave it be or what?05:22
daflalo: what do you mean?05:23
lalozopeless seems to be unsuitable for anything but unit tests (and even for that it would be nice if it aborted the transaction)05:23
dafwhy is it unsuitable?05:23
lalo1: no lazyUpdate, therefore slower; 2: no transaction hooks, so it's impossible to abort (as I told you a few days ago)05:24
lalo(2) means if you get an exception in the middle of import, you're left with bogus data in your db05:24
lalothe solution to both is one and the same - do proper transaction hooking. The question is whether someone has time to do it; if they don't, either it's up to us, or we find a way for the script to run that doesn't involve zopeless05:26
lalo(zopeless-less? :-P)05:26
spivlalo: I'll take a look at that right now.05:27
lalospiv: thanks05:27
dafI thought there was some transactions going on somewhere even if we were running Zopeless05:28
laloI don't know how well you know zope's transaction machinery; if you get lost, feel free to bug me, I'm reasonably intimate with it05:28
lalodaf: the zope transaction machinery is suitably poked, and I *think* sqlobject starts a database transaction too; but the two things don't talk to each other05:29
SteveAit would be nice to have a "zopeless" that isn't zopeless -- that uses a subset of zcml files, but does set up the whole environment05:29
spivdaf: the initZopeless doesn't do anything to set up transactions, and doesn't currently expose any way to get at them.05:29
dafspiv: ok05:30
spivSo, as lalo points out, you can't say "abort this transaction" in the Zopeless environ atm.05:30
dafspiv: we are using transaction.get_transaction -- is that a no-op?05:30
laloSteveA: yeah. everything but zodb and publisher.05:30
spivYeah, that's Zope's transaction stuff.05:30
lalodaf: yes05:30
SteveAlalo: excluding browser too05:30
spivWell, actually, it's sort-of exposed.05:31
dafwouldn't it be enough to expose some of the SQLObject transactionality stuff?05:31
dafor does the Zope stuff give us something extra?05:31
spivdaf: That's what I'm looking at :)05:31
lalodaf: it's easy to hook stuff to the zope transaction machinery05:31
spiv(it'd be nice, but harder, to use the zope transaction machinery...)05:31
laloit doesn't give you a lot of extra, just a nicer API :-)05:31
dafwell, nice APIs are... nice05:32
spivWe haven't even got that right when running Zope yet ;)05:32
SteveAspiv: are you going to improve zopeless?05:32
lalowell, whatever works. :-)05:32
spivSteveA: By the bare minimum necessary to support aborting the current transaction.05:32
spiv(unless it looks like a ridiculous amount of work)05:33
laloI'd prefer to improve it enough to allow lazyUpdate to work05:33
SteveAI suggest you set up the minimal utilities and adapters necessary to make it use plug into the zope transaction machinery05:33
lalowhich would probably involve hook to zope's transaction05:33
SteveAand then add a sys.exit() hook that aborts any outstanding transaction05:33
spivlalo: What's not working about that?  Just that it never finishes?05:34
spiv(and so never commits the lazy updates?)05:34
dafcarlos: ok, I have some data on which sql.py calls are taking the most time05:34
lalospiv: it is not working, as a whole :-) it was so broken that we disabled it completely05:35
carlosdaf: could you add them to the bug report?05:35
lalothere is a bug with the detailed info, I can look it up to you05:35
spivlalo: Yes please :)05:35
carlosdaf: yes, attach it to bugzilla and I will try to improve them05:35
dafcarlos: sure05:36
carlosdaf: thanks05:37
lalolots of zen from Steve; and me, playing the role of Bill Gates, saying that "we probably won't need it anyway" :-P05:37
lalobut, well, premature optimization yadda yadda.05:38
dafcarlos: at a glance, RosettaPOMessageSet.getMessageIDSighting, RosettaPOFile.__getitem__, RosettaPOMessageSet.pluralForms, RosettaPOMessageSet.templateMessageSet are by far the most expensive05:39
SteveAdaf: do you mean that they are the most expensive run once, or most expensive cumulatively ?05:39
dafso the columns used in those queries are prime targets for optimisation05:39
dafSteveA: cumulativelyt05:39
SteveAwhich ones are called most often?05:39
dafSteveA: number of calls * time per call05:40
carlosdaf: the indexes I'm adding will improve some of them05:40
dafcarlos: right05:40
spivSteveA: glancing over daf's shoulder, they're being called thousands of times, and taking 0.5 or even 1.0 second per call (cumulatively).05:40
dafSteveA: I don't have that data to hand; the hotshot stats printer is *very* slow05:41
dafSteveA: I could generate it, though05:41
dafSteveA: of the sql.py calls, it seems that getMessageIDSighting is called the most05:41
SteveAthis is the point at which we may want to introduce a specific method or two05:42
dafSteveA: on the order of 3000 times in an import, compared to about 2000 for the other worst offenders05:42
SteveAthat does a bunch of work quickly at the SQL level, 05:42
SteveAtrading the clarity and flexibility of objects with "one specific call"05:42
dafno, that's wrong05:42
dafgetMessageIDSighting is getting called almost exactly twice as much as the others05:43
SteveAalso, if we have a method that returns an essentially immutable object, we may choose to cache that05:43
SteveAwhy are we using a "1" for plural_form ?05:46
SteveAwhat is the meaning of the "1" ?05:46
SteveAor the "0"05:46
lalo0 is invalid05:46
daflalo: invalid where?05:47
lalo1 means there is only one form05:47
SteveAI just grepped to see where getMessageIDSighting is used05:47
lalodaf: POFile.pluralForms05:47
lalo1 is for, eg, Japanese, Turkish, Korean05:48
SteveAis 1 a number in this case?05:48
daflalo: no, I think Steve is talking about MessageIDSighting.plural_form05:48
SteveAor is it symbolic?05:48
SteveAmsgset.getMessageIDSighting(0, allowOld=True).dateLastSeen = "NOW"05:48
SteveAold_plural = self._msgset.getMessageIDSighting(1)05:48
laloah, ok05:48
SteveAI find the 1 and 0 in there opaque05:48
lalo0 and 1 are numbers in this case; indexes05:48
SteveAthen that's fine05:49
SteveAbut, I'm a little confused as to why I see only 1 and 005:49
laloas messageIDs are supposed to be English, then 0 is the singular and 1 is the plural05:49
SteveAthat makes them seem rather symbolic05:49
SteveAthen why don't we say SINGULAR and PLURAL ?05:49
dafSteveA: this stems from the design of the database05:50
lalowe could05:50
laloor something like that05:50
dafSteveA: Mark wanted us to cope with the theoretical possibility of the plural form of a message ID sighting being > 105:50
carlosdaf: ok, the indexes improve the import in my machine, about 1 minute less05:50
carlosI will send now the database inclusion05:50
spivdaf: How does that conflict with using symbolic constants in the code?05:50
dafspiv: it doesn't05:50
SteveAdaf: the app's code attaches meaning to 1 and 005:51
spivOk :)05:51
dafspiv: that only explains why you only see 0 and 105:51
SteveA1 and 0 are hard-coded05:51
laloyou ppl want me to make the change?05:51
SteveAthe app is hard-coded for english message ids05:51
spivRight.  Just making sure I understand :)05:51
SteveAso, I think the app's understanding on 0 and 1 should be hard-coded too05:51
dafSteveA: well, not strictly English05:51
daf"Germanic" would be a closer approximation05:52
SteveAwork out a good, simple, name for the 0 and 1, and let's use that name05:52
SteveAor, those names, rather05:52
spivdaf: "normal" or "standard" :P05:52
dafSINGULAR and PLURAL would be reasonable names05:52
SteveAand perhaps these should be in a dbschema05:52
lalothe app is hard-coded for english message ids as a phase 1 decision; since gettext assumes msgids have only two forms (actually gettext assumes the msgids are English), and phase 1 is gettext only, therefore the app is hardcoded for English05:52
SteveAthat's fine.  but let's not be half-hearted with the hard-coding05:53
SteveAbecause that's just confusing05:53
dafbut if we're targeting a system other than gettext, the number of plural forms is going to be the least of our worries05:53
lalodaf: are you sure you're comfortable with SINGULAR and PLURAL? I'll add these05:54
daflalo: I'm sure05:54
SteveAwhy is the allowOld argument not in the interface?05:54
SteveAactually, I'm looking at old code, so I should update before asking further05:54
dafSteveA: perhaps the interface is wrong05:54
SteveAperhaps.  perhaps allowOld is used only as a private API.  but that would be rather odd.05:55
dafit's not private05:55
SteveADon't do this:05:57
SteveA            raise UnknownUserError, \05:57
SteveA                  "Tried to create objects but have no Person to associate it with"05:57
SteveAInstantiate the error, instead05:57
SteveA            raise UnknownUserError("Tried to create objects but have no Person to associate it with")05:57
SteveAthen, you don't need to use a \05:57
spivlalo: I just realised that I don't need to make any changes to SQLBase to support transactions.05:57
spivlalo: The trick is to not throw away the connection you pass to initZopeless.05:58
SteveAdaf: I'm looking at pofile_adapters.py05:58
SteveA        try:05:58
SteveA            return self._msgset.getTranslationSighting(index, allowOld=True).poTranslation.translation05:58
SteveA        except KeyError:05:58
lalospiv: hmm?05:58
SteveAit would be better to have the try:except: around exactly the thing that can raise a KeyError05:58
SteveAthere is too much between the try:except05:58
SteveA_marker = [] 05:59
SteveAbetter to use _marker = object()05:59
dafSteveA: lalo owns this code05:59
SteveAyou also own the code05:59
spivlalo: You could even do "conn = connectionForURI(...); trans = conn.transaction(); SQLBase.initZopeless(trans); .... ; trans.rollback()"05:59
dafSteveA: yes, transitively05:59
dafSteveA: lalo is the direct owner05:59
lalospiv: ok05:59
laloI'll try that06:00
dafSteveA: I completely agree with what you're saying06:00
SteveAlalo, daf: why is there a bare except in pofile_adapters.TemplateImporter.__call__ ?06:02
SteveAthere *must* be specific exceptions that you expect06:02
SteveAsame for POFileImporter06:03
SteveAI don't want to see MemoryError caught06:03
spivOr KeyboardInterrupt, or ConflictError...06:03
SteveAthe only time when you don't know the specific exceptions that you expect is when you're interacting with a badly designed API06:04
SteveAso, code that interacts with the db api has this problem06:04
SteveAbut, this shows flaws in the db api and how it exposes exceptions06:04
laloI don't feel like arguing - I have decided a few hours ago that this exception masking thing is wrong, so instead of fixing it I'll remove it. Later.06:05
SteveAthis isn't an "argument".  I'm suprised at some of the code I'm coming across, and I want to find out why it is the way it is, and how it can be improved.06:05
laloI know06:06
laloit would be an argument, if I tried to defend the reasons why I used a bare except :-)06:06
lalobut before I even do, I concede, it's wrong.06:06
SteveAis it something that can be fixed in the pofile_adapters module, or does it need to be fixed in the code that that module is using?06:07
lalothe idea was that when you raise a POInvalidInputError you get the line number in the PO file where the exception was raised; so this would supposedly make it easier for us to debug stuff. But it's too open-ended, and it has caused as much troubled as it solved, so it's scheduled to die.06:07
SteveAis there a bugzilla bug for it?06:07
lalowhich it? removing the exception masking? no, it was just something in my head I wanted to discuss it with the team first.06:08
SteveAexception conversion is fine, and good, by the way06:09
SteveAit is natural to convert a KeyError into a ParseError for example06:09
laloyes, been there... but in this case it has caused problems06:12
lalodo you think it should stay? if it stays, then I should make a list of all exceptions that could possibly be raised and catch only those06:13
SteveAanother approach is that taken by page templates, using a __traceback_info__ variable06:13
SteveAthat can contain extra information about where the error occured, in this case in the page template06:13
SteveAI agree that is should catch specific exceptions if it stays06:13
laloyup, but that's not python standard, it's a zope extension and therefore won't be there if zopeless06:13
SteveAthis is an adapter, and in rosetta06:14
laloyes, and it runs zopeless a lot of the time :-)06:14
laloit's the backbone of the importer script06:15
carloslalo: I'm looking at your patch now06:15
SteveAyes, that doesn't stop importing the code that knows how to get the traceback info06:15
lalohmm. could be done.06:16
laloI could look into that - in zope2 it's not something you can simply import, it's a tangle of publisher exception handling hooking. If the zope3 equivalent is importable, I may use it.06:17
spivWell, it's "just" a simple matter of grovelling through the locals of the frames that you find the traceback... ;)06:17
stubWhats wrong with DB-API exceptions?06:19
SteveAlook in zope/exceptions/exceptionformatter.py06:19
SteveAthat has classes which format exceptions, using __traceback_supplement__ as needed06:19
dafSteveA: perhaps we should do a systematic code review?06:21
carlosdaf: we need a "login" link06:21
dafcarlos: we have one on the front apge06:21
carlosdaf: oohh, I didn't know it O:-)06:21
SteveAdaf: that would be a good thing06:22
carlosdaf: but we should remove it if we are already logged in :-P06:22
lalothe whole exception handling department of pofile and pofile_adapters is quite klunky :-/ are you two ok if I take a few hours to refactor it as much as necessary?06:23
SteveAstub: iirc, there was a need for bare excepts because it was not clear exactly what errors the DBAPI could produce, and which of these were legitimate "database problem" errors06:23
SteveAdaf: is that a good use of lalo's time right now, given the other tasks to do in rosetta?06:23
laloright now I don't even give a reliable line number... the correct message would be "syntax error somewhere around line 520 or somesuch"06:24
stubAll legitimate database errors should be subclasses of thedbmodule.DatabaseError or theconnectionobject.DatabaseError. Anything else is a bug or something that shouldn't be caught.06:26
SteveAI'm still trying to track down who was complaining to me about this06:27
SteveAthen again, perhaps I misremember06:28
SteveAor it was a different API, not the DB API06:28
carloslalo: ok, the export works, but with bugs06:28
carloslalo: carlos@frodo ~ $ msgfmt --statistics -o /dev/null es.po06:28
carloses.po:281:10: parse error06:28
carloses.po:287:10: parse error06:28
carloses.po:293:10: parse error06:28
carloses.po:299:10: parse error06:28
carloses.po:311:10: parse error06:28
carloses.po:316:10: parse error06:28
carloses.po:4437:10: parse error06:28
carloses.po:4443:10: parse error06:28
carloses.po:6151:10: parse error06:28
carlosmsgfmt: found 9 fatal errors06:28
carloslalo: I will attach the es.po to the bugreport06:29
carlosI translated only one string06:29
carlosand nothing more06:29
=== SteveA pings daf
dafSteveA: sorry, I was workraving06:30
SteveAI wonder if a method on a po message set that returns all sightings would help, or one that loads all sightings at once, in a single select06:30
dafthat's a thought06:31
SteveAdaf: no problem, just wanted you to have a checkpoint in the chatlog.  I'd like you to make a decision about whether lalo should work on cleaning up the import code's use of exceptins, or whether other tasks have a greater need right now06:31
dafSteveA: lalo has one bug assigned to him (#1944)06:35
dafSteveA: there are a number of unassigned open bugs06:35
SteveAso, let's file a bug for "clean up exception handling in po parsing / import", come up with a tangible deliverable for it  06:39
SteveAand then you and lalo decide which tasks should be next in his queue 06:39
dafwell, let's make a clear statement of what's problematic with the current exception handling06:40
lalo1. it doesn't provide reliable, useful line numbers in all cases06:41
lalo2. it masks some stuff it shouldn't mask, which sometimes makes it harder to debug rosetta code06:41
dafokay, can we put those two points in a bug report?06:44
SteveAthanks lalo, that's a very clear summary06:54
dafcarlos: 07:03
daflalo: 07:03
dafwould now be a good time to have a team meeting for you?07:03
carlosdaf: sure07:03
laloI'd prefer tomorrow morning07:04
lalomy brain is already starting to shut down07:04
dafperhaps a very quick one now, and a more comprehensive one tomorrow morning?07:04
dafok, let's set a time limit of 10 mintues07:05
dafso, we'll aim to finish by 17:15 UTC07:05
dafwhat have we been working on today?07:06
dafcarlos: would you like to start?07:06
carlosdaf: I was working on the indexes07:07
carlosdoing some benchmarks 07:07
dafok, and you produced some proposed changes to the database as the result of that, right?07:07
carlosand trying different options07:07
carlosuntil I sent a proposal07:07
carlosI'm working now07:07
carloson a more evalorated report07:07
carlosas you and Steve asked07:07
carlosalso I tested a patch from lalo07:08
daffor a bug?07:08
carlosand sent the impressions about it07:08
carlosdaf: yes07:08
=== stub [~stub@dsl-] has joined #launchpad
dafok, good07:08
dafI've also been working on performance issues07:09
=== stub [~stub@dsl-] has left #launchpad []
dafI did some profiling of the import code and posted the results to Bugzilla07:09
=== stub [~stub@dsl-] has joined #launchpad
dafI've also been making final preparations for the Rosetta Alpha launch07:09
=== stub [~stub@dsl-] has left #launchpad []
dafdoing the mailing list subscriptions07:09
dafwriting the announcement email07:09
dafalso, debugging problems with transactions07:10
=== stub [~stub@dsl-] has joined #launchpad
daftrying different patches on the development server07:10
daflalo: how about you?07:10
daf(4 minutes left)07:11
laloI was working on the plural form bug, what was its number again07:11
lalothe fix for it "accidentally" fixed 1979 too07:12
dafnice :)07:12
dafthis is good news, because it means we can export PO files from Rosetta07:12
SteveAwhen will rosetta alpha announcements be going out?07:12
lalonot really :-) carlos found another error07:12
dafSteveA: I've started writing the announcement07:13
lalobut the fix is simple07:13
SteveAyes, but... ?07:13
SteveA(that was for daf)07:13
daflalo: and that error is in Bugzilla?07:13
carlosdaf: yes07:13
laloI'm filing it now07:13
dafSteveA: should it be reviewed before it's sent?07:13
carlosas an anex to the 1979 one07:13
lalothen looking at where Steve wanted those constants, and looking a bit at the exception handling07:13
SteveAdaf: I didn't ask whether the announcements were being written07:13
laloI'm pretty sure I did two other things today :-/ let me check my logs07:13
dafok, before we finish, let's think of things we need to discuss tomorrow07:14
dafSteveA: the announcement can go out as soon as the announcement text has been finished07:14
SteveAah, okay!07:14
lalodaf: 2022. Please decide if it blocks 1915, or 1965, or neither07:15
dafok, time's up07:15
SteveAwhen is tomorrow's meeting?  I want to put it in my diary07:15
dafhow about half an hour before the Launchpad one?07:16
daflalo: will do07:16
carloslalo: I suppose we could move it to the beta07:16
carlosdaf: hmm, perhaps it's better an hour before07:17
laloit's a rather simple fix07:17
carlosthat way we could handle any delay07:17
laloabout 15min work07:17
daflet's have a half-hour meeting before the Launchpad one07:17
dafif there's anything we need to discuss for longer, we can schedule another meeting later in the day07:18
SteveAlet's allow a break between the meetings07:18
dafSteveA: good idea07:18
carloslalo: we launch the alpha today or tomorrow, if you fixed it before the alpha release, great, if not, it makes no sense to block 1915 :-)07:18
daflet's say 45 minutes before the Launchpad one07:19
carlosdaf: ok07:19
dafand allow a 15 minute break between meetings07:19
dafso: 11:15 UTC?07:19
dafno, the Launchpad meeting is at 11:30, right?07:19
carlosyes, 10:45 UTC07:20
daflalo: what's the estimated fix time for #2022?07:22
lalodaf: as I said, about 15m work07:23
lalobut I don't trust doing it now - I'm too tired, I'd probably introduce another bug ;-)07:23
daflet's pin it on #1915 since the timescale for fixing it is short07:24
dafi.e. tomorrow morning07:25
=== lulu [~lu@host217-37-231-28.in-addr.btopenworld.com] has left #launchpad []
carlosSo if all things goes well, tomorrow will be the "big" day :-)07:26
lalocarlos: what's the url to export a po?07:30
carloslalo: it depends on the module07:31
lalowhy the heck am I asking? :-P07:31
carlosfor example07:31
lalook, I seem to have fixed it07:57
laloI'll go to bed, and when I wake up, I'll test the fix more thoroughly and merge it07:57
lalogood night all07:58
lalocarlos: I shouldn't even have asked - I was under the crackful assumption that the po export wasn't yet linked from the UI. It is not only linked, but rather easy to find.07:58
carloslalo: :-)07:59
carloslalo: night07:59
lalofor the record, I exported a po file, and passed it trough msgfmt successfully07:59
carloslalo: I will review it later08:02
laloprefs still seems to be kind of broken08:02
laloI can remove languages, but not add08:08
carloslalo: ?08:10
carloslalo: ok, please don't add languages with countries (like pt_BR)08:10
carlosIt's a know bug08:10
carlosI need to fix the database info08:10
carlosor think about a way to improve that so it's automatically fixed with every exception raised.08:11
lalohmm. I don't remember the sql syntax for update :-P08:20
elmo\h update in psql08:22
lalooooh. thanks08:22
lalodaf: update language set pluralforms = 1, pluralexpression = '0' where englishname='Lojban';08:23
carloslalo: that language does not have plural forms?08:26
carlosI will add it to our list08:26
carlosthanks :-D08:26
laloI'm making a lojban translation of gnome-terminal as a futile exercise to get myself acquainted with the rosetta UI08:27
dafcarlos: where are you adding new plural form data?08:45
carlosdaf: to the file that feeds our script and also to the languages.sql file08:45
=== lalo goes to bed
daflalo: night night :)08:49
daflalo: well spotted on #202308:50
carloslalo: night08:52
carlosdaf: any easy way to create a launchpad_test2 database with the current setup?08:57
dafmake -C /home/daf/launchpad-test/database/schema DBNAME=launchpad_test209:10
carlosdaf: I was playing with DBNAME=launchpad_test make09:10
carlosbut it did not work09:10
carlosdaf: thanks09:10
dafyou have to use -e to Make if you want environement variables to be applied09:11
dafbut it's better to specify them on the command line09:11
=== cprov [~cprov@] has joined #launchpad
=== lalo [~lalo@200-102-070-253.paemt7003.dsl.brasiltelecom.net.br] has joined #launchpad
=== carlos [~carlos@67.Red-81-32-123.pooles.rima-tde.net] has joined #launchpad
=== SteveA [~steve@adsl-213-190-44-43.takas.lt] has joined #launchpad
=== elmo [~james@] has joined #launchpad
=== carlos [~carlos@67.Red-81-32-123.pooles.rima-tde.net] has joined #launchpad
=== SteveA [~steve@adsl-213-190-44-43.takas.lt] has joined #launchpad
=== carlos [~carlos@67.Red-81-32-123.pooles.rima-tde.net] has joined #launchpad
=== lalo [~lalo@200-102-070-253.paemt7003.dsl.brasiltelecom.net.br] has joined #launchpad
=== elmo [~james@] has joined #launchpad
=== lal1 [~lalo@200-102-070-253.paemt7003.dsl.brasiltelecom.net.br] has joined #launchpad
!dmwaters:*! Hi all, we are having problems with one of our main rotation servers. I'm going to rehub it and see if we can fix it a bit09:52
=== carlos [~carlos@67.Red-81-32-123.pooles.rima-tde.net] has joined #launchpad
=== lalo [~lalo@200-102-070-253.paemt7003.dsl.brasiltelecom.net.br] has joined #launchpad
=== elmo [~james@] has joined #launchpad
!alindeman:*! Hi all .. we're having a bit of trouble with one of our main rotation servers. We've pulled it from rotation and rehubbed a bit. We'll continue to monitor the situation. Sorry for any inconvenience and thanks for using freenode09:55
=== carlos goes to have dinner
=== sabdfl [~mark@host217-37-231-28.in-addr.btopenworld.com] has left #launchpad []
=== sabdfl [~mark@host217-37-231-28.in-addr.btopenworld.com] has joined #launchpad

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