[00:52] <mneptok> TODO: tonight when the moon is high in the sky, go and let loose a prolonged howl. think of igc.
[00:59] <poolie> heh
[01:00] <spiv> Morning.
[01:01] <poolie> hi spiv
[01:10] <maxb> poolie: Hi. Could I trouble you to add a new PPA under ~bzr called 'builddeps', to use as a container for common build-time-only dependencies for ~bzr/proposed, ~bzr/ppa, ~bzr-beta-ppa/ppa ? (Mainly debhelper for older distroseries)
[01:10] <mwhudson> +1 mneptok
[01:10] <poolie> sure
[01:11] <poolie> can you add that to the ppa.txt doc?
[01:12] <maxb> ah yes - will do
[01:19] <spm> mneptok: +1 indeed
[01:37] <maxb> hmm. we really need --stacked-on= to support lp: urls
[01:40] <spiv> Hmm, I thought that there had been a patch towards that a while back...
[01:40] <poolie> maxb, done
[01:41] <maxb> thanks poolie
[03:33] <spiv> spm: bzr's pqm seems to be stuck?
[03:55] <poolie> spiv, yes, the job i sent up yesterday didn't seem to succeed or fail
[03:55] <poolie> spiv, did you ping anyone?
[04:04] <spiv> poolie: not apart from just then.
[04:08] <poolie> spm: could you help us with pqm?
[05:32] <mneptok> http://blogs.gnome.org/mneptok/2010/09/01/ian-clatworthy-howl-a-thon/
[05:33]  * mneptok smiles upwardly
[05:34] <fullermd> Well, it's not yet midnight.  I have strict rules about howling at the moon too early in the evening...   but I'll definitely put it on the docket for later.
[05:35] <mneptok> \o/
[05:35] <mneptok> AAAAAAAAAAAOOOOOOOOOOOOOOOOOOOOOO!
[05:38] <spm> poolie: looking
[05:41] <spm> poolie: spiv: https://pastebin.canonical.com/36543/ looks pretty stuck to me; shall I stab with a sharpened hammer, or did you want some debug first?
[06:18] <spiv> spm: I suppose it'd be interesting to know where exactly 24617 is stuck, although hopefully sending SIGINT to that process would make it exit with a relevant traceback.
[06:18] <spiv> spm: I'll be a lot more interested in debugging it if it recurs :)
[06:19] <spm> heh, call it a one off and stab then?
[06:20] <spiv> Hmm, there's been a bit of flux in the test infrastructure lately (ironically to try reduce these sorts of issues), so I guess it's moderately likely to recur.
[06:21] <spiv> spm: how about just do a quick strace to see which syscall it's stuck in then kill it with SIGINT?
[06:22] <spm> attach: ptrace(PTRACE_ATTACH, ...): Operation not permitted <== sigh
[06:24] <spiv> Oh, joy.  Possibly related to the strace subprocess left over from the test suite...
[06:25] <spiv> Or at least, I presume it's a left over and not used by the test in question...
[06:25] <spm> that would make sense. I'll try killing that first; see if that frees things up at all
[06:26] <spm> haha. that just fired off another strace
[06:27] <spm> fwiw, stracing the strace gives:
[06:27] <spm>  strace -p 1816
[06:27] <spm> Process 1816 attached - interrupt to quit
[06:27] <spm> wait4(4294967295,

[06:28] <spm> oki, killed 24617; things *seem* to be moving again
[06:28] <spiv> Wow, starting a new strace isn't what I would have guessed.
[06:30] <spm> i tried it twice; same. so ... whee
[06:30] <spm> and yup; things are definately moving again.
[06:33] <spiv> Well, I guess that means it was probably stuck in the strace tests, rather than where the http://pqm.bazaar-vcs.org/ suggested it was stuck.  Hmm.
[06:34] <lifeless> :<
[06:39] <spiv> spm: thanks
[06:39] <spm> spiv: I'm quietly confidant that bzr blame will show it's your fault; no matter who really did the change that caused it. fwiw. :-P
[07:28] <maxb> lifeless: Hi. the debian/control Vcs-Bzr field of subunit points to a branch missing the last few uploads. Has it moved somewhere else?
[07:28] <lifeless> i don't think so
[07:28] <lifeless> what url are you seeing?
[07:29] <maxb> http://bzr.debian.org/collab-maint/subunit/unstable/
[07:29] <lifeless> if its bzr+ssh://bazaar.launchpad.net/~lifeless/debian/sid/subunit/sid I'm pushing against just in case
[07:30] <maxb> ahh, so the collab-maint branch is a red herring
[07:32] <maxb> Also, looks like you didn't 'bzr mark-uploaded' the last upload :-)
[07:40] <magcius> Is there a decent way to show the changes brought by the current commit?
[07:40] <GaryvdM> magcius: bzr diff -c -1
[07:41] <magcius> next question: is there any way to set it up so that if it's on a tty it uses a pager?
[07:57] <vila> hi all !
[07:57] <vila> igc: good bye, AAAAAAAAAAAAAAAAAAOOOOOOOOOOOOOO ;-(
[08:02] <lifeless> maxb: hmm, sorry.
[08:02] <lifeless> maxb: I should probably do that
[08:21] <spiv> Hmm, the test suite seems to have slowed down quite a bit for me recently.
[08:22] <spiv> And as a bonus an https test seems to be tripping over http://bugs.python.org/issue9729
[08:23] <vila> spiv: yup, you can safely ignore the failure in that case, it's transient. I encounter it from time to time on babune.
[08:23] <spiv> Yeah, somehow my CPU cores now seem to be about 50% idle, so it's taking twice as long :(
[08:24] <vila> spiv: your bug report is indeed pointing the problem, EBADF should be raised (and will be caught by the test suite)
[08:24] <vila> spiv: I don't observer that *at all* if it helps
[08:24] <vila> spiv: I don't observe that *at all* if it helps
[08:24] <vila> spiv: is that for a full test run or a partial one ?
[08:24] <spiv> Yeah, the interaction between SSLSocket and _socketobject is clearly broken for those methods in that case once you know what to look for.
[08:25] <spiv> Full run.
[08:25] <spiv> The utilisation is varying, actually.
[08:25] <spiv> But there was definitely a point about midway through the run where it was literally 50-50, despite having one process per core.
[08:26] <vila> hmm, see lp:~vila/bzr/626876-bzr-connect-to-bzr-ssh but it could only be relevant if you happened to run sftp tests at this precise point
[08:27] <spiv> And concretely it used to take just under 10 minutes to run the full no-plugins suite, now it's taking just over 20!
[08:27] <vila> spiv: I meant, see the patch itself, we actually slow down sftp tests to cope with paramiko
[08:28] <vila> spiv: doesn't match my experience nor babune ones
[08:29] <vila> spiv: I'm still waiting a bit for more data to analyze but I even expect the leak fixes to *improve* the performances (if only because there are far less dangling threads and sockets for python to care about)
[08:30] <spiv> Well, 3000 tests sleeping for 0.2 seconds would equal 10 minutes.
[08:31] <vila> spiv: I'd be glad to proven wrong though :)
[08:31] <vila> spiv: well, one more reason to consider bug #626876 critical then :-D
[08:31] <spiv> vila: I'll trying commenting out that time.sleep and see what happens
[08:31]  * bialix waves hello
[08:32] <vila> spiv: excellent !
[08:32] <vila> bialix: _0/
[08:32] <spiv> vila: is that time.sleep there really there to make just one test pass?  10 minutes is huge cost to pay for that!
[08:33] <vila> spiv: yes.
[08:33] <spiv> (And 25 minutes if you're going to increase it from 0.2 to 0.5!)
[08:34] <vila> spiv: yes
[08:34] <spiv> Ok, so please please please find a way to apply that hack for just the duration of that one test if it has to stay.
[08:34] <vila> spiv: jam even said that it needed to set it to 5.0s to make it pass on a heavily loaded windows machine
[08:35] <spiv> Well, basically time.sleep is never the right thing to do in an automated test suite.
[08:35] <vila> spiv: I strongly prefer to get rid of it by rewriting that test as I complained about for months :-P Care to help ?
[08:35] <spiv> Because there's never a value where it will reliably cause the test to pass.
[08:36] <vila> spiv: agreed, hence the FIXMEsssss
[08:36] <GaryvdM> Hi bialix
[08:36] <bialix> Hi Gary
[08:37] <spiv> vila: incidentally, no ssl-related member_descriptor error on this run so far, but a EBADF traceback has leaking onto my stderr
[08:37] <vila> spiv: speaking of timeouts, paramiko use a 0.1s timeout for every ssh socket (and an associated thread)
[08:37] <spiv> s/leaking/leaked/
[08:37] <spiv> Oh, no, spoke too soon, there's the ssl bug again :)
[08:38] <spiv> vila: well, in my ideal universe, Twisted's SSH implementation would be more suitable for us which would avoid that sort of mess ;)
[08:38] <vila> spiv: I expect a *few* and shallow fallouts from the leak fixes and babune confirms that so far
[08:39] <spiv> Ah, the EBADF is from a paramiko thread in fact.
[08:39] <vila> :-D
[08:39] <vila> which test ?
[08:40] <spiv> vila: don't know, it's a traceback from a thread
[08:40] <spiv> 'Thread-630' :P
[08:40] <vila> spiv: but still... 20 minutes ? How many concurrent runs ?
[08:40] <vila> ha, this one :)
[08:41] <spiv> But this run is so far looking to take roughly 20 min too :(
[08:41] <poolie> hello maxb, vila
[08:41] <spiv> --parallel=fork on a 4 core laptop.
[08:41] <vila> spiv: so, regarding paramiko threads, one idea is to monkey patch the thread creation to inject ThreadWithException, but I haven't looked at the details yet
[08:41] <vila> spiv: so concurrency == 8 or 4 ?
[08:41] <spiv> == 4
[08:42] <vila> hmm, weird, you do use tmpfs for /tmp right ?
[08:42] <spiv> I don't.  (Although I've been meaning to play with that at some stage)
[08:43] <vila> spiv: just try
[08:43] <vila> spiv: most important optimization for selftest, ever
[08:43] <spiv> vila: Well, I'd really like to fix selftest to not hit the filesystem so much in the first place :)
[08:44] <vila> spiv: sure, but I'm not holding my breath on that and using tmpfs in the mean time doesn't hurt and will even help getting there sooner :D
[08:45] <vila> spiv: I don't hold my breath but I keep thinking about it though...
[08:45] <vila> poolie: hey :) ;) :-| ;-/ AAAAAOOOO
[08:46] <poolie> i know :(
[08:47] <vila> ok, with that last patch for gentoo, babune is back in blue except for the usual suspects and even that 's' may disappear soon (windows, I'm looking at you)
[08:47] <vila> Ran 24311 tests in 4727.204s
[08:47] <vila> FAILED (failures=1, errors=4)
[08:47] <vila> Recording test results
[08:47] <vila> ERROR: Failed to archive test reports
[08:47] <vila> mgz: we're getting there... finally
[08:48] <vila> spiv: still running without sleep ?
[08:48] <vila> oh my, how will that be interpreted....
[08:49] <bialix_> GaryvdM: can you look at https://answers.launchpad.net/qbzr/+question/121019 please
[08:50]  * GaryvdM looks
[08:51] <bialix> GaryvdM: I'm not sure how we're interacting with extmerge
[08:51] <vila> bialix: http://paste.ubuntu.com/486635/  \o/
[08:52] <bialix> vila: cool
[08:52] <bialix> sorry, today I'm not able to enjoy
[08:52] <vila> bialix: and that's the real stuff running from bzr.dev
[08:52] <vila> bialix: I know :-(
[08:53] <bialix> aaaoooooowww!
[08:53] <GaryvdM> vila: That is great.
[09:01] <vila> GaryvdM: so, regarding your qlog tests, you may simplify the expected data to make your tests more readable by using helpers like assertLogRevnos or assertLogRevnosAndDepths in bb.test_log
[09:02] <spiv> vila: oh wow
[09:02] <vila> GaryvdM: the idea is that you don't always need to check all the details and using revids matching the revnos also simplify reading (come to think about it, I should even use raw ints and stringify them in the helper themselves)
[09:02] <spiv> vila: so it's because when I don't have my battery in my laptop the CPU is throttled to half speed!
[09:02] <vila> spiv: LOL, thanks for that laugh :)
[09:03] <spiv> vila: note that I'm on AC power either way
[09:03]  * spiv boggles
[09:04] <vila> spiv: what a trap :)
[09:04] <vila> laptop want a battery, laptop want a battery !
[09:05] <GaryvdM> vila: I was quite busy last night, and wrote a assertComputedLines method. If the assertion fails, it shows the rendered graph as an ascii art.
[09:06] <fullermd> If you put two batteries in it, does it go to double speed?
[09:06] <vila> GaryvdM: I read something about that in the IRC logs but I haven't realized it was generated, great !
[09:06] <GaryvdM> vila: and I wrote a whole bunch of tests for existing bugs
[09:06] <vila> 4 ! 8 ! Give it more batteries ! Tell Intel we've solved their problem with Moore's law !
[09:07] <vila> GaryvdM: Excellent ! Isn't it nice ?
[09:09] <spiv> Hmm.  /sys/devices/system/cpu/cpu*/cpufreq/bios_limit drops when I remove the battery.
[09:09] <vila> GaryvdM: meh, stringify won't work for dotted revnos, I'm an idiot :)
[09:10] <GaryvdM> vila: http://pastebin.com/YdsrMyEw
[09:11] <vila> GaryvdM: wow, amazing !
[09:11] <spiv> Perhaps it's http://www.thinkwiki.org/wiki/Problem_with_CPU_frequency_scaling
[09:13]  * vila checks that virtual machines have a soldered battery....
[09:15] <vila> GaryvdM: So concretely, you may want to reduce ('rev-f', 3, None, [(0, 0, 0, True), (3, 1, 0, True), (3, 3, 3, True)])  to ('3', '3.1.0', '3.3.3') when applicable and use the full version only when needed
[09:15] <vila> GaryvdM: or something
[09:16] <GaryvdM> vila: If I could output unicode, I could make the graphs more readable, like this: http://pastebin.com/ZW7i4nZF
[09:16] <vila> GaryvdM: but still, wow, I will certainly look at that the next time I play with ancestry graphs
[09:16] <vila> WOW
[09:17] <vila> GaryvdM: wow wow wow, you need to make this available outside of tests  !
[09:18] <GaryvdM> vila: like a ncurses version of qlog?
[09:19] <vila> GaryvdM: no, as a generic utility to visualize graphs
[09:19] <vila> so we can use that when discussing, here, in mails, anywhere
[09:21] <vila> hmm, I suspect it uses quite a lot of qlog code though... may be tricky to extract... but that will certainly make the qlog internal design clearer
[09:22] <vila> GaryvdM: anyway, you may have better things to do right now but it may be worth considering as a long term goal...
[09:35] <poolie> i'm going to update and re-fire the strace things
[09:35] <poolie> hopefully not causing another hang
[09:39] <poolie> hm, i can imagine why that's hangign
[09:39] <poolie> but this is a kind of unprofitable mole to whack
[09:42] <GaryvdM> Very interesting website igc had linked on his site: http://headrush.typepad.com/
[09:42] <GaryvdM> Aaaoooooowww
[09:47] <poolie> it is, though it came to an ugly end a few years ago
[09:49] <poolie> vila, i'm going to re
[09:49] <poolie> re-send the strace thing, with the tests disabled
[09:49] <poolie> which should not make pqm hang
[09:49] <poolie> but if it does, please just as a SA to kill it
[09:51] <vila> poolie: ok, I'll keep an eye on it
[10:56] <Odd_Bloke> Hello all.  I want to push a branch to Launchpad that is stacked on another branch on Launchpad.  I'm hitting some problems, however, as detailed at http://paste.pocoo.org/show/257054/.
[10:58] <vila> Odd_Bloke: 1) I'm not sure you can do that on lp itself... 2) You got 2 different error messages for the same command ?
[10:58] <spiv> Odd_Bloke: hmm, that's odd.  Try removing/renaming the branch through the web UI, and then try using the expanded bzr+ssh: URL with --stacked-on
[10:59] <spiv> vila: the first command created a bzrdir with a repo
[10:59] <vila> ha!
[10:59] <spiv> Odd_Bloke: although
[10:59] <spiv> Odd_Bloke: why specify the stacked-on branch manually?
[11:00] <spiv> Odd_Bloke: LP should have that set up for you by default
[11:01] <spiv> Also, that first error is weird!
[11:01] <Odd_Bloke> spiv: Ignorance. :)
[11:01] <Odd_Bloke> So just 'bzr push lp:~username/projectname/branchname' should do stacking automagically?
[11:02] <lifeless> yes
[11:02] <Odd_Bloke> Ooh, shiny.
[11:05] <spiv> Odd_Bloke: well, assuming you have set a development focus for the project in Launchpad
[11:05] <spiv> Odd_Bloke: which I was assuming you had because you were trying lp:openerp-addons in your command, but actually I don't see that any such branch exists...
[11:06] <vila> spiv: gee, I so mis-read the paste :-/ Anyway, does lp support stacking on a branch other than dev focus ?
[11:06] <spiv> Which may be related to the original failure
[11:06] <spiv> vila: yes (but may require some amount of prodding, I don't recall)
[11:06] <vila> kthks
[11:13] <vila> Right, poolie's strace patch landed
[13:21] <vila> (jelmer) Add ControlDirFormat.supports_workingtrees cvar. (Jelmer Vernooij) is currently failing on pqm, let me know if you get the failure email from pqm
[13:21] <jelmer> vila: Will do, thanks.
[13:28] <vila> jelmer: I just had a look at revno 3464 in bzr-svn trunk, inheriting from LockableConfig is not enoug, you need a needs_write_lock decorator on set_user_option. Otherwise the way you ensure compatibility with older bzr releases is nicely short.
[13:31] <vila> jelmer: something like http://paste.ubuntu.com/486734/ should be enoug (not tested)
[13:31] <vila> urgh no, you need more :-/
[13:36] <mgz> vila: http://babune.ladeuil.net:24842/job/selftest-windows/149/console <- looks good
[13:36] <mgz> I see bug 625574 and bug 273978 and bug 581311 and use of osutils.safe_unicode which should be called osutils.break_randomly
[13:36] <vila> mgz: yeah :)
[13:37] <mgz> I've got the first one, which will mean we get the pretty result display when you install a fixed pyjunitxml
[13:37] <vila> mgz: err, I meant for the windows run, for safe_unicode, I'm a bit surprised
[13:37] <mgz> The second I'm going to get back to now I've fixed testtools so can actually test it without breaking the infrastructure
[13:38] <vila> pyjunitxml, I had *that* installed ? Where ? 8-/
[13:38] <mgz> safe_unicode tries decoding as utf-8, which means you can pass it arbitrary byte strings and it'll appear to work on nix nearly all the time
[13:38] <mgz> but actually the code could be totally bogus.
[13:39] <vila> mgz: well, we should get rid of safe_unicode and safe_utf8 completely. AIUI, they help because we are not fully clear about which API expect one or the other
[13:40] <mgz> right.
[13:40] <mgz> they're little plasters over api mistakes.
[13:41] <mgz> all in all though, looks in  pretty good shape, babune's closer to green than I am :)
[13:42] <vila> blue blue ! Because he is frustrated to not be able to report failures, it turns red when it laugh at us :-D
[13:43] <vila> but I don't seem to have python-junitxml installed...
[13:44] <mgz> you must have something, I see in the log your pipeline is:
[13:44] <mgz> Python 2.7.0+
[13:44] <mgz> + ./bzr selftest -x TestBreakin --subunit
[13:44] <mgz> + subunit2junitxml -o tests.xml -f
[13:44] <mgz> + subunit2pyunit
[13:44] <mgz> it's the subunit2junitxml that's failing because of bad unicode/xml handling, and that code is in pyjunitxml
[13:44] <vila> hmm, then I think it may be part of udson which is written in java, no python involved there
[13:45] <mgz> but but but!
[13:45] <mgz> http://bazaar.launchpad.net/~lifeless/pyjunitxml/trunk/revision/16
[13:45] <vila> meh, subunit2junitxml may be failing then, but it's part of subunit
[13:45] <vila> 8-)
[13:45] <mgz> the last revision on the branch is an encoding change to fix a problem you reported!
[13:45] <mgz> so... you must have it :)
[13:46]  * vila asks his clones
[13:47] <vila> oh ! right, got that on babune master, running from sources... wth
[13:48] <vila> oh ! and also on slaves, running from sources too, geee
[13:49] <mgz> okay, so I'll give you a new branch to try later, should give us nice results for maverick and xp
[13:49] <vila> Pfew, up-to-date with trunk so far. Pfew
[13:49] <vila> mgz: yummy :)
[13:50] <mgz> first... lunch!
[13:50] <vila> mgz: enjoy !
[13:58] <jelmer> re
[13:59] <jelmer> vila: Yep, I did get the email.
[13:59] <jelmer> vila: The testsuite was passing with current bzr-svn
[14:00] <vila> jelmer: yeah, current should be fine since there is no tests for "foreign" config files (they would be hard to define anyway), but that also means that the bzr-svn test suite didn't trigger the _write_config_file assertion about being locked (of course since you don't use it...)
[14:01] <vila> jelmer: anyway, it means that your are not *yet* using a lock to protect your config file against concurrent write accesses
[14:01] <jelmer> ahh, ok
[14:02] <vila> jelmer: just a heads-up :)
[14:02] <jelmer> vila: Thanks
[14:02] <jelmer> I'll have a look tonight.
[14:03] <vila> jelmer: I'm still interested by your feedback on the transition, I see you use _get_filename.... hehe, you redefine it :)
[14:04] <vila> jelmer: anyway, if you think we should change something in bzr.dev to ease this transition, let me know
[15:35] <jam> GaryvdM: I should note your graphs don't line up correctly in unicode for me in Firefox
[15:36] <jam> and they don't format at all in VIM
[15:57] <jam> vila: ping about the connection code
[15:57] <jam> I just noticed this line in the old "SocketListener" code that you removed:
[15:58] <jam> -            readable, writable_unused, exception_unused = \
[15:58] <jam> -                select.select([self._socket], [], [], 0.1)
[16:01] <jam> also, I noticed that 'self.serving' is just a boolean in TestingTCPServerMixin, and I've found that to get reliable start/stop you really need an event
[16:12] <jam> vila: I tried changing 'serving' from being a boolean to being an Event, and once I do that, it fails regardless of the amount of time.sleep I have
[16:13] <jam> I have the feeling that we *are* actually calling 'serving = False' at some point, but because the threads aren't always synchronized we don't see it sometimes
[16:13] <jam> so the test accidentally passes
[16:13] <jam> IOW, I think we are somehow asking the service to shut down early, but it just didn't know yet
[16:14] <jam> ah wait, I have at least 1 boolean inverted, let me fix that first
[16:14] <vila> jam: hmm, I seem to remember using an Event for self.serving before realizing it was useless, so I revert to a boolean, let me check
[16:16] <jam> vila: I also see "TestingTCPServerMixin.server_bind" where it calls bind() but doesn't call .listen(1). Do you know where 'listen(1)' is occurring?
[16:16] <vila> jam: yup, that was revno 5247.5.31
[16:16] <vila> jam: probably SocketServer.py
[16:17] <jam> vila: you're right, there is a server_activate() function
[16:17] <vila> jam: yup, in the implementation of server_activate
[16:17] <vila> which is called by default at init time
[16:18] <jam> though why do you override server_bind only to get rid of the 'setsockopt' option?
[16:18] <jam> same for 'get_request', etc
[16:18] <vila> jam: for compatibility with previous python versions IIRC
[16:19] <vila> SO_RESUSEADDR is useless in our case and IIRC have different semantics between unix and windows
[16:19] <jam> vila: I know there is a comment to that effect in places, at least
[16:20] <jam> vila: so one interesting change. The default "listen(*)" amount is actually 5, and not 1
[16:21] <vila> and ?
[16:27] <jam> vila: just an interesting difference
[17:24] <zyga> bzr lp-propose-merge suddenly stopped working for me: http://pastebin.ubuntu.com/486840/
[17:24] <zyga> I'm not sure what is missing but should it not be a dependency handled by dpkg/apt?
[17:25] <vila> zyga: try 'bzr -Derror lp-propose-merge' that should give a traceback
[17:26] <zyga> vila, http://pastebin.ubuntu.com/486842/
[17:27] <vila> zyga: that's from lazr imported from launchpadlib.... a bit surprising but I don't know launchpadlib enough to tell you more
[17:28] <zyga> vila, it's quite surprising as it was working just a few days ago
[17:28] <zyga> (apart form all the updates I got in between)
[17:28] <vila> zyga: indeed
[17:28]  * zyga needs to reboot after kernel update
[17:29] <vila> hmm, if python libs needs a reboot now...
[18:56] <jam> vila: I think I've found the race event in the paramiko code
[18:56] <jam> if you're interested
[18:59] <vila> jam: you can bet I am ! (But I've EODed so expect some lag :-)
[18:59] <jam> vila: Transport._parse_newkeys sets: completion_event.set()
[18:59] <jam> which makes the outer loop say "oh he must be done, lets exit"
[19:00] <vila> jam: so the fix is just to remove that set() ?
[19:00] <jam> not sure yet :)
[19:00] <jam> still digging
[19:00] <jam> as to why it succeeds sometimes
[19:00] <vila> ...or move it elsewhere/later
[19:02] <vila> I've made some progress rewriting the test but I'm not done yet, it will be very simple.... a handful of lines... but each word counts there :-/
[19:04] <jam> vila: current thoughts
[19:04] <jam> The completion event gets set *multiple* times
[19:04] <jam> the first time it is set, is after the key exchange
[19:04] <jam> after that, it gets set when messages are done processing
[19:04] <jam> we only wait for the first one, but used to leave the thread running
[19:04] <jam> so now we are killing the thread once it is "ready"
[19:04] <jam> and the race is such that if we can complete before the kill comes through
[19:05] <jam> then we succeed
[19:05] <vila> what thread are you talking about ?
[19:06] <jam> vila: paramiko.Transport()
[19:06] <jam> is its own thread
[19:06] <jam> with its own 'completion_event'
[19:06] <jam> if I wait(), then clear(), then wait() again, the test passes
[19:06] <vila> err, without any other change ? Where are you waiting ?
[19:07] <jam> I'll put up a diff to make sure
[19:07] <jam> vila: where you used to call' time.sleep()'
[19:08] <vila> hmmm, very promising
[19:09] <jam> vila: http://paste.ubuntu.com/486894/
[19:09] <jam> or: lp:///~jameinel/bzr/2.3-bzr-connect-ssh
[19:11] <jam> vila: what I was noticing was that while "completion_event" was set, it *also* has "self.active" still True
[19:11] <jam> note that at this point, I probably have hacked-up paramiko as well, so I'm working to make sure everything is clean
[19:14] <vila> what is self.active ? another paramiko attribute ?
[19:14] <jam> vila: paramiko.Transport().active
[19:14] <vila> k
[19:14] <jam> vila: at the end of "start_server" it returns completion_event.isSet() == True, and active == True
[19:15] <vila> hmm
[19:15] <jam> vila: looking at the start_server docstring
[19:15] <vila> jam: doing that right now
[19:15] <jam> it says "this method will not return until negotation (sic) is done"
[19:16] <vila> active should be checked
[19:16] <jam> it doesn't say when all conversation is doen
[19:16] <jam> just that it has finished negotiation
[19:18] <vila> what if you just set completion_event to None ?
[19:18] <jam> vila: we still want to loop on it to know when the channel gets shut down (IMO)
[19:19] <jam> we can't set it to None for start_server because it creates one if you pass None
[19:19] <jam> and it waits until the negotiation has finished
[19:19] <jam> we then need to wait until the conversation has actually completed at some point
[19:19] <jam> we may as well clear() and wait on completion_event
[19:19] <jam> though there is a potential race condition then
[19:19] <vila> you said you had to clear it, who is setting it again ?
[19:20] <jam> vila: Transport.run() sets it at the end 'if self.active: self.active = False; self.completion_event.set()"
[19:20] <vila> My suspicion is that several events are needed and paramiko seems to just use completion_event if it's set
[19:20] <jam> vila: I would guess that you are correct. There is the race that the rekey finishes and then the next action also finishes before we notice
[19:21] <jam> we can pass in our own completion event, though, rather than using the paramiko loop
[19:22] <vila> this... sounds promising (did I say that already or what :)
[19:22] <jam> vila: so I think a race still exists in the new code, but it is much better than just 'time.sleep()'
[19:22] <vila> I think you're on the right track, check that the other sftp tests are still passing though
[19:23] <vila> jam: and as soon as you have a testable branch, let me know, I'll try to run it on babune (if you have a subset of tests that would help too)
[19:23] <vila> jam: I'm off to dinner, gf yelling :)
 vila: so I think a race still exists in the new code, but it is much better than just 'time.sleep()'
[19:24] <vila> yup that was my gut feeling when I wrote the comment above the sleep, but I hadn't time to dig into paramiko code
[19:36] <vila> jam: just I thought: there is one thread for the server and one for each connection. If I'm not mistaken, sftp is the only case where my changes may have allow both of them to run concurrently (explaining the bug). Why they use the *same* event (as you seem to demonstrate) is yet to be understood, otherwise using two events (as you seem to hint) should address the problem
[19:38] <jam> vila: well, there is 1 more thread as well. TestServerInAThread spawns a thread per request, which calls the Handler, which then spawns a paramiko.Transport thread to actually handle the request
[19:39] <jam> vila: and I'm having good results with 2 events
[19:39] <jam> though AFAICT, only the connect_bzr_ssh code actually runs the gives "SFTP" handler
[19:39] <jam> not sure why that is yet
[19:40] <jam> at least, running "bzr selftest "(?i)sftp" ran all the tests even though I had tyos
[19:40] <jam> typos
[20:24] <vila> jam: yes, but I was ignoring the paramiko thread here
[20:26] <vila> jam: request == connection in this context
[20:32] <chx> hi. i made a merge. it warned about criss-cross. then it gave me 18 conflicts, all of the are adding files. the files being added are the very same as the files exisitng. yet bzr did not check this just created the conflicts.
[21:32] <tedg> Howdy, where does one file bugs for bzr-launchpad?  It seems they don't use Launchpad for bugs.
[21:32] <tedg> Which is richly ironic.
[21:33] <rubbs> https://launchpad.net/launchpad
[21:33] <rubbs> specifically https://bugs.launchpad.net/launchpad
[21:34] <rubbs> tedg: ^ sorry forgot to ping you with the answer ;)
[21:34] <tedg> rubbs, Okay, thanks.
[21:34] <vila> rubbs: nope, tedgis talking about bzr-launchpad with indeed didn't activate the bug tracking. jml, that's indeed pretty ironic :-P
[21:34] <rubbs> np
[21:35] <rubbs> oh, sorry I missread
[21:35] <rubbs> tedg: my bad.
[21:35] <vila> tedg: I'm sure jml will see to that quickly
[21:35] <tedg> rubbs, Ah, okay.  I figured jml would see it there as well :)
[21:35] <tedg> vila, He's probably boycotting their bugs.  Switching to bugzilla or something.
[21:36] <tedg> ;)
[21:37] <vila> tedg: yup, I think we've discovered yet another hint about his evil plans... not sure which though
[21:38] <vila> tedg: meh, there is no code either.... what do you refer as bzr-launchpad ?? :-)
[21:39] <vila> tedg: there is a launchpad plugin in the core bzr plugins, if that's the one, you can file the bug against bzr itself
[21:39] <vila> tedg: but nobody calls it bzr-launchpad, it's just the launchpad plugin for bzr
[21:41] <tedg> vila, Ah, that's what I was thinking, bzr help lp-propose-merge says that it's in the launchpad plugin.
[21:42] <vila> I think bzr-launchpad may be the next generation, jml talked about it, but he hasn't released anything yet apparently
[21:43] <tedg> Ah, okay.  I'm already ahead of the game ;)
[21:43] <vila> tedg: then, yes, that's from the launchpad plugin (as mentioned in the help) and you can wee were it's installed on your system with 'bzr plugins -v'
[21:44] <vila> tedg: its path should end with bzrlib/plugins/launchpad
[21:44] <tedg> vila, Yeah, but wouldn't all packaged plugins be there?
[21:44] <vila> have a look
[21:45] <tedg> Yeah, and things like bzr-search turns into bzrlib/plugins/search.
[21:45] <vila> if you use external plugins, the path should be different
[21:46] <vila> can you !paste the output ?
[21:46] <vila> !paste
[21:47] <tedg> vila, http://pastebin.com/gGZtdgsR
[21:47] <tedg> vila, Those aren't all core, but they're all packaged.
[21:48] <vila> wow, all in the same place ! Hmm, I didn't know about that
[21:49] <vila> Hmm, in that case I don't know how to differentiate the core ones from the others using the command line only...(python one-liners doesn't count ;)
[21:49] <tedg> vila, Isn't that kinda the point of a good plugin system ;)
[21:50] <vila> well, it means there could be a name collision... Dunno how this is handled
[21:55] <tedg> vila, In Ubuntu that's handled through the packaging, but typically those get distro patched so they don't conflict.
[21:55] <tedg> vila, If you use something unpackaged, well, you're insane :)
[21:58] <vila> right, that indeed guarantee that the packagers will warn us if we create a plugin with a name which is already used. But it also means we need to be vocal when a new release introduces a plugin.
[21:58] <vila> Which is already the case anyway.
[22:00] <lifeless> vila: this is how plugins are designed to work
[22:01] <lifeless> cooexist as regular submodules of bzr
[22:01] <vila> lifeless: yes
[22:03] <vila> lifeless: But if jml defines a bzr-launchpad plugin that overrides the core one, this must be somehow handled by the packaging (the core one should never replace the external one).
[22:03] <chx> (this is a re-question but noone seemed to be active when i asked ~2 hours ago) i made a merge. it warned about criss-cross. then it gave me 18 conflicts, all of the are adding files. the files being added are the very same as the files exisitng. yet bzr did not check this just created the conflicts.
[22:03] <vila> lifeless: and this still defeats making a difference between BZR_PLUGIN_PATH=user:site and BZR_PLUGIN_PATH=user:site:core
[22:04] <lifeless> vila: I had no idea about such a proposal, it seems pointless to me
[22:04] <lifeless> vila: there isn't IMO a 'core' plugin definition, doesn't exist.
[22:04] <lifeless> vila: sure there is 'we ship it' but thats the extent of the separation IMO
[22:07] <vila> lifeless: that's not a proposal, that's how it works today and without it you can't run from source
[22:08] <lifeless> vila: oh, well it seems strange to me
[22:09] <vila> lifeless: it makes no difference as long as there is no name collision
[22:09] <lifeless> vila: FWIW I run from source all th etime and have never set BZR_PLUGIN_PATH
[22:10] <vila> lifeless: :-P
[22:10] <vila> lifeless: that's because you don't always run the full test suite :-D
[22:11] <lifeless> anyhoo
[22:11] <lifeless> back to lp code; getting performance under control :)
[23:22] <FryGuy-> is there an easy way to get the list of files modified from revision X to Y?
[23:23] <lifeless> st -r x..y
[23:23] <FryGuy-> :D thanks
[23:23] <poolie> FryGuy-: bzr st -r X..Y
[23:24] <FryGuy-> i didn't even think about status
[23:24] <FryGuy-> even though that's the format I wanted it in
[23:25] <FryGuy-> that's in the range (X, Y], right?
[23:26] <FryGuy-> i get confused if it's inclusive or not.. i'll just double check myself
[23:26] <lifeless> half open
[23:28] <FryGuy-> thanks again