[00:00] I've added (and its landing now) an earlier cache of revision trees, but that doesn't help here because its not a revision tree [00:01] and as the tree is modified it seems to me it will be doing the wrong thing - this could be exacerbating up-thread/down-thread/update conflicts as well, if I understand it correctly. [00:05] lifeless: I don't understand jam's change, but it looks wrong in two ways. [00:06] ok; I'll file a bug about this, as its not 'just a locking issue' then. [00:06] lifeless: You shouldn't call set_base_revision if you don't want to set the base tree, and you shouldn't set base_rev_id for the revision-id of a WorkingTree. [00:07] lifeless: For working trees, Merger does know about a basis revision, e.g. Merger.this_basis and Merger.other_basis. There's no corresponding variable for base trees, but that's what he would want to set. [00:09] lifeless: The smallest change that would get this working would be to set Merger.base_rev_id directly instead of calling set_base_revision. [00:10] lifeless: Confirmed, that passes. [00:10] abentley: thank you. It could have fall out elsewhere though? [00:11] lifeless: It's conceivable. Most likely in a test case where we had coded it to expect the wrong behaviour. [00:11] ok. I was doing this locking stuff as a warmup, so I'll put this bug in for now, and come back to it later. [00:11] do you have a diff of that change you just made? === beuno-afk is now known as beuno [00:14] lifeless: http://pastebin.ubuntu.com/259556/ [00:22] thanks [00:38] win 83 [00:59] sorry about bug noise on 305006 [00:59] trying to get lp to do what I need >< [01:22] igc: when you get here [01:22] igc: my faster commit was broken; it should have been faster; fixed and landing now [01:23] igc: so you may want to retest it speed wise :) [02:04] morning [02:04] lifeless: shall do [02:05] anyone want to point me in the right direction for using bzr to merge two heretofore unrelated files? [02:07] hm [02:07] now that i say that out loud, I don't see how it would reasonably be possible [02:07] hand-merge, here we come... [02:08] igc: its landing at the moment [02:08] lifeless: excellent. well done! [02:08] http://pqm.bazaar-vcs.org/ [02:09] lifeless: as soon as I wake up this morning, I'll give it a spin :-) [02:09] kk [02:09] it wasn't using specified_files in iter_changes [02:09] which is why 'partial commit' was only as fast as full commit === kiko is now known as kiko-zzz [02:11] poolie: my focus today will be on reviewing critical/high patches and ... [02:12] poolie: announcing explorer 0.7 + fastimport 0.9 [02:12] hopefully james_w or someone can get those uploaded to karmic in time [02:17] igc, that sounds good [02:17] mine is to merge the 2.0b1 branches and get that out [02:30] igc: its landed [02:34] lifeless: sweet [02:35] lifeless: so IIUIC, shelve/unshelve now work correctly on Windows? [02:35] igc: yes [02:35] lifeless: landed? [02:35] or rather [02:35] unit tests say they do [02:35] yes, landed. [02:35] lifeless: wow, you rock! [02:36] also pushing locally [02:36] there are now no tests that should fail due to locking interactions on windows that represent things users can do [02:36] there are a few that we use to test race conditions [02:36] lifeless: you may want to email the bzr-windows list calling for testing on this [02:36] I've a branch up for review that guards those tests on windows more aggressively [02:36] igc: I'm not on the windows list - could you send such a mail? [02:37] lifeless: sure [02:37] lifeless: that's mega cool because I'll now get some interest in someone writing qsheve/qunshelve [02:37] we can of course still collide between separate processes [02:37] but same process stuff should be rock solid [02:38] lifeless: as long as they weren't working on Windows, there was limited interest [02:40] lifeless: pulling the 2.0 branch doesn't show your commit changes, nor the shelve-related changes [02:40] lifeless: are they only in trunk or is lp mirroring to blame? [02:40] only trunk [02:40] landing a big batch to 2.0 later [02:41] ok [02:42] ok time for brunch, or whatever it is :) [02:44] poolie: it's not a weekend, so I think yes, you need to have brunch before noon. Weekends you're ok until 13:30 :) [03:00] igc: my testing shows - 1.3 seconds for commit w/out iter_changes, 0.25s for commit w/iter_changes 0.36s to commit the full tree [03:00] igc: (alll with a single file changed) [03:00] lifeless: which project? [03:00] samba in 2a [03:00] the first two times are 'commit README', the last one is 'commit' [03:13] spiv: ping [03:13] IncompatibleRepositories: CHKInventoryRepository('chroot-97810960:///stack-on/.bzr/repository/') [03:13] is not compatible with [03:13] KnitPackRepository('chroot-97810960:///to/.bzr/repository/') [03:13] different rich-root support [03:13] thats what I'm generating at the moment [03:13] spiv: this isn't ideal, but AFAICT its roughly what we do elsewhere [03:14] and its at least in the category of 'class of thing we already have to fix'. [03:14] spiv: seem ok to run with this? [03:20] lifeless: ugh [03:21] What's the benefit we'd trade this against? [03:21] well at the moment its an UnknownSmartServerError [03:21] the client hasn't ever opened 'stack-on', so it can't translate it without going to the network. [03:22] and 'to' doesn't exist because the server is aborting a 'create foo for me' operation. [03:22] so in terms of benefits; it will error about 600ms faster [03:23] possibly my unit tests are not representative of what launchpad itself will do [03:23] I'm not really fussed about making that error faster :) [03:23] I think we need to fix the server to return relpaths fairly soon. [03:23] spiv: note that I'm going to be catching this in cmd_push *anyway* [03:24] this is 'bzr push a 1.9 branch somewhere with a stacking policy that points at a 2a branch' [03:24] a precondition on that is that I can catch the error; so my motivation here isn't 'make this error nice', its 'make it typed rather than 'unknown'' [03:25] IncompatibleRepositories can occur on other operations, although I agree that's the most common. [03:25] they can, and at the moment - well see above - unknown smart server error. [03:25] What does the error serialisation look like? I'm wondering if it will be reasonably easy to replace the useless in-proc URLs with relpaths later without disrupting old clients. [03:26] I argue that what I've done so far is an unqualified improvement, even if its not an ideal end-state. [03:26] ('Incompa..', str(err.source), str(err.target), str(err.detail)) [03:26] Yeah, I agree it sounds like an improvement. [03:26] but as the client doesn't process at all it would be easy to change later [03:27] The crummy URLs are essentially the same issue as in the lock contention message, I guess. [03:28] yes [03:28] I'm satisfied that this is an improvement. I'm a little worried it'll be an impediment to doing something better later. [03:28] there are two cases [03:29] either we need more fields, or we need to change the serialised value of fields [03:29] the client doesn't care about how many fields [03:29] so we can add some (including adding different representations of existing fields) [03:29] Ok, if you leave that wiggle room in the client that sounds ok. [03:29] and the client doesn't parse the fields, so we can change fields if we want- knowing that the client will just show the strings it receives [03:30] i.e. effectively reserving some fields for future use. [03:32] its no worse than [03:32] Using default stacking branch /~bzr/bzr/trunk at lp-45211856:///~lifeless/bzr [03:32] I feel you're very concerned about a special case of a pervasive problem. [03:32] which is a bit odd. [03:33] Oh, it is pervasive. [03:33] That doesn't mean we should spread it even further without thought :) [03:34] Actually, that particular message is extra crummy. [03:34] It's actually emitted on stderr by the server process! [03:34] the incompatible one? [03:34] Oh, actually, not that one. [03:34] merge review request sent. [03:35] I'm thinking of the 'Source format doesn't support stacking' one. [03:35] as we've discussed, I figure you've just volunteered to review ;) [03:45] spiv: [03:45] https://code.launchpad.net/~lifeless/bzr/bug-393677/+merge/10710 [03:48] spm: whats the url configured in pqm's bzr config for 2.0 ? [04:08] spm: ping [04:08] poolie: whats the url for submitting to 2.0? [04:09] lifeless: I'll kick off that benchmark now while I grab some lunch [04:09] * igc food [04:09] igc: its going to be awesome [04:11] lifeless: similar to the 1.17 & 18: bzr+ssh://bazaar.launchpad.net/~bzr-pqm/bzr/2.0 [04:11] spm: thanks [04:11] we need to doc this better. /me adds a yak to the list [04:20] spiv, hi, shall we catch up? [04:20] lifeless: do you think https://code.edge.launchpad.net/~ian-clatworthy/bzr/faster-dirstate-saving/+merge/7537 is good to merge now? igc says you read a previous version [04:22] poolie: the last one I read looked like it could cause confusion about the internal state; jam's comments were along those lines and I agreed. [04:22] I don't know if its been improved since then; and while its a functional improvement it is a risky area of code. [04:22] so it needs to be reworked? [04:23] jml: regarding the test suite [04:23] i don't think running it twice from pqm is, um [04:23] likely to be actioned very fast [04:23] so, i'd rather rely on buildbot, which is apparently now working ok [04:24] poolie: do you mean 'lifeless: regarding the test suite' ? [04:24] well, it is being run twice from PQM right now [04:24] no :-P [04:24] jml: now that we have a buildbot and are getting results from it i propose to just remove the second run from make check [04:25] and get vila to do that on a slave somewhere [04:25] poolie, that sounds fine [04:25] poolie: I have been watching carefully since we last discussed this [04:25] poolie: I haven't landed any utf8-related patches to see if it helps or not :P [04:26] i loked through all my recent pqm mails and didn't see any failures in ascii tests [04:26] but that may be unrepresentative because people tend to work in different areas [04:26] poolie: right, but what fraction were ... exactly [04:26] anyhow i'm not going to do it now [04:26] anyhow, I've voiced my opinion - to keep it - before. I don't think the gain is worth the pain if something slips through. [04:26] or not today [04:27] but I won't try to stop the change, if I can't convince you, the arguments aren't convincing [04:27] so, i respect your opinion, and i'm open to changing it back, but i think we should try changing it [04:27] i'm sure we get more breakage across platforms or distro versions [04:27] so we need buildbot to work well for that coverage [04:28] so i'd be ok relying on it for that too [04:28] s//for lang=c too [04:28] I get that. OTOH we've known about windows breakage for ages. It got fixed when it became possible for us to test it locally and quickly. [04:28] [locking specifically] [04:29] My experience with fix-later environments is that they are consistently lower quality than fix-before ones. [04:29] But as you say, open to trying the change and measuring. [04:31] so eventually it might be nice to test them all synchronously but in parallel [04:32] poolie: what url did you give pqm to land bialix's patch? [04:32] on 2.0 [04:32] i didn't [04:32] spm: whats the public address configured in the pqm conf? [04:32] i think vila sent it [04:32] * lifeless hunts yaks [04:32] lifeless: http://bazaar.launchpad.net/~bzr-pqm/bzr/2.0 [04:33] spm: thanks [04:33] * lifeless submitifies [04:37] how about https://code.edge.launchpad.net/~jameinel/bzr/2.0b1-402645-fragmentation/+merge/10621 [04:39] spm: can you just paste me the stanza please.. [04:39] econfused [04:39] poolie: jam and I don't agree about the short term fix [04:39] lifeless: https://pastebin.canonical.com/21499/ [04:40] I'm worried about unordered being pathological because of whats out there already; he's worried about preventing existing branches getting worse [04:40] its not a strong difference [04:41] but as we rather have to fix this properly (IMO) for 2.0 to be released, I don't feel a strong urge to land a bandaid: users of 1.16/1.17/1.18 are already plentiful [04:42] spm: can you check if there is a pqm job in process on there? (not via the web UI... I suspect I may have tickled a bug) [04:43] poolie: bug 418998 is probably the symlink dereferencing bug [04:43] Launchpad bug 418998 in bzr-svn "bzr crashes when adding .vim/* from my home directory" [Undecided,New] https://launchpad.net/bugs/418998 [04:43] poolie: rather than bzr-svn [04:44] the 'didn't add files' aspect will be the 'silently ignores subtrees' bug in bzr core [04:44] lifeless: technicall yes a job is running; but isn't a bzr one - if you ken what I'm not saying :-) [04:44] I do [04:44] can you check the log for requests from me [04:44] aye [04:44] oh ok [04:44] spm: actually. [04:45] spm: cron spam! [04:45] ha [04:45] bzrlib.errors.ConnectionReset: Connection closed: Unexpected end of message. Please check connectivity and permissions, and report a bug if problems persist. [04:45] Permission denied (publickey). [04:45] (*^%)@*(#&$^)@#*(^%()*!&@%$_@#$&*())@*(#&$^@(*&^!!!!!!!!!!!!!!!!!! [04:45] spm: please be fixing that file, that file you love so well. [04:45] poolie: I replied asking if it was a symlink, that will tell us [04:46] spiv, tell me things? [04:46] lifeless: pls to try try again [04:46] bombs aaway [04:48] poolie: heading out to lunch in a sec. I've been responding to jam's review of my groupcompress batching branch. [04:48] arjenAU: hi [04:48] arjenAU: when are you in sydney? [04:49] spiv, so how is it overall? [04:49] spm: no go?! [04:49] * lifeless tries with http <-> http [04:50] lifeless: 7-9 Sep (7pm on the 6th) [04:50] arjenAU: I'm going to try to swing past the mechanics school [04:51] lifeless: hmm? [04:51] aren't you giving a talk? [04:51] at SMUG? [04:52] poolie: he saw some possible holes in the batching/caching interaction. I think I've fixed that up, although it's perhaps a little bit more complex now. It's looking good; I'll submit it for re-review by jam just in case, but I expect it'll get a thumbs up. [04:53] poolie: http://pqm.bazaar-vcs.org/ will hopefully land all the cumulative fixes from bzr.dev. If it fails, they are pushed to lp:~lifeless/bzr/2.0 so that people can tweak. [04:53] I don't expect failures - but theres > 10 patches in the set so it may find something to bail on [04:55] arjenAU: http://www.pythian.com/news/3728/sydney-mysql-user-group-meetup-9-in-depth-mysql-with-arjen-lentz specifically ;) [04:55] lifeless: oh right! sure [04:56] but if you want to get together and chat bzr/lp stuff before/after/some-other-timeslot that would be cool too [04:59] lifeless: so the code as it stands now only makes things worse and never better. Why wouldn't switching to 'unordered' be a reasonable short term fix? [05:00] jam: I'm concerned that it will also make things worse, just differently, as it will apply to all fetches too. And its a chance for more bug reports while we're doing the longer term fix. [05:00] lifeless: well I guess one positive - that file is back. So I suspect we know where it's coming from... [05:01] spm: wheres that then ... [05:01] lifeless: so.. if the source has been packed (ever) then at least we preserve that [05:01] my using lp: as the source for the merge, I'd suspect [05:01] jam: I'm mainly coming from paranois :) [05:01] it doesn't effect Packer [05:02] I need food [05:02] back shortly- jam, land if if you're quite sure we won't have fallout while we develop the longer fix. [05:02] lifeless: that was my guess, yes. [05:02] spm: so, what happened when we tried an empty file? [05:02] lifeless: given that we've been fetching pack => pack 'unordered' for a while.... [05:03] lifeless: kaboom [05:03] actually, I don't want to know. I want to debug it with you tomorrow and file copious bugs [05:03] heh [05:03] we can't reliably switch to lp until thats fixed. [05:03] right [05:05] arjenAU: but if you want to get together and chat bzr/lp stuff before/after/some-other-timeslot that would be cool too [05:05] poolie: EOD(); suspend(); [05:06] ok [05:07] i'm going to get as many of these things merged as we can then do a beta [05:07] unless something comes up [05:07] lifeless: we'd be done at 5pm, barack st in city. [05:07] sounds good [05:07] I'll tee it up with you next week [05:08] poolie: http://pqm.bazaar-vcs.org/ is good so far [05:10] jml: after work today can you do me a small favour. subunit progress review-or-rubber-stamp [05:10] lifeless, sure thing [05:45] abentley: pipeline ping [05:50] spiv, back? [05:54] poolie: yeah [05:54] i guess rather than nagging i want to know [05:54] when i should do 2.0b [05:54] so can you tell me either when you have nothing more to do with it, or alternatively [05:55] if there's anything i should be doing, or if it's pear-shaped [05:55] poolie: if 2.0b means 'we think we're done', in a few days [05:55] poolie: if it means 'get a snapshot of where we are at' - well anytime really. [05:56] my backport of the last weeks progress looks like it will land [05:56] in 30-40 minutes [05:56] it means we think there's no more critical bugs [05:57] ok, well I don't think we're going to be there today [05:57] So I'm currently working on the fix for bug 402657, by doing the last tweaks from jam's review. I'm going to ask him to re-review it, though, because he's touched this more than I have and I'd like to be cautious with this. [05:57] Launchpad bug 402657 in bzr "2a fetch over dumb transport reads one group at a time" [Critical,Fix committed] https://launchpad.net/bugs/402657 [05:57] Which means I expect it to land tomorrow morning. [05:57] well, if you submit it right now [05:57] I might get to it :) [05:58] that would be much better [05:59] Hmm, I'll see how quickly I can take care of the last little bits :) [06:02] thanks === thumper is now known as thumper-cooking === thumper-cooking is now known as thumper === thumper is now known as thumper-cooking [06:20] poolie: '(mbp) fix IndexError printing CannotBindAddress' [06:20] thats in my branch thats landing [06:21] might want to ask spm to cancel your merge [06:21] hm [06:21] why is it in your branch? [06:21] because I did what I said I would do earlier [06:21] which is to cherrypick all the 2.0 candidates from trunk [06:22] ah, ok [06:22] i understood you meant you'd do one merge with all of your changes [06:22] so spm would you please cancel my pending pqm job? [06:22] have a look at http://pqm.bazaar-vcs.org/ at my commit message :P [06:28] poolie: cancelled [06:28] oh thanks [06:31] spiv: I'm going to bed now. So better to do a good job then a fast one. [06:31] I'll try to review first thing when I wake up [06:31] sleep well jam [06:31] night all [06:31] thx lifeless [06:33] spm: please tell me you didn't cancel the running job [06:33] spm: (and mean it!) [06:33] jam: g'night [06:33] d'oh, missed him. [06:34] lifeless: I didn't cancel the running job. ?? [06:34] Just pushing it up now, anyway. [06:34] whew [06:34] lifeless: rm patch.1251263587 ==> star-merge http://bazaar.launchpad.net/~mbp/bzr/prepare-2.0 http://bazaar.launchpad.net/~bzr-pqm/bzr/2.0 [06:34] ah found it [06:34] poolie: its all landed [06:37] spiv, so what now? [06:43] poolie: Well, the review reply with a fairly small incremental diff (+68, -45) has been sent and I think addresses jam's concerns. [06:44] so.. [06:45] Gar, wireless dropout. [06:45] (on wired for the moment) [06:53] poolie: btw, record_entry_contents has exhaustive permutation tests. [06:54] do they pick up the case where it shouldn't record a new text? [06:54] yes [06:54] they pin it down very very precisely. [06:54] they assumed that the interface they were building on returned accurate data. [06:55] grep for unchanged in bzrlib/tests/per_repository/test_commit_builder.py === vila-dinner is now known as vila [06:57] ow, almost crossed jam... [06:57] hi all :) [07:01] hi vila! [07:02] poolie: Its my contention that only explicit tests for the problem would have exposed it - be they integration tests or unit tests of the interface. [07:03] poolie: I don't think it is a lack of tests on the record_entry_contents interface though; given accurate data it will behave well and is tested to do that. [07:03] given bogus data I think its extremely likely to misbehave - but thats why we have tests for the behaviour of tree :) [07:03] https://bugs.edge.launchpad.net/bzr/+bug/418931 spiv [07:03] Launchpad bug 418931 in bzr "AssertionError: _remember_remote_is_before((1, 18)) called, but _remember_remote_is_before((1, 15)) was called previously" [High,Confirmed] [07:11] poolie: I guess I'm trying to say that you're very unlikely to be able to create a test that when given valid data the api does the wrong thing [07:11] poolie: because I spent a bunch of time trying to make the interface tests as defensive as possible [07:31] poolie: reviewing that cf patch now and have some questions ... [07:32] ok [07:32] poolie: in repository.py, why the new exception wrt nested tree [07:32] ? [07:32] more context? [07:32] did that fall out of tests? [07:32] lines 98-100 [07:33] see https://code.edge.launchpad.net/~mbp/bzr/415508-content-filtering/+merge/10640 [07:33] it came out of testing it [07:33] it should never be hit, but trapping it here gives a more meaningful message [07:33] ok [07:34] poolie: also the docstring in workingtree4.py ... [07:34] code doesn't seem to match? [07:34] well match precisely [07:34] that it holds the hash and size? [07:35] i thought it did :/ [07:36] igc: how did the perf test go? [07:36] did it rock? [07:36] igc: also, all the stuff for windows users is in the 2.0 branch now. [07:36] lifeless: the one over lunch sucked because the lp mirror wasn't up to date :-( [07:36] lifeless: I kicked off another test 30 minutes ago [07:36] igc: ah, shame. eta? [07:37] lifeless: *this* time with your code :-) [07:37] lifeless: so, possibly with the test_commit_builder tests, i just want to add a new one asserting that it copes ok if the size and hash are null [07:37] none* [07:37] and if the size is none but the hash is known [07:38] and maybe for both those cases, with the case that the file actually either has or hasn't changed [07:38] poolie: So unknown I'd expect to be covered (I'd have to check though). But unknown size was not conceived of in the original interface definition. [07:38] poolie: so I definitely adding tests to cover the change to the interface is appropriate. [07:39] lifeless: full test is still running but the number you want just popped on my screen 10 seconds ago ... [07:39] s/adding/think & [07:39] 1.2 seconds [07:39] down from 73+ seconds [07:39] igc: and full commit is? [07:39] 1.96 seconds [07:39] booyah! [07:39] :-) [07:39] i guess it returns an indication of whether something was recorded [07:39] igc: that 0.7 seconds is 'status on the rest of the tree' [07:39] right [07:40] poolie: yes, we also check that the inventory gets the right last-modified value for that entry. [07:40] poolie: remembering that this is an awkward interface we are deleting, so don't go overboard :) [07:40] poolie: 'rm the interface' is not-all-that-far-away. [07:41] igc: If you recally, I was expressing concern that that overhead would be substantial vis-a-vis layering on iter_changes rather than changing iter_changes. [07:41] so i've sent that thing for merge [07:41] igc: you can see why now, I hope. [07:41] there's a bug open about adding more tests but i'm not very motivated to do it now [07:42] I think thats fine; I'd be inclined to close the bug wontfix [07:42] diminishing returns [07:42] if i'm going to do more here it would be primarily [07:42] adding integration tests [07:43] or trying to refactor it into a clearer layer that does filtering [07:44] igc, tell me about bug 374735? [07:44] Launchpad bug 374735 in bzr "Plan and UI for upgrading multiple stacked branches " [High,In progress] https://launchpad.net/bugs/374735 [07:45] poolie: one sec [07:47] poolie: so the issue is ... [07:48] could the Upgrade Guide recommend a less complex upgrade recipe for branches stacked on LP? [07:48] poolie: iiuic, thumper thinks no [07:49] so, um [07:49] poolie: I'm happy to document whatever we agree on [07:49] i suppose what i want to know now is, what's the implications for the 2.0 release? should i be doing something to unblock it, or should we considering that it might block 2.0? [07:49] poolie: maybe we need a conference call with thumper, lifeless, you and I to resolve it [07:50] poolie: I think the current recipe and doc is acceptable [07:50] poolie: I agree it *could* be better one day but I don't think it's a blocker [07:51] poolie: my personal opinion is that making shared repository upgrades easier is more important [07:52] by upgrading branches in that repo implicitly [07:52] my patch for patch got some love last Friday but hasn't moved since [07:52] right [07:52] s/for patch/for that/ [07:52] so that's only weakly connected to the issue of upgrading stacked branches? [07:52] like technically unconnected, just in the same area? [07:53] my patch is currently unconnected from stacked btranches [07:53] an earlier cut tried doing them in a certain order but ... [07:53] I backed that out because it didn't apply ... [07:54] stacked branches aren't supported in a shared repo at all [07:54] i'm thinking about narrowing down the 2.0-targeted bugs to just things that we must or nearly must fix [07:54] just for easier thinking [07:54] right [07:54] the best kind of thinking! [07:54] I think the Upgrade Guide is fine for 2.0 [07:55] after all, it actually works [07:56] I wish the Data MIgration Guide (fastimport) had reached that lofty state [07:56] poolie: jml: spiv: I wonder if making scenario application do a shallow copy would be safe. It looks like it might be substantially faster. [07:56] we'd probably want to change some static parameters to factories. [07:56] shallow copy of what? [07:56] poolie: btw, just approved that content filtering patch [07:56] thanks [07:56] i already sent it :) [07:56] lifeless: of the test case, vs. a deep copy? [07:57] yes [07:57] poolie: ok, so approving it makes me feel better, if not adding any value otherwise :-) [07:57] lifeless: I imagine it would be faster... I wonder if perhaps there should be an option for deep vs. shallow? [07:58] apply_scenarios is ~ 100% of the time of 'test_test_suite' [07:58] I don't have a very strong opinion on the safety of it. I think using copy/deepcopy is a bit of a rough approximation for the semantic that we want. [07:58] test.clone() would be better. [07:58] Right. [07:58] well, add a .copy() method and then it can be modified [07:58] * lifeless adds another yak. [07:58] exactyl [07:58] * jml is agreeing so far [07:58] shallow will work, I think. [07:58] Well, there's __deepcopy__ already ;) [07:58] did you ever have yak butter tea? i once did in montreal. [07:59] kiwis might like it :) [07:59] * lifeless makes it shallow [08:00] 50% faster [08:00] and another second off loading the regular test suite. [08:03] 3.3 seconds being reported by selftest selftest now. [08:03] almost down to tdd speeds again [08:03] nice :) [08:04] want to do my selftest --debug-failure feature request too? :) [08:04] poolie: yes, but I won't [08:04] I want to drive this thread to the ground [08:05] and I haven't yet figured out how to fork() myself [08:05] _check_safety_net [08:05] this is kindof slow. [08:07] hm, i don't know what to do now [08:08] I have been wondering if thats what you were doing:) [figuring out what to do] [08:08] poolie: if you don't have anything specifically for 2.0, you could pick one of [brain food, manage someone, something useful even if not 2.0 specific] [08:09] i need to merge 415508 to 2.0 and then i guess look at john's bug 402645 fix [08:09] Launchpad bug 402645 in bzr "fetch for --2a formats seems to be fragmenting" [Critical,In progress] https://launchpad.net/bugs/402645 [08:09] and then do a beta release [08:10] lifeless: _check_safety_net *intent* is to ensure we don't fallback to a shared repo, it's more problematic when one set TMPDIR under his $HOME than the default under /tmp, [08:11] that being said, the *implementation* can be changed as you see fit [08:11] vila: yes, but opening a working tree 20K times is a lot of work. [08:11] vila: I'd rather make sure we error when someone reads from that dir [08:11] vila: by using the branch open hook. For instance. [08:11] lifeless: yup, that will work too, we discussed it with poolie long ago, but I never found the time to fix iit [08:12] maybe just chmod'ing may be enough (but may not work on windows) [08:13] *but* I'm a bit scared by a too tricky impl. that some tests may defeat [08:13] vila: so, a few thoughts [08:13] a test could go above it anyway. [08:13] anyway, a good test for that is to create a standalone branch and then do TMP_DIR='.' :-) [08:13] so we can't be perfect. [08:14] As we can't be perfect, we get to choose just where we put the line. [08:14] I suspect that a python callback * 20K will be much cheaper than open_wt + get_last_revision * 20K [08:14] the only tests that could bypass that are those that actually run bzr externally. [08:14] a few thoughts too: I'm pretty sure some tests already escapes the current jail (some cxxxpolicy tests actually use the local branch settings) [08:14] so roughly: [08:15] - make a subclass (e.g. ExternalBase :P) be the only test class with run_bzr_subprocess() [08:15] give that subclass the current safety net check [08:15] External must die [08:15] ExternalBse must die [08:15] actually, I think it should live, for this and only this. [08:15] It's the one in blackbox right ? [08:16] be aware that it isn't used by all blackbox tests then [08:16] and remove the current safety net creation and check in the base class with the replacement of a bzrdir/branch open hook to catch library attempts to use that area. [08:16] vila: when i delete the method from the base class, they will show up pretty fast. [08:17] oh, by running selftest -s bb you mean ? [08:17] broadly, yes [08:17] also, some tests escape the safety net by accessing only the config files if I remember correctly [08:18] yes, thats why we change HOME [08:18] I plan to add hooks to file() and open() to catch them [08:18] I'm pretty sure some tests still access the local branch if TMPDIR is set [08:18] lifeless: that still makes me a bit unhappy [08:18] i'd really rather you use a readonly directory [08:19] poolie: I want to get away from disk IO completely for tests that think they are only testing functions. [08:19] i agree too [08:19] I'm sorry I don't have more precise info there, it's all from experiments I made long ago and could never finish, the point is, we have some minor isolation problems that I saw long ago with the TMPDIR trick, [08:19] poolie: I don't see making a directory, readonly or otherwise, as being compatible with that goal :( [08:19] vila: I hope that I'll flush these out eventually. [08:19] *but* they never show up again with --parallel=fork, so may be some have been already addressed [08:20] why? [08:20] and the long term plan is to catch them by running them one by one when I'm able to work on coverage again [08:20] poolie: because it requires mkdir(), either per-test, or a global variable and per-test-run [08:20] the former is expensive, and the latter is also aesthetically displeasing [08:20] lifeless: indeed, that's why I try to inherit from TestCase as much as I can :) [08:21] poolie: run selftest -v -s xxx (limited to 20 tests or so) and you quickly get the feeling [08:22] which feeling? [08:22] that's TestCase tests are faster than TestCaseInTempDir [08:22] but doesn't even the base class get a tmpdir? [08:23] hm, ok [08:23] i guess it may stop us reading anything [08:23] i kind of suspect it will break things but it's worth a try [08:24] poolie: no, that starts with TestCaseWithMemoryTransport [08:25] did any of you have an opinion about john's groupcompress fragmentation patch https://code.edge.launchpad.net/~jameinel/bzr/2.0b1-402645-fragmentation/+merge/10621 [08:28] poolie: we had a long discussion with jam yesterday regarding gc fragmentation, did you talk to him since then ? [08:28] or did you read the logs ? [08:28] i did see it but i haven't read them exhaustively [08:28] so i'd rather if you could summarize? [08:29] hmm [08:30] /should i stay or should i go now?/ [08:30] 1) gc groups can't be fetched as a whole, we need to split them [08:30] or more specifically is it a good idea to merge [08:30] I think it's good to merge in the short term [08:31] wow, you wanted a really short summary :) [08:32] yeah [08:34] ... but the commit messages of the mp summarizes perfectly the situation: best we can to do in the short term, but there are far better alternatives for the long term [08:34] the discussion was about these alternatives [08:36] grr, damn lp:mad, this jam's mp is really a one-liner ! [08:36] poolie: ow, you approved it, ok [08:40] 'ow'? [08:42] poolie: no need for me to review it then, but no worries :) [08:44] sorry about the formating [08:44] {'TimeStandard': 0.001, 'TimeWithMemory': 11.399999999999878, 'TimeWithTransport': 13.820999999999875, 'TimeBzr': 2.1129999999999911, 'TimeWithDir': 14.200999999999917} [08:44] s/9// [08:45] thats 1000 tests, time summed [08:45] Standard is unittest.TestCase [08:45] so close, so far away [08:45] you can see that tests.TestCase is about 2000 times slower than unittest.TestCase, and ~1/5 to 1/7th the speed of the richer test cases [08:45] lifeless: s/Time/bzrlib.test.Test/ ? [08:46] ok [08:46] yes, TimeWithMemory = a noop TestCaseWithMemoryTransport test [08:46] fully match my mental model [08:46] but what is TimeBzr ? [08:46] http://paste.ubuntu.com/259705/ [08:47] +class TimeBzr(tests.TestCase): [08:47] + [08:47] + def test_time(self): [08:47] + pass [08:47] oh, ok [08:47] bzr's 'regular' TestCase === thumper-cooking is now known as thumper [08:47] haa, costs a bit, well, cleanEnv I presume [08:47] mkdir() [08:47] and rmdir() [08:48] I'm pretty sure TestCase does the chdir and set HOME [08:48] lifeless: for tests.TestCase ? [08:50] yes [08:50] I don't think so, since home is under the TEST_ROOT shared by WithMemory [08:50] startLog instead [08:51] which seems wrong as many tests won't need it [08:51] I mean, it shouldn't be there or fail if we try to log anythinh [08:51] I mean, it shouldn't be there or fail if we try to log anything [08:52] that whole test/log interactions needs an overhaul anyway :-D [08:52] see the XXX in _get_log() [08:53] :-D [08:56] http://instantrimshot.com/ [08:56] one more regression caught early by the test farm [08:57] FAIL: bzrlib.tests.blackbox.test_filesystem_cicp.TestMisc.test_status [08:57] nice one [08:57] AssertionError: not equal: [08:57] a = 'added:\n CamelCaseParent/\n CamelCaseParent/CamelCase\n lowercaseparent/\n lowercaseparent/lowercase\n' [08:57] b = 'added:\n CamelCaseParent/CamelCase\n lowercaseparent/lowercase\n' [08:57] i'm kind of tired and i want to stop, but i want to make 2.0b1 today [08:57] lifeless: I bet it's related to one of your latest changes but you can't run on case insensitive fs ? [08:57] vila, do you think you could make a source tarball when pqm finishes grinding? [08:58] oh also i was going to mention bug 409717 [08:58] Launchpad bug 409717 in bzr "ExternalBase class is redundant" [Low,Confirmed] https://launchpad.net/bugs/409717 [08:58] poolie: certainly [08:58] and maybe ping james_w when you do? [08:59] poolie: it seems like lifeless will disagree/is working on 409717 [08:59] lifeless: bug 403360 is the report that the tests didn't clean up [08:59] Launchpad bug 403360 in bzr "tests don't clean up until they're all done" [Medium,Confirmed] https://launchpad.net/bugs/403360 [08:59] i haven't looked into it [08:59] i haven't done anything about 409717 [08:59] poolie: i.e. make a tarball from the 2.0 branch, upload it to lp and tell james_w about it ? [09:00] poolie: and let you do the announce email [09:00] i wouldn't say we should certainly remove ExternalBase, but there is some misalignment [09:00] vila, well, follow the process in the 'releasing' doc [09:00] including bumping the version number etc [09:00] and then send mail to bazaar@ [09:00] it doesn't take that long but it does block on waiting for pqm to finish these two branches [09:01] assuming they all pass [09:02] vila re ExternalBase, I think that just being able to run external commands doesn't need to be in a subclass [09:02] saying "I need a temp directory" possibly does [09:03] I agree that cleanup is strongly needed [09:03] vila: I don't have a case insensitive machine handy; would a loopback vfat fs on linux work to test that ? [09:04] Hi vila, lifeless [09:04] lifeless: in principle, but I'm pretty sure we use sys.platform to infer case sensisititotovity (sp? :) [09:04] lifeless: wine would probably work :) [09:04] poolie: good point [09:04] vila: I'll see about playing around tomorrow in brain time to look at that [09:04] vila: is it possible to download builds that your buildbot creates? [09:05] vila: unless you can track it down:) [09:05] lifeless: and I wasn't throwing stones, rather I wanted you to say,: "Oh yes, definetly, st output doesn't includes some parents anymore" :-D [09:05] lifeless: I'm tracking right away once Xchat stop ringing that is... [09:07] ok [09:07] that's enough for me then [09:07] garyvdm: not yet, but that's planned, I have a web page opened describing the necessary plumbing in buildbot, I need to solve some minors naming issues and more importantly get some freee time to do that [09:07] good night [09:07] vila: oh no; uhm, not sure. [09:07] vila: I thought you meant it was a testing cleanup [09:07] vila: ok - thanks [09:08] lifeless: ok, no worries, I'll investigate [09:08] if you want to binary search, start with the iter_changes patch [09:08] My point was: the buildbot test farm caught a *single* test failing ! Now, *that's* defect localisation :-D [09:09] garyvdm: to explain a bit more: you can't download from a slave, but a slave can upload to the master and from there we may fond a way to allow you to download [09:10] vila, the two branches, in case they fail [09:10] are [09:10] http://bazaar.launchpad.net/~spiv/bzr/gc-batching-2.0 [09:10] http://bazaar.launchpad.net/~mbp/bzr/prepare-2.0 [09:10] poolie: ok === e-jat is now known as ejat [09:19] * igc dinner [09:53] lifeless: ok, the test output was actual/expected instead of expected/actual so the question now is: "Did you make a change that will make status displays *also* the parents when adding children ?" [09:53] lifeless: again, no worries if you can't answer, just a general feeling [09:54] yes [09:54] if the parent is changed [09:57] hi folks, my local tree appears to be borked, whenever I try and do anything I get the error "bzr: ERROR: exceptions.AssertionError: name u'signapps_central_user.sqlite.THIS' already in parent" [09:57] lifeless: oh right, 4649 NEWS entry is pretty clear :) In that specific case, the operation is a first 'bzr add' so I presume creating the parent counts as modifying it :) === Leonidas_ is now known as Leonidas [10:12] poolie, vila: I would also need to know compatible versions of plugins [10:12] I feel like I should just upload 1.18 today rather than running around like a headless chicken trying to beat the deadline for 2.0beta [10:13] well, I think we use betas to *know* which plugins are compatible :) [10:14] true :-) [10:15] I won't make many friends if I upload something that breaks other things on the final day before FF [10:15] Firefox ? :-D [10:16] james_w: well, I'm not aware of any API changes at least, so I don't expect a lot of plugin breaks either [10:17] uploading is not the way to find out though [10:17] and if *you* don't upload, nobody (or nearly) can find right ? [10:18] vila: it does [10:18] lifeless: context ? 8-} [10:18] 18:57 < vila> lifeless: oh right, 4649 NEWS entry is pretty clear :) In that specific case, the operation is a first 'bzr add' so I presume creating the parent counts as modifying it :) [10:18] ha :) [10:19] lifeless: test running [10:21] lifeless: so that's a canonical example of the benefits of the test farm: nobody can run all tests in all configs (I know we can improve things, but yet, the principle remains), the test farm caught a failure (splendid one, single failure), the NEWS entry for the offending revision gives an explanation related to the failure [10:22] * vila takes picture, put on wall [10:22] vila: I think build farms are wonderful [10:22] lifeless: kudos to you for that by the way :) [10:23] lifeless: Oh I know I'm preaching the choir, I just wanted to share the pleasure :) [10:23] :) [10:28] Crazy people, those bzr folks. They get excited when tests _fail_. [10:30] ouch, traceback while ttryinh to pull the 2.0 branch :-/ [10:31] what's the flag to disable apport ? [10:34] hmm, weird, 'bzr pull' failed in a bound branch but 'unbind, pull, push, bind' worked :-/ [10:35] vila: read only transport? [10:35] vila: iz bug with url normalisation [10:36] no, toomanyconcurrentrequests, the branch is pretty new (yesterday) so url norm is ruled out I think [10:37] vila: ideally someone (possibly me) would *try* the plugins and make a best effort to check what was compatible, but that's what I mean by running around on the last day [10:37] now, lots of us run bzr.dev + plugins, which is a good start [10:37] hmm, interesting, I have another one with almost the same setup, the difference being one has bazaar-cvs.org as parent while the other has lp:bzr/2.0 as parent, [10:38] so it may be that :parent and :bound being on the same server triggers the bug, no time to check yet though [10:38] james_w: ha ok, yes, I have a patch pending review that will allow me to include whatever set of plugins we decide in the test farm.... [10:39] nice [10:39] so far, it's running with --no-plugins (ashes on my head but the one who never sinned throw me the first stone :-) [10:42] I'll get 1.18 in first, and if there is a beta tarball today then we can see if there is time to squeeze it in as well [10:45] * lifeless hands vila a stone to throw at himself [10:46] lifeless: nice try :) [11:15] lifeless: still here? [11:15] yes [11:15] do you think it's possible (for me) to cherrypick your shelve fix back to 1.18? [11:15] yes [11:15] I'll try [11:16] and the one for push ../newbranch [11:16] both are easy [11:16] * bialix not ready for --2a as default [11:16] ok, I'll try to cherrypick both [11:16] (dreaming: will be nice to have them as 1.18.1) [11:17] bialix: go for it [11:17] I totally support you doing that :) [11:17] 1.18.1? [11:17] yes [11:17] ok [11:17] I'll publish it shortly [11:18] if you ahve them in a branch of your own etc and it works [11:18] we can easily merge it to the 1.18 branch on launchpad - you should ahve access to do that yourself via pqm [11:18] yes, this is my plan [11:18] worst case its a windows only release; but I think its important for windows users to have these fixes. [11:19] yes [11:19] which is why I did them now that the problem was accessible to me :) [11:20] you're using vila's farm or use windows machine? [11:21] sorry [11:21] lifeless: are you using kerguelen/vila buildbots or working on fixing this on native windows machine? [11:23] bialix: I think the devil is using wine :) [11:24] lifeless: I should cherrypick from bzr.dev revno.4635 and 4650 only? [11:25] * bialix hopes so [11:26] 4635 applied cleanly [11:26] 4650 has conflict (in NEWS -- surprise,eh?) [11:31] * bialix found bug in replay :-/ [11:32] apparently I was wrong. There is a lot of conflicts while cherrypicking 4635 === JaredWigmore is now known as JaredW [11:37] lifeless: I'm unable to cherrypick 4635. Is it possible part of this fixed was already merged to 1.18 branch? [11:37] part of this fixes [11:38] the same for 4650 [11:38] it seems my bzr is totally broken [11:40] some plugin... with --no-plugins I've got sane results [11:41] poolie, vila: pqm tells me gc-batching-2.0 landed on 2.0 ok :) [11:43] spiv: yup, marked fixed released too :) [11:46] oh, there is several non-trivial conflicts in tests, so I'm not sure how to cherrypick this cleanly === cha0s_ is now known as cha0s [12:38] bialix: I don't know if 1.18 had the thisFailsStrict.. stuff [12:39] bialix: if it *doesn't* you can probably discard most of the test changes [12:39] bialix: or mail me/the list the conflict and I'll help you out tomorrow [12:39] bialix: vila: Neither; jam landed a patch to allow emulation of windows locks in the test suite. [12:40] wow, I didn't see that 8-/ [12:40] which meants that a) I knew precisely which tests were failing, and b) I could use my standard productive environment to debug and fix [12:40] or may be I did but didn't realize the implications ... [12:40] so I was able to slide it in. [12:40] in brain-food time [12:41] brain-food ? Means short time here I presume but what is the general sense ? [12:41] well, food is something you need and consume [12:41] and for the brain [12:42] just bits and pieces, like first thing in the morning to warm up and get into the zone [12:44] I see, strangely nothing like that exists in french [12:45] its not a standard english idiom [12:45] its a robertism [12:45] :) [13:03] james_w, hi [13:03] hi beuno [13:03] did you maange to work out all the bzr-gtk problems? [13:04] bzr-gtk problems? [13:04] beuno: bzr-gtk problems ? [13:04] james_w, weren't you having problems with bzr-gtk to upload all the latest bzr stuff to karmic? [13:05] * beuno is secretly interested in loggerhead [13:05] beuno: bzr-svn [13:05] I thought you might be [13:05] I'm working on it right now [13:05] I used bzr-svn 0.6.4 [13:05] * vila relaxes :) [13:05] right, that other jelmer thing :) [13:06] there was a report of it working, and any changes in trunk post that release didn't look to be compatibility fixes [13:06] james_w, so we're good for feature freeze? [13:06] should be [13:06] awesome [13:07] if people stop asking me things :-p [13:08] james_w: What do you want me to stop asking you today ? [13:08] :) [13:08] beuno: was the loggerhead release done from a release branch or trunk? [13:08] james_w: by the way, 2.0 tarball available [13:08] vila: great, thanks, I'll add it to the back of the queue [13:09] james_w: sure, it's not as if I asked anything right ? [13:09] :-D [13:09] heh [13:09] courtesy url https://edge.launchpad.net/bzr/2.0/2.0rc1 [13:09] james_w, I pushed a release branch [13:09] and tagged trunk [13:09] https://code.edge.launchpad.net/~loggerhead-team/loggerhead/1.17 [13:10] nice [13:10] james_w: we still have patches we consider critical for 2.0 [13:10] just FYI [13:10] sure [13:10] but I was asked to get a beta in to karmic [13:11] yup yup [13:11] vila: ping [13:12] just wearing my cautious hat; I doubt bzr-* that are version locked will play nice, for instanc.e [13:12] james_w: but while we're speaking of packaging, bzr-loom has some fixes in trunk not packaged yet, I think. [13:13] lifeless: I thought about that too, but generally they check the API and we didn't change that [13:13] vila: if/when I cherrypick lifeless patches back to 1.18, may I ask you to run tests on win32 buildbot for me? [13:13] "fixes" -> "talk to me next week" [13:13] or even tomorrow [13:14] james_w: sure; its packaged as snapshots I think, FWIW [13:14] bialix: no, I suspended tests on kerguelen because 1) they didn't finish so we still don't know how many failures we have, 2) they run under cygwin which isn't our main target, 3) they were a nuisance for jam to build the windows installer [13:15] bialix: that being said, I still plan to install a local windows for my own needs and run the tests there until we migrate from kerguelen [13:15] may I know more details about 1, 2 and 3? [13:15] 2 is fixable I guess? [13:15] 1) blows up on CantCreateThread [13:15] 2) Needs a local setup to understand the issues [13:15] 3) does jam build installers every night? [13:16] 2) is an related to buildbot === kiko-zzz is now known as kiko [13:16] buildbot won't work on native windows? [13:16] We *still* build the installers, we just don't run the tests :-/ [13:17] lifeless: I'm planning to cherrypick your patches without tests changes where I see conflicts [13:17] it works but the way the *service* is installed doesn't fit... [13:17] :-/ :-/ :-\ [13:17] no means no [13:18] bialix: ? [13:20] [15:14] bialix: no, I suspended tests on kerguelen... [13:20] no means no [13:20] haa, yes :) [13:20] I can live without tests [13:22] well, I didn't like doing that, but 1) kerguelen has limited memory and the tests were eating more than half of it, 2) 9 hours everyday to confirm that we still don't know how many tests fail was a bit too high a price :-/ [13:22] yep [13:23] 9 hours is a bit too much [13:26] hi [13:26] i really like the way i can use "git checkout feature-x" to change my working directory to a new branch and continue testing my web app [13:27] is there any way i can do the same with bzr? [13:27] or will i have to manage some symlinks with my own scripts? [13:28] no, you only need shared repo + lightweight checkot in bzr and then bzr switch between branches [13:28] I guess there even was mini-tutorial on such setup [13:29] there was nothing on the git user guide [13:29] I guess they don't mention much about bzr there :) [13:29] btw is a shared repo one that is created by "bzr init-repo"? [13:29] luks: i meant http://bazaar-vcs.org/BzrForGITUsers [13:29] :P [13:30] alex-weej: his page out of date (last changed 2007/09/28) [13:30] aw [13:30] http://doc.bazaar-vcs.org/latest/en/user-guide/index.html#switching-a-lightweight-checkout [13:31] thank you [13:32] luks: so is this a good workflow in your opinion? i don't mind changing my workflow with bzr if there are better ways [13:32] I use it for every larger project in bzr [13:32] sometimes I have more than one working tree [13:32] but almost never as many as branches [13:36] when i try to pull a project i get an error message. what could be the reason? http://ddorda.pastebin.com/d7d9fbc38 [13:38] that your SSH key doesn't match the key on launchpad [13:38] beuno: loggerhead uploaded [13:38] james_w, THANK YOU [13:38] no, thank you [13:38] luks: how can i fix that? [13:40] Ddorda: go to your personal page on LP and click on edit pen around your SSH keys; add your curent public key there [13:40] another possibility is that your username is wrong === abentley1 is now known as abentley [13:41] so try bzr launchpad-login first [13:41] poolie: I think I'm done with releasing 2.0rc1, please check :-) [13:41] wow, 2.0rc1 already and 1.8 is not even released? [13:42] 1.18 was secret release [13:42] https://launchpad.net/bzr/+download [13:43] heh [13:43] luks, bialix : They share the same RM :) [13:43] they? [13:43] so you are now at 0 days release cycle? [13:43] 1.18 and 2.0 [13:43] that's super-fast development [13:44] luks: 1.18 is about to be released, 2.0 is only at the rc stage [13:44] vila: but announce for 1.18rc1 was never made [13:44] we need a 2.0beta into karmic [13:44] 1.18rc1 was announced, I just copied the mail to announce 2.0rc1... [13:45] 1.18 is yet to be announced [13:45] 1.18rc1 -- I never seen announce [13:45] ah, couldn't you get 2.0 it in without this "cheating"? [13:45] that's because we've changed the process a bit so that installers can be ready when the announce is official [13:45] luks: that's not cheating, that the way it was planned [13:46] karmic is not released either see ? [13:46] vila: it just feels weird [13:46] luks: do you use Ubuntu ? [13:46] yes [13:46] which version ? [13:46] 8.04 [13:46] luks: new evil plan is to release once at 6 months, so 1.17 was release in June, so 1.18 will be around new year :-D [13:47] that's cool [13:47] luks: yet, many people are running 9.04 and some are already running 9.10... [13:47] bzr-gtk uploaded [13:47] james_w: yes by me, yesterday [13:47] no, by me today, to karmic [13:47] :-) [13:48] james_w: yes by me, yesterday including karmic, sync ? [13:48] vila: I know, but seing two releases in the same day is pretty rare [13:48] I think that's all in order to get us a consistent stack for 1.18 [13:48] james_w: forget me, I was talking about ppas [13:48] ah [13:49] james_w: hence my 'builddeb rocks' yesterday, [13:49] ah, cool :-) [13:51] james_w: if you find I made a mistake, please, please, report, I added jaunty and karmic, stop producing for gutsy and feisty, without any real discussions, so any feedback will be warmly welcomed (no urgency though, you have enough to do :) [13:51] I think that's a good plan [13:51] they are EOL anyway [13:51] not worth the effort === abentley1 is now known as abentley [13:59] james_w: I'm unclear about deleting the remaining packages for edg, feisty and gutsy in https://edge.launchpad.net/~bzr/+archive/ppa [13:59] I can't imagine who will need them, but ignorance happens everyday :) [14:01] vila: there's little cost to having them there, but then there is little benefit, so I don't really have an opinion [14:02] james_w: ok, I lightly prefer having a clean plate so nobody wonders why that's the only package for these distros... [14:03] yeah === abentley1 is now known as abentley [14:18] * vila enjoys the silence brought by DOWNgrading its graphic card to a fan-less one ... [14:19] Now, only --parallel=fork starts the fans :-D [14:21] * pygi sets some fire near vila's house... [14:26] pygi: hehe, I still have the laptop.... which just became the noisiest around here when the fan speed is above 4000rpm... [14:27] vila, ^_^ === ja1 is now known as jam [15:30] beuno, ping? [15:30] emmajane, good morning [15:30] beuno, morning! :) [15:30] PM? [15:33] vila: morning [15:33] I just submitted: https://bugs.edge.launchpad.net/launchpad-code/+bug/419252 [15:33] Launchpad bug 419252 in launchpad-code "merge proposal threads have different headers" [Undecided,New] [15:33] I was wondering if you could confirm the email headers I'm seeing. [15:33] morning jam ! [15:34] I replied via the web [15:34] but my threading is perfect :) [15:35] do you see different mail headers? [15:35] subject lines [15:46] jam: wow, rectification: *my* threading is broken too of course, see comment on bug [15:47] ah, so it is probably reply-to-comment versus add a review sort of thing? [15:47] vila: thanks for helping track it down [15:47] I've seen it before, and it is quite annoying [15:48] it's higly misleading indeed, I have no idea where the subject is coming from for *my* mail ! [15:50] jam: Oh, I see we make the same jokes in addition to making the same reviews :) [15:56] vila: so why did we go with rc1 rather than b1 ? [15:56] jam: :my mistake ? [15:58] jam: I followed releasing.txt and missed a part ? Missed a reference ? [15:59] cycle.txt mentions 2.0rc1, rats, I used 2.0rc1 released instead of available :-/ [15:59] well, still haven't been a true RM haven't I ? :) [16:00] but I think that 2.0beta1 will be *released* later anyway so I wasn't wrong on the naming, or was I ? [16:00] jam: ^ [16:01] vila: it would be 2.0beta1-rc1 in that case [16:02] but we are switching to the 'new' layout, I thought [16:02] where we don't do rc's for beta releases [16:02] then I goofed :-/ [16:03] vila: question about mainline parent ghosts and merge_sort [16:03] if you have ghost => A => B [16:03] should A be revno 1 ? [16:04] (that is the best I could come up with...) [16:04] strictly speaking you know it *can't* be one since there is a ghost... [16:05] so it should be 2 [16:06] jam: I'm unclear about deleting the remaining bzr-gtk packages for edgy, feisty and gutsy in https://edge.launchpad.net/~bzr/+archive/ppa [16:06] what do you think ? [16:07] vila: I wouldn't delete packages [16:08] jam: ok, sold, I didn't but was unsure, james_w agree with you, 3/0, they stay, my only problem is that it's a bit unclean as we don't have corresponding bzr packages to go with [16:09] vila: then obviously someone else doesn't agree with not deleting packages [16:09] :) [16:10] err, no we all agree to keep the packages [16:10] or are you just joking ? :) [16:11] well, I'm guessing that poolie deleted the old packages [16:11] so he obviously would disagree (at least a little) [16:11] so.. I wouldn't delete them *yet* [16:11] but we should think about it [16:11] ha ! [16:12] ok, get it :) [16:12] Now that you mention it, I seem to recall poolie talking about deleting them, so we'll see if he read the highlights in the IRC logs :) [16:15] vila: what is the branch in lp? [16:15] lp:bzr/2.0 ? [16:15] k [16:15] * jam wonders how we'll do it with on-going beta branches, etc. [16:15] and the final stable branches [16:16] I'd say betas will come out one at a time from lp:bzr/2.1 and lp:bzr/3.0 [16:17] vila: that isn't how we do it today... but perhaps [16:17] I kind of like having a separate branch per official release [16:17] we don't have a lp:bzr/1.18rc1 AFAIK [16:17] but I guess we aren't planning on doing point releases from any of the betas [16:17] vila: rc != beta [16:18] jam: look at cycle.txt may be ? It sounds that a single branch is enough for each serie [16:18] I'm talking about the scheme in the Schedule section [16:32] A little question related to the 2.0rc1 release. Will there be a bzrtools release matching this shortly, or do the 1.18.0 bzrtools release work with 2.0rc1 as well? [16:34] and related to this, is bzr 1.18 released or not? It's uploaded in launchpad, but bazaar-vcs webpages and this channel topic seems to say it's not released.. [16:37] hno: we have a new policy of not making the official announcement until all plugins/installers/etc have been built [16:39] jam: that's regarding 1.18 right? [16:40] hno: yeah. I'm pretty sure it is 'all released' but last night not all the packages had been made [16:41] jam: So it should be fine if I go ahead and get it packaged for Fedora I guess. [16:41] vila: also, you seem to have sent the announcement to 'bzr-announce' which I thought we were waiting for packages to do [16:41] hno: the tarball is the 'official' release, yes [16:42] Consider it "gone gold" versus "at the publishers" [16:42] releasing.txt : [16:42] For release candidates, this is sent to the ``bazaar-announce`` and [16:42] ``bazaar`` lists. For final releases, it should also be cc'd to [16:42] ``info-gnu@gnu.org``, ``python-announce-list@python.org``, [16:42] ``bug-directory@gnu.org``. In both cases, it is good to set [16:42] ``Reply-To: bazaar@lists.canonical.com``, so that people who reply to [16:42] the announcement don't spam other lists. [16:42] hno: and bzrtools 1.18 will explicitly not work with 2.0. abentley has code in bzrtools that checks the version string and refuses to run if they don't match [16:43] vila: 1) this wasn't supposed to be an rc [16:43] rats, forgot the reply-ti :-( [16:43] 2) I think we are changing that policy [16:43] at the minimum, though, we aren't sending "announce" until we have packages [16:44] vila: new docs built, packaged and uploaded for 1.18 and 2.0rc1 [16:44] vila: the current bot is called igc til we get an RT request done :-( [16:45] igc: bot ? [16:45] well 'cron job' [16:45] haaaa [16:45] jam: So the 2.0rc1 isn't an rc? [16:45] anyhow, time fro bed === deryck is now known as deryck[lunch] [16:46] night all [16:46] sleep well igc, I'm almost EODing myself [16:46] hno: so.... in *my* opinion, rc1 means we expect 0 changes before turning this code into -final [16:46] and I don't think the current release is at that point [16:46] when jam had finished listing all my mistakes in that 2.0rc1 release :) [16:46] Maybe Martin decided otherwise overnight and told that to vila without telling me [16:47] jam: nope, martin told me: I'm tired but I want that relase to be out today, can you help [16:47] vila: so... I can't package the windows installer until the plugins have updated to 2.0-X, which means we should 'announce' the full release until after everything has been brought up to date [16:47] so we should make an bazaar@ posting that the code is frozen and available [16:47] yes, we should release 1.18 first [16:47] and get people to catch up, build installers, etc. [16:47] I understand we needed 2.0 to enter karmic asap [16:48] so let's forget about 2.0 until the *official* RM for both 1.18 and 2.0 clears my mistakes :) [16:48] The window for Fedora-12 is also relatively short (weeks). [16:48] hno: we're talking days or hours here, the RM is in AU TZ [16:49] * vila chuckles AU RM TZ, how about obscuring via acronyms... [16:49] wasn¨t obscure to me. [16:50] hno: I was thinking about an outsider trying to catch up the thread... poor guy :-/ [16:50] vila: and he is in EST (AEST) which doesn't help [16:50] EST == New York time, *and* Australian Eastern (sydney) time. [16:50] It's not a REAL timezone unless it has a 15 minute offset... [16:50] fullermd: I'm pretty sure AU has one of those, too [16:51] AIUI, they have 9 different timezones in the summer, and 5 in the winter [16:51] jam: who is in EST ? === beuno is now known as beuno-lunch [16:51] Yah. AU and somewhere in SE Asia I think. [16:51] vila: The official abbreviation for the time zone in Sydney is "EST" [16:51] SE is here... don¨t think we have an Asia region in SE. [16:51] though for sanity purposes, Martin calls it AEST [16:52] I think it might be Eastern Standard versus Eastern Seaboard or something silly like that. [16:53] vila: Google just claims Sydney == UTC+10: http://www.google.com/search?hl=en&client=firefox-a&rls=org.mozilla%3Aen-US%3Aofficial&hs=lY0&q=time+zone+sydney&aq=f&oq=&aqi=g7 [16:53] however: [16:53] http://www.timeanddate.com/worldclock/city.html?n=240 says "EST" [16:53] vs [16:53] http://www.timeanddate.com/library/abbreviations/timezones/na/est.html [16:53] which also says EST and is New York (ish) [16:54] imo the only reasonable abbreviation for timezones is UTC+-N [16:55] Tak: +/-NNNN in such case... [16:55] Tak: given that there are 15min offset timezones... [16:56] I meant to indicate N as a number, rather than as a character ;-) [16:56] UTC+4h15 [16:57] vila: UTC+4.25 [16:57] jam: tsk tsk, too easy [16:57] jam: UTC+0425 usually... [16:57] hno: 0415 actually [16:57] it is base 60 not 100 [16:58] right. [16:58] whoever came up with base 60 for time... most of us have 10 fingers.. [16:58] vila: UTC+4.4h ? [16:58] 2*3*4*5 = 60 [16:59] it is the smallest number that is evenly divisible by 2,3,4,5,6 [16:59] Hey, a git import in launchpad failed with this traceback: http://launchpadlibrarian.net/30852208/rainbow-olpc-mstone-trunk-log.txt [16:59] Is this a bzr bug? [16:59] I personally prefer base 12, but its never caught on [17:00] lfaraone: most likely a bug in bzr-git, but I don't really know for sure [17:00] jam: mkay. [17:00] I recently read a funny explanation for base 60: you count 12 via 3 points on each finger (can find the english word for french phalange) and then 5 fingers on the other hand [17:01] bzr 1.18 will hit Fedora-11 testing tomorrow I hope.. still building. [17:01] vila: interesting. [17:01] of course bases 12 and 60 are far more useful than 10 because you can divide by 2/3/4/5/6 (well not 5 for 12 but you get the idea) [17:01] I've usually counted to 10 on one hand [17:01] using the thumb as a pointer for >5 [17:01] which makes it pretty easy to count to 100 on two hands [17:02] I've never really successfully counted in binary to get to 1024 [17:02] fingers just don't bend that way easily :) [17:02] vila: yeah, it is a shame we weren't born with 12 fingers :) [17:02] It actually was the one thing that is somewhat nice about the US inches to feet. [17:03] It is very easy to cut 1 foot into 3rds [17:03] Which I've done far more often than cutting into 5ths [17:03] 1/2 and 1/5ths is all metric is really good at, without getting repeating decimals :) [17:04] there were other articles about the romans counting up to hundreds of thousands with various finger gestures [17:05] and some others about base 20 being popular using fingers and toes... [17:05] vila: I can count in the hundreds of thousands. just not with 1 digit precision :) [17:06] jam: they had a way to express such numbers with all digits in several gestures, but they didn't use positional numeration (sp?) so they had special gestures for higher numbers [17:07] what surprised me was that I thought they couldn't go higher than M, were in fact, even in the written form, they could [17:08] oh, and another funny one was about the chinese having special ideograms for bank accounts to fight counterfeiting (sp ?) [17:08] vila: https://code.edge.launchpad.net/~jameinel/bzr/2.0rc2-419241-merge-sort/+merge/10755 if you get a chance [17:09] not today, I'm crashing :-) [17:09] vila: hmm.. I wonder about finger positions for roman numerals [17:09] vila: critical segfault in the 2.0 release [17:09] 'bzr log lp:~jameinel/bzr/2.0b1-stable-groupcompress-order -n0 -r -20..-1' segfaults [17:09] you ran 'make' ? [17:10] vila: I wrote the code [17:10] I know the segfault [17:10] fixed in attached [17:10] though there is still a critical regression, at least it doesn't segfault [17:13] jam: couldn't you be more daggy than 2.0 ? [17:13] Ok. I won't package 2.0rc1 today [17:14] vila: for what purpose? The code is only in 2.0 or trunk [17:14] wasn't in 1.18 [17:14] ok, wasn't sure [17:15] jam: the only worrying line is the deleted parents = self._original_graph[node_name] [17:15] jam: reviewing online I miss the context [17:16] vila: parents is passed into the function [17:16] it was a bit bogus to re-read it from the dict [17:16] ok [17:16] I've been meaning to clean that up for a while [17:16] approved then [17:17] argh... [17:17] robert's fix for "bzr selftest -s bt" isn't in 2.0 [17:18] I'm sure we can backport that one :) [17:20] I just sent in the MP so that we don't forget about it [17:20] james_w: I love that feature :) [17:21] err, sorry james_w that was for jam :-/ [17:21] stupid xchat [17:32] jam: hehe, not all things went wrong finally, my message to @announce is waiting approval :) [17:32] jam: was waiting, cancelled now :) [17:33] * vila really EODing [17:35] vila: ok. I'll have another patch for the rest of the regression, but that can be handled by Martin et al [17:46] anyone able to tell me how do to figure out how many packs and indices a branch has (per https://bugs.edge.launchpad.net/launchpad-code/+bug/416990/comments/3)? [17:46] Launchpad bug 416990 in bzr "Memory usage of codehosting processes is excessive" [High,Confirmed] [17:47] nm === beuno-lunch is now known as beuno [17:48] I was just wondering if there was a way to put the bzr revision number into the code, in a comment particularly. [17:48] mthaddon: ll .bzr/repository/{packs,indices} [17:48] should be even able to do that over http [17:48] thx jam [17:49] mthaddon: I suppose the most accurate is to check .bzr/repository/pack-names in case some packs aren't referenced [17:49] but that depends on the branch format [17:49] (older formats is just 'cat', newer ones 'bzr dump-btree --raw .../.bzr/repository/pack-names') [17:50] well repo format i guess :) === deryck[lunch] is now known as deryck [18:42] igc, spelling mistakes have not been fixed because I'm using up the designers time to do design changes [18:42] emmajane can pick it up after we finish with the graphical part of it, and tweak [18:42] beuno, I just got back in from lunch and am reading backwards in time. :) [18:43] igc, yeah. No worries about the spelling mistakes. That's easily fixed. [18:44] beuno, I think the shuffling that is being suggested would be remedied if the banner had more breathing room and there was a more obvious "in" for each of the top four sections. [18:44] beuno, In my response I think I'd recommended that the list of links be reduced to a single button or graphical entry point to those four topics? [18:44] abentley, a single button for all the links? [18:45] * emmajane blinks. [18:45] that was for me? [18:45] beuno: I throw my blind support behind the Canadian. [18:45] LOL [18:46] argh [18:46] :) [18:46] abentley, thanks :) [18:46] damn [18:46] emmajane, yes [18:46] tab FAIL [18:46] abentley, I owe you beer :) [18:47] emmajane: Sure, we can hang out with William next time you're in the T dot. [18:47] abentley, that'd be most excellent! [18:47] mwhudson, btw, while you where away, I did an emergency release of Loggerhead [18:47] to get it into karmic [18:47] beuno, yeah, a single button that leads to essentially a second "home" page for each of those topics. [18:47] emmajane, wireframe? [18:48] beuno, there's *so*much* right now on the front that it doesn't direct the eye to click *somewhere* [18:48] it's the fastest way to communicate :) [18:48] ah [18:48] ok. [18:48] emmajane, remember when I said taht it was too much information? [18:48] * beuno is a sucker for "I told you so"'s [18:48] :) [18:48] beuno, but I said the list of links could be dropped to a single icon into a page BEFORE you started with the designer. [18:48] beuno, then I said it as feedback. [18:48] ah [18:48] ok [18:49] I take it back then [18:49] beuno, you're just ignoring me so taht you can be right. ;) [18:49] Can I save stuff on the web version of http://www.balsamiq.com/? [18:49] my brain tends to do that [18:49] hehehe [18:50] emmajane, I don't know. But if you can export the bmml file, I have a full version [18:50] * emmajane gives it a try. [19:03] beuno, http://pastebin.ubuntu.com/259976/ see if that works? [19:03] it's just "above the fold" [19:04] * beuno tries [19:04] (if I'd had more time the boxes would ahve been the same size) [19:04] I was just trying to mash out something to see though :) [19:13] beuno, not sure if that worked? [19:18] are there any known issues with using the bzr server across linux / windows? I'm having a heck of a time getting going -- I can "bzr checkout bzr://yadda-yadda" just fine from linux to linux, but my windows machines seem to just hang with the same command [19:20] jjack86, any chance the windows machine has a port closed or some other weird windows-specific restriction? [19:21] emmajane, it did [19:21] thanks [19:21] I'll get another revision with this cahnge [19:21] i turned off my firewall to no avail, don't know where else to look (windows 7) [19:21] beuno, do you want me to follow up to igc's email as well? [19:21] emmajane, please [19:22] beuno, will do right now. [19:22] jjack86, hrm. I'm not entirely sure. I haven't used Windows in a while. [19:22] jjack86: does networking to the server work at all? [19:23] I can ssh with putty to the bzr server just fine [19:23] and bzr checkout doesn't work from a windows xp machine either, fwiw [19:25] bzr co WorksForMe on windows (bzr 1.17) [19:26] jjack86, you said it just hangs? [19:26] this is with lp, sftp, bzr+ssh, and bzr-svn [19:26] jjack86, is there anything on the server side that shows an incoming request? [19:26] jjack86: does the bzr.log provide any helpful info? [19:27] yeah, it hangs, and when I break off the connection, the server throws some 'error connection closed' messages -- can you tell me where the log file is located by any chance? [19:27] jjack86: bzr --version should mention that [19:28] ty [19:28] jjack86: both server and client have a log, but I meant the windows client in this case (doesn't hurt to look at the other one too) === cprov is now known as cprov-afk [19:44] beuno, sent! hopefully that makes more sense... :) [19:54] Hello. I was wondering if anyone has ever successfully versioned /etc in a Bazaar repo. I have tried but I'm still relatively new to Bazaar and I haven't been successful. I've also googled around and found nothing. I would appreciate pointers? [19:55] awilcox, do you know about etckeeper? [19:55] awilcox, It does exactly that. :) [19:55] awilcox, http://joey.kitenet.net/code/etckeeper/ [19:57] emmajane: I have read about etckeeper but I would like to keep *all* my servers' (I have about 15) /etc's in one central repository. (In fact I have made an (approved) repo called "servconf" on the central code server.) It didn't look like etckeeper did that; it seemed to make /etc a repo itself. [19:59] once you have one server using etckeeper you've got a bazaar branch that you can share with other machines... [19:59] I'm also using FreeBSD while this looks very linux-specific. [19:59] one place I worked had all the /etc on an nfs mount [19:59] awilcox, Bazaar is "just" python. anything that can run python can run Bazaar. [19:59] emmajane: I meant etckeeper. [20:00] awilcox, it will version any folder you tell it to. [20:00] My code repo is on FreeBSD :) I also do my development on OS X and Windows in addition to FBSD [20:00] awilcox, it'll even do /user/home if htat's what you want [20:39] moin [20:53] beuno: i saw that, thanks a lot! [21:16] lifeless: you wake up entirely too early in the morning [21:18] I do I do I do I do... [21:20] jam: you'll have to explan to me why you say commit doesn't have tests about the file graph [21:20] lifeless: it obviously didn't have a test under the particular circumstances... [21:21] jam: it did the right thing given the data the api gave it [21:22] lifeless: record_iter_changes behaved reasonable wrt path_content_summary [21:22] commit was still wrong [21:22] record_iter_changes doesn't use path_content_summary [21:22] record_entry_contents [21:22] sorry [21:22] lifeless: so can you point me to the test that asserts only X texts have been added? [21:22] I must be missing something here [21:22] I'm happy to verify [21:23] per_repository.test_commit_builder - grep for 'unchanged' [21:23] those tests assert that the inventory entry gets the original last-modifying revision id [21:23] in non merged, merge-collapsing etc corner cases [21:24] they build on the assumption that the tree api isn't damaged [21:24] I'm not sure that passing in a damaged path_content_summary tuple could be expected to do anything other than record_entry_contents did [21:25] lifeless: so... perhaps I'm wrong, but _commit_check_unchanged looks to be doing a no-op commit and asserting that nothing has changed [21:25] it doesn't seem to be an edge case [21:25] test_last_modified_revision_after_converged_merge_dir_unchanged [21:25] etc [21:25] rev1 = tree.commit(); rev2 = mini_commit(), rev1.inventory[file_id] = rev2.inventory.file_id [21:26] test_last_modified_revision_after_converged_merge_file_unchanged [21:26] yes, no op commit is one of the corner cases [21:26] remember that record_entry_contents hits every entry, so its entirely possible to have it spuriously record the entire tree [21:26] if not tested [21:29] Hey there... I don't seem to get Bazaar's --fixed functionality to work. I added a bugtracker_xyz_url line to branch.conf, but I keep getting my commits with "--fixed=xyz:123" refused because of "Unrecognized bug". Do you have a pointer for me? [21:30] lifeless: I'm trying to figure out if this line is a bug: [21:30] def _check_graph(in_tree, changed_in_tree): [21:30] rev3 = mini_commit(in_tree, name, 'new_' + name, False, [21:30] delta_against_basis=changed_in_tree) [21:30] tree3, = self._get_revtrees(in_tree, [rev2]) [21:30] shouldn't that be tree3 = ...[rev3] + [21:30] ? [21:31] let me look [21:31] also, the way you do "expected_graph" isn't quite right [21:31] Wurblzap: hi, uhm. [21:31] you pass it the tip you want it to expect [21:32] and then make sure that things are correct [21:32] however, if you were to add (file_id, rev3) to the graph [21:32] we wouldn't know [21:32] because it wouldn't be an ancestor of (file_id, rev2) [21:32] Wurblzap: try putting it in bazaar.conf [21:32] * Wurblzap tries [21:32] Wurblzap: it may be a bug in how we find the config [21:33] (I'm not saying that the code would have been able to catch the issue. I *am* saying that it doesn't seem to actually be asserting that we didn't create a new node.) [21:33] Wurblzap: did you put in the {id} bit? [21:33] Yup [21:33] Don't start bug hunting just yet, I'm using 1.11rc1 [21:34] oh ok. [21:34] Wurblzap: I assume you got this from "bzr help bugs" ? [21:34] No, from doc/en/user-reference/bzr_man.html [21:34] Wurblzap: k. I think that is taken from the other anyway [21:35] jam: so, these tests got quite archaic, its entirely possible there are bugs. They have caught bad graph output from commit many times for me though. [21:35] jam: re: adding file_id, rev3 - we don't care if thats added do we? as long as its not referenced by the entry it won't get copied... [21:36] lifeless: seems like a good way to introduce bugs [21:36] like the one where we reference a text that isn't referenced by the original inventory [21:36] Yeah, lifeless, it works if it's in bazaar.conf [21:36] jam: how do you mean? [21:37] lifeless: having a text key in the repository that is pointed to by the index doesn't seem like a good thing [21:37] Wurblzap: you might like to try bzr 1.18, and if that doesn't work in branch.conf file a bug. [21:37] it doesn't seem critical if it isn't referenced [21:37] but it may not be referenced in X, but *is* referenced by Y [21:37] and we just didn't think to check both [21:37] All right. Thanks, lifeless. [21:37] (say in the dirstate cache, but not in the committed revision inventory) [21:37] so I sort of do care that it isn't written to the repo [21:38] as then I'm more sure that it won't be referenced anywhere without that location blowing up [21:38] jam: so, I think that if we care if its written we have other bugs - design ones even [21:38] All we should care about is the reference that is made by the commit code - other people only get references from commit [21:41] lifeless: I would care if every commit generated a new text for every file in my tree that was just never referenced [21:41] jam: If the disk store that that environment had was a git layout, you wouldn't care [21:41] because those references would be to the hashed unchanging versions [21:41] lifeless: if it wrote new blobs I would [21:41] and it still bloats the index severely [21:41] which is the whole problem that caused Frits to even really notice [21:42] 700k entries in an index for 20k changes isn't a good thing [21:42] I may be unclear on something [21:42] were his inventory entries bogus? [21:42] jam: can you talk me through the process of debugging the command run against one of these lp-serve processes that you describe in the bug? [21:42] lifeless: I'm saying that bloating the indexes is bad, regardless of whether it is referenced from the inventory [21:43] mthaddon: I'm honestly not sure how to do the debugging in your environment, but I can gi [21:43] give some ideas [21:43] emmajane, the tabs on your mockup, don't need to be tabs, do they? [21:43] mthaddon: you don't want to do this on a live server [21:43] beuno, nope [21:43] mthaddon: it will freeze the process while you do it and may cause disconnects [21:43] lifeless: consider that we changed 'pack' to always copy all references from the index [21:43] lifeless: ah, okay [21:43] beuno, I was just looking for the shape that meant what I said. [21:43] which means that these don't go away [21:43] emmajane, cool. Just handed over the changes, crossing my fingers [21:43] lifeless: in that case, I think I'll leave it to one of the lp-bzr devs [21:43] beuno, thanks :) [21:44] mthaddon: we should simply be using these questions as things to get codehosting logging. (And I filed bugs in this space some time back) [21:44] lifeless: since they now know which branch it is, should be able to reproduce [21:44] emmajane, and we'll probably want to take it to the public list from now on [21:44] beuno, that's fine. [21:44] what I'd like to know is what format its being pulled into [21:44] doing data-conversion on the fly is a likely candidate for that footprint IMO [21:45] jam: well, pack with no revspec always copied all indexed items. [21:45] why am i seeing 3 calls to get_tags_bytes() ..... [21:45] lifeless: sure. [21:45] jam: fetch() however was never meant to copy all index items. [21:45] which means... it would be carried around [21:45] jam: and IMO its a pretty bad bug that it does because it means private data can be exposed [21:45] lifeless: how would you know what format it's being pulled into? [21:45] so... to say "I don't care" is false [21:46] I don't care a lot about a small amount of extra [21:46] I care a lot about a *lot* of extra [21:46] jam: were his inventory entries bogus? [21:46] lifeless: bogus in what sense? [21:46] rev1.inventory[file_id] == rev2.inventory[file_id] except for last-modified-revision [21:47] so the inventory referenced a text key which was added to the repo [21:47] jam: the tree3=...[rev2] thing isn't a bug, but its horribly unclear [21:47] jam: ok, so the inventory entry was wrong [21:47] lifeless: why do you commit rev3, but never look at it? [21:48] what line are you looking at [21:48] lifeless: 1065 [21:48] rev3 = mini_commit(...) [21:48] k [21:48] and rev3 is never mentioned again [21:50] lifeless: in your hpss streamlining work, did you notice that get_tags_bytes is being called repeatedly and getting the same result each time? [21:50] yes [21:50] in poking around at mthaddon's stuff, I just noticed that [21:50] branch lock being dropped to zero [21:50] discards the cache [21:51] got pulled over to the 2a crunch though before fixin [21:51] sure [21:51] as long as it isn't something new I'm finding [21:51] can be the client too [21:51] lifeless: bzr.dev + bzr.dev for my testing [21:51] ok [21:52] Hi all [21:52] so, I'm struggling to explain rev2 there [21:52] * garyvdm is looking for bialix [21:52] I'll poke at this [21:52] garyvdm: I don't think bialix is usually on at this time... but you might get lucky [21:53] jam: its a bug; [21:53] jam: but only on that line; the rest of _check_graph is correct [21:53] interestingly, during the fetch, memory consumption is pretty steady until 375s into the fetch, when it starts growing, and it grows until the fetch completes at 560s. (from 75MB to 178MB.) [21:53] as we're testing it didn't add an entry [21:54] lifeless: right, so I think you are trying to test that tree3.inventory[file_id].revision == rev2 [21:54] and that the graph ancestry of rev2 is correct. [21:54] though I almost think you are trying to test that the graph ancestry should also not have a rev3 in it [21:54] but can't test that easily, because you can't use it if it isn't there... [21:55] I do wonder if assertFileGraph should be using iter_ancestry()... [21:55] lifeless: anyway, back to the original question. I didn't realize that there was at least some level of this testing. Which is good to be wrong about. :) [21:55] though they are pretty hard to read and understand tests... [21:56] yes [21:56] this was written when we had a merge convergence bug many years ago [21:56] I was 'dammit I'm going to stomp this out' [21:56] lifeless: the flip-flopping issues, etc? [21:56] yes [21:57] "failure to converge" [21:57] [think Mao] [22:01] jam: so, back to the commit issue [22:01] I agree that adding huge numbers of unreferenced objects is undesirable; however thats not what happened here. [22:01] we added huge numbers of referenced objects [22:02] lifeless: right [22:02] I don't think we should pin down at the *interface level* whether unreferenced objects are used or not. [22:02] you said "do I care if unreferenced data gets writteN" [22:02] I care if *lots* of unreferenced data gets written [22:02] I'm totally open to writing non-interface tests about unreferenced data being written. [22:02] But I don't believe its part of the contract [22:03] lifeless: it would seem to be part of the contract for all currently-implemented formats... [22:04] jam: which contract [22:04] I'm talking about the interface, which bzr-svn also implements [22:04] lifeless: all currently implemented repository formats don't add unreferenced text nodes to the index [22:05] I don't think its appropriate to test *at the interface level* that that is the case [22:05] lifeless: and bzr-svn doesn't pass per-repository tests anyway [22:05] lifeless: And I would bet that we wouldn't want to write a new format that *does* do that [22:05] I should have the freedom to drop in an implementation that does things radically differently and passes [22:05] so it seems a bit weak to say it isn't an valid interface contract [22:06] lifeless: I think a reasonable part of the contract is that I won't grow grossly out of the order of actual content that you are versioning [22:06] jam: I'm not saying we shouldn't have [some] tests, I'm saying I don't think its part of 'the inventory entries generated by commit are X, Y and Z and have valid references' contract. [22:06] it is sort of a hard-to-pin down statement [22:07] add to that that its proving a negative [22:07] sure [22:07] which is part of the problem [22:07] A misbehaving implementation could add newrevid-RANDOM nodes to the index [22:07] we have a lot of aspects that we don't test... [22:07] and not reference them [22:07] lifeless: you could check that the index only has 3 nodes [22:07] they could make a new index [22:08] lifeless: so we have some holes when it comes to our testing wrt negatives... [22:08] like not fetching 5MB when you should only fetch 10k [22:08] jam: if we wanted to write a test that all our built in repositories don't write (fileid,NEWREVID) for these cases, I'd be fine with that. [22:09] I realize that the particular circumstances with content filters is fairly specific, and hard to predict ahead of time [22:09] jam: btw 1.9 to 1.9 fetching, does it use the generic codepath now? [22:09] lifeless: I don't believe so [22:09] that would have been spiv's change, though [22:09] not mine [22:09] jam: my assertion about content filters is that it was testing coverage with the tree interface that lacked [22:10] hmm.... [22:10] jam: if we'd insisted on a parameterised version of per_workingtree for content filters - which would be a time consuming change - we would have caught this easily. [22:10] lifeless: after the transfer has completed, the process still has 230/299MB of in-use ram. [22:10] and realised we need to make 'size able to be None' [22:10] and then gone to the test_commit_builder tests and tested that combination [22:10] lifeless: sure, though stacked branches suffered a lot of similar issues [22:10] yup [22:10] in that we don't have a 'per' on them [22:10] hindsight in both cases [22:11] I'm trying to formulate something I can be stubborn about with the next orthogonal-but-not-really feature [22:11] to help us prevent this sort of surprise [22:12] lifeless: where do you think would be good to make "Repository.get_stream" a little less opaque [22:12] right now if I use -Dhpss [22:13] I get about 4 lines [22:13] 0.428 hpss call w/body: 'Repository.get_stream' [22:13] 15.000 result: ('ok',) [22:13] 554.473 creating branch [22:13] make a request [22:13] it returns in 15s [22:13] and 500s later I'm ready to create the branch [22:13] -Dhpssdetail [22:13] rather opaque [22:14] abentley: ping [22:15] lifeless: doesn't add much. Or are you saying that if I add debug statements I should use that category? [22:15] jam: hmm, it should be reporting all the items [22:15] lifeless: there are other bits [22:15] my point is that get_stream( ) is 500 / 510s [22:16] and it only merits about 3 lines [22:16] hpss_detail should be printing [22:17] %d byte part read', len(bytes_part)) [22:17] just that it is streaming something for the bulk of the time [22:17] ugh [22:17] network glitch [22:17] hpss_detail should be printing [22:17] %d byte part read', len(bytes_part)) [22:17] sure I do see that [22:17] I'd also consider -Dfetch [22:17] if you want details on the bits inside the stream [22:18] [you may need to patch stuff up for that one] [22:18] grep -rnI "fetch.*debug" bzrlib/ [22:18] returns nothing [22:18] so I'm pretty sure -Dfetch isn't going to help (yet) :) [22:19] it used to :P [22:19] -Dstream too [22:19] that should be s/stream/fetch IMO [22:21] of course, I'm more interested in the server than client side... [22:27] lifeless: something seems wrong with -Dstream [22:27] 15.046 inserting substream: revisions [22:27] 15.048 inserting substream: revisions [22:27] 15.049 inserting substream: revisions [22:27] 15.049 inserting substream: revisions [22:27] 15.049 inserting substream: revisions [22:27] 15.050 inserting substream: revisions [22:27] 15.050 inserting substream: revisions [22:27] 15.050 inserting substream: revisions [22:27] 15.051 inserting substream: revisions [22:27] 15.051 inserting substream: revisions [22:27] 15.052 inserting substream: revisions [22:27] 15.052 inserting substream: revisions [22:27] 15.052 inserting substream: revisions [22:27] 15.053 inserting substream: revisions [22:27] I think that shows the point :P [22:27] 15.053 inserting substream: revisions [22:27] 15.053 inserting substream: revisions [22:27] someone hit paste... [22:27] sorry about the spam [22:27] its getting lots of little substreams [22:28] probably the batch size of knit reads [22:29] thumper: pong [22:30] lifeless: http://paste.ubuntu.com/260064/ would lead me to believe that every record is being treated as a separate stream [22:30] abentley: I wanted to talk to you about pipelines again [22:31] abentley: I'm in a similar situation to last time [22:31] thumper: It's not a good time right now. Making supper. [22:31] abentley: ok, will talk later [22:32] jam: thats possible [22:41] jam, lifeless, while branching LP locally into a shared repo, I'm getting the CPU thrashed, as well as ~500mb of CPU usage [22:41] 70.735 creating new compressed block on-the-fly in 0.000s 2645 bytes => 428 bytes [22:41] that's the last output, something like 2 minutes ago [22:42] beuno: do you have the C extensions [22:42] lifeless, I'm using people.canonical.com [22:42] so I'm guessing yes? [22:42] please not to be guessing [22:42] ok, how do I verify? [22:43] which bzr [check its a system one] [22:43] yes [22:43] /usr/bin/bzr [22:44] python -c 'import bzrlib._groupcompress_pyx' [22:44] returns nothing [22:44] then you do [22:44] ok, it's still not giving me output, and using up a lot of CPU and RAM [22:45] lifeless, spiv: So it does, indeed, seem that every knit-ft-gz is getting sent as a separate 'substream'.... [22:45] it's currently running if you want to ssh in and fiddle :) [22:45] this is bzr 1.17, and 2a format [22:46] beuno: it is also possible that it is just taking a lot of time to create a working tree, and that it has nothing to do with the last log message [22:46] I don't see why it would be 500MB, though [22:46] I've been having problems at the office with 2a as well, mainly for a bug repo (1.6gb), making the PC unsable when trying to push, and resulting in a traceback (haven't filed a bug yet) [22:46] deepjoy, [22:46] jam, [#########\ ] Fetching revisions:Get stream source [22:46] it's stuck like that [22:47] aha [22:47] 649.908 creating new compressed block on-the-fly in 0.000s 4063168 bytes => 36 bytes [22:47] hello beuno, jam, lifeless, abentley [22:47] hiya poolie [22:47] jam: thats undesirable but shouldn't cause memory or serious perf issues [22:47] jam, https://pastebin.canonical.com/21528/ [22:48] hi lifeless [22:48] beuno: it is always stuck like that [22:48] no progress with the new stream code [22:48] jam: ITYM hi poolie :P we've been chatting for hours? [22:48] hi poolie [22:48] easy mistake to make :) [22:48] lifeless: apparently the tab key hits at weird times [22:49] beuno: that branch isn't sharing a repository [22:49] it is fetching between 2 [22:49] 'file:///home/beuno/db-devel/.bzr/repository/' to 'file:///home/beuno/launchpad/.bzr/repository/' [22:50] beuno: what made you think it was inside a shared repo? [22:50] jam, correct, it's being branched *into* a new shared repo [22:50] https://pastebin.canonical.com/21529/ [22:50] it's taking a VERY long time to do so, and a lot of CPU === arjenAU2 is now known as arjenAU [22:51] beuno: k. So you just finished transferring revisions, as near as I can tell. Which is the new "lots and lots of fragmentation" issue [22:51] that said, 650s to get to that point is pretty crazy [22:52] beuno: we know the cause :P. We're working on it - jam has landed some mitigation stuff and spiv has landed more mitigation, but we still need to fix up 'does not compress on combining packs/streaming' [22:52] perfect [22:52] lifeless: I don't think we know why it took 650s before it started copying "inventory" texts [22:52] that is 650s spent copying Revision texts [22:52] jam, so i wonder what happened, did vila make a beta tarball? [22:52] * poolie opens mail [22:52] poolie: he made an rc1 tarball [22:52] rc! [22:53] really [22:53] ... which I think was a mistake [22:53] i think so too [22:53] he called it 2.0rc1 [22:53] we chatted about it a bit [22:53] he also sent it to bzr-announce, though it got cancelled while it was pending [22:53] etc [22:53] so the release process docs seem to need a bit more polish [22:53] since he felt he read them and was following what they said [22:54] but he seemed to do a lot that doesn't fit what we were looking for [22:54] jam, it's all on rookery, if it's of any use to you. logs, repos, all of it [22:55] beuno: what url did you pull from? [22:55] lifeless, originally, http://bazaar.launchpad.net/~launchpad-pqm/launchpad/db-devel/ [22:55] lifeless: he pulled from launchpad originally, but the current fetch is a local to local one [22:55] correct [22:55] jam: my top candidate for the 650 seconds is the 'walking the full graph for fetching into a local repo is slow' bug [22:56] but direct graph access would tend to argue against that [22:56] lifeless: well, it still isn't super fast to query for missing revisions when the target repo already exists [22:56] so it could be the problem [22:56] beuno: new repo? [22:57] bzr init-repo --2a .; bzr branch ../other [22:57] jam: an empty repo is _very_ fast to query :> [22:57] lifeless, yes, completely [22:57] lifeless: but not as fast as when you create one from scratch and it does 0 queries [22:57] jam: thats true, but it won't be hitting disk [22:57] your code to use AncesterOf rather than _search_missing_revisions [22:57] something like 6 function calls per graph depth [22:58] spivs, but yes. it is better [22:58] beuno: can you run 'bzr --version' again real quick? [22:58] hmm... that doesn't put it in .bzr.log [22:59] lifeless: it is using python2.4 if that matters... [22:59] 0.029 looking for plugins in /usr/lib/python2.4/site-packages/bzrlib/plugins [22:59] sure [22:59] I wouldn't expect that dramatic a change [22:59] Bazaar (bzr) 1.17 [22:59] Python interpreter: /usr/bin/python 2.4.3 [23:00] emmajane: thanks for keeping the website moving, i'm replying now [23:00] lifeless: so yeah, as near as I can tell it is using the compiled extensions, so that isn't strictly a reason [23:01] FWIW, branching /devel from HTTP into the new shared repo, blazing fast [23:02] but that initial operation was murder [23:02] 1068s according to the log [23:02] 18min [23:02] right, to branch locally [23:02] and the CPU was angry at me in the meantime [23:03] beuno: on the plus side you saved 1421 => 1068 = 6 minutes versus branching from remote... [23:03] :) [23:04] beuno: any particular reason why you felt you *needed* to do this? [23:04] jml: you should subscribe yourself to 'https://code.edge.launchpad.net/~jml/testtools/trunk' [23:04] beuno: I hear that launchpad.net can host branches [23:04] anyway.... EOD for me. [23:04] jam, yes. I got db-devel and wanted devel as well [23:04] to run a script against that branch [23:04] beuno: but why two repos [23:04] anyway [23:04] jml: and/or fix the bug that reviewers are not treated as implicitly subscribed. Its really the most frustrating thing. [23:05] I'm off to pick up my son [23:05] jam, there shouldn't be a shared repo on the first one [23:05] beuno: there still is *a* repository [23:05] jam, I realized that I wanted a shared repo *after* I had branched intially [23:05] bzr bind lp:launchpad/db-devel [23:05] bzr switch devel [23:05] bzr switch db-devel [23:05] no repo, should be fast, thanks :) [23:05] yes, that's another way of doing it [23:06] this week is "don't learn new tricks week" [23:07] lifeless, spiv: so as near as I can tell, bzrlib.smart.repository._stream_to_byte_stream does indeed intend to create a separate substream for each record [23:07] which doesn't seem to match all the gyrations that _byte_stream_to_stream does to try and get multiple records per substream [23:08] for substream_type, substream in stream: [23:08] for record in substream: [23:08] pack_writer.bytes_record(serialised, [(substream_type,)]) [23:08] so, [23:09] knit-* should all down to serialised = ...get_bytes_as() [23:09] and for the additional records, that returns None or '' (I don't remember which) [23:09] so we'll yield one substrea, for the entire group of IO that knit did back to disk [23:10] the revisions vf is a bit special, because it only uses full texts [23:10] lifeless: I see exactly the same for inventories and texts [23:10] jam: what precisely are you seeing [23:11] 3.323 accepting bytes: 'B341\ntexts\n\nknit-del...' [23:11] 3.323 substream_type texts, record_bytes: 'knit-delta-gz\nTREE_R'... [23:11] 3.323 inserting substream: texts [23:11] 3.323 294 byte part read [23:11] over and over again [23:11] anyway, 1 substream per record is... abusive but not specifically harmful [23:11] I suppose it makes it easier for me to debug exactly when memory goes wacko [23:11] /away [23:11] expected for revisions [23:11] not for others [23:12] (revs and sigs) [23:13] jam: knit-delta-closure and knit-delta-closure-ref [23:13] jam: in the server you should see lots of the first, and many more of the second [23:13] knit-delta-closure-ref's are not serialised [23:14] and it should be using LazyKnitContentFactory [23:24] poolie: lunch? [23:40] jam: I'm sorry the selftest bug hit 2.0, I thought I'd cherrypicked around it [23:40] jam: or rather, I'm pretty certain I had [23:51] jeez you are getting up early [23:54] igc, did we get an os x mailing list? i can't remember [23:57] jam, lifeless, i'm going to merge 2.0 back to trunk [23:57] if we want to back out jam's changes, let's explicitly back them out [23:58] though i'd be inclined to leave them the same as 2.0 until we fix the bug if any properly