[00:35] wgrant: http://pastebin.ubuntu.com/5669749/ [00:41] StevenK: Having an _ method on an interface makes even less sense than having it in configure.zcml. [00:41] StevenK: If you really need to access it from outside, particularly through a proxy, it should not be private. [00:42] wgrant: I don't want to rename it because then I have to re-grow the _getSpecifications method [00:43] StevenK: Why? [00:43] We control both sides of the code [00:43] We can rename it on both [00:43] ez [00:44] But the ProductSeries is via IHasSpecifications, which has far wider impacts. [00:45] StevenK: Er [00:46] StevenK: IHasSpecifications contains _all_specifications? [00:46] wtf, so it does [00:46] Yes [00:46] wtf [00:46] And it's exported [00:46] So we're stuck with it [00:47] It's exported without _ [00:47] exported_as="all_specifications", as_of="devel") [00:47] Also, why is that exported :/ [00:47] So it's _all_specifications for beta and 1.0 ? [00:47] Sigh [00:47] No [00:47] Blueprints aren't exported at all before devel [00:48] Ah [00:48] What do people have against sensible search methods? [00:48] So which one of us is going to check appserver logs for all_specifications? :-) [00:48] It's going to be used [00:48] Because there's no specification search method AFAICT [00:48] search_specifications [00:49] Not on the API [00:49] Right [00:49] Also note that the fact it's exported means that you can't change it to actually return all specifications [00:49] It has to use LaunchBag to get the user [00:50] So perhaps create a new method _SERIOUSLY_PEOPLE_THINK_ABOUT_IT_BEFORE_YOU_EXPORT_SOMETHING_all_specifications [00:50] And export that instead [00:52] Hahaha [01:04] wgrant: So, IHasSpecifications._all_specifications gets renamed to visible_specifications, and left exported as it is. [01:07] wgrant: IMilestone._all_specifications gets renamed to something, and IHasSpecifications grows a method named the same that returns all specs [01:08] StevenK: Right. [01:20] wgrant: Suggestions for the 'something' ? [01:23] I think ISpecificationSet._all_specifications can die horribly, since I think only two tests use it [02:26] StevenK: Great [02:36] Hmmmmm, I don't think I can do all_specifications generically [02:36] Since not all of the ISpecificationTargets have columns in specification [02:38] wgrant: Will you accept I{Milestone,ProductSeries}.all_specifications which ignore privacy? [02:43] StevenK: Sure [02:48] ForbiddenAttribute: ('set', ) [02:49] I thought that was the right thing [02:49] StevenK: It is, but it's dangerous so it's not exposed by IResultSet === gary_poster is now known as gary_poster|away [02:53] wgrant: http://pastebin.ubuntu.com/5672432/ [02:55] StevenK: Hm, is SpecificationSet.__iter__ actually used by anything? [02:56] That's slightly harder to check [02:57] Yeah [02:57] Just saw it in thebranch [02:57] Not really relevant [02:58] StevenK: That looks reasonable. [02:59] I don't think it's used. [02:59] But it's hard to grep for. [03:01] wgrant: I can remove it from the model and interface and claw bit a little bit of LoC and then we'll see if buildbot loves or hates it? [03:06] StevenK: Maybe, but there might be webservice stuff that wants it [03:07] wgrant: It's not exported [03:07] And I don't think ISpecificationSet is either [03:09] StevenK: Ah, true [03:09] BugSet is special, because bugs live in the root [03:09] So yeah [03:09] Kill it and fix any tests that break [03:10] * StevenK waits for the scanner before he re-pushes [03:17] Bwaha [03:18] There is one test failure, and I caused it [03:24] wgrant: https://code.launchpad.net/~stevenk/launchpad/workitems-delete-series/+merge/156457 has updated [03:28] 273 + return list(self.context.visible_specifications) + [ [03:28] 274 + list(milestone.getSpecifications(self.user)) [03:28] 275 + for milestone in self.milestones] [03:28] StevenK: That's going to create a list of specs and then lists of specs [03:29] Hmmmm [03:29] StevenK: Do you need to doNotSnapshot IMilestone['all_specifications']? [03:29] IProductSeries too [03:29] Oh, where is that? [03:30] Oh. [03:31] wgrant: I can't just wrap the Attributes in doNotSnapshot? [03:37] StevenK: You probably can, yes [03:39] Gah, I was hoping to come up with a elegant solution for the ProductSeriesView.specifications :-( [03:41] I thought chain() could do it, but my testing isn't having much success [03:41] chain is right [03:47] Bleh [03:49] wgrant: But it isn't quite [03:52] StevenK: Oh? [03:53] wgrant: I can't just feed the comprehension into chain because then I can't add it to the first list [03:54] And I'm not sure about the wisdom of the a cachedproperty returning a iterator directly [03:54] StevenK: Why not? list(itertools.chain(whatever.specs, *[list of lists]) [03:54] ) [03:56] Hah, which is 4 lines long anyway [04:07] wgrant: And diff updated [04:10] StevenK: Thanks, r=me [05:09] wgrant: Do you still have objections to socket.setdefaulttimeout() for checkwatches? [05:10] StevenK: Internal calls will probably override that already [05:10] Though maybe not [05:10] Anyway, it sounds like we have some rogue HTTP calls [05:10] Which are not just bad because they miss timeouts [05:13] I couldn't see any rogue calls when I was reading xmlrpc and bugzilla externalbugtracker yesterday [05:25] StevenK: We also have a traceback from one of the recent hangs, don't we? [05:25] wgrant: On carob [05:28] wgrant: ~hloeung/7728.txt [05:28] That looks to implicate lib/lp/bugs/externalbugtracker/xmlrpc.py (109): request, but that sets a timeout. [05:30] Yeah [05:30] That's what I thought [05:30] So we need to find out why that didn't work [05:32] You know... [05:32] We should take down code imports more often [05:32] Frees up the build farm [05:32] Haha [05:35] wgrant: I do not get it. [05:35] urllib2 looks fine in terms of timeout handling [05:36] StevenK: Could it be hanging on squid.internal? [05:36] We don't actually get a timeout exception back [05:36] So it's possible that the TCP connection is still active, but it only makes it as far as squid.internal [05:37] All roads lead to squid.internal, as they say [05:37] The connection on loganberry was to the remote IP [05:37] Not breadfruit [05:37] Ah, true [05:37] That's a bit upsetting [05:39] wgrant: And urllib2 hasn't changed significantly between 2.6 and 2.7 [06:57] Ah [06:57] I may finally have uncovered the untranslated translation credit bug. [06:58] Is it another wrong LEFT JOIN? :-) [06:58] No [06:58] Message sharing, as usual :) [06:59] I do not understand that checkwatches hang. Which makes me very sad. [06:59] I can have rosetta make you very sad instead... [07:00] If you want me to help, sure. But you'll have to get me up to speed first. :-) === almaisan-away is now known as al-maisan === al-maisan is now known as almaisan-away [07:15] aloha === wedgwood_away is now known as wedgwood === wedgwood is now known as Guest65596 === wedgwood is now known as Guest36969 === wedgwood is now known as wedgwood_away === wedgwood_away is now known as wedgwood === deryck is now known as deryck[lunch] === wedgwood is now known as wedgwood_away === deryck[lunch] is now known as deryck === wedgwood_away is now known as wedgwood === bac_ is now known as bac === _mup__ is now known as _mup_ === wedgwood is now known as wedgwood_away