=== spiv [~andrew@fuchsia.puzzling.org] has joined #launchpad === lalo [~lalo@200.96.105.209] has joined #launchpad === stub [~stub@dsl-246.248.240.220.dsl.comindico.com.au] has joined #launchpad === lal1 [~lalo@200.203.19.41] has joined #launchpad === lal1 is now known as lalo === lalo [~lalo@200.96.125.71] has joined #launchpad === kiko [~kiko@200-206-134-238.async.com.br] has joined #launchpad === stub [~stub@dsl-246.248.240.220.dsl.comindico.com.au] has joined #launchpad === lalo [~lalo@200.96.125.71] has joined #launchpad === lalo [~lalo@200.96.125.71] has joined #launchpad === stu1 [~stub@dsl-246.248.240.220.dsl.comindico.com.au] has joined #launchpad === mdz [~mdz@69-167-148-207.vnnyca.adelphia.net] has joined #launchpad === stub [~stub@dsl-246.248.240.220.dsl.comindico.com.au] has joined #launchpad === mdz [~mdz@69-167-148-207.vnnyca.adelphia.net] has joined #launchpad === sabdfl [~mark@host217-37-231-28.in-addr.btopenworld.com] has joined #launchpad === lalo [~lalo@200.96.125.71] has joined #launchpad === lulu [~lu@host217-37-231-28.in-addr.btopenworld.com] has joined #launchpad [11:27] hahahahahahaha... I think I broke my gentoo in a way that's going to be interesting to repair :-P [11:29] you use that word? [11:29] normally I say "disgraceful"! [11:29] interesting is the right word here [11:30] I, hmm, broke my gcc :-P so I can't install another gcc because, you see, I have no gcc... it's kind of like breaking dpkg in debian [11:30] you can get around a broken dpkg with "ar" and "tar"... and equivalently I'm pretty sure there is a way to get out of this situation... just have to think about it for 10 minutes [11:31] how broken, and how did you break it? [11:32] oh, I was trying to downgrade from 3.4 to 3.3; then I found that I had both installed (using slots), and just removed 3.4. But /usr/bin/gcc seemingly was part of the 3.4 package... so I have all the bits and pieces, except the thing that puts them together [11:33] lalo, just copy the gcc-3.4 binary from somewhere else [11:33] that's the plan [11:51] ah [11:51] as I expected, much simpler than that [11:51] just had to edit a config file to point to the right version [11:52] and now to compile directfb :-) [11:52] funny, where is everyone? we have a meeting in a few minutes [11:56] lalo, what timezone are you in?! the meeting is in 1:30h [11:57] 1:30? I thought it was 11:30 [11:57] and rosetta's is 45m earlier, whatever time is the launchpad one [11:58] it *is* at 11:30, which is.. oh. [11:58] well, I'm here (no sleep last night though :) [11:59] ah, you said "in" 1:30, I read "at" 1:30 :-) we're talking the same thing === carlos [~carlos@171.Red-83-32-196.pooles.rima-tde.net] has joined #launchpad [12:07] carlos: good morning [12:07] morning === kiko is now known as kiko-afk [12:39] aren't we ten minutes into a rosetta meeting now? [12:40] SteveA: just what I was thinking. Looks like something happened with daf [12:40] SteveA: in 5 minutes [12:40] morning all [12:41] daf: morning [12:42] what happened? [12:43] the meeting is scheduled for 10:45 [12:44] shall we start? [12:45] ok [12:46] daf: sure [12:46] let's start off by discussing the Alpha release [12:46] then what work we've done since the last meeting [12:47] then what we're going to do for the rest of today [12:47] ok [12:48] I think we're more or less ready for Alpha [12:48] the two things I know I need to do are: [12:49] - disable the advanced search page, since it doesn't work [12:49] - send out the announcement email [12:49] now's the time to list anything else that needs doing [12:50] daf: perhaps improve the message about the plural forms with a mailto: link [12:50] so they know they should send use the information [12:50] so they could translate into that language? [12:50] good idea [12:50] where should they send it to? [12:51] me? the Rosetta Testers list? [12:51] hmmm [12:51] perhaps to the list [12:51] daf: rosetta.ubuntulinux.org goes to the launchpad front page. this has links to soyuz and malone on it. [12:51] so anyone could add it? [12:52] maybe the virtual hosting should be changed so that it goes to the rosetta front page only [12:52] SteveA: good idea [12:52] we can then use the package overrides system to put the special ubuntu front page as the default page for that rosetta [12:52] I think it would be a good idea to hide away Malone andd Soyuz [12:52] so, we can use an override for that [12:53] can you either do that, or explain to one of us how to do it? [12:53] that is, a file in override-includes that redefines the default page for the root object, and for the rosetta front page [12:53] can the link to launchpad be launchpad.ubuntulinux.org, rosetta = rosetta. ubuntulinux.org etc... [12:53] SteveA: so it's a normal ZCML file? [12:53] what do you mean "link to launchpad", lulu ? [12:54] daf: yes, it is a normal zcml file. Its directives override those already in the system. [12:54] so we have the 3 tools in launchpad.ubuntulinux.org instead of rosetta - isolate links [12:54] for the rosetta alpha, we want just rosetta to appear at rosetta.ubuntulinux.org [12:55] yes agreed [12:55] I don't see any reason to have a launchpad.ubuntulinux.org at this time [12:55] fine - but how can I publicly access all 3? [12:56] you can't, because we're releasing only rosetta [12:56] lulu: you can still acccess the development server [12:56] through rosetta.ubuntulinux.org? [12:56] we're talking about a specific "override" for the rosetta.ubuntulinux.org site. This is the site that uses the "alpha" database. [12:56] through rosetta.warthogs.hbd.com [12:56] lulu: no, old url rosetta.warthogs... [12:57] There's still rosetta.warthogs.hbd.com, that has all of launchpad on it [12:57] and does not use the "alpha" database [12:57] this is our "development server" [12:57] and, it will not have any overrides in it [12:57] SteveA: currently when I type in https://rosetta.ubuntulinux.org/ I gte the 3 launchpad tools [12:58] yes, we are discussing that you should not do so, and how to fix it [12:58] lulu: right, and we're going to change that [12:58] daf: cool - that's why I suggested that to be launchpad.ubuntulinux.org.... - no worries [12:59] so we have two extra tasks before the alpa [01:00] - put an email address in the plural form error message [01:00] is the "ubuntu linux package list" page finished? [01:00] - hide/remove Malone and Soyuz from the alpha server [01:01] what about the "ubuntu list of packages" front page? [01:01] SteveA: we don't have a separate page for it [01:01] I thought that was the plan [01:02] right, for the Alpha it was decided that we have a very small number of packages [01:02] SteveA: we have only two packages for the alpha [01:02] from discussions with Mark and from the practical didfficulty of importing many packages [01:03] SteveA: we are going to improve and expand that list before the beta [01:03] ok [01:03] the bug should have been updated with this information [01:04] daf: my fault [01:04] carlos: mine also === carlos adds to the todo list after the meeting [01:04] SteveA: bug #1915 is still marked as depending on #1907 and #1908, which are assigned to you [01:05] SteveA: I don't think they block the release, but it would be nice to have them closed [01:05] ok, noted [01:05] thanks [01:06] another thing: [01:06] I propose for the alpha server, we make the front page of launchpad a redirect to /rosetta. This will serve until the virtual hosting configuration is updated. But, if the virtual hosting stuff can be updated now, there's no need to change the front page. [01:06] because the front page will not be visible === cprov [~cprov@200.158.100.251] has joined #launchpad [01:06] - I shuold apply Carlos' DB changes to the Alpha DB [01:07] (sorry for typos, link is slow) [01:07] daf: not yet, I'm doing more testing today [01:07] carlos: ok [01:07] and they could be added at any time [01:07] later [01:07] carlos: I'd like to do it before the GNOME Panel import [01:07] I'm getting bad numbers today [01:08] and I need to understand why, I will know it after the meeting, my laptop is working now on it [01:08] ok, perhaps I should make a task to test the changes on the development server [01:08] that will be good [01:09] ok [01:09] anything else that needs to be done? [01:09] if not, let's discuss our tasks [01:10] nothing from here [01:10] (we are scheduled to finish in 10 minutes) [01:10] ok [01:10] tasks done since yesterday's meeting? [01:10] lalo: care to go first? [01:11] ok [01:11] I fixed #2022 in the few minutes after the meeting, or was it right before? === carlos is happy to see that the numbers are again good with the indexes (VACUUM ANALYZE is needed) [01:12] then I slept :-) when I woke up, I sanity-checked the fix and committed it [01:12] great [01:12] carlos? [01:12] lalo: I will test it after this meeting to confirm the fix [01:12] carlos: thanks [01:13] daf: I was working on more testing, I have almost finished the report SteveA asked yesterday [01:13] great === kiko-afk is now known as kiko-fud [01:13] daf: and answer your questions to the mailing list about the indexes [01:13] hmm, I think that's all [01:13] ok [01:13] I fixed #2023 last night [01:14] and replaced the placeholder "About Rosetta" text with something useful [01:14] (with input from Lu and Mark on that) [01:15] ok, and very quickly -- what are we going to work on today? [01:16] I will work finishing the report, and will start doing more improvements to the queries [01:16] and use your profile information to try to improve it more [01:16] I will work on completing the Alpha tasks [01:16] carlos: do you need information from me about how I profiled it? [01:16] if no greater priorities arise, I'm going to work on 1944 (the dreaded import/export tests) [01:17] daf: not now, let me read your report and I will be back to you if I see I need it [01:17] carlos: ok [01:17] lalo: that's fine by me [01:17] any other business? [01:18] daf: I suppose I will not have enough time [01:18] do you think 1944 has greater priority than 2021? [01:18] but If I'm able to finish my tasks, I want to start with the scripts we were talking last week [01:18] with steve [01:19] lalo: actually, I think it would be nice to get #2021 fixed first [01:19] ok [01:19] carlos: ok [01:19] I'm happier that way too :-) [01:19] great :) [01:19] right, I declare End Of Meeting [01:19] thanks, it was a good one [01:20] even if we ran a little over [01:20] :-) === daf goes to grab breakfast before the Launchpad meeting [01:21] me too [01:22] Someone ping me for the meeting - I havn't got an alarm on this thing yet [01:22] can you get to http://rince.africaninspace.com/mailman/listinfo/activity ? [01:24] me2 [01:27] No, but my network has been shitting me all night [01:29] it's okay, mark screwed up a server upgrade. mail archives are off until it is sorted out. [01:30] it is 14:30 [01:30] stub, kiko-fud: time for the meeting! [01:30] do you know where your children are? === kiko-fud is now known as kiko [01:30] or even what timezone they're in === debonzi [~debonzi@200.158.100.251] has joined #launchpad [01:30] behold the great debonzi has entered the room [01:31] kiko, lol [01:31] soyuz is here [01:31] Yo [01:32] kiko, debonzi, spiv, cprov: all here? [01:32] [x] yes [01:32] And Malone, on his lonesome :-) [01:32] [x] yes [01:32] stub, justdave: ? [01:32] Yep. [01:32] we're starting a little early for justdave's timezone [01:33] I'll catch up with him later [01:33] he pulled an all-nighter afaik [01:33] just like me [01:33] I'm here [01:33] oh, hi! [01:33] daf, carlos, lalo? [01:33] SteveA: I'm here === lalo is here [01:34] limi will be traveling back to Norway from Vienna today [01:34] daf is in the middle of breakfast; he'll be here very shortly. [01:34] lulu: ? === daf returns [01:34] let's start [01:34] soyuz [01:35] What's happened since last week? [01:35] yes [01:35] we've filed half a million bugs [01:35] fixed about half of them [01:35] kiko: aha [01:35] pestered people on the mailing list about the tough issues [01:35] SteveA: her :o) [01:35] had rosetta and malone integration meetings [01:35] here! [01:35] did QA and polished the UI of bits missing [01:36] I'll be looking at the bugs you mailed me about during today [01:36] started sorting out the pickles that we got some traction on [01:36] how did the integration meetings go? [01:36] which are the person identifying issue and some bits of package info that were missing [01:37] what is the decision on the person identifying issue? [01:37] the integration meetings went well, stub was killer and let us file bugs on portlets that we need [01:37] stub is the man to answer that I suspect :) [01:37] I'm just easy [01:38] we add a shortname/nick whatever to the database [01:38] stub and soyuz agree on that, I can't remember if we are waiting for approval of the gods before hitting the database [01:38] do you stub? [01:38] Outcome of the Malone/Soyuz integration meeting was I make the relevant portlets in Malone and stick them into the relevant Soyuz pages. Three seperate portlets are needed. [01:39] I think the nickname thing may have an implication on the plone websites / xml-rpc authserver [01:39] Yes - I think we need a Person.name - unique, lowercase [01:39] ok, so we integrate between launchpad applications at the portlet level. [01:39] malone makes portlets available to soyuz [01:39] SteveA, at least between malone and soyuz. [01:40] SteveA, we don't know about rosetta well because the issues are a bit different [01:40] SteveA: We don't have to use it for auth if we don't want to. That is a different use case for the same info [01:40] stub, is there an eta for the portlets [01:40] stub, yes, exactly what I was going to say [01:40] Two days ago [01:40] stub: sure, we don't need to use it for auth. but, is it an essential field? will it need to be requested when people sign up with the ubuntu site? [01:41] SteveA, IMO it is essential and it is silly to skimper around this issue [01:41] SteveA, nobody wants to traverse on email or a number [01:41] SteveA: We can generate one if we want to avoid that and we don't want to ask the question [01:41] so this is really the only solution. we can suggest one if we like [01:42] so kiko@async.com.br -> kiko for nick [01:42] ok, so we can keep the plone stuff and xml-rpc stuff that is now deployed the same [01:42] kiko1 if kiko is taken already? [01:42] I agree on automatic (safety) generation of a unique name [01:42] I have code lying around somewhere that can safely generate unique names from an email address. [01:42] or kiko_async or kiko_x or some options but yes [01:43] SteveA: whatever :) [01:43] we need to decide on this before we make the change that we depend on this nick. [01:43] let's not decide now, though [01:43] Oh... sorry. It is givenname/surname/email so isn't appropriate [01:43] SteveA: Authentication - we're having problems with email from Zope/Plone [01:44] but, someone must take responsibility for the issue [01:44] any volunteers? [01:44] lulu: we'll talk about the website/launchpad stuff in a bit [01:44] I'll add the field to the table :-) [01:44] SteveA, well, if it's just adding a field, it's stub [01:44] SteveA, I have no idea where users are created or authenticated in this launchpad creature. [01:44] does anyone? [01:45] that's ok. but if it is adding a field and a constraint, then we need to decide how we are coming up with these nicknames [01:45] the launchpad does not register users at present [01:45] we can just add the constraint later, can't we? [01:45] The adduser script needs to do the username address validation though (and I don't know this either). [01:46] stub: will you take on getting the nickname stuff sorted out thoroughly? [01:46] kiko: we have a script to create the users at rosetta/scripts/createuser.py [01:46] (hmm, maybe it should be someone who will be at the soyuz sprint) [01:46] kiko: It would be painful doing that. [01:47] what I'm looking for is a library function to create suitable nicks, if none is given [01:47] oh. [01:47] someone needs to decide on the policy for this, as in how it works, and then write it [01:47] we'll all use the same function [01:48] I suspect mark will want to have input on this? [01:48] also, who will check with mark that he is okay with the nickname thing? [01:48] SteveA: It is a simple algorithm - take the bit before '@' from the email, remove any ugly characters, and add a number on the end until there are no conficts when you insert. [01:48] I think a message to the launchpad list would be good [01:48] I can do that and pester sabdfl on irc [01:49] I don't know that this is *urgent*. so, a mail to the list should be sufficient. [01:49] thanks kiko [01:49] I think that wraps up nicknames, for now [01:49] yes [01:50] do you think we should have another soyuz walkthrough this week, before the sprint? [01:50] maybe tomorrow? [01:50] nah, not really. [01:50] we travel saturday. [01:50] ok [01:50] so, we can have one at the start of the sprint [01:50] in person [01:50] yes, that would be perfect. [01:50] I think that's a better idea. [01:51] ok. are all travel arrangements to the sprint okay? [01:51] [x] soyuz [01:51] any other issues? [01:52] uhm, let me try and recall [01:52] cprov, is there anything open? [01:52] I still need to get you a zodb [01:52] yes, that's bugged on you IIRC [01:53] it is at the top of my list [01:53] kiko: yep the complicated issues on person/team add action ...but I preffer to talk on sprint, I think [01:53] okay. [01:53] ok, let's move on to the plone<-->launchpad sites [01:53] debonzi, cprov, packaging issues perhaps? === SteveA waits a little longs [01:53] longer [01:53] I'll commit some changes today and would apreciatte SteveA and Spiv revision on that, ok ? [01:54] cprov: send an email? [01:54] okay, cool. [01:54] cprov: sure; email or poke me on irc. [01:54] SteveA: of course [01:54] ok [01:54] ok, let's move on to the plone<-->launchpad integration [01:55] lulu: you said there is an email problem [01:55] spiv: I think I need a private help after meeting (10 min, again) ? [01:55] cprov: Sure. [01:55] yes - Roche is not getting plone emails [01:55] spiv: great [01:55] what do you mean by "plone mails" ? [01:55] mails sent out from plone? [01:55] okay, I'm on standby then [01:55] yes - once a user is registered, he is not getting the email [01:56] saying welcome - but I did. [01:56] elmo says Gentoo is set up fine [01:56] you got one to you @canonical.com address? [01:56] it is conceivable that mail to @canonical.com addresses works while other addresses do not. [01:57] yes.... [01:57] do you know how the mail service on plone is configured? [01:57] spiv: if we have finished here, please join #soyuz. kiko you are suposed to be there too [01:57] that is, which machine it uses to send email? [01:57] ok, let's talk about this in detail after the meeting [01:58] have asked elmo to join in [01:58] is there anything else amiss with the launchpad<-->plone site? [01:58] cprov, I am [01:58] ? [01:58] Roche couldn't test last night as a result [01:59] ok, we'll get this diagnosed properly after this meeting. anything else we need to do on the plone sites? [01:59] so we have to do extensive testing today to get it up [01:59] permissions are not great - but the plone workflow limits what we can do [02:00] i need Limi to do some work [02:00] otherwise - after testing we can assess what still needs to be done [02:00] ok. [02:00] can we move on to malone? [02:01] stub: anything new with malone since the last meeting? [02:01] I'm now on a new machine and started belting Malone back into shape after the changes made when I was away (schema changes and auth system). [02:01] you know that andrew v. won't be working on it? [02:01] I now need to know about the auth stuff since the next lot of exceptions to fix are all Unauthorized errors [02:02] Yes - Andrew emailed me when I was in Japan [02:02] ok, why don't you and I talk about auth stuff tomorrow morning my time? [02:02] hmm? is andrew no longer contracting with us? [02:02] elmo: yes [02:02] Your at UTC+4? Sure. === ddaa [~david@nemesis.xlii.org] has joined #launchpad [02:03] UTC+3 [02:03] elmo: Possibly short gigs. He is in the unfortunate position of having a new child and work coming out of his ears :-) [02:04] I can manage 6am UTC onwards [02:04] SteveA: Ok. I'll look out for you online. [02:04] ok [02:04] anything else other than auth? [02:05] I don't think so [02:06] Oh - anyone got an intelligent 'select a sourcepackage' widget written yet? [02:06] let's talk tomorrow also about moving malone along the route to using it for bugtracking launchpad and then the warty team [02:06] Something like the typeahead textbox in Bugzilla [02:06] stub, no, nothing like that at all. [02:07] stub, we want a package browser (with sections) but so far nothing. [02:07] file a bug on limi [02:07] And sabdfl is happy with the assignee stuff I mentioned back in London, and the schema mods are in. === stub is done [02:08] so, when will assignee be working? [02:09] The screen I have to update to do it (assignee is mandatory - it will default to the package/product owner) is one of the ones raising an Unauthorized error :-) [02:09] ok, let's do that tomorrow [02:09] next, rosetta [02:10] I want to have the malone basic functionality and the soyuz portlets done by my Monday. [02:10] great. [02:10] stub, that would fit in nicely with the beginning of our sprint [02:10] do you have bugs in bugzilla for "malone basic functionality" ? [02:11] (although the soyuz portlets might get reprioritized since they are not essential) [02:11] have you a clear idea on how the portlets will work with soyuz? [02:11] SteveA: The use cases on the wiki - nothing formal in Bugzilla [02:11] we can talk about portlets tomorrow too [02:12] rosetta [02:12] daf: progress of rosetta [02:12] SteveA: Yes. I'm doing something similar in Malone already. The major problem is generating URLS - I don't want to use absolute URL's since it will screw up virtual malones down the road, so they are context sensitive. [02:13] since the last meeting, we've mostly been working on improving the importer [02:13] stub: we should make absolute url work with virtual malones [02:13] we found some problems with it in the run up to the Alpha release [02:13] (erm... I mean they can only be used on a single screen - not any page you feel like) [02:13] we've fixed several bugs in it since then [02:13] stub: but, I also talked with people about this at the sprint [02:13] daf: what bugs remain before getting the alpha used by people? [02:14] SteveA: Yes - we need IAbsoluteURL functioning to do that [02:14] SteveA: in terms of bugs against Rosetta itself, none [02:14] in terms of issues blocking rosetta alpha [02:15] in terms of issues [02:15] #2025 -- add option to user creation script to email the new user with account details [02:16] we also need to make some changes to hide Soyuz and Malone on the Alpha Launchpad instance [02:16] that's mainly a virtual hosting change. can you mail elmo about it? [02:16] I can [02:16] ok [02:17] but I think we can work around it if the virtual host is not changed [02:17] who is doing the addition to the user creation script, and when? [02:17] I'm working on that now [02:17] when will it be done? [02:17] I'm estimating about 20 minutes of work [02:18] ok === daf marks 2025 as assigned to him [02:18] anything else on rosetta? [02:18] I know there's been some work on profiling the database to add indexes [02:18] there's a minor change outstanding to one page [02:18] right [02:19] what's the minor change? [02:19] daf: I could do it now, so we speed up the launch [02:19] adding an email address to an error message [02:19] ok [02:19] carlos: you're going to do that? [02:19] daf: yes [02:19] carlos: thanks [02:19] indexes: [02:19] in the run up to the Alpha, we discovered performance problems [02:20] we've spent some time trying to analyze the problem [02:20] and we have some ideas on how to improve things [02:20] does it look like these are in the database itself, or in the launchpad application, or a mixture? [02:20] most of the discussion is on #1973 [02:20] I think that part of it is the database itself [02:20] and part of it is in the way the database is being used [02:21] so part of it is that the queries are running slowly [02:21] and part of it is that the queries could be improved [02:21] we could run some specialized queries that do a lot of work at once [02:21] where we need to [02:22] I think we understand the problem much better than we did a week ago, and we've learned things that will be useful in tackling future performance problems [02:22] SteveA: right, that's definitely something we should look into [02:22] UI issues on rosetta... [02:22] there's still the "development legend" at the bottom of screens [02:22] we can probably lose that with an override, but maybe it isn't still needed [02:22] I don't consider that a problem, but it can be remvoed [02:23] and link to dashboards? [02:23] yes, it might actually be redundant [02:23] there are still tabs for soyuz and malone [02:23] lulu: we have links to the dashboards in the top right-hand corner [02:23] SteveA: yes, those are going to be removed [02:23] do we want a "project maintainer dashboard" for rosetta? [02:23] for the alpha [02:24] are there bugs filed on tidying up the UI in this way for the alpha? [02:24] no, there aren't [02:24] let's do that [02:24] there's site map and legal too, with no content [02:25] I suggest to add a sober explanation of what should go there, or remove them [02:25] or implement them properly [02:25] agreed [02:26] I suggest all redundant links be reoved - site map and legal are covered in the ubuntu site [02:26] removed! [02:26] when I search, a search with 1 or 2 characters gets a system error [02:27] https://bugzilla.warthogs.hbd.com/bugzilla/show_bug.cgi?id=2026 [02:27] ok, thanks [02:28] daf, let's you and I have a chat in a few hours, to see how things are going [02:28] let's [02:28] SteveA: why is it conceivable for non- canonical emails not to be working? [02:28] I'm concerned that we keep thinking we're almost ready to do the alpha, and then finding other things that need to be done. [02:28] should we create accounts for lulu to do also as alphatester? [02:29] we need to spend a little time carefully going over everything we need to do. [02:29] SteveA: you're right [02:29] carlos: yes please.... [02:29] lulu: want to translate into afrikaans? [02:29] and any other Canonical person? [02:29] mark should be on there too [02:29] ok [02:29] carlos: I don't want to see code like this: [02:29] email = RosettaEmailAddress(person=person, email=options.email, status=1) [02:30] ok, that's it [02:30] daf: to simplify things I will add them to the alphatesters list [02:30] 1 is a constant that should be imported from the dbschema module [02:30] end of meeting? [02:30] any other business? [02:30] 5 [02:30] 4 [02:30] carlos: Mark already has an account [02:30] 3 [02:30] 2 [02:30] SteveA: it's ok for me [02:30] 1 [02:30] daf: hmmm, I'm not completely sure how to use the python schema [02:30] ok, done. Thanks for coming. we managed it in 1 hour this time [02:30] We can all sit down now ;) [02:30] daf: but without password [02:31] carlos: ok, that's a special case, I think [02:31] spiv: upps, I forgot that :-P [02:31] carlos: perhaps we need a script to change passwords [02:31] lulu: I'll take a short break, and then we can look into why the email isn't working. I note that elmo sent a test message to me at a non-@canonical address [02:31] SteveA: should we handle the case when the password is NULL? [02:32] carlos: is it defined what the meaning of password == NULL is? [02:32] SteveA: seems like rince mail is broken now [02:32] spiv: More like stand up! I think I've been welded to the couch for two days :-) [02:32] SteveA: yes it appears to be fine our side - we need to change the webmaster address to be coming from webmaster@ubuntulinux.org rather than canonicla.com [02:32] carlos: I think that means it is being fixed ;-) [02:32] SteveA: it's only because old sample data did not have a password [02:32] all accounts created with our script will have always a password [02:32] maybe password as NULL means that there is no password that can work [02:32] and there is no way to reset it to null from the UI [02:32] as in, the account it "locked" [02:33] Well, we will have that for people we "import", rather than people who sign up. [02:33] spiv: the script creates automatically a password [02:33] and will send an email [02:33] with it [02:33] Some accounts will be created without passwords (such as when Malone gets an email from an unknown address it will create one). The NULL password flags this. [02:33] using pwgen [02:34] (e.g. package maintainers for debian packages.) [02:34] hmm, so we want to have a "disabled" account, ok [02:34] carlos: from canonical.lp.dbschema import EmailAddressStatus [02:35] carlos: int(EmailAddressStatus.NEW) [02:35] daf: ok [02:35] justdave: please reply to my email about the top 100 bugzillas [02:35] We don't really want to send an email to every debian package maintainer, spamming them with a password for an account they might not care about at all, or have even heard of :) [02:36] spiv: ok [02:36] SteveA: will do [02:36] SteveA: mail lists seem to be alive again [02:36] "here's your password for Rosetta, a fabulous, completely free i18n system. You can also use this password to download photos of beautiful young women..." [02:37] daf: I will write an option to the createuser.py script to change the password so we can set it as admins [02:37] lalo: Sabrina!!! [02:37] :-P [02:37] carlos: I think I'd prefer a new script [02:37] daf: ok [02:37] carlos: changing a password is different to creating a user [02:38] it might be useful to have an option to unset the password [02:38] effectively locking the account [02:38] SteveA: lists back up i believe. blush [02:38] daf: ok [02:42] sabdfl: works for me now, thanks [02:45] lulu: from recent email, it looks like there is no problem with how the mail services are set up, but that there is some problem with how plone is using them. [02:46] roche seems to be on the case. thanks to elmo to checking into it. [02:46] yup - Roche is investigating now - please could you also impress on him that we HAVE to have this working today. [02:47] Elmo has doen all his testing - fine our side [02:49] in these situations, looking for a problem that shouldn't be there, extra pressure tends to make programmers work less well. I'll offer roche a second pair of eyes if he wants them. I'll ask him about a contingency plan if the usual plone mail just won't work in a resonable time. [02:50] can I get an admin account on the plone server, so I can take a look around? === SteveA phones roche for a chat [03:00] grr, my merge request were ignored because my mail server does not accept my mails from outside my home... === debonzi [~debonzi@200.158.100.251] has joined #launchpad === lulu [~lu@host217-37-231-28.in-addr.btopenworld.com] has joined #launchpad [03:07] daf: The .po export takes also too long, perhaps we should think on some way to cache it [03:09] carlos: file a bug : [03:09] s/:/:)/ [03:09] daf: I'm on it [03:09] :-D [03:11] daf, carlos: I'll be turning the zodb on soon, so we can use that to cache these things. [03:11] the important thing is to work out what the cache key should be [03:11] that is, the things that, if they change, we need to re-generate the data === SteveA goes afk for a while [03:12] ok [03:13] lalo: did you changed your bugzilla id? [03:14] carlos: yes [03:14] ok, I see it now === lulu [~lu@host217-37-231-28.in-addr.btopenworld.com] has joined #launchpad [03:26] daf: I sent the merge request to add the mailing information for the missing plural form data [03:26] lalo: which one is the code for the "other" language you know to translate? [03:26] lalo: I don't remember it, and I'm going to add its plural form information [03:26] hmm [03:26] carlos: thanks [03:27] I don't remember either :-P let me check [03:27] lalo: the name is enough [03:27] :-) [03:27] lalo: it was "n = 0" right? [03:27] here's the whole sql statement I used: update language set pluralforms = 1, pluralexpression = '0' where englishname='Lojban'; [03:28] damn, it doesn't have the code :-/ [03:28] jbo [03:28] lalo: don't worry [03:29] are you sure 0 is correct? [03:29] yes [03:29] perhaps n >= 0 [03:29] :-) [03:29] no, it's not a bool [03:29] the pluralexpression is not supposed to result a bool, but an int [03:29] (the index of the plural form you want) [03:29] lalo: but C boolean expressions evaluaate to ints [03:30] yes [03:30] and a lot of pluralexpressions abuse this by returning a bool when there are only 2 forms :-) [03:30] lalo: the Spanish one is n !=1 [03:31] carlos: as I just said :-) the correct would be something like "n != 1 ? 1 : 0" but this is silly in C [03:31] hmm, we don't have the information for pt_BR, could you give me it ? [03:31] lalo: ok [03:32] lalo: the code is 'jbo' [03:32] pt_BR is the same as Spanish although there is some controversy :-) [03:33] lalo: you said it's different [03:33] Spanish == to portuguese [03:33] as pt [03:33] the fact is that we never say either "0 foo" or "0 foos", we say "no foo" [03:33] ok [03:34] lalo: for Lojban. npluralforms = 1 expression = 0 [03:34] lunch time, we will continue later [03:34] so a translator who wants to be really strict would create a third plural form for the 0 and use "nenhum" for that case... but that's rare [03:34] carlos: (lojban) yes [03:35] lalo: so, should I use the same or not for pt_BR? [03:35] you decide :-) === lal1 [~lalo@201.3.156.164] has joined #launchpad === lal1 is now known as lalo === debonzi [~debonzi@200.158.100.251] has joined #launchpad [03:57] carlos: Have you been crossing the streams or something? You keep showing up in the PQM merge logs :) [04:04] spiv, carlos is the master, he hacks on all trees. [04:06] the problem seems to be that your tla doesn't think you have the patches... I ran sync-tree and it stopped appearing for me [04:06] IIRC something like tla sync-tree carlos.perello@canonical.com--2004/launchpad--devel--0 === lalo goes make mate [04:43] spiv:ping [04:44] lulu: pong [04:45] spiv: hi hon. Authentication - I just sent u an email on password changing and forget your password functionality in launchpad - please could u get back to me on this urgently. tx [04:46] Ok. [04:48] spiv: cheers. [04:50] I haven't got it yet -- which address did you send it to? [04:51] lulu: ^ [04:53] spiv: I had some problems with my smtp server and some merge requests were droped, I suppose it's that [04:54] spiv: my mistake - there now. [04:54] carlos: Ah, right... you merged rocketfuel into your archive before waiting for merge request finished? [04:55] spiv: technically, yes, I did not saw that my postfix was sending my merge requests to /dev/null until this morning [04:59] lulu: quick answer: Rroche is correct. I'm mailing a full answer. [05:05] spiv: can you extend the xml-rpc api to allow changes of password? [05:05] this can be an optional arg in editUser [05:06] spiv's on the launchpad today, did you see cprov? [05:06] trying to catch a rockettail === kiko is now known as kiko-fud === dilys [daf@muse.19inch.net] has joined #launchpad [05:09] SteveA: Heh, just sent mail. [05:09] SteveA: We have no editUser method. [05:10] I just proposed a changePassword method, but I'd be equally happy to implement it as an editUser method, that takes (login_id, current_ssha_digested_password) as positional arguments, and the new password (and potentially other fields) as keyword arguments. [05:10] what about adding a changePassword(user_id, current_password, new_password) [05:11] That's what I proposed in email :) [05:11] But I think editUser is a little more forward-looking. [05:11] guys - is it better for us to do it or for Roche to extend the API? [05:11] what is the long term fix and most robust? [05:11] lulu: he can't extend the API of the authserver, we have to do that. [05:12] SteveA: anyway, I'll start work on the guts of it right now, then, and worry about the interface later ;) [05:12] spiv: ok - let me read your mail :o) [05:12] I'm on the phone to roche [05:13] he is looking at what is needed on his end [05:13] thanks guys :o) [05:18] spiv: roche can work with your api, so please make the change, and get it put on macquarie [05:18] and on the test server too [05:18] Ok. [05:21] roche will be testing the change password functionality on the test server, and then deploying it [05:21] he asked when the new api would be on the test server, and I said you were expecting 1 hour [05:22] Ok. [05:23] are you able to install it on macquarie, or does elmo need to do that? [05:24] I can do that. [05:25] I asked elmo to leave my access on there for a week or so, in case of problems :) [05:25] great [05:33] Bug 2025 resolved: add option to user creation script to email the new user with account details [05:34] daf: we are using the ++vh+ stuff on rosetta.ubuntulinux.org aren't we? === SteveA is confused by daf's request to admins [05:34] ok, perhaps I worded it badly [05:45] carlos: you are inserting tabs into things :) [05:45] daf: really? [05:46] daf: hmm [05:46] yeah, the translation template was the last one [05:46] shit, I need to change the gvim mode for .pt [05:46] daf: true, it's done by gvim automatically :-( [05:46] I forgot it [05:47] We should add style guide, complete with vimrc settings, for .pt to the wiki... [05:48] daf: I have autocmd BufNewFile,BufRead *.py set tw=78 ts=4 sts=4 sw=4 expandtab for python [05:48] spiv: s/We should/Who will/ :) [05:48] I suppose that the same with *.pt should be enough, right? [05:48] carlos: I have something similar [05:48] carlos: and I think the same for .pt, yes [05:48] ok [05:49] and the same for .zml [05:49] by the way, the rosetta-testers list has been renamed to rosetta-users [05:49] zcml [05:49] I'm changing the references in Rosetta [05:49] ok [05:49] daf: then, will you fix the tab? [05:51] yep [05:51] ok [05:53] daf: bookmarks are still enabled on the alpha server [05:53] bookmarks? [05:53] duh... I meant breadcrumbs [05:53] oh, right [05:53] well spotted === carlos starts with #1973 [05:54] but I see that rosetta.ubuntulinux.org now points at rosetta [05:54] gosh, so it does [05:54] nothing like sending a unified diff to motivate a sysadmin :-) [05:54] :) [05:55] that's something to bear in mind === debonzi goes to lunch (happy time :) ) [05:57] SteveA: ok, I think I've stripped off everything that needs to go for the alpha [05:58] SteveA: did I miss anything that you can see? [05:58] where should I look? [05:59] devel server, or alpha server? [06:01] alpha server [06:01] I've been making the changes locally for now [06:01] I've been considering the possibility of having a launchpad--rosetta-alpha--0 branch [06:02] Bug 2027 resolved: Default header comments for new pofiles created with Rosetta are wrong [06:02] https://rosetta.ubuntulinux.org/rosetta/translator doesn't work [06:02] https://rosetta.ubuntulinux.org/rosetta/prefs doesn't work [06:02] I'm not logged in [06:02] hmm, those links are wrong [06:02] the link in the tab to "rosetta" doesn't work [06:02] the /rosetta shouldn't be there [06:03] the title for the "about rosetta" link shows an odd character / spaces [06:03] in its tooltip [06:03] https://rosetta.ubuntulinux.org/projects/gnome/gnome-panel doesn't work [06:04] https://rosetta.ubuntulinux.org/projects/gnome/gnome-applets works, but appears to be entirely unstyled [06:04] dilys: lalo? [06:04] hmm, because the base href is wrong [06:04] href="https://rosetta.ubuntulinux.org/rosetta/projects/gnome/gnome-applets/index" [06:04] carlos: hm? [06:05] carlos: I'm not lalo [06:05] dilys: did you fixed that bug? === carlos is confused [06:05] dilys seems to be a bot of daf's [06:06] and all manner of links are wrong [06:06] ok, there's major breakage with the virtual hosting, and I'll need to find out why that is [06:06] lalo: I see it? as comming from daf's machine [06:06] and I'm still confused :-D [06:06] SteveA: there's lots of hardcoding of "/rosetta/..." in the main template [06:07] for now, I think we need to use the backup plan of asking the sysadmins to revert the change in the vhosting configuration, and adding a redirect on the front page... [06:07] which is why I suppose it's a bot :-) [06:07] unless fixing the main template will help [06:07] SteveA: I've made some changes -- is anything still broken? [06:07] ah... [06:07] dilys: hello [06:07] I think the vhosting directive is wrong [06:07] lalo: hola! [06:08] daf: your boot is not utf-8 friendly :-) [06:08] I'm sure it is wrong [06:08] carlos: yeah, that's weird [06:08] daf: donde estas? === daf shrugs === daf -> workrave [06:11] daf: about our rosetta alpha release... I forgot to mention in the meeting that we need a bts for our alpha testers... [06:12] daf: the rosetta part needs to be inside the virtual hosting thing [06:12] http://dev.zope.org/Wikis/DevSite/Projects/ComponentArchitecture/Zope3Book/virtualhosting.html [06:14] So, I think it should be http://localhost:9010/++vh++https:rosetta.ubuntulinux.org:443/rosetta/++/ [06:14] and not http://localhost:9010/++vh++https:rosetta.ubuntulinux.org:443/++/rosetta/ [06:14] then the base hrefs will be correct [06:15] ok [06:15] so should I revert the changes I made to the main template, or leave them? [06:15] depends what changes you made [06:15] and will you send a diff to the admins, or shall I? :) [06:15] there should be no hardcoded /rosetta/ [06:16] is there a test account for rosetta.ubuntulinux.org? [06:16] you can test this on rosetta running on your machine [06:16] there's not only hardcoded /rosetta, there's hardcoded /soyuz and /malone also [06:16] SteveA: who can test what? [06:16] give rosetta a URL with the VH stuff in it, and then look at the source -- see if the base href is okay [06:16] ah, right [06:16] sabdfl: yes, there is [06:16] test@ and test? [06:17] daf: why is there hardcoded /soyuz etc. in the main template for rosetta? [06:17] it no work [06:17] sabdfl: foo.bar@canonical.com :) [06:18] SteveA: presumably because the person who wrote it didn't know better [06:18] SteveA: what's the correct solution? [06:18] but I mean, where is it linking to? [06:18] we don't want the tabs etc. in the rosetta alpha [06:18] we don't, and I've removed them [06:19] so, where is the hardoded soyuz ? [06:19] it's not there on rosetta.ul.o [06:19] then that is okay [06:19] right [06:20] what I meant was that the locations of Rosetta, Soyuz and Malone are hardcoded relative to / [06:20] what does proxypassreverse do? [06:20] no idea [06:21] New bug 2029 for Launchpad/Rosetta: Languages with country codes are not working === carlos leaves for a while [06:21] dilys: sshh, it's a secret [06:21] :-P [06:21] daf: is it the mozilla boot? [06:21] carlos: you shouldn't have filed a bug, then :) [06:22] carlos: "boot"? [06:22] bot [06:22] :-P [06:22] no, it's something I hacked up myself [06:23] daf: are you happy with checking that the VH things work on your machine? [06:23] SteveA: yep, about to do that [06:25] SteveA: no, it doesn't seem to be working [06:27] can you be more specific [06:27] I can, and I will :) [06:28] http://localhost:8085/++vh++http:localhost:8085/rosetta/++/ takes me to the Launchpad! page [06:28] ok, try it with the /rosetta/ before [06:28] as in, [06:28] before what? [06:28] http://localhost:8085/rosetta/++vh++http:localhost:8085/++ [06:29] yes, that works [06:29] how have you tested that it works? [06:29] I loaded it in my browser and it took me to the correct page [06:29] it goes to the rosetta front page. have you checked whether there is a base href given? [06:30] checking... [06:32] for example, on the rosetta alpha site, https://rosetta.ubuntulinux.org/projects/gnome/gnome-applets has a stray "rosetta" in the base href [06:32] where is the base href found? [06:32] in the source [06:32] just after [06:32] no, there isn't one [06:33] https://rosetta.ubuntulinux.org/projects/gnome/gnome-applets/index looks fine [06:33] https://rosetta.ubuntulinux.org/projects/gnome/gnome-applets doesn't [06:34] [06:34] what was the URL ? [06:34] for a GET of http://localhost:8085/rosetta/++vh++http:localhost:8085/++/projects/gnome/evolution [06:34] can you try this GET: [06:35] http://localhost:8085/rosetta/++vh++http:localhost:9999/++/projects/gnome/evolution [06:35] this should give you a base with :9999 in it [06:35] [06:35] ok, great [06:35] is the trailing "index" supposed to be there? [06:36] so, you can send another diff to the admins, and this stuff should work [06:36] yes, that's meant to be there [06:36] that's the default page [06:36] ok [06:37] "signalizes"?! [06:37] (from the VH doc) [06:38] it is written by someone whose native language is german [06:39] with contributions from Marius :) [06:40] yes, marius implemented the virtual hosting, along with albert and vika iirc [06:43] ok, I've sent another request [06:45] spiv: can you delete my account from launchpad that I registered with the email address steve@cat-box.net ? (if that's the done thing to do, I mean) [06:49] SteveA: ok. [06:50] daf: might want to ping elmo too, to let him know to expect another udiff in the mail [06:51] SteveA: done. [06:51] thanks [06:56] SteveA: elmo *is* here, by the way :) [06:56] here is where? on this channel you mean? [06:57] yes [06:57] I like the bootstrapping kind of thing where suggesting to ping someone actually pings them. [06:59] elmo: ping? [07:11] daf: do you want rosetta.ubuntulinux.org to be linked to as a tab from the UL website? [07:11] do you want this during the alpha? [07:11] lulu: did you say Limi was returning today? [07:11] SteveA: I don't care much either way [07:11] !lilo:*! Hi all. Again I will mention that we are still behind on verifying group contact forms you've submitted, and that we've instituted a "squeaky wheel" policy to try to improve response time....if you want to get your service expedited, just message me and I'll try to up your priority. Thanks! [07:12] will random people be able to get value from rosetta. is it clear that they need to apply to be a tester at this stage? [07:12] is it clear that there are a different set of logins? [07:12] limi should be around tomorrow [07:12] it is a matter of policy that people are approached for testerhood [07:13] spiv: I need some help to get started with the twisted-in-pyarch problem. [07:13] ddaa: Ok [07:13] What can I do for you? [07:13] help clarify my ideas === kiko-fud is now known as kiko [07:14] roughly, pyarch uses synchronous interfaces [07:14] problem has been found to occur even when the reactor is not running [07:14] although that is probably only a concern in test cases [07:15] That's intriguing. That means it's not related to the signal handlers. [07:15] So, internal twisted support needs to be enable only when the reactor is running or some magic variable is set to mean "we are running a test case in a process which uses twisted" [07:15] I can't think of any other global-state influencing things Twisted does, though. [07:15] daf: ok, but consider youself someone who saw an article in LWN, or slashdot, then came to ubuntulinux.org, and sees a "rosetta" tab [07:16] spiv: that's the problem you tried to work around at Oxford. [07:16] daf: if this person clicks there, will they be given something useful, if they're not a tester? [07:16] The problem test cases did not use twisted themselves, that's why it was possible to segregate them. [07:16] So, the problem here is that we don't know what part of Twisted is interfering. [07:16] if yes, then we should have a tab linking to rosetta [07:16] if no, we should not [07:16] So we don't know how to test for its presence. [07:17] spiv: that's the root of the problem yes [07:17] There's always the crude "if 'twisted' in sys.modules: ..." approach. [07:17] but I'm looking for a low-risk solution that I can implement before saturday evening. [07:17] twisted does magic things at module import? [07:18] Nope. [07:18] Well, there's minor magic for the import of twisted.internet.reactor, but otherwise, no. [07:18] (and I doubt that magic is the problem) [07:18] So, a reasonable solution seems to test for reactor.running (real world) and some magic flag internal to pyarh (test cases) [07:19] But I don't know of any other meaningful way to test for the presence of Twisted, if reactor.running is apparently not enough. [07:19] I'm going to brain dump random thoughts now. Do not try to make sense of them at first. [07:20] Ok :) [07:20] One problem is that the pyarch code is essentially synchronous. [07:20] So I will have to wrap the async twisted interfaces into a synchronous interface. [07:21] Yes that's evil. [07:21] Since it is synchrounous, it might be a reasonably assumption that if a reactor is running, the pyarch stuff is running in a thread. [07:21] SteveA: oh! [07:21] SteveA: no, there shouldn't be a Rosetta tab [07:22] Also, I need my test cases to run in a running reactor. [07:22] SteveA: the alpha is not going to be announced to the public [07:22] Yet they essentially have nothing async to them. [07:22] The running reactor is going to be needed for two things at least. [07:23] To set the reactor.running flag so pyrach internal will know to use twisted. [07:23] (test cases involving Twisted rarely need to run the reactor; iterating it manually usually enough) [07:23] (and there are utility functions like deferredResult to help with this) [07:23] daf: ok, then no need for links from the UL site at this time. [07:23] SteveA: right [07:24] Another relateh problem is the wrap-in-sync problem. === daf will be going out within the next 30 minutes [07:24] daf: I think it would be good to send a mail to the LP list clearly pointing this out [07:24] One major idiom in pyrach is the use of iterators over tla stdout. [07:25] otherwise, the enthusiastic UL website team might link to you, or add a tab [07:25] Right now I can see two ways which might me able to do it. [07:25] SteveA: good idea [07:25] 1. assuming we are in a thread, and the reactor push the output in a syncqueue which is used in the iterator. [07:26] 2. manipulate the process by hand, that might be possible if processes provide a nice deffered interface [07:26] 1. sounds reasonable to me. === mdz [~mdz@69-167-148-207.vnnyca.adelphia.net] has joined #launchpad [07:27] 3. use reactor.iterate, but that might not be possible if the reactor is already running somewhere else. [07:27] I'm not sure what you mean in 2 by "manipulate the process by hand", but it doesn't sound good :) [07:27] And 3 definitely sounds wrong. [07:27] I think 1 is the right approach here. [07:27] You u [07:28] spiv: can you work with a process with an interface which is based only on deferreds? [07:28] SteveA: ok, looks like r.ul.o's vhosting is working now [07:28] daf: cool -- elmo made the change to VH. rosetta pages now look correct. [07:28] ddaa: I think the answer is yes, but I'm not convinced the question makes sense ;) [07:28] SteveA: ok, do you think #2026 can be closed? === lulu [~lu@host217-37-231-28.in-addr.btopenworld.com] has left #launchpad [] [07:28] What I want to do barely make any sense to start with... [07:29] I am thinking about using the twisted process handling code w/o involving the reactor at all. [07:29] Oh, I see. [07:29] Since the code that need to work with process is synchronous to start with. [07:29] daf: looks like all those things are done [07:30] No, the twistd process handling code very much depends on the reactor. [07:30] s/twistd/twisted/ === SteveA wonders if there is a twisted.meltdown [07:30] SteveA: There is an IReactorCore :) [07:30] (which has a .crash method, even) [07:31] Then, what if pyarch code is invoked from the reactor thread? [07:31] Well, it shouldn't be. Just like blocking socket reads shouldn't be :) [07:31] Can you think of any way that will not cause a deadlock? [07:32] Bug 2026 resolved: clean up UI for Rosetta alpha [07:32] I don't see what's wrong with option 1 -- pyarch is in its own happy thread, and twisted's event loop is in its own happy thread, and they communication via the usual inter-thread methods. [07:32] Because, according to murphy's law, you can be pretty sure there is some code somewhere in production which calls pyrach from the reactor thread. [07:32] Well, that code is almost certainly buggy :) [07:33] It's not buggy according to the current contract, which is "pyarch does not fuck around with reactors" [07:33] Right, the bug wouldn't lie in pyarch. [07:34] Or in twisted... it would be in the code that is incorrectly integrating them. [07:34] You can't stop people writing buggy software with your library ;) [07:34] see, my goal is get production importd up and running as fast as possible, not to uncover new design flaw that will manifest themselves by random deadlocks... [07:35] Right. So I don't see where the deadlocks are yet. [07:35] Are you familiar with importd? [07:35] What makes you think deadlocks are a problem? [07:35] Somewhat. [07:35] I have no specific idea. [07:35] Ok, so, forget about the reactor for a moment :) [07:36] Just that currently, nothing prevents from calling pyarch from the reactor thread. [07:36] So it's almost certainly done somewhere. [07:36] Somewhere = in the canonical code [07:36] That's not too hard to fix. [07:37] give me a sec [07:37] Okay. Forget about reactors. I think you have a pretty clear idea of the problem, [07:37] What's your take on the problem? [07:38] Ok, twisted.python.threadable.isInIOThread() will tell you if you're in the reactor's thread. [07:38] kewl [07:38] And should be safe to call even if the reactor isn't running. [07:38] Okay. That's solving it. [07:39] (it probably should be a method on the reactor, but oh well...) [07:39] wait a min... [07:39] gotta meditate a bit about it. .. [07:40] Sure :) [07:40] Unfortunately, I'll have to go in a few minutes (same time as daf). [07:41] When are you back? [07:41] After dinner, we're going out to a thai restaurant. [07:42] I'm not sure precisely how long it will be, sorry :( [07:42] more like 4h than 8h [07:43] I hope to be sleeping 8h from now :) [07:43] as you might guess, I'm not planning to go bed before that's fixed or I am unable to think... [07:43] Ah, right. [07:45] (lightbulb) [07:46] as a quick hack, I can degrade to "non-incremental" if reactor is running... [07:46] i.e. just slurps the stdout [07:46] spiv: roche has a question [07:47] then I can build on top of that later [07:48] spiv: is the reactor code reentrant? [07:51] no... that would probably not make sense... === carlos [~carlos@204.Red-83-32-196.pooles.rima-tde.net] has joined #launchpad [08:50] spiv: are you here? [09:48] funny [09:48] SteveA: ping? [10:00] spiv, is the auth bustage landed yours? === mdz [~mdz@69-167-148-207.vnnyca.adelphia.net] has joined #launchpad === kiko is now known as kiko-afk === spiv is back === daf too [10:45] carlos: hey [10:45] I'm about to go to sleep [10:51] I read your email about authentication [10:51] I'll look into it tomorrow morning, if no-one else has tracked it down by then [10:53] carlos: which server are you having trouble with? [10:54] carlos: or is it both? [11:04] SteveA: ok [11:04] daf: with my local server [11:04] and with warthogs one [11:05] rosetta.warthogs.hbd.com [11:05] SteveA: night [11:06] spiv: I'm using alternateID instead of normal selectBy methods [11:07] spiv: I suppose it should improve the SQLObject use, right? [11:07] spiv: should I add it to the Wiki? [11:07] carlos: can you file a bug on the authentication problems you're seeing? [11:07] SteveA: sure [11:07] that way, it will be plain whether I need to look into it tomorrow, and what others have found out [11:08] ok [11:08] carlos: Yes, please. I forgot about that feature! [11:08] spiv: also, I don't see a way to "map" a INNER JOIN inside SQLObject queries [11:09] spiv: do you know if it exists? [11:09] carlos: what query do you want to do? [11:09] Because you want to return columns from multiple tables at once? [11:10] ddaa: No, the reactor is definitely not re-entrant! [11:11] results = RosettaPOMessageSet.select(''' [11:11] pofile = %d AND [11:11] primemsgid = %d [11:11] ''' % (self.id, msgid.id)) [11:11] that query [11:11] with normal selects could be improved with INNER JOIN [11:11] hmmm [11:12] wait, bad example [11:12] seqzero = RosettaPOMessageSet.select(''' [11:12] poSet.pofile = %d AND [11:12] poSet.primemsgid = potset.primemsgid AND [11:12] poSet.potemplate = potset.potemplate AND [11:12] potSet.pofile IS NULL AND [11:12] poSet.sequence <> 0 AND [11:12] potSet.sequence = 0''' % self.id, [11:12] clauseTables = [ [11:12] grrrrrrrrr! [11:12] 'POMsgSet poSet', [11:12] 'POMsgSet potSet', [11:12] ] ) [11:12] this one is better === daf loathes the destructive behaviour of .sort() [11:13] I can't wait for .sorted() [11:13] spiv: it's only to improve the queries, instead of a FROM with a list of tables [11:13] daf: what's the problem? [11:13] carlos: I have to do [11:14] somelist = blah.blarg() [11:14] somelist.sort() [11:14] return somelist [11:14] instead of: [11:14] return blah.blarg().sorted() [11:15] this is one thing Ruby has right: .sort for non-destructive sorting, .sort! for destructive sorting [11:15] daf: return (lambda l=somelist: l.sort() or l)() ;) [11:16] spiv: :D [11:16] spiv: yeah... I was high on crack... [11:16] (yes, that's unnecessarily compless :) [11:16] er, complex [11:16] You know twisted is heavy crack ;-) [11:17] I don't think Steve would approve :) [11:17] what's the simpler version? [11:17] return somelist.sort() or somelist [11:17] ewww [11:17] that's still smelly [11:18] Well, yes :) [11:18] :-P [11:18] sorted = lambda l: l.sort() or l; return sorted(l) is slightly better, but no longer one statement. [11:18] somelist.sort() or return somelist [11:18] ddaa: return is statement, not an operator. [11:19] right.... [11:19] Oh, I get your point. Yuck :P [11:19] What about just using two statement? [11:20] ddaa: that's what I'm doing :) [11:20] ddaa: I'm just saying I don't like it :) === mdz [~mdz@69-167-148-207.vnnyca.adelphia.net] has joined #launchpad [11:20] bah! [11:20] ForbiddenAttribute: ('sort', ... [11:21] daf: I'm pretty there are for python programmers with weird fetishes, like ternary operators and sort return values : [11:21] * there are clubs [11:21] an aversion to destrcutivity is not a weird fetish :) [11:23] Python does have a ternary operator -- it looks like this: [value1, value2] [condition] [11:23] New bug 2030 for Launchpad/Launchpad: After authenticate, launchpad fails with a system error [11:25] carlos: you say running on port 8089 doesn't work? [11:25] daf: it works [11:25] daf: but as anonymous [11:25] or rather, it doesn't produce an error [11:25] so you cannot debug the problem [11:25] hrm [11:26] same problem with ++skin++Debug [11:26] I know why ++skin++Debug is a problem, but not the PDB [11:26] daf: you can try it, rosetta.warthogs.hbd.com has the same problem [11:26] hmm [11:27] well, I did not check the pdb with the rosetta server because I don't see a way to test it :-) [11:27] of course :) [11:27] but I assume that as it has the same bug, you will get the same problem [11:27] :-) [11:28] I do get the same problem [11:28] perfect, I thought I broke anything with my sqlobject changes [11:28] one techique I use is to switch the ports around [11:28] eww, ternary operator's in python? please tell me you guys aren't using that [11:28] There is a widthdrawn pep about that. [11:29] elmo: not really === ddaa [~david@nemesis.xlii.org] has joined #launchpad [11:29] elmo: but ['foo', 'bar'] [True] == 'bar' and ['foo', 'bar'] [False] == 'foo' [11:29] elmo: so you can emulate it [11:30] Guido said "as people are unable to come to an agreement about ternary operators, I'll just reject the proposal" [11:30] Or something just as smooth to the same effect. [11:31] I didn't like any of the proposals [11:31] they were all a bit ugly [11:32] daf, btw methink that's a case for using a tuple instead of a list... [11:32] spiv: any word on DISTINCT support in SQLObject? [11:33] daf: None yet... is it a performance problem yet? [11:33] ddaa: yeah, a tuple would work, but is there any practical difference? [11:33] spiv: no, merely annoying :) [11:33] daf: no practical difference, but it's not intended to be mutable, so it should be a tuple. That's the most appropriate type for the use. [11:33] need to do list(Set(Foo.select(...))) [11:34] ddaa: agreed [11:35] carlos: Hmm, I think there's a better way to write that example without needing to change SQLObject. [11:35] spiv: launchpad/lib/sqlobject/dbconnection.py(510)iterSelect(): TypeError: iteration over non-sequence [11:35] spiv: this is the error behind #2030, I think [11:36] daf: Ok, I'll take ae look at that... I've got a workaround for that, but I want to think about it first :) [11:36] spiv: actually, I might have got the location wrong -- this traceback is confusing [11:36] spiv: which one? Do you have it ? or where could I read about it? [11:36] carlos: Just a sec [11:37] sure [11:37] carlos: RosettaPOMessageSet.select(''' [11:37] POMsgSet.pofile = %d AND [11:37] POMsgSet.iscomplete=TRUE AND [11:37] POMsgSet.primemsgid = potset.primemsgid AND [11:37] POMsgSet.potemplate = potset.potemplate AND [11:37] potSet.pofile IS NULL AND [11:37] potSet.sequence <> 0''' % self.id, [11:37] clauseTables = [ [11:37] 'POMsgSet potSet', [11:37] ] ) [11:38] EXPLAIN expects that to be twice as fast... I don't know if that's really the case or not :) [11:38] hmm, that change will speed the query? [11:38] It's also not as clear :( [11:39] spiv: interesting [11:39] Well, EXPLAIN in psql thinks so. I'd appreciate testing :) [11:40] (In fact, I suspect the previous query might be outright buggy...) [11:40] spiv: buggy? [11:41] spiv: no, it looks correct [11:41] but If it improves the speed... the postgres parser is really bad :-) [11:42] under my point of view, of course [11:42] carlos: No, it's SQLObject's fault... [11:42] If I'm correct, the currently generated query is: [11:42] select * from POMsgSet, POMsgSet poSet, POMsgSet potSet WHERE poSet.pofile = 1 AND poSet.primemsgid = potset.primemsgid AND poSet.potemplate = potset.potemplate AND potSet.pofile IS NULL AND poSet.sequence <> 0 AND potSet.sequence = 0; [11:42] vs. [11:43] select poSet.* from POMsgSet poSet, POMsgSet potSet WHERE poSet.pofile = 1 AND poSet.primemsgid = potset.primemsgid AND poSet.potemplate = potset.potemplate AND potSet.pofile IS NULL AND poSet.sequence <> 0 AND potSet.sequence = 0; [11:43] oohh, I see === daf bursts into tears [11:43] (actually, my proposed change will generate a slightly different, but equivalent, query to the last one, I'm just too lazy to retype it ;) [11:44] spiv: I see your point [11:44] I admit to being mildly concerned that the origial query returns twice as many columns! [11:45] spiv: I'm looking at the logs now [11:45] spiv: to check for it [11:45] spiv: oh, ouch [11:45] carlos: The reason I was initially confused is that it's my understanding that INNER JOIN is the default behaviour when you say "SELECT * FROM TableA WHERE TableA.b = TableB.id;" [11:45] spiv: can you tell we're SQL amateurs? :) [11:45] I could be wrong, of course :) [11:46] daf: Well, the problem here is that SQLObject provides no nice way to do this, so it's easy to get confused :( [11:46] spiv: well, it's the same thing, but postgres manual says that it's faster with INNER JOIN [11:46] carlos: Ooh, where does it say that? :) [11:46] Now it's my turn to bitch about it's parser ;) [11:47] This is the query that sqlobject generates: [11:47] SELECT POMsgSet.id, POMsgSet.potemplate, POMsgSet.pofile, POMsgSet.primemsgid, POMsgSet.sequence, POMsgSet.iscomplete, POMsgSet.fuzzy, POMsgSet.obsolete, POMsgSet.commenttext, POMsgSet.filereferences, POMsgSet.sourcecomment, POMsgSet.flagscomment FROM POMsgSet poSet, POMsgSet potSet, POMsgSet WHERE [11:47] poSet.pofile = 2 AND [11:47] poSet.primemsgid = potset.primemsgid AND [11:47] poSet.potemplate = potset.potemplate AND [11:47] potSet.pofile IS NULL AND [11:47] poSet.sequence <> 0 AND [11:47] potSet.sequence = 0 [11:47] spiv: so you are right we get a lot of extra rows [11:47] s/rows/columns/ [11:47] ? [11:47] carlos: Extra rows, too? Ouch. I don't have the sampledata to test with, so I merely noticed extra columns. [11:47] (I'm not surprised, though...) [11:49] I think so [11:49] let me check it [11:49] yeah, PDB claims the error is at [11:49] 509 return iter(list(Iteration(self, self._connection, [11:49] 510 -> select, keepConnection=True))) [11:50] which looks vaguely familiar :) [11:50] hmmm, seems like I was wrong and we only get extra columns [11:51] I don't know why but I saw a way to get extra rows... but that's an offtopic now :-) [11:51] spiv: http://www.postgresql.org/docs/7.4/static/tutorial-join.html [11:52] spiv: a "normal" INNER JOIN is the same thing than a list of tables at FROM [11:52] but you can handle it in a better way with INNER JOIN so the query is faster [11:53] with LEFT/RIGHT options [11:53] so you can select which table will be the pivot [11:53] I thought LEFT and RIGHT are for OUTER joins only === carlos is not sure that pivot is the right word there [11:54] daf: we have lots of those queries [11:54] about msgid and translations [11:54] I should look at it closer [11:55] Except the SELECT * FROM TableA WHERE TableA.b = Tableb.value; case is a different case to SELECT * FROM TableA, TableB WHERE TableA.b = Tableb.value; [11:57] humph -- even list.sort is a Forbidden value :( [11:57] spiv: From where do you get the Tableb for the first query? [11:57] daf: zope error? [11:57] carlos: yeah :( [11:57] carlos: Nowhere -- I'm not selecting values from tableB. [11:58] carlos: I'm selecting rows on tableA by joining with tableB... [11:58] daf: you could try to wrap it inside a browser.py method [11:58] I think it's a dodgy shorthand, but it's a convenient one ;) [11:58] carlos: this is inside browser.py :) [11:59] spiv: hmm, so you have that concrete value for Tableb before the query, right? [11:59] daf: then I don't understand why are you getting it :-) [11:59] carlos: Nope. [11:59] carlos: browser.py runs under the same security restrictions as the page templates themselves [12:00] carlos: I believe it's equivalent to SELECT * FROM TableA INNER JOIN TableB ON (TableA.b = TableB.value); [12:00] spiv: are you telling me that if I execute that query from psql it will work? [12:00] carlos: Absolutely: