[03:29] <dilys> Merge to rocketfuel@canonical.com/launchpad--devel--0: Fixed and improved the import daemon and added my script to import pofile over the web to have a backup so I don't lose it (patch-1135, carlos.perello@canonical.com)
[11:21] <SteveA> hi folks
[11:28] <carlos> SteveA: morning
[11:32] <dilys> Merge to rocketfuel@canonical.com/launchpad--devel--0: Allow access to the changelog via the debug skin (patch-1136, stuart.bishop@canonical.com)
[11:48] <SteveA> allow access to the changelog via the debug skin?
[11:48] <SteveA> stub: what does that mean?
[11:51] <carlos> SteveA: could we add more entries to the error page (https://launchpad.ubuntu.com/errors)? 
[11:52] <SteveA> carlos: sure
[11:52] <carlos> SteveA: we have many users now and it's hard to see an error if they report it after more than 5 minutes they get it
[11:52] <SteveA> I'm not coding yet -- still hacking
[11:53] <SteveA> what we should do is have errors mailed to a launchpad-errors mailing list
[11:53] <SteveA> then we can all see them
[11:53] <SteveA> and refer to them in URLs
[11:53] <SteveA> and discuss them
[11:53] <stub> Urgh.... beeps off again :-(
[11:53] <carlos> SteveA: hmm, sounds better, yes
[11:54] <SteveA> hi stub
[11:54] <stub> SteveA: It means you can retrieve /changelog.html if you are on the debug port, which is good so people can see when stuff is rolled out to dogfood
[11:54] <carlos> SteveA: some users asked to get more information than just a "system error" so they can report the error easily
[11:54] <SteveA> carlos: okay.  we'll make it send an email, and generate a UID
[11:54] <SteveA> then the error page can print the UID, and it can be in the subject of the email
[11:55] <SteveA> I'm not coding yet, still catching up, I meant
[11:55] <SteveA> when I said earlier "I'm not coding yet -- still hacking"
[11:56] <carlos> SteveA: sounds good. Thanks
[11:56] <carlos> ok
[11:56] <SteveA> carlos: file a bug on it
[11:56] <carlos> SteveA: public or closed malone?
[11:56] <carlos>  /s/closed/private/
[11:57] <SteveA> the launchpad one
[11:57] <SteveA> so, the one on dogfood
[11:57] <dilys> Merge to rocketfuel@canonical.com/launchpad--devel--0: More changes to prevent that the daemon dies if we get an exception (patch-1137, carlos.perello@canonical.com)
[11:57] <SteveA> that's where we file launchpad bugs
[11:57] <carlos> ok
[11:58] <carlos> stub: could we get a production update?
[11:58] <carlos> stub: we really need it
[11:58] <SteveA> in this case, we must be careful not to use the transactional mail sender
[11:58] <SteveA> as the transaction will be aborted
[11:58] <SteveA> carlos: can you note that in the bug report?
[11:59] <carlos> sure
[11:59] <SteveA> thanks
[12:01] <stub> carlos: I'll investigate if I can without screwing  lifeless when he is back
[12:01] <carlos> stub: when will be available?
[12:02] <carlos> I'm blocked with my current task until production update is done
[12:02] <carlos> stub: at least, could you execute the import daemon? elmo restarted the servers and it's not running anymore
[12:04] <carlos> Traceback (innermost last):
[12:04] <carlos>     * Module zope.publisher.publish, line 143, in publish
[12:04] <carlos>       publication.afterCall(request, object)
[12:04] <carlos>     * Module zope.app.publication.browser, line 64, in afterCall
[12:04] <carlos>       super(BrowserPublication, self).afterCall(request, ob)
[12:04] <carlos>     * Module zope.app.publication.zopepublication, line 167, in afterCall
[12:04] <carlos>       txn.commit()
[12:04] <carlos>     * Module transaction._transaction, line 293, in commit
[12:04] <carlos>       self._commitResources(subtransaction)
[12:04] <carlos>     * Module transaction._transaction, line 340, in _commitResources
[12:04] <carlos>       rm.tpc_vote(self)
[12:04] <carlos>     * Module transaction._transaction, line 629, in tpc_vote
[12:04] <carlos>       self._datamanager.prepare(transaction)
[12:04] <carlos>     * Module sqlos.transaction, line 157, in prepare
[12:04] <carlos>       obj.sync()
[12:04] <carlos>     * Module sqlobject.main, line 672, in sync
[12:04] <carlos>       raise SQLObjectNotFound, "The object %s by the ID %s has been deleted" % (self.__class__.__name__, self.id)
[12:04] <carlos> here we go again....
[12:04] <carlos> :-(
[12:04] <carlos> SQLObjectNotFound: The object POMsgID by the ID 8608 has been deleted
[12:16] <carlos> stub: the dogfood server is down atm
[12:17] <stub> carlos: ok. I was going to do a rollout anyway.
[12:17] <carlos> ok
[12:37] <SteveA> carlos: is there a bug for showing only simple translations to new translators?
[12:37] <carlos> not yet
[12:37] <SteveA> these would omit translations that use %s and similar, and also those that use shortcut keys
[12:37] <SteveA> I hadn't realized about the short-cut keys before
[12:38] <carlos> It's hard to detect the shourtcut keys, sometimes you will remove strings that are not really shortcuts
[12:38] <carlos> also, it depends on the toolkit
[12:38] <carlos> I think that QT uses '&' as the shortcut char
[12:39] <carlos> and gtk uses '_'
[12:39] <carlos> but we could try to do something about it
[12:40] <carlos> SteveA: we are using now public malone for Rosetta bugs, is it ok to use it for all Rosetta bugs/feature requests filed by us?
[12:40] <SteveA> there's an additional issue that the shortcut key can change, but the change needs to be co-ordinated with other short-cut keys in the same application
[12:40] <SteveA> in a way, this should be kept separate from the actual translated string itself
[12:41] <carlos> SteveA: since some gtk versions, it's not a problem if you have two shortcuts with the same key
[12:41] <carlos> "since some gtk version _ago_"
[12:42] <carlos> not sure about QT
[12:42] <SteveA> it is a problem for the UI
[12:42] <SteveA> and it makes the translated strings less reusable
[12:42] <SteveA> but, that is a way future feature
[12:42] <carlos> right
[12:52] <stub> carlos: We don't want security related bugs in here if we find any
[12:53] <carlos> stub: are you talking about the public malone?
[12:53] <carlos> stub: yeah, any bug report _but_ security bugs
[12:53] <SteveA> well
[12:54] <SteveA> maybe malone should have a "this is security-related" checkbox
[12:54] <SteveA> and reject all bugs that are filed with that checked, with an explanation
[12:54] <SteveA> I would file this bug, but I know I shouldn't ;-)
[12:58] <carlos> SteveA: well, the idea is that the security bugs will be hidden to the security team
[12:58] <carlos> that's what I think it's going to be implemented
[12:58] <dilys> New Malone bug #182: "Improve the error log for the production server", submitted by Carlos Perell Marn
[12:58] <dilys> https://dogfood.ubuntu.com/malone/bugs/182
[01:00] <SteveA> carlos: yes.  but right now, it is easy to inadvertently file a security bug.
[01:25] <carlos> SteveA: are we able to restrict the access to some of the launchpad's features only to admins?
[01:27] <carlos> SteveA: we need an UI to manage the production server's language/country tables and it should be done only by Canonical people (daf and I)
[01:27] <carlos> so we can add and update easily plural forms information
[01:31] <SteveA> carlos: yes, we can restrict things to admins
[01:32] <SteveA> carlos: you need to do the following, then I will help you do this.
[01:32] <carlos> ok
[01:32] <SteveA> 1. write down the methods / attributes of which interfaces govern setting the language and country tables.
[01:32] <SteveA> 2. write a stubbed out page that will become the edit form for one of these.
[01:33] <SteveA> 3. we'll work out how to do the permissions and authorization code and so on.
[01:34] <carlos> ok, I will do it "next year" ;-)
[01:35] <carlos> as soon as it's ready I will tell you it
[01:35] <SteveA> ok
[01:36] <daf> should we worry about the error reporting service being publically available?
[01:36] <SteveA> well, perhaps
[01:36] <daf> in the future, it might be a security risk
[01:36] <SteveA> ideally, it would not be
[01:37] <daf> since people might see errors related to security bugs
[01:37] <SteveA> indeed
[01:37] <daf> I think it's ok for now, but something we should fix sooner or later
[01:37] <SteveA> we could do that using apache -- certificatize it
[01:37] <daf> good idea
[01:37] <SteveA> I don't really want the error reports going through much code
[01:37] <SteveA> of launchpad
[01:37] <daf> you mean you want to keep it simple?
[01:38] <SteveA> yes
[01:38] <carlos> SteveA: if we take the approach you suggested, we could remove that page, right?
[01:38] <SteveA> no
[01:38] <daf> carlos: which page?
[01:39] <carlos> the errors one
[01:39] <dilys> Merge to rocketfuel@canonical.com/launchpad--devel--0: Fix generated changelog (patch-1138, stuart.bishop@canonical.com)
[01:39] <daf> what approach?
[01:40] <carlos> daf: https://dogfood.ubuntu.com/malone/bugs/182
[01:41] <daf> ah, I see
[01:46] <dilys> System error on launchpad.ubuntu.com: RuntimeError: Got translation for msgid u'foo' which is not in the template. (User: 3646, Manuel Antoni; Page: https://launchpad.ubuntu.com/rosetta/products/wordpress/wordpress-1.5/+translate)
[01:47] <carlos> daf: ?
[01:47] <carlos> what's that?
[01:47] <daf> ^^^ we could do something like that for errors
[01:47] <carlos> stub: around?
[02:04] <stub> carlos: yup
[02:04] <carlos> stub: could you execute this into the production database?:
[02:04] <carlos> update language set pluralforms=3, pluralexpression='n < 2 ? 0 : n == 2 ? 1 : 2' where code='gd';
[02:04] <carlos> update language set pluralforms=4, pluralexpression='n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3' where code='sl';
[02:05] <carlos> we are going to get an easier way to do that in the future, but if you could do it now... ;-)
[02:10] <stub> carlos: Done
[02:10] <carlos> stub: thank you!
[02:22] <carlos> daf: about the synaptic thing
[02:22] <carlos> daf: at this moment, if we import a pofile that does not have the translations from Rosetta
[02:22] <carlos> we will "lose" them
[02:23] <carlos> because we don't have a way to know if they were removed after exporting the pofile
[02:24] <carlos> and we don't have (yet) a way to suggest previous translations so the data is still in the database but the user will feel that they are lost
[02:25] <daf> yes
[02:26] <carlos> only rhythmbox remains to be imported in my laptop!! and I only got 1 error from about 500 po/pot files imported
[02:30] <daf> great!
[02:30] <daf> what was the error?
[02:35] <SteveA> nice work tending the rosetta mailing list, carlos
[02:46] <daf> yes, seconded!
[02:46] <daf> carlos has also been doing much of the mailman moderation for the list
[02:51] <daf> SteveA: if I move doctests from lib/canonical/rosetta/test/test_browser.py into lib/canonical/rosetta/browser.py, will they still get detected and run by the test runner?
[02:51] <daf> I'd like to move at least some of the tests to be inline
[02:54] <SteveA> you need to add a DocTestSuite for rosetta.browser into test/test_browser.py
[02:54] <daf> ah, ok
[02:55] <daf> did you need to do something similar for canonical.launchpad.database.person?
[02:56] <SteveA> I think those are in the canonical/launchpad/doc/ directory
[02:56] <SteveA> but, yeah
[02:56] <SteveA> I must have done
[02:56] <SteveA> for the inline doctest in browsername
[02:56] <SteveA> so you can look into that to see how it is done
[02:56] <daf> that's the one I was thinking of
[02:57] <carlos> SteveA: thank you
[02:57] <carlos> daf: the error was a missing plural form, so it's not our fault directly
[02:58] <daf> SteveA: ah, yes, lib/canonical/launchpad/database/tests/test_rundoctests.py
[02:58] <daf> carlos: good :)
[03:00] <carlos> also, I went out of space in my laptop tonight and the import daemon died, I have tried to recover it from that kind of errors (lifeless already told me about that problem). I think that it should be able to recover from any error except for a database restart
[03:00] <carlos> well, more than recover... it just ignore any exception and retries it later
[03:02] <daf> a more resilient import daemon would be good
[03:03] <daf> ok, I think I have both bugs with tabs in message IDs fixed
[03:03] <daf> I'll submit a merge, then go to lunch
[03:03] <carlos> daf: nice!
[03:03] <daf> even better, I was able to add test cases for both bugs
[03:06] <daf> assuming the merge goes in, I think the change is production-ready
[03:08] <carlos> will try to test it in my laptop after testing the synaptic import
[03:41] <stub> carlos: I'm trying a production update
[03:41] <stub> daf: Is your fix urgent, or can we dogfood it until boxing day?
[03:41] <daf> I would like it to go in today
[03:41] <daf> I had a conflict
[03:41] <carlos> stub: boxing day?
[03:41] <daf> carlos: 26th December
[03:42] <stub> carlos: Dec 26th
[03:42] <carlos> ;-)
[03:42] <carlos> I have found a bug that should be fixed also today
[03:42] <carlos> stub: if you could wait...
[03:42] <daf> carlos: which bug is that?
[03:42] <carlos> daf: seems like some plural forms are not being imported
[03:42] <carlos> from the pofile
[03:42] <daf> do we have a fix for it?
[03:43] <carlos> daf: I just detected it
[03:43] <carlos> I'm working on it
[03:43] <daf> hmm
[03:44] <carlos> daf: look at rhythmbox translations in my computer
[03:44] <daf> I think I'd prefer it if we don't wait for this fix
[03:45] <carlos> daf, stub: is it ok to have two updates today? :-P
[03:46] <daf> well, I'm thinking of two things (a) the bug I have a fix for is one that is blocking users and (b) we have a fix for it
[03:47] <carlos> you are right, I'm just asking if it's possible to get a sync after I finish the fix and we have tested it enough
[03:57] <stub> Assuming this update works (still backing up the previous install - arch does like to create lots of files, doesn't it...), I'll do another rollout in about 12 hours.
[04:02] <dilys> Merge to rocketfuel@canonical.com/launchpad--devel--0: cleanups; fix bugs with tabs in message IDs (patch-1139, daf@canonical.com)
[04:03] <daf> stub: ^^^ there's my merge
[04:18] <carlos> wow, the bug is sooooo stupid
[04:21] <stub> I can't work out how lifeless is maintaining the production config - I suspect it isn't :-(
[04:21] <daf> it isn't what?
[04:21] <daf> maintained?
[04:21] <stub> maintained anywhere
[04:22] <stub> All this arch config and I can't find where the production customizations are - if I checkout launchpad--production--1.8, you don't get a configured version. 
[04:27] <stub> So if I do a production rollout, I'm going to have to guess what the local changes are. Apart from the .zcml database configuration, I have no idea what local changes needed to be made on macquarie to get it all running happily.
[04:28] <carlos> then, I suppose we should wait for lifeless ...
[04:28] <carlos> or try it and if it does not work, revert to the current codebase
[04:29] <daf> shouldn't we have staging serves for this kind of thing?
[04:40] <carlos> daf: I don't understand you
[04:40] <carlos> What do you mean?
[04:40] <daf> a server we can test things on before making them live
[04:41] <carlos> that's dogfood
[04:41] <carlos> right?
[04:41] <daf> no
[04:41] <daf> not quite
[04:41] <daf> the point of the staging server is to have a configuration as close as possible to the production server
[04:42] <daf> including production data if possible
[04:46] <dilys> Merge to rocketfuel@canonical.com/launchpad--devel--0: Fixed plural forms import from po files and added a new plural form expression into our database (patch-1140, carlos.perello@canonical.com)
[04:47] <carlos> daf: https://launchpad.ubuntu.com/malone/bugs/9
[04:48] <daf> :/
[04:48] <carlos> that bug prevents to import many of the languages that only have singular forms (like ja, and tr)
[04:48] <daf> aren't the PO files broken?
[04:49] <carlos> no
[04:49] <carlos> well...
[04:49] <carlos> gettext thinks that they are ok
[04:49] <carlos> we could say that are broken, but we are able to recover from that situation easily
[04:49] <daf> by ignoring extra translations?
[04:50] <carlos> ignoring the extra plural forms if we have more, and adding empty ones if we don't have enough
[04:50] <daf> or by importing them regardless?
[04:50] <carlos> daf: we could import them
[04:50] <carlos> but mark the extra ones as not active
[04:50] <carlos> so next time we export a po file, it will be "fixed"
[04:51] <carlos> and we are not losing information, because we have it stored into the database
[04:51] <daf> that seems sane, I guess
[04:53] <carlos> SteveA, daf: we should fix the legal link from launchpad
[04:54] <carlos> I'm not too good redacting legal text in English
[04:54] <carlos> could you look at it?
[04:54] <daf> yes, we need to do that
[05:53] <carlos> later
[10:51] <carlos> stub: around?
[10:52] <carlos> I'm moving from my laptop (hoary) to my desktop computer (warty) and the database creation is not working correctly, It gives me an error about the type "tsvector"
[10:52] <carlos> and I have installed the postgres' contrib package
[11:01] <stub> carlos: make sure you still have the search path set correctly in your postgresql.conf file
[11:02] <stub> carlos: And that you are building the database with 'make PYTHON=python2.4' and not just 'make'
[11:02] <carlos> python2.4?
[11:02] <carlos> I'm using warty in my desktop computer
[11:02] <stub> Oh... sorry... say hoary ;)
[11:03] <carlos> not hoary ;-)
[11:03] <stub> First point is still valid
[11:03] <carlos> ohh
[11:03] <carlos> right
[11:03] <carlos> I forgot the search path...
[11:04] <carlos> stub: thank you