/srv/irclogs.ubuntu.com/2012/07/31/#launchpad-dev.txt

wgrantStevenK: Well, it's completely valid.00:01
wgrantStevenK: You're just invalidating the assumptions it's based on.00:01
wgrantStevenK: Is that one of the tests that I said you should keep?00:02
wgrantStevenK: The key is that not all structsubs will produce notifications.00:02
wgrantThe one tested in that test does, because it uses the owner for convenience.00:02
wgrantSo change the test to not subscribe the owner, and it will hopefully pass.00:02
wgrantlp.bugs.model.tests.test_bug.TestBugPrivateAndSecurityRelatedUpdatesPrivateProject.test_transition_to_private_grants_subscribers_access00:03
wgrantWhat a test name.00:03
StevenKwgrant: So if I change the test to structually subscribe a different person, then it is pretty much lp.bugs.tests.test_bug_notification_recipients.TestBugNotificationRecipients.test_private_bug_with_structural_subscriber00:04
wgrant"This seems like a reasonable integration test to retain. You've added a test that sharing => notification in test_private_bug_with_structural_subscriber_with_access, but unless I've missed one this is the only one that tests !sharing => !notification."00:05
wgrantI missed one :)00:05
StevenKRight00:06
StevenKwgrant: That doesn't happen often. :-)00:06
wgrantHah00:06
wgrantYou should always doubt me.00:06
wgrantUnless I'm right.00:07
StevenKwgrant: I've addressed all of your comments, aside from the two related to (368-369, 392-396)00:08
StevenKThose two can wait until after breakfast.00:09
wgrantStevenK: What breaks when you filter direct subscribers?00:09
wgrantThat bit is not negotiable.00:09
wgrant392-396 might be00:09
StevenKwgrant: No fair engaging me with questions when my stomach is threatning to break out and find breakfast on its own.00:10
wgrantStevenK: that sounds beneficial.00:10
wgrantIt means you can keep working on this branch while your stomach eats.00:10
StevenKwgrant: Hah00:35
StevenKwgrant: So I think your comment of "The function didn't previously return nothing for private bugs, ..." is wrong, since I think it was never actually called for private bugs.00:35
wgrantStevenK: It may not have been.00:52
wgrantStevenK: But you'll need to check other callsites.00:52
StevenKI'm about to filter direct subscriptions so I can show you the breakage.00:53
wgrantGreat.00:53
StevenKwgrant: http://pastebin.ubuntu.com/1120572/ is the crux of the breakage00:57
wgrantStevenK: Why does that happen?00:58
StevenKwgrant: Like I said on the call, I didn't investigate.00:59
StevenKI figured out it works if I don't filter direct subscriptions and left it at that.00:59
wgrantRight, you should figure that out. It's probably because it adds grants for direct_subscribers01:00
wgrantDepending on what else calls direct_subscribers, you may not want to filter direct_subscribers itself01:01
wgrantBut a wrapper01:01
StevenKwgrant: direct_subscribers is a wrapper around direct_subscriptions01:01
wgrantSure01:02
wgrantBut it's a wrapper for a different purpose01:02
StevenKHm, nothing seems to call it directly01:02
wgrant            # Grant the subscriber access if they can't see the bug.01:03
wgrant            subscribers = self.getDirectSubscribers()01:03
wgrantThat might be relevant01:03
StevenKYes, I was about to dig into callsites of getDirectSubscribers()01:03
StevenKOh, is that working around a bug in the sharing service?01:05
wgrantProbably not. Why?01:05
StevenKI was guessing self.getDirectSubscribers() == []01:06
StevenKLooks like I'm wrong01:06
wgrantThe sharing service doesn't know about subscriptions. That's not its job.01:07
wgrantNow01:07
wgrantFiltering Bug.direct_subscribers directly is probably wrong01:07
wgrantSince people are still subscribed01:07
wgrantThey just can't see it.01:07
StevenKwgrant: Oh? Shall I substract it from also_notified_subscribers then?01:09
wgrantStevenK: They need to be notified if they have access01:11
wgrantLike also_notified_subscribers01:11
wgrantalso_notified_subscribers is only used for notification purposes01:11
wgrantIt is only meaningful for notification purposes.01:12
wgrantSo it is sensible to filter that there.01:12
wgrantBut direct_subscribers isn't just used for notification.01:12
StevenKRight, so you *do* want me to filter it in also_notified_subscribers01:12
wgrantNot subtract it from :)01:12
StevenKJust trying to work out how to filter ...01:13
wgrantStevenK: In fact01:13
wgrantHm01:13
StevenKself.direct_subscribers_at_all_levels is not the place, since that backs directly onto direct_subscriptions01:13
wgrantso01:14
wgrantdirect_subscribers is just used for exclusion, it seems01:14
wgrantI misread.01:14
wgrantThe real thing you need to filter is the getDirectSubscribers call in getBugNotificationRecipients01:14
StevenKHmmm01:16
StevenKWhich is in the guts of IBug itself, the rest of my playing has been in BugSubscriptionInfo01:16
StevenKwgrant: So not getDirectSubscribers() itself? Since we already figured out that fiddling with recipients after the fact is Bad.01:17
wgrantIn related news, methods that mutate their arguments are bad.01:22
StevenKWho woulda thunk it01:23
wgrantStevenK: transitionToInformationType and a couple of other places use getDirectSubscribers for non-notification purposes.01:24
StevenKRight, but trying to remove things from BugNotificationRecipients afterwards is what led to a rollback and this branch in the first place.01:26
wgrantCertainly.01:28
wgrantI didn't suggest filtering afterwards :)01:28
wgrantI just implied that you can't do it directly and unconditionally in getDirectSubscribers01:28
StevenKwgrant: Modulo some clean up, http://pastebin.ubuntu.com/1120614/01:29
wgrantStevenK: Right, that's probably reasonably sensible.01:31
StevenKNow to make it work01:33
* StevenK tries to remember how set operations work01:34
StevenKwgrant: I can't just set direct_subscribers, since it expects to be a BugSubscriptionSet, I'm trying to remember the set operation for "Remove everything in set A that isn't in set B"01:36
wallyworld_sinzui: i am thinking that it would be better to add a remove icon next to the bug dupe link in the portlet (like is done for removing subscribers on the same page) rather than add a new link to the picker. that way the portlets on the page behave consistently01:37
wgrantwallyworld_: It's a bit different, though01:37
StevenKWhich is intersection(), I thinjk01:37
wgrantwallyworld_: Since with the dupe thing you can only have one, and you can change it.01:37
wgrantwallyworld_: It's more similar to assignee that subscriber.01:37
wgrants/that/than/01:38
=== nigelb is now known as nigel-cloud
wallyworld_which i think is silly also to have to open a picker to remove01:38
wallyworld_there should be a remove icon next to the pencil icon for assignees etc01:38
wgrantStevenK: >>> s = {1, 2, 3}01:39
wgrant>>> s.difference_update({1, 3})01:39
wgrant>>> s01:39
wgrantset([2])01:39
wgrantwallyworld_: Maybe, yeah01:39
wgrantwallyworld_: But we probably want to be consistent.01:39
StevenKwgrant: intersection_update(), since I want the intersection of the two sets.01:39
wallyworld_yeah, i can't decide01:39
wgrantStevenK: Oh, bah, missed "isn't"01:40
StevenKBut BugSubscriptionSet doesn't implement that.01:40
wgrantYou might have to get to it before it objectifies it.01:40
wgrantOr alter getDirectSubscribers' other callsites to not call getDirectSubscribers01:40
StevenKNo, I need to recreate it, BugSubscriptionSet is a frozenset01:41
StevenK... somehow01:41
wgrantDue to @freeze(BugSubscriptionSet), porbably.01:41
StevenKThe following table lists operations available for set that do not apply to immutable instances of frozenset:01:42
StevenKWhich intersection_update() is in01:42
wgrantSure01:43
wgrantA frozenset is frozen01:43
wgrantSo updating it doesn't make an awfully large amount of sense.01:43
StevenKYes01:43
StevenKdirect_subscribers = BugSubscriberSet(01:44
StevenK                direct_subscribers.intersection(filtered_subscribers))01:44
wgrantwallyworld_: In r15569 you changed bug filing to not respect extra_data.private if the user is a bug supervisor. Do you recall why?01:48
wgrant(it probably means that apport-filed bugs for ~ubuntu-bugcontrol end up public unless someone's watching carefully)01:49
wallyworld_hmmm. not of the top of my head. i'll see if i can remember01:49
StevenKHAHAHA01:50
* StevenK notices a typo in accesspolicy01:50
wgrantStevenK: Where?01:50
StevenK     def revokeByArtifact(cls, artifacts, grantees=None):01:51
StevenK-        """See `IAccessPolicyGrantSource`."""01:51
StevenK+        """See `IAccessArtifactGrantSource`."""01:51
StevenK         cls.findByArtifact(artifacts, grantees).remove()01:51
wgrantCopy-paste errors in docstrings of boilerplate methods. How novel :)01:52
wallyworld_wgrant: i can01:57
wallyworld_can't recall whyt thaT CHANGE WAS MADE01:57
wallyworld_arg, caplock fail01:57
wgrantwallyworld_: Yeah, I can't see a good reason. I'm replacing that code, so I'll ignore it :)01:58
wgrantThanks.01:58
wallyworld_ok, thanks01:59
wallyworld_too bad we didn't have tests that failed01:59
StevenKwgrant: Diff updated, can you cast your eye over it again?02:02
=== nigelbabu is now known as nigelb
wgrantStevenK: Sec02:34
wgrantwallyworld_: Why's +filebug's information type widget part of bugtarget-filebug-guidelines.pt, rather than with the rest of the form?02:34
wgrantI don't really understand why that view is separate at all. I wonder if it might be because of the way ProjectGroup:+filebug used to work02:35
wgrantWhich means it can probably be merged.02:35
wallyworld_from memory that's how it was originally all set up02:35
wallyworld_that's where the old privacy/security checkboxes were02:35
wgrantHuh02:35
wgrantIndeed.02:36
wallyworld_it's all a a bit of a mess02:36
wgrantAh, of course02:36
wgrantBecause the security_related checkbox had the name of the security contact in it02:36
wgrantSo it was project-dependent.02:36
wallyworld_yes, makes sense02:36
wgrantBut ProjectGroup:+index just redirects now, so that can all be merged.02:36
* wgrant merges.02:36
=== beuno_ is now known as beuno
StevenKwgrant: How about now?03:16
StevenKSince your 'sec' has turned out to be a description of how long it will take you to get distracted, not how long it will take you to look at my MP.03:16
nigelblol03:17
wgrantStevenK: r=me03:45
cr3is there a way to have the status of a bug in launchpad set to fix released automatically when a package is automatically built from recipe?03:47
wgrantcr3: No. You'd have to write a launchpadlib script to do that.03:49
wgrantRecipes are normally used for daily builds, which aren't usually "releases"03:49
cr3wgrant: that makes sense actually, thanks!03:50
StevenKwgrant: I guess that branch doesn't fix bug 901548, but lays the groundwork?03:53
_mup_Bug #901548: launchpad does not send emails to the assignee of private bugs <bugs> <disclosure> <email> <privacy> <sharing> <Launchpad itself:In Progress by stevenk> < https://launchpad.net/bugs/901548 >03:53
wgrantStevenK: I think it probably fixes it implicitly.03:53
wgrantI'm pretty sure I tested that case, in fact.03:54
wgrantBut that was like 4 days ago03:54
StevenKThen I'll link the bug and branch, thanks.03:54
wgrantLike03:54
wgrantWhy wouldn't it fix it?03:54
wgrantIt seems like it should03:55
wgrantSince the assignee is in also_notified_subscribers03:55
StevenKThat's a point.03:55
StevenKstub: Hai! https://code.launchpad.net/~stevenk/launchpad/db-bugsubscriptionfilter-itype/+merge/117003 would love an review.03:58
stubStevenK: What are the different information types again?04:01
lifelesshuey duey and louie04:01
lifelessstub: has mthaddon been in touch w.r.t. django session cleaning mark 2 ?04:01
StevenKstub: PUBLIC, PUBLICSECURITY, PRIVATESECURITY, USERDATA and PROPRIETARY04:01
stublifeless: Not yet04:02
StevenKstub: The idea being that someone can structurally subscribe to all PRIVATESECURITY bugs.04:02
lifelessstub: ok, so - we're triggering mass locks in vacuum, theory is its scanning for pages to fill into but the table is so big... it takes ages *and* holds locks while it does the scan.04:03
lifelessstub: so the cleanups are on hold; I've suggested we do a bait and switch to a new table04:03
lifelesswith a background clone of live sessions + a indexed copy of new sessions only during a FDT-like window.04:04
wgrantlifeless: That looks like oops-tools success.04:05
stubStevenK: Yeah, I was thinking humans would be interested in 'all', and 'security'.04:05
StevenKstub: It is following the currently established pattern, see BugSubscriptionFilterStatus and BugSubscriptionFilterImportance04:05
stubStevenK: Yeah, model is fine. I'll leave it up with you guys to design the UI.04:05
* StevenK digs for a bug04:05
stubStevenK: My initial reaction is we have a confusing UI if it allows someone to subscribe to just publicsecurity bugs, or just userdata bugs.04:05
stubStevenK: But I'm not reviewing that :)04:05
stublifeless: How did you confirm vacuum is taking locks?04:06
lifelessstub: lock dependency graph shows it holding locks, strace shows it reading lots of data.04:07
stublifeless: what sort of locks?04:07
lifelessI don't recall, I think they were row level (but rows that sessions were trying to use)04:08
stubRight, autovacuum is supposed to not affect anything and release locks and back off if other stuff needs them.04:09
lifelessit backs off at the deadlock detection interval04:09
lifelessit definitely takes locks out :)04:09
stubThese are 8.4 though...04:09
StevenKwgrant: Hmmm, is there a bug for filter by InformationType?04:09
StevenKwgrant: I thought there was one, but I'm having trouble finding it04:10
StevenKAh, found it04:10
StevenKstub: Can haz stamp on the MP?04:12
stublifeless: Some vague hints that it might be our use of the CURSOR...04:13
StevenKlifeless: Why repeated oops tools mails?04:14
stubStevenK: Do you really want that 'id' column?04:15
StevenKstub: It's a many-to-many relationship, I think it's needed04:15
wgrantStevenK: Testing the new report-specific addresses04:15
wgrantStevenK: So we don't get U104:15
wgrantStevenK, stub: It's not necessary, but it's probably best to match the others04:16
wgrant(which have the ID, for reasons that are not clear)04:16
StevenKwgrant: Ah, testing on production. WCPGW.04:16
stubStevenK: Oh. Why isn't the (filter, information_type) unique?04:16
StevenKstub: Because I was making it match Status and Importance, but that's not the best answer.04:19
stublifeless: yes, the cursor we use to maintain the list of rows to remove can pin blocks. " If, for example, someone leaves a cursor open, the data block to which  the cursor refers is busy (the technical term is "pinned") and can't be  vacuumed until the cursor is closed or moved to a different block"04:19
stubStevenK: At the moment, you can have two identical rows. That means your queries are going to need DISTINCTS all over the place to remove the redundant rows when you join with that table.04:20
stubStevenK: There is no reason for (filter, information_type) to not be unique, since there is no other actual information in the table (id doesn't count as information)04:22
StevenKstub: So, maybe we fix Status and Importance in the same patch04:22
stubAnd if it is unique, we can drop the id column too making (filter, information_type) the primary key.04:22
* StevenK tries to cook up a query showing if there is anything in BugSubscriptionFilterStatus that is duplicated.04:23
* StevenK reaches for mawson04:25
lifelessstub: yes04:26
lifelessstub: so you think its the cursor, and vacuum is a bystander ?04:26
lifelessstub: this conflicts with some evidence we have - killing the cleanup process doesn't unstick servers that this happens to.04:26
lifelessstub: I don't know why.04:27
lifelessbah04:27
lifelessStevenK: I don't know why (oops-tools 2nd mail)04:27
stublifeless: Have you killed the backend server processes when you have killed the cleanup process?04:27
stubThey tend to hang around with postgresql unfortunately.04:27
lifelessI think so. Not 100%04:28
lifelessstub: what do you think of the proposed approach anyhow ?04:28
stublifeless: oh, proposed approach is fine. Might take some downtime though unless we much around with triggers and stuff.04:28
stublifeless: Saves us having to run a CLUSTER after to remove the miles and miles of empty pages.04:29
StevenKstub: So it looks like there are guards in place in the model code that avoids the need for UNIQUE.04:30
StevenKstub: (See -ops)04:30
lifelessstub: it looks to me like we could get 4-5 seconds downtime04:30
lifelessstub: just need an index on the session expiry04:31
StevenKwgrant: Did you see https://www.djangoproject.com/weblog/2012/jul/30/security-releases-issued/ ?04:31
stubStevenK: Right. So why do we want the data model to allow redundant rows in the table that are totally indistinguishable?04:31
StevenKstub: We don't, and it doesn't at the moment, is what I'm saying.04:31
lifelessstub: step A) index that concurrently; B) copy live sessions, C) copy live sessions again but only those with an expiry time >> (time of previous query + expiry window); D) downtime starts04:31
stublifeless: Which should be added anyway for regular cleaning runs04:31
stubStevenK: The proposed data model does.04:32
StevenKstub: You're having a deep discussion with lifeless, prod me when you're done.04:32
lifelessstub: E) copy live sessions again as in C; F) switch tables; G) downtime finishes.04:32
stublifeless: Just going downtime & copying the relevant records across is possibly best. Can do a timing.04:35
stubBut it isn't the underlying issue, which is that people are seeing behavior in autovacuum that other people don't see.04:36
lifelessstub: other folk do see it, rarely.04:38
lifelessstub: and you may have found a cause :)04:38
stubYes, so fixing the django script to not hold open a cursor might be the best approach.04:39
stubThat is just a guess though, based on vague comments. Reports of problems are rare, vague and usually for different situations (like the one I'm reading now, to do with TRUNCATE)04:42
lifelessstub: so, see the incident report on the wiki for more info04:44
lifelessstub: I'd like us to design around the risk, if we can, as extended downtime sucks :)04:44
stublifeless: What risk are we designing around?04:45
lifelessstub: that we don't understand the root cause of the problem04:45
lifelessstub: e.g. that it really is just vacuum itself, such as the hidden lock documented to be in 8.404:45
stubYou can't design around vacuum. Vacuum is an integral and required part of PostgreSQL.04:46
stubYou can't even turn it off entirely, despite the magic option in postgresql.conf that should only ever be used in extremely rare use cases.04:46
stubVacuum getting involved here would be a symptom, not a problem.04:47
stubI suspect that the problem is the cursor I old open for up to an hour, which is like a long transaction in many ways.04:47
lifelessstub: we can design around vacuum - e,.g. the bait and switch approach :) That said, its going to be up to you:)04:48
stubIt is just intuition, but we should probably fix it anyway since we will hopefully not need hour long transactions with pg_dump anyway.04:48
stublifeless: Guess what happens when you fill the new table with data? It gets vacuumed...04:49
stubwell... analyzed.04:49
stubwhich is autovacuum04:49
lifelessstub: yes, but we've no reason to think autovaccuum is intrinsically a problem04:50
lifelessstub: the data we have is a) big table with b) lots of deletes and c) lots of writes04:50
lifelessI agree we should fix the cursor *too*, because we need to keep the tables trim.04:50
stubWe also need to run this script daily or more often or we end up in the same situation.04:51
lifelessThere is also the question of why we're getting millions of sessions04:51
lifelessI guess I'm saying its not either-or.04:51
stubYes, I agree.04:51
stubIt would be nice if we can avoid the risks of swapping a new table into place, and having to write the script to do it.04:53
StevenKstub: So if I'm going to change BugSubscriptionInformationType, I'd rather also change BugSubscriptionFilter{Status,Importance} to match. And I don't think I'm up for two primary key swaps.04:56
wgrantThe tables probably have about $notverymany rows each, so it's easy.04:57
StevenKwgrant: Haha. 108 in status and 46 in importance04:59
wgrantThat's even fewer than I expected.04:59
wgrantI thought maybe a few hundred each04:59
StevenKThat's on DF, so condiment to taste05:00
StevenKwgrant: How do I deal with it in the model, though?05:00
wgrantStevenK: __storm_primary__05:00
wgrantIt'll need to be in a separate branch05:01
wgrantWhich can land in about 5 minutes05:01
StevenKwgrant: Right, but I do land that first and then the db patch that will DROP COLUMN?05:01
wgrantRight05:02
wgrantLand+deploy the app PK change first05:02
wgrantOr the app will murder you05:02
* StevenK sorts that out, since it's easy05:02
stubStevenK: We can go with the id column, but unless there is a reason it is better to drop it as it is unnecessary and slower.05:16
stubI don't recall if there was a rationalization for it with BugSubscriptionInformationType05:16
wgrantAt least we're not in too much danger of wraparound :)05:16
stuberm... bugsubscriptionfilerstatus, importance05:18
StevenKstub: So I've put up a model change for status and importance that will allow us to drop their IDs05:20
StevenKThen I'm not sure what needs to happen on the DB side05:20
stubALTER TABLE foo DROP COLUMN id; DROP INDEX foo_filter_status_idx; ALTER TABLE foo ADD CONSTRAINT foo_pkey PRIMARY KEY (filter, status);05:22
wgrantYeah05:22
wgrantCan't use USING, since the index is non-unique for no good reason.05:23
StevenKRight05:23
StevenKAnd adding the constraint gets us the index too, with unique for good measure.05:23
wgrantRight05:23
wgrantA primary key is basically just a UNIQUE index without any nullable columns.05:24
StevenKwgrant: https://code.launchpad.net/~stevenk/launchpad/no-more-id-for-bsfs/+merge/11737405:24
wgrant(in postgres)05:24
stubStevenK: You're happy with this, or do you have deadlines? I'd like the model fixed, but it seems to have been broken for some time already.05:24
StevenKstub: See above :-)05:24
wgrantStevenK: You've checked around to see that nothing references them? I suspect it's safe, but there might be something.05:25
wgrantAlso, you can't spell =05:25
wgrantIn the first hunk05:25
StevenKOh bloody hell, how did I miss THAT05:25
StevenKwgrant: A bzr grep -i 'BugSubscriptionFilterStatus.id' showed up nothing05:26
wgrantStevenK: Have you run the bugsubscriptionfilter tests?05:26
wgrantAlthough I guess an ec2 run won't hurt05:27
wgrantSince we can't deploy until tomorrow morning anyway05:27
wgrantStevenK: Also, it might want filter_id rather than filter. I forget.05:27
StevenKHaha05:28
StevenK  File "/home/steven/launchpad/lp-sourcedeps/eggs/storm-0.19.0.99_lpwithnodatetime_r406-py2.7-linux-x86_64.egg/storm/info.py", line 95, in <genexpr>05:28
StevenK    for attr in storm_primary)05:28
StevenKKeyError: 'filter'05:28
StevenKYeah, we so want filter_id05:28
StevenKAttributeError: 'BugSubscriptionFilterImportance' object has no attribute 'id'05:31
StevenKHah05:31
StevenKself.assertIsNot(None, bug_sub_filter_importance.id)05:31
wgrantHeh05:32
wgrantThat's probably just checking it's been flushed to the store05:32
StevenKIt then checks the filter, so it can just check that05:32
wgrantAh!05:34
wgrantI finally found a test for apport's default private thing.05:34
wgrantI think there's only one.05:34
wgrantHidden in a doctest05:34
StevenKHah05:34
StevenKwgrant: I'll be pushing the fixes for that branch in a sec05:34
wgrantStevenK: Will look05:35
StevenKwgrant: Oh, pft. Fully expecting you to get distracted for 45 minutes again. :-P05:35
wgrantNah05:35
wgrantI solved my issue05:35
StevenKwgrant: Diff updated.05:38
wgrantStevenK: Indeed, r=me05:38
wgrantThanks05:38
StevenKI guess no-qa is probably okay05:40
wgrantMost certainly.05:40
wgrantlp-land --no-qa if you're feeling reasonably confident05:40
StevenKwgrant: Not like it matters.05:41
wgrantHeh05:41
StevenKIt could go through ec2 twice and still land in time.05:41
StevenKstub: https://code.launchpad.net/~stevenk/launchpad/db-drop-id-for-bsns/+merge/11737506:04
StevenKstub: And the diff for https://code.launchpad.net/~stevenk/launchpad/db-bugsubscriptionfilter-itype/+merge/117003 has been updated.06:30
lifelessstub: so, can you add a card for fixing this sessions issue, and liase with mthaddon on it ?07:33
stublifeless: yes07:35
czajkowskilifeless: morning/evening any thoughts on https://bugs.launchpad.net/launchpad/+bug/1022334  https://bugs.launchpad.net/launchpad/+bug/1030584  they both seem rather similar.08:53
_mup_Bug #1022334: data is not saved if launchpad has an error <bot-comment> <Apport:New> <Launchpad itself:New> <apport (Ubuntu):New> < https://launchpad.net/bugs/1022334 >08:53
_mup_Bug #1030584: Make +filebug timeouts more user-friendly <Launchpad itself:Incomplete> < https://launchpad.net/bugs/1030584 >08:53
mgz...back button works fine provided you have JS disabled08:58
mgzand I didn't think the messing around with "no I need to report a new ug" junk broke that08:58
mgzwas (coincidentally) testing on staging the other day, which nearly always times out first time08:59
mgzyup, it doesn't lose your description at least09:02
lifelessczajkowski: the second is a confused user, with a real timeout.09:02
mgzyou need to it 'next' again though which is lame.09:03
lifelessso, I don't think we should try to make form resubmital super reliable; thats a browser issue (and IME firefox preserves values just fine)09:04
lifelesswe should fix the timeouts when submitting the bugs, and those two bugs have different symptoms09:04
lifelessone is a slow insert the other is a slow packaging query09:04
lifelessthere is probably a dupe of that09:04
czajkowskihmm ok09:05
mgzlifeless: going back to "please describe the bug in a few words" does make it *look* like launchpad has lost your bug09:05
lifelessyes, but it hasn't09:05
lifelessthe thing is09:05
lifelessits diminishing returns09:05
mgzeven though hitting next unhides it09:05
lifelesssay 1 in a thousand timeout on submission09:05
czajkowskimgz: not many people would think to hit next09:05
mgzthis is general usability though, not just timeout related09:06
lifelessshould we make dealing with the timeout easier, or fix the timeout ?09:06
lifelessmgz: welllll, its a wizard09:06
lifelessso that argument goes both ways09:06
mgza one page wizard that resets to the start at the drop of a hat09:06
mgzwith JS off it's much better09:06
lifelessmgz: I'm not sure what your point is.09:07
mgzbecause the 'search for similar bugs' and 'fill in all your details' are actually seperate09:07
lifelessI'm clearly not against improvements, but if I had to choose what to work on, the thing they are complaining about (not the timeout itself), isn't what I would do.09:07
mgzso, you can safely use back and such like without things breaking09:07
mgzit's like the "error when reporting a bug" issue from the other day09:08
lifelessyes, and that one is terrible and I think we should do better09:08
lifelessbecause its a common case not an exceptional case.09:08
mgzmy point is it's basically the same thing, I agree for timeouts specifically fixing the timeout is more relevent09:09
lifelessIts similar in a very technical sense09:09
lifelessits not at all similar in a use case sense09:09
lifelessIMNSHO09:09
mgzso, specifically on czajkowski's question,09:12
mgzI'd make the first bug a usability one on using back from navigating off the +filebug page (or dupe against an existing bug on that)09:12
mgzand make the second one about the timeout that wgrant dug up (or dupe against similar +filebug timeout)09:13
=== matsubara is now known as matsubara-lunch
=== almaisan-away is now known as al-maisan
=== al-maisan is now known as almaisan-away
=== matsubara-lunch is now known as matsubara
wgrantabentley: Hi. Will you be able to QA bug #1018235 today?13:12
_mup_Bug #1018235: TestRunMissingJobs.test_find_missing_ready is disabled due to spurious failures <qa-needstesting> <spurious-test-failure> <test-system> <Launchpad itself:Fix Committed by abentley> < https://launchpad.net/bugs/1018235 >13:12
abentleywgrant: yes.13:12
wgrantGreat.13:13
=== rick_h_ changed the topic of #launchpad-dev to: http://dev.launchpad.net/ | On call reviewer: - | Firefighting: - | Critical bugs: 4.0*10^2
=== rick_h_ changed the topic of #launchpad-dev to: http://dev.launchpad.net/ | On call reviewer: rick_h | Firefighting: - | Critical bugs: 4.0*10^2
benjijml: I finally have some time to look at buildout for you (I've been crazy busy with interviews for the last week).  I'm looking at bug 1029715 as well as digesting the comments on https://code.launchpad.net/~james-w/pkgme-service-python/buildout/+merge/116980; if there is anything else I can look at, feel free to let me know14:35
_mup_Bug #1029715: bootstrap.py fails if there is a system-wide install of the desired buildout version <Buildout:New> < https://launchpad.net/bugs/1029715 >14:35
jmlbenji: thanks :)14:35
jmlbenji: we've just landed buildout for one of our leaf projects, and hope to move up the DAG today or tomorrow,14:36
jmlbenji: will let you know. very much appreciate the help.14:36
benjicool14:36
benjijml: note that I will be out for about a week starting tomorrow (moving house 1007 kilometers to the south west) so my responsiveness won't be good ;)14:38
jmlbenji: wow14:39
benjijust one state over ;) goo.gl/maps/odLpT14:44
jcsackett_sinzui: have a few minutes to chat?15:01
=== jcsackett_ is now known as jcsackett
czajkowskijcsackett: feeling better15:05
czajkowskibenji: free for a quick pm ?15:05
jcsackettczajkowski: feeling semi-functional, thanks. :-)15:05
benjiczajkowski: sure15:05
abentleysinzui: I'm adding Specification.information_type, so I'm looking at patch-2209-12-*.  Do you know why the column wasn't set "NOT NULL" on creation?15:30
sinzuiabentley: we had to use a garbo job to sync existing data15:31
abentleysinzui: Ah!  Thanks.  Mine should include a default, then, I assume.15:32
sinzuiabentley: the db rollout will only permit a schema change...no code will be released with your column add15:32
abentleysinzui: I know.  I'm just hacking the schema for now.15:33
sinzuiabentley:  you can provide a default in the schema, but I think Lp needs an enum policy in the model, so null would be correct.15:35
abentleysinzui: I don't understand.  We should start with all existing specs public and then we can update the model to reflect the column afterward, no?15:36
=== joey2 is now known as nv0n
=== nv0n is now known as joey
sinzuiabentley: bug and branch informationtypes are governed by a policy determined by the presence of a commercial subscription and projects rules to ensure information is not accidentally disclosed. I image you want something like http://pastebin.ubuntu.com/1121640/15:42
sinzuihttps://qastaging.launchpad.net/launchpad/+admin15:43
abentleysinzui: could be.  I'll need to find out whether the project's "private" setting will control that.15:44
sinzuiabentley: I am sure they will. We are adding these now because stakeholders see them as an oversight15:45
=== salgado is now known as salgado-lunch
=== Ursinha` is now known as Ursinha
=== beuno is now known as beuno-lunch
=== beuno-lunch is now known as beuno
czajkowskisinzui: do you think you should be able to file a bug from bugs.lp.net or should you go to the project page and file it from there, with the exception being Ubuntu ?16:24
sinzuiczajkowski: no.16:24
czajkowskithats what I'd have assumed16:25
czajkowskibut wondered did I not know about something16:25
sinzuiThe user has to find the project, find that it uses bugs, and know the bug is not already reported16:25
=== deryck is now known as deryck[lunch]
rick_h_jcsackett: never has a mp with just a few lines of comments given me such as headache before :P17:03
jcsackettthat's alarming.17:04
jcsackettwhy the headache?17:04
jcsackettrick_h_: ^17:05
rick_h_writing up the MP, sec17:05
rick_h_because I founde code doing args.callee.magic_crap and I cried for a while :P17:05
rick_h_while trying to understand things17:06
rick_h_jcsackett: ok, marked needs fixing, but just because I want to peek at it again.17:13
rick_h_let me know if my comments don't make sense17:13
=== salgado-lunch is now known as salgado
abentleyrick_h_: have you shared that folder with me yet?17:38
rick_h_abentley: ah no, sec will do right now17:39
abentleyrick_h_: It seems not to matter what email address you use.  You can even sign up for u1 in the process of accepting a share.17:44
rick_h_abentley: yea, makes sense with SSO17:45
rick_h_sometimes people have different accounts for work/home though so didn't get going on it, see G+17:45
rick_h_abentley: but added you, abel, huw and also shared out a G+ folder I've started to put some notes into17:46
rick_h_still working on merging paper notes, etc but shared out17:46
rick_h_I liked that in the June project how we had that one folder shared to go into for things17:46
abentleyrick_h_: No, I'm saying you can accept the share based completely on the URL.  It doesn't matter what account you use, and you can even create a new account.17:47
rick_h_abentley: oic.17:48
abentleyrick_h_: I'm happy to use either Google Drive&Docs or u1, but using both seems likely to cause confusion.17:53
rick_h_abentley: yea, guess lack of a linux client made it hard to upload all the images to GDrive while docs is our official docs17:54
rick_h_I think once we get to mockups vs the hacky wireframes the U1 will go away17:55
rick_h_and it'll be real html + docs17:55
rick_h_but whatever, I'm happy to play along just starting out with this and can move things as required17:55
abentleyrick_h_: fair enough, if we assume plain files go to u1, we should be okay.17:55
deryckabentley, rick_h_ -- I added a few started cards on the board now.  These are sort of known quantities at this point...18:54
deryckabentley, rick_h_ -- but I didn't attempt to get anymore detailed than just the start of our work.18:54
rick_h_ok18:54
rick_h_deryck: got time to chat?18:55
deryckI assume we're working toward getting the board accurate for next work as the week goes along.18:55
deryckrick_h_, sure.18:55
rick_h_deryck: k, joining hangout18:56
lifelesso/18:58
abentleylifeless: Hi.  If I want to add a column and put an index on that column, do I need two branches?19:02
lifelessdepends on the size of the table.19:03
lifelessIf its small (thousands of rows), no.19:03
abentleylifeless: I'm thinking of Specification.  So, yes?19:03
lifelessIf its large > 10's of thousands of rows, yes.19:03
abentleylifeless: "45439 blueprints registered in Launchpad"19:05
lifelessyah, I think that will be safest as two patches.19:05
lifelessone downtime, one applied hot.19:05
deryckhi lifeless.  I expect you'll be hearing a lot from us on Orange over the next few weeks. :)19:15
lifeless:)19:15
lifelesswould you like to have a voice call at some point ?19:15
derycklifeless, you know, we probably should.  Maybe late this week, early next.19:18
derycklifeless, give me time to get coordinated and understand as much as I can first.19:18
lifelesssure19:20
abentleylifeless: https://dev.launchpad.net/Database/LivePatching sez "All DB schema changes are landed on db-devel", but https://dev.launchpad.net/PolicyAndProcess/DatabaseSchemaChangesProcess sez, "For hot patches the target is lp:launchpad, but for cold patches it should be lp:launchpad/db-devel"19:36
lifelessabentley: hi20:00
abentleylifeless: hi.20:00
lifelessabentley: https://dev.launchpad.net/PolicyAndProcess/DatabaseSchemaChangesProcess is authoritative.20:00
abentleylifeless: Okay.  But DatabaseSchemaChangesProcess says Database/LivePatching...[is] the authority [on hot-patching].20:06
lifelessheh20:08
lifelessabentley: devel is where indexes land. See e.g. r1536720:08
=== rick_h_ changed the topic of #launchpad-dev to: http://dev.launchpad.net/ | On call reviewer: - | Firefighting: - | Critical bugs: 4.0*10^2
wgrantabentley: You can't set a default when adding the column on a large table, as that causes every row to be rewritten.22:01
wgrantabentley: You'll need to, in one patch, create the column nullable and without a default, and then set the default. Then garbo or similar to set it. Then add the index with a live patch.22:02
lifeless(you can add the index before the garbo job; you probably will want to to make the garbo job efficient)22:06
wgrantTrue.22:08
abentleywgrant: Thanks.  Sigh.22:43
StevenKwgrant: https://code.launchpad.net/~stevenk/launchpad/refactor-bsf/+merge/11754323:12
wgrantStevenK: Only -102? You disappoint me.23:22
StevenKwgrant: :-(23:22
* wallyworld finds it hard to concentrate looking across the desk at bigjools' ugly face :-(23:39
* bigjools turns up the music to drown out wallyworld's whinging23:40
StevenKwallyworld: Given the difference in height, aren't you staring at his chest, rather than his face?23:40
bigjoolsclose23:41
wallyworldStevenK: i was until i hoped off his lap23:41
StevenKwgrant: Should I add the auditor-team structsub back?23:59

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