/srv/irclogs.ubuntu.com/2011/05/27/#bzr.txt

__monty__Mmm, socket.error is a child class of IOError, so should the test for socket.error happen before the test for IOError?00:06
pooliei wonder why it isn't being handled by the existing code that tries to treat IOError as a user error?00:10
mgzin python 2.6 and later.00:10
pooliehi mgz00:11
poolieah, perfect00:11
__monty__Ah, yes the user was using 2.500:11
pooliein that case you could just list it in the same exception clause, and perhaps add a comment why it's being caught separately00:11
__monty__What do you mean by listing it in the same exception clause?00:12
mgzhaving it before with a special note about connectivity would also be reasonable00:14
pooliei meant having (OSError, IOError, socket.error)00:17
poolieyou should also add a test00:17
pooliei think this is pretty well covered in test_trace so you can go from those examples00:17
__monty__What would be the best solution, testing it first with a specific message about connectivity or making the message for IOError more general and including OSError and socket.error?00:19
pooliecan you explain the second alternative more?00:22
__monty__The second alternative is what I understood you were proposing.00:22
poolieadd a test that raises socket.errer00:23
poolie*error00:23
pooliecheck it does not print a traceback00:23
pooliethe easiest way to make this test pass is probably to just also catch that exception in the same way as for IOError00:24
pooliehm00:24
poolieactually, on trunk, since we need py2.6 now, this bug may be obsolete00:24
poolieyou could just interactively test that it works00:24
__monty__How exactly do I test it? How do I try to get a socket.error?00:25
poolielook at eg test_format_io_error00:25
poolieprobably a good way to get a realistic one is to try to connect to some unlikely port on localhost00:26
poolielike tcp port 200:26
mgzit's safe to just construct your own socket.error00:29
poolieit is00:29
__monty__Yes, but how?00:30
pooliei feel if you do it yourself, you may miss quirks in how python constructs them00:30
pooliefor instance there have been some bugs along the lines of actual python not setting named attributes on errors the way we expected, iirc00:30
poolieso if it's easy i'd lean towards generating a real owne00:30
poolie*one00:30
__monty__I should write a new method in test_trace.py to test if this is no longer a problem in python 2.6, right?00:32
poolieyes00:32
mgzso, for instance, in bzrlib.tests.test_trace use test_format_pywintypes_error as a template but raise a likely looking socket.error instead00:33
mgz...and I note there I did do what poolie said rather than what I suggested00:33
mgzin that I called a function that will raise a real error rather than constructing my own00:33
pooliethis will probably cover bug 59815800:35
ubot5Launchpad bug 598158 in Bazaar "Socket is closed errors are not caught/wrapped." [Medium,Confirmed] https://launchpad.net/bugs/59815800:35
pooliewell, it's probably a dupe00:35
pooliein fact both are probably dupes of bug 39317300:36
ubot5Launchpad bug 393173 in amarok (Ubuntu) "Amarok does not transfer album art to iPod (dup-of: 260091)" [Undecided,New] https://launchpad.net/bugs/39317300:36
ubot5Launchpad bug 260091 in amarok (Ubuntu) "Amarok does not correctly re-format cover art when transferring to Ipod" [Undecided,Won't fix] https://launchpad.net/bugs/26009100:36
pooliesorry bug 39371300:38
ubot5Launchpad bug 393713 in Bazaar "[master] socket.error causes a traceback" [Medium,Confirmed] https://launchpad.net/bugs/39371300:38
mgzsome socket errors are deeply unhelpful so some extra text in the advice param is probably a good idea00:39
__monty__As extra text just point to bzr.log or something more helpful?00:41
mgzsocket.socket(0) gives me a nice fast error, but that's probably a bad idea00:41
mgzdepends if the constants are standardised at all I guess00:41
pooliei think there probably the thing is to catch them close to the point they're raised and rethrow something more meaningful00:42
poolielike try: socketblah: except socket.error:00:42
poolieraise something("failed to connect to smtp server %s:%d: %s" % (host, port, e))00:42
mgzehehe, funny mail from jam about the 2.4b3 release00:44
poolie:)00:44
pooliethat was such a fun sprint00:44
__monty__So, the error should be caught before we have to handle it in trace.py? Or did you mean something else poolie?00:46
mgzpoolie, I've got half a thing written trying to convey that sense of fun, if I mail it to you will you proof read?00:46
pooliesure00:46
pooliei'd kind of like to consciously understand what we (or i) did right00:46
poolieto reproduce it00:46
poolieit seemed like there was just enough focus on having a hit list, but it wasn't overstructured00:47
__monty__How does the test method work, I make sure an error is raised in the try block, then 'pass' the except block, then 'msg = _format_exception()', then self.assertContainsRe(msg, r"The string for the error here")?00:54
pooliethat sounds right00:57
__monty__Still how do I raise a socket.error that's realistic?00:58
poolielike mgz said just a socket.socket(0) could be a good start00:59
spiv__monty__: hmm, perhaps try to call sock.accept without first calling sock.listen?00:59
poolieo/ spiv00:59
mgzor socket.socket() then socket.send("something") yells at you for not being connected00:59
mgzreally realistic ones like timeouts are probably not something we want in the test suite :)01:00
spivmgz's idea sounds good too.01:00
spivHi poolie01:00
__monty__Which one of these is least likely not to fail?01:01
mgzthey should all fail! :)01:02
poolieeither of those last two should be reliable01:02
poolieif it turns out they're not we can fix it01:02
__monty__What would the error string look like for the socket.socket() socket.send("string") scenario?01:05
pooliejust try it :)01:06
spivpython -c "import socket; s = socket.socket(); s.send('string')"   :)01:06
__monty__Is this correct for the string? Are the backslashes necessary since it's a raw string?01:10
__monty__r"^bzr: ERROR: \[Errno .*\] Socket is not connected"01:12
pooliethe backslashes are needed if you're trying to match it as a regexp01:15
__monty__so it's not really necessary in this case since the error will always be: socket.error: [Errno 57] Socket is not connected01:16
pooliei don't think it's guaranteed to be error 57 on all platforms01:17
pooliespiv could i mumble at you about bug 220464?01:17
ubot5Launchpad bug 220464 in Bazaar "Bazaar doesn't detect its own stale locks" [High,In progress] https://launchpad.net/bugs/22046401:17
__monty__Then this is good? r"^bzr: ERROR: \[Errno .*\] Socket is not connected"01:19
poolieyup01:19
pooliedoes it pass?01:19
poolietry running ./bzr selftest -s bt.test_trace01:19
__monty__I get this: bzr: ERROR: No module named testtools01:20
__monty__You may need to install this Python library separately.01:20
__monty__bzr: warning: some compiled extensions could not be loaded; see <https://answers.launchpad.net/bzr/+faq/703>01:20
poolieyes, you'll need testtools to run the tests01:20
poolieon ubuntu or debian, apt-get install python-testtools01:21
__monty__This is the output:01:26
__monty__bzr selftest: /Users/toon/src/bzr/connection-timed-out-364462/bzr01:26
__monty__   /Users/toon/src/bzr/connection-timed-out-364462/bzrlib01:26
__monty__   bzr-2.4.0dev4 python-2.6.5 Darwin-9.8.0-i386-32bit01:26
spivpoolie: sure; via which medium?01:26
__monty__----------------------------------------------------------------------01:26
__monty__Ran 25 tests in 0.577s01:26
__monty__OK01:26
__monty__Missing feature 'meliae' skipped 1 tests.01:26
__monty__Missing feature 'pywintypes' skipped 1 tests.01:26
__monty__bzr: warning: some compiled extensions could not be loaded; see <https://answers.launchpad.net/bzr/+faq/703>01:26
__monty__Sorry for the excessive pasting.01:27
poolierockin01:28
pooliespiv, here, or mumble, or the phone01:28
pooliemostly it's been a while since i touched it so i can't recall if i meant to do anything else before proposing it01:28
poolieactually if you could just review it now that would be nice01:29
__monty__Should I submit the change now?01:29
poolieyes please01:29
spivpoolie: sure, already started reading01:29
spivpoolie: So far it looks very nice!01:30
pooliethere's another thing connected but just out of scope01:31
pooliewhich is to do with trying to release locks as we terminate01:31
poolieand there was some discussion at the sprint01:31
pooliewhich leaned me a bit closer towards a crash-only design01:32
poolieiow better to just pretty much terminate when something unexpected happens and then pick up next time01:32
poolie__monty__: all ok?01:38
__monty__Yes, I'm composing the cover letter(?) I should mention all three of the bugs right?01:39
pooliesince they're all dupes only the master is enough01:39
pooliethanks for fixing thins!01:39
poolie*this01:39
mgzpoolie: I've emailed you a thingy.01:40
poolieta01:40
pooliethat's really nice, thanks!01:41
pooliei didn't know about bialix's shirt01:41
pooliei don't have any particular corrections or suggestions01:41
pooliei'd like to put it on the blog too01:41
pooliewhich will make it easy to add links01:42
pooliedo you have access?01:42
mgznot currently.01:43
poolieok sent01:44
__monty__Merge proposed. Thank you for all the help poolie, mgz. :)01:47
mgzthanks poolie, and thanks monty :)01:48
poolienp, thanks for your contribution01:48
__monty__See you later!01:49
mgzokay, gzlist on wordpress is now me.01:51
mgzdarn minimum four character username restrictions :)01:51
spivmgz: your nick is too compressed :)01:56
spivpoolie: branch reviewed, very nice01:57
pooliethanks spiv02:06
mgzokay, I think the post should be in the review queue on the blog02:07
mgzfeel free to edit or change if anyone spots something that could do with improving02:07
james_wmgz, it looks like it is published02:14
james_w"Someone even" in the second sentence a mistake?02:14
mgz*how02:15
mgzdammit, I thought I'd changed that :)02:15
pooliei published it02:15
pooliewell spotted02:15
poolieyou should still be able to edit it?02:15
pooliespiv interesting question about reraising incidental errors02:15
pooliehm02:16
mgzhm I don't see the edit button02:16
pooliei'll fix it02:20
mgzI've got some fixes for your lock breaking branch in return :)02:21
poolie:)02:22
pooliemgz are you going to comment on the mp - should i wait for you?02:39
mgzyes please.02:39
mgzwill try and be fast.02:39
poolienp02:40
pooliejust didn't want to stand around looking silly02:40
mgzokay, nearly there02:48
mgzI don't really need to implement this twice...02:49
mgzrequiring 2.6 means has_ctypes should always be true02:49
mgzokay, tests pass03:14
pooliei wonder if i should change this to cast to unicode to get the human form, rather than to str03:15
poolieto make it safer for py3 and indeed also for unicode values03:15
mgzit's generally the right thing to do03:22
mgzbut it's a little annoying in Python 2 because it can be dangerous to pass somethings unicode rather than str03:23
mgzit can break exceptions and such like03:23
mgzokay, posted branch poolie03:29
pooliethanks mgz03:29
mgzI'm a bit past a coherant review, hopefully the changes make sense, otherwise it'll have to wait till tomorrow :)03:30
pooliesure03:31
pooliei have some other things to fix in it anyhow03:31
pooliehave a good night03:31
mgzI got a few of them in the branch I think. Night poolie!03:31
vilawoohoo, nice blog post mgz !07:02
poolieit is isn't it07:52
pooliehi vila07:52
pooliei might call it a day though07:53
vilapoolie: heya07:53
pooliethanks for the release07:53
poolievila i don't know if you saw the mail from https://bugs.launchpad.net/bzr-cvsps-import/+bug/78891407:53
ubot5Ubuntu bug 788914 in CVS to Bazaar importer "unexpected keyword argument 'pb'" [Critical,Confirmed]07:53
pooliebut it would be nice to review and merge his patch07:53
poolie*yawn*07:53
vilahmm, never touch this code so far :-/07:54
pooliethey should be shallow fixes07:54
poolieor maybe we can get lifeless to review them07:54
poolieanyhow i should really go07:55
pooliehave a good day07:55
pooliewill try to be online later next week07:55
vilahave a nice weekend07:55
poolieyou too07:55
spivvila: you might enjoy https://code.launchpad.net/~spiv/bzr/subprocess-log-in-test-details/+merge/6261208:02
spivIt might help demystify some babune failures.08:03
vilaspiv: amazingly, I just found a trick to avoid the hangs...08:04
spivHeh.08:04
spivWhat's the trick?08:04
vilaredirecting *selftest* stderr at the invocation seems to be enough (how that's inherited is yet unclear, but probably works for all cases where we don't explicitly handle stderr)08:04
vilaso, what did I collect there ?08:05
vilaI'm glad you asked: http://paste.ubuntu.com/613637/08:05
vila*2* deprecation warnings... sound very small to block a pipe no ?08:06
spivWell, depends on what the pipe's buffer size is08:06
vilahmm, 277 chars...08:06
vilaawfully close to 256 :)08:06
spivAnd how close we were to hitting the buffer limit without the extra noise :)08:06
spivYeah.08:07
spivThat worryingly suggests that jenkins or whatever is driving selftest in the slave isn't draining both stdout and stderr concurrently.08:08
vilamy head spins a bit trying to understand the ramifications...08:09
viladosen't clearly explain why your patch for osx/windows didn't work, I should retry that now08:09
spivIt also appears to disprove my optimism in saying “It's hopefully safe to assume that the terminal or whatever is draining both our stdout and stderr reliably!” :(08:10
vilayup, that remark triggered my trick test08:11
vilaon the other hand, selftest is not supposed to output anything on stderr other than potential issues that needs to be addressed08:11
viladoes that sound correct ?08:11
spivvila: well, deprecation warnings sound like fair game for stderr to me08:12
vilayes, as things that should be addressed08:12
spivAnd it's always possible to have lots of them08:12
vilahmm08:12
vilalet me clarify08:12
vilawe seem to encounter various issues with anything that appears on stderr08:13
spivAnd there's some value in testing that we work in environments that do emit deprecation warnings.08:13
spivi.e. with older libraries08:13
vilajenkins and subunit being brittle there08:13
vilaso diverting stderr at the top level and investigating issues found there separately may help us reach a more robust babune08:14
spivAnd in extreme situations (i.e. sufficiently bad bugs) we might even get subprocesses exploding with tracebacks on stderr08:15
vilaI agree there is valuable information there, I don't mean to redirect to dev/null !08:15
spivSure I didn't take it to mean that.08:15
vilaright, my guess is that this should trigger test failures nevertheless08:15
spivI'm just saying we can't rely on driving stderr output in babune down to zero either08:15
spivWe have to be able to cope with it (even if we do manage to get it down to zero normally, bugs happen)08:16
vilaoh, right, may be not in the short term, but that's still a good target ;)08:16
vilaI don't feel especially at ease with this deprecation warnings08:16
spivIt's probably a good target, but we can't depend on it. :)08:16
vilaindeed08:16
vilaso 2>selftest.stderr and cat selftest.stderr may be a useful trick08:17
spivIn the extreme case imagine someone introduces a syntax error in lazy loaded code that is only hit by a test subprocess08:17
spivvila: +108:17
spivbuildbot gets this right :/08:17
vila?08:17
vilaoh, you mean by handling it by default ?08:18
spivIt reads stdout and stderr from the subprocess just fine (and even shows stderr in red in the default console output display)08:18
spivRight08:18
vilaI can't believe (yet) the solution to so many babune problems could be that simple...08:19
vilatime for more coffee :)08:19
vilahmm, by the way...08:19
vilaOMG !08:20
vilafullermd is not there !08:20
vilaHell must be frozen !08:20
vilaok, so plan: 1) more coffee, 2) look at spiv's stderr handling patch..... 4) profit !08:21
spivvila: given the state of http://webnumbr.com/.join%28bzr-active-reviews,bzr-pqm-queue-length,bzr-merged-reviews.derivative%29 you have quite a challenge as patch pilot today :)08:28
spivHangover from the sprint I guess!08:29
vilawell, I backuped jelmer so I have a bit of lag, but I'm also waiting for reviews for my own proposals...08:29
vilamay be I should just land them pretexting a user error while landing and approved one without realizing some pre-requisites weren't approved ;-D08:30
vilaspiv: still hanging on OSX :-/08:47
spivvila: :/08:49
spivvila: does subprocess-log-in-details help at all?08:49
vilanot tried that one yet08:49
spiv(Obviously it won't help the hang, but maybe it'll give better info if you interrupt the hang)08:49
spivvila: I just did a couple of very quick reviews for you08:50
spivAnd now I'm off!08:50
vilagreat !08:50
vilahave a nice week-end !08:50
spivHappy hacking, piloting, and babune-wrangling.08:50
spivAnd have a nice weekend when you finally get there :)08:51
vilaRiddell: hello there !09:21
vilaRiddell: I realized my comment on your https://code.launchpad.net/~jr/bzr/330063-merge-non-existing/+merge/61728 may need explanations about bb:tweak09:22
vilaRiddell: or do you understand the meaning already ?09:22
Riddellit means tweaking the blackbox tests?09:22
vilahehe no09:22
vilaBB == bundle buggy, that's what we used before reviews were available on lp09:23
viladifferent votes were available there and we still miss the 'tweak' one on lp09:23
Riddellah09:23
vilawe use it to convey: your patch looks good, you can land it without an additional review as long as you agree with the modifications asked by the reviewer and implement them09:24
vilabut shorter ;)09:24
vilasince this doesn't exist on lp, we use an idiom which is: review: needsfixing, status: approved09:25
vilaRiddell: do you need further help with this proposal ?09:26
Riddellhopefully not, I'll get to it shortly once I've looked at my e-mail (I was taking a swap day yesterday)09:26
Riddellbut I'll let you know if i do :)09:27
vilaRiddell: ok, cool, welcome back :)09:27
spivvila: heh, TestImportTariffs.start_bzr_subprocess_with_import_check explicitly uses the real $HOME!10:43
spivvila: so you could argue that including ~/.bzr.log in the details is therefore appropriate ;)10:44
vilaoh my, I routinely have Megs there !10:44
vilaI just didn't look at the result of my first run even if it was limited to ~10 tests, imagine what it will contain for a whole test suite !10:45
spivvila: it's just TestImportTariffs10:46
vilaMegs * ~20.000, we will end up with GOs !10:46
vilaha right, still we will end up with gOs :)10:46
spivIt shouldn't be much:10:47
spiv* details are discarded for passing tests10:47
spiv* only TestImportTariffs uses start_bzr_subprocess with a real $HOME10:47
spivWorth checking my assumptions are right, of course.10:47
vilawhy not make them use a temp home then ?10:48
spivBut they should be ;)10:48
spiv“        # Normally we want test isolation from the real $HOME but here we10:48
spiv        # explicitly do want to test against things installed there, therefore10:48
spiv        # we pass it through.10:48
spiv10:48
vilaargh10:48
spivi.e. test_import_tariffs wants to make use ~/.bazaar/plugins10:48
spivThere's probably a better way to do that10:48
vilawe rotate at 4M I think10:49
spivMaybe set BZR_PLUGIN_PATH for the subprocess to explicitly be exactly what the parent uses10:49
vilathat's 2M of noise on average ;-/10:49
Riddellvila: should I be on the patch pilot schedule?10:52
spivvila: I don't follow10:52
spivvila: it only keeps the log contents if the test fails10:52
spivvila: so normal cost: 010:53
spivvila: no matter how large ~/.bzr.log is for that one test10:53
vilaRiddell: up to you, feeel free to insert yourself, probably at the end of the cycle so you get some time to accomodate10:53
vilaspiv: meh, maybe I misread your patch but I thought your were installing some automatic trigger for all subprocess calls ?10:54
spivvila: for all start_bzr_subprocess calls10:55
spivvila: but for all tests *except* TestImportTariff $HOME is some temporary directory10:55
spivvila: and all in-process logging goes to an in-memory log during selftest10:55
spivvila: so the only contents it will find are from test subprocesses, with the exception of TestImportTariff10:56
spiv(Ok, the doctests use real bzr $HOME too, but I don't think they use start_bzr_subprocess)10:56
vilaspiv: right, worth adding as comments then, I'll look into it again later (I thought I said that in the review no ?)10:59
vilaanyway, thanks for the explanations, will avoid useless roundtrips10:59
spivvila: sure, just some drive by info as I was peeking at my mail :)11:00
* Riddell blogs http://www.kdedevelopers.org/node/443512:57
Morbushere's an odd question: is there anyways, from bzr command line, to "know" if someone has proposed a merge request?13:37
maxbRiddell: 1) Nice. 2) I'm confused by your user icon. 3) s/zx/xz/13:37
Morbusi have a private lp account, and I need to integrate it with some CI tools, and it requires me knowing merge requests.13:37
maxbNot via the bzr command line, no13:37
Morbusdamn. ok.13:38
Morbusso i instead need to figure out some way of automating a browser request to the LP MR page.13:38
Morbuswhich would normally be easy if it were public, but it's private.13:38
Riddellmaxb: the user icon comes from Umbrello which was my university project back in the day13:38
RiddellMorbus: can't you use launchpad APIs?13:39
MorbusRiddell: didn't even know LP had APIs :)13:39
Riddelltake a look at https://help.launchpad.net/API/launchpadlib13:39
RiddellI'm not sure if merges have APIs, but they ought to if there's any justice in the world13:39
Morbusheh, heh.13:40
Riddellask in #launchpad to find out13:40
maxbMorbus: You probably want to look at the Launchpad Web Services API, and in particular, if you use python and launchpadlib, lp.branches.getByUrl(url="lp:.......").getMergeProposals(...)13:40
Morbusof course, i don't know any python, but i could figure it outl, I suspect.13:40
Morbusmaxb: thanks!13:40
MorbusRiddell: you too :D13:40
Morbushrm. if it's just a webservice that seems to export JSON, I shouldn't have to use python lib...13:41
maxbPython is not the only integration possibility, but it is the one with the most advanced client libraries13:42
Morbussure.13:42
Morbusi don't necessarily need a whole shebang - i /just/ need the list of branches that have a merge request in.13:42
Morbuseverything else i can handle from the command line locally.13:42
maxbMorbus: Try hitting this URL, then: https://api.launchpad.net/1.0/~bzr-pqm/bzr/bzr.dev?ws.op=getMergeProposals&status=Approved13:43
Morbusmaxb: right. i presume that's protected by the same cookie auth as a private project is?13:44
Morbuscookie/session auth?13:44
maxbIf it works, that's accidental.13:45
Morbushow do you mean?13:45
Morbusprivate thingies aren't supposed to be in the API?13:45
maxbThe api.launchpad.net vhost is supposed to be accessed via OAuth tokens for authorization13:45
Morbusah.13:46
Morbusdoes the pythonlib handle that too?13:46
maxbyes13:47
maxbLaunchpad.login_with is the main entry point for authenticated access13:47
Morbushrm. i think i tweaked this wrong: https://api.launchpad.net/1.0/~morbusiff/examiner/trunk?ws.op=getMergeProposals&status=Approved13:48
* maxb disappears for lunch, back ~15mins13:49
* Morbus heads off to try the pythonlib.13:49
maxbor 5mins as the case may be13:56
maxbMorbus: Try hitting https://launchpad.net/api/1.0/~morbusiff/examiner/trunk?ws.op=getMergeProposals&status=Approved with your cookie13:56
Morbussame error.13:56
MorbusObject: <lp.registry.model.personproduct.PersonProduct object at 0x12fd1fd0>, name: u'trunk'13:56
maxbHm13:57
maxbNo idea then, sorry13:57
Morbusi woudln't worry too much about it now. got launchpadlib installed and i'm gonna fiddle with that for a bit.13:57
maxbProbably time to hop over to #launchpad for any further questions13:57
__monty__If I want to rename a branch can I just rename the directory?13:58
__monty__Or can I use bzr mv oldbranch/* newbranch/   ?13:59
maxbjust rename the directory14:00
__monty__ty14:00
=== Ursinha is now known as Ursinha-afk
Morbushrm. where does this launchpadlib store the OAuth details I'm abotu to put in?14:07
Morbusthe script will be running as a different (non-Unix) user than my current Unix user, so I don't want it to overwrite my own data.14:08
=== Ursinha-afk is now known as Ursinha
Morbuswrong chan.14:09
Riddellug, I keep using the broken "s" for submit option on feed-pqm14:14
Riddelllifeless: is it true you have a good reason for keeping that around?14:14
vilaRiddell: hehe, was just reading such emails :)14:17
Riddellpoolie: if you add me to ~hydrazine-core I'll set up daily builds so the packaging is no longer a year out of date14:21
RiddellI might also get rid of the broken "s" option on feed-pqm while nobody is looking :)14:21
vilaRiddell: Propose a branch for merge, I run from sources ;)14:27
lifelessRiddell: nope15:27
* lifeless disappears15:27
Riddelloh good15:28
vilaspiv: wake up ! wake up ! I have good news !15:57
vilaspiv: what ? Not even 1AM and you're not there... Sheesh16:03
vilaFor the rest of the crowd: one source of selftest hanging on babune shut got a head-shot, thanks to spiv ;)16:04
vilaFor the rest of the crowd: one source of selftest hanging on babune just got a head-shot, thanks to spiv ;)16:04
vilajust not shut... tyops are back16:04
vilaI blame fullermd16:05
mgzit's generally his fault.16:05
mgzvila: can you run a branch of mine on one of your forking babune slaves?16:07
mgzI think I fixed the remaining pain, just want to double check before proposing16:07
vilamgz: sure16:07
vilawhich branch and which subset ?16:08
mgzlp:~gz/bzr/cleanup_testcases_by_collection_613247 as always hang fix before r16:08
mgz...interesting edit16:08
mgzthat branch, but merge in whatever you need to make a full run work too.16:08
vilasay that again ?16:08
mgzso, the import tariff hang fix if that was an issue on the slae16:09
mgz*slave16:09
vilaI'd prefer a significant subset, not *all* hangs are fixed, I have a couple of pretty good silver bullets now tough16:09
* mgz blames vila's infectious typos16:09
vilahehe16:09
vilajustasec, a couple of zombies to kill first16:10
mgz`-s bb. -s bt.test_` isn't bad, but I want a full run to compare resource usage really16:10
mgzI got it through a complete selftest on the laptop (after stopping X, had som OOMs trying to fork otherwise), so it should run inside 240MB or so16:11
vilahmm, a full run will be more complex *right now*, let's try with the subset and ping me again if I forget the full one16:11
mgzokay16:11
vilabut how will you check resources usage on babune ?16:12
mgzbut parallel=fork please, and optionally -Euncollected_cases16:12
mgz^...it doesn't give metrics? er... speed I guess then.16:12
vilahmm, you know what ? File a bug on lp against babune so I can better track that16:12
vilayeah, speed could be a good indirect indicator16:13
vilahmm, bt.test_ will include tariff, no good, can *you* merge lp:~vila/bzr/import-tariff-test-subprocess-deadlock  instead ?16:14
vilacan we start with -s bb instead ?16:15
mgzokay, -s bb. then16:15
vilaor is it not good enough ?16:15
mgzthat should be clean though.16:15
vilamgz: http://babune.ladeuil.net:24842/view/debug/job/selftest-subset-all/109/aggregatedTestReport/16:16
vilacrap typo in the branch name ;)16:19
mgzehhee16:21
mgzadd -s bt.test_selftest to the subset if you've not restarted yet16:21
mgzthat should give some output16:21
vilaI did, but it' soon enough to cancel16:22
vilahmm, 3 slaves running concurrently, if bad things happen, don't take the blame...16:24
vila...or not too fast ;)16:24
vilahttp://babune.ladeuil.net:24842/view/debug/job/selftest-subset-all/111/aggregatedTestReport/16:25
vilamgz: gentoo failures already available, shallow ?16:26
mgzhm, that's the hard test case.16:26
vilamgz: same number on freebsd, karmic, osx (macadam is osx)16:27
vilaOh, I didn't specify -Exxx16:27
vilaif that helps...16:27
mgzshould work anyway, but those failures are from trying to exercise the parallel=fork code16:27
mgzwhich is... tricky16:28
vilaunexplored territory.. unfortunately16:28
vilamgz: which makes me believe you're not splitting your proposal enough :-D16:29
mgzthe code needs to work...16:29
mgzI can continue landing things that don't actually fix the issue for ever16:30
mgzbut maybe I'll split fixing parallel=fork from the rest.16:30
vilamgz: well, -Euncollected_cases as a first step would be good to start with no ?16:31
vilamgz:  if it requires *not* using --parallel, I'll still buy it16:31
mgznot if it prints every single test case when you run selftest with --parallel=fork :)16:31
=== Ursinha is now known as Ursinha-afk
=== Ursinha-afk is now known as Ursinha
vilamgz: I can live with such a limitation as long as it doesn't break --parallel=fork when I *don't* use it !16:32
vilamgz: if we reach the point where the test suite can fully run without OOMing that would make me extremely happy16:33
mgzwhat's the subunit version on those slaves?16:34
vilahmm, close to trunk I think, except for the osx one maybe16:34
vilaoh no, even the osx one mounts my source dir16:35
mgzand testtools?16:36
vilaso, trunk for subunit16:36
vilahey, let me type :)16:36
vilatrunk too16:36
mgzhum hum.16:37
vilabut that's not true for the chroots (but you don't care at that point (OMG this is becoming complex again :-/)))16:37
mgzI'll have to boot the laptop again, darn 2.6 requirement16:37
vilaha16:38
vilaI updated this week after months of using very old versions...16:38
mgzhm, passes here. wonder if it's something about being a real multicore machine.16:41
vilanot passing here16:44
vilajust a note:16:44
vilahave a look at my last --exclude ORed proposal for a trick to use short names for tests, you will then be able to use assertEquals instead of assertContains16:45
vilano big deal but I feel better not using regexps when I can avoid them16:45
mgzyeah, saw that.16:46
mgzstill need contains, because it looks at the whole output16:46
mgzwhich is good here, because it tells me no tests are being run under fork16:46
mgz...not sure why though16:46
mgzanyway, problem with the test not the case cleanup code16:47
vilahttp://paste.ubuntu.com/613816/16:47
vilaafter running ./bzr selftest -s bt.test_selftest16:47
vilaI'll ignore the two errors blaming some weird merge16:48
mgz...and there it's the reverse problem16:48
mgzall the cases are leaking16:49
mgzbut the test works.16:49
vilaha crap, forgot =-site16:49
vilaok single error, s/<above>/&/ :)16:50
mgz...does that help? if not, I'd check bzrlib.tests.fork_for_tests and make sure the two list emptying statements survived the merge16:50
vilawhat ? You pushed ?16:50
mgznope.16:51
mgzI'm just trying to understand your results16:51
mgz...I'm not sure I have ssh to any machines with python 2.616:52
vilaoooh, I love "notify = "uncollected_cases" in selftest_debug_flags" :D16:52
vilamgz: lol, reading your patch, tu quoque mi fili ! using test_suite_factory :)16:56
vilamgz: but you don't support the arguments, a bit more risky but good enough here16:57
vilamgz: come to think of it, the conditional code in sefltest for test_suite_factory may be better *outside* of tests.selftest16:58
mgzthere are quite a lot of oddities with how code is arranged for selftest16:58
vilaor rather, always called in the same way16:58
vilayeah, history16:58
mgzeven having taken an axe to decorators, they're still a pain in the bum16:58
mgzI can't get a simple param from run_suite down to the code that does the forking16:59
mgzso have to monkey patch subunit16:59
mgzI'm still none the wiser about why the slaves didn't manage to run the forking test correctly17:01
vilaonly 3 failures on windows17:01
vilacan't you just override the forking code ?17:02
mgzno fork! ... and they look very familiar failures I thought we'd fixed in the past.17:02
mgzbasically about trying to read a locked pack file.17:03
vilahuh ? Those are new to me... may be I didn't notice them earlier ? Worth investigating17:04
vilabut right, not now, indeed, different failures17:04
mgz^I want to test the actual code that selftest uses to do the test splitting and forking, because it has issues now17:04
mgzI don't like fixing problems if I'm not testing that they won't regress17:04
vilaI was suggesting wrapping them to address your params passing issue17:05
mgzthe problem is there are already too many wrappers :)17:06
vilanah... the functions you're after are not *yet* wrapped ;D17:07
mgzcan you re-run the subset with the flag on?17:09
mgz...I don't think it'll help me understand why the fork tests aren't happy on babune, but I'm out of ideas17:09
vilafired17:11
vilamgz: I wonder if your overrides survives the fork...17:13
mgzooh, interesting17:14
vila...or something17:14
vilamay be silly but since you ran out of ideas, I'm trying to help :D17:14
mgzof course I've not been running the whole suite under --parallel=fork here17:14
mgzI'll see if I can get the failure by forcing that17:15
mgzyeay!17:15
mgzI can repo.17:15
mgzokay, will fix.17:15
mgz...also, annoying, you don't get a full test count with --parallel=fork just a running total of completed tests17:16
mgzthanks vila!17:16
vilame ? Thank my daemon, he send me stupid ideas all day !17:18
vilamgz: seriously, I have no idea why you're thanking me... any hint ?17:24
mgzyour suggestion was enough to tell me how to reproduce the failures babune got locally17:25
mgzif I can reproduce, I can fix.17:26
vilahaa, great !17:26
mgzso, the why might be wrong, but the wondering was useful17:26
smoservila, or maxb, could someone handle bug 788736 for me ? if its not a terribly painful thing.17:52
ubot5Launchpad bug 788736 in Ubuntu Distributed Development "python-boto parallel import repair" [Undecided,New] https://launchpad.net/bugs/78873617:52
__monty__u17:53
vilasmoser: justasec, just found it the mail in my backlog (and this has been a busy day...)17:55
__monty__vila are you online17:55
vila__monty__: yes, but expect lag, I should have stopped working already ;)17:56
__monty__vila: About the error for which I'm trying to add a test, do you have any idea why the result differs for you and me?17:58
vila__monty__: I don't know *what* result you get, but search for socket.error in the code base, there are plenty of cases where the same pattern occurs (EPIPE among others)17:59
vilasmoser: on it17:59
vilasmoser: branches overwritten, deleting tags18:00
vilasmoser: expectedly getting No such tag errors :)18:00
vilamaxb rocks...18:01
Davieyvila: Whilst looking at that one, fancy actioning maxb's suggestion for sysvinit :) ?18:04
__monty__vila: Could you glance at the results I get for selftest? https://code.launchpad.net/~toonn/bzr/socket.error-traceback-393713/+merge/6258518:04
vilasmoser: requeued18:04
vilasmoser: running18:05
vilaDaviey: meh, which one ? I think I requeue that recently18:05
Davieyvila: https://lists.ubuntu.com/archives/ubuntu-distributed-devel/2011-May/000807.html :)18:06
vilaDaviey: :-/ I don't know enough there to act without maxb18:09
* maxb waves18:09
vilarejoice !18:09
vilamaxb: sudo what ? :D18:10
maxbI guess the first thing we need to do is decide which of my proposed options w.r.t. sysvinit we are going to go with18:10
maxbDaviey: How anxious are you to get this sorted?18:10
Davieymaxb: today doesn't matter18:11
maxbI would quite like to get james_w's opinion on my email18:12
vilasmoser: comment on the bug when you get some results. Thanks in advance18:12
Davieymaxb: Throwing away the trivial merge doesn't seem to matter, but it's not a really a good generic fix IMO.  As it's not ideal for other situations18:12
vila__monty__: just a sec18:13
Davieyvila: thanks for looking into it18:13
maxbDaviey: Agreed. Though, the situation that sysvinit is in on Launchpad, with some Ubuntu branches existing but no Debian branches existing, should never occur naturally anyway18:13
vilaDaviey: np, thank maxb ;)18:13
Davieymaxb: I blame smoser.18:14
maxbSo I'm guessing that someone has been doing some manual fiddling there anyway18:14
maxbeh?18:14
maxbHave we crossed sysvinit and python-boto?18:14
Davieyno, i just enjoy blaming smoser for generic things.18:14
smoseri probably did it.  i am constantly fighting with bzr. it sees things differently than i do.18:14
vila__monty__: ok, so what OS are you on ?18:14
vilaOh, oSX18:14
__monty__vila: os X.618:14
smoserand since i don't have a 'smoser' to blame like Daviey does, i usually just blame bzr.18:15
__monty__vila: no os X.5.8 (sry)18:15
vila__monty__: ha ha, an OSX 10.5 user using python2.6...18:16
vila__monty__: you know what ? We may have more interesting bugs for you :) But let's focus on that one first18:16
__monty__vila: Sure.18:17
vilasockets can raise different kind of execptions depending on the platform so you need to be ready for that18:18
__monty__vila: Anywhere I can find what exception they raise on what platform? Or how do I handle this?18:19
vila__monty__: we care more about catching all the relevant ones that tracking which platform track which kind, so try grepping the sources for socket.error18:20
vila__monty__: more concretely, what you should check is not the *message* but rather the class of the exception and then the associated args18:23
vilayou should find plenty of examples in the code18:23
__monty__Indeed, they are plentiful.18:23
vila__monty__: so, if you start working again, it's better to put your mp into the 'Work In Progress' state18:32
vila__monty__: because it will pop up in the list again once you put it back to 'NeedsReview'18:33
__monty__Ah yes, hadn't thought of that.18:33
maxbArgh, what?! The python-boto reimport has somehow retained the revisions that were not supposed to be there?!18:34
__monty__vila: Care to give me another clue? I don't really understand what to learn from the examples in the code.19:03
=== medberry is now known as med_out
=== Ursinha is now known as Ursinha-afk
=== Ursinha-afk is now known as Ursinha
vila__monty__: sorry, was afk19:40
vilaso, what are you trying to test exactly ?19:40
__monty__vila: I'm working on the test for the socket.error which apparently behaves different on linux(?) and on os X.19:54
vilaright, I got that, but why are you doing that ? What is your final goal ?19:55
__monty__Proving that the socket.error is allready caught? Because it's a subclass of IOError.19:57
smosermaxb, so any ideas?19:57
smoserit looks like the score is still :  smoser's stupidity: 1, bzr: 019:58
pooliehi all19:59
vila__monty__: then you want a test that succeeds at catching IOError but fails at catching socket.error ?19:59
vilapoolie: wow, hey !20:00
vilapoolie: is it late for me, early for you or both ?20:00
poolie:) early for me20:00
vilarats, I thought I could stop and enjoy my week-end ;-D20:01
poolie:) well, you can20:04
poolieisn't it something like 9pm there anyhow?20:04
pooliei just thought i'd poke at some discretionary lp patches since i'm up so early20:04
vilaone last bug !20:04
vila:)20:04
__monty__vila: No I don't think so. Because IOError is allready handled by test_trace.py and socket.error is a subclass thereof (since python 2.6) the cause of bug 393713 no longer produces a traceback. I am now trying to add a test that proves this. So the bug can be closed.20:04
ubot5Launchpad bug 393713 in Bazaar "[master] socket.error causes a traceback" [Medium,Confirmed] https://launchpad.net/bugs/39371320:04
vila__monty__: if you raise a socket.error and have two exception handlers, one for IOError and one socket.error, if socket.error is a subclass, the IOError handler will trigger, if not, the socket.error handler will trigger, which one triggers tells you if your proof is correct20:06
__monty__Ah, like so. So I try catching IOError first?20:07
vila__monty__: just try ! That's what tests are for ! Experimenting with your understanding of the code !20:08
__monty__Still, I don't really understand how the tests work. Is there someplace I can read up on them? My main difficulty with them is that the except blocks are just 'pass'ed and then the error string is checked.20:09
vila__monty__: try adding a self.debug() at the first line of your test and execute it step-by-step under pdb, that should help you understand how it works20:11
__monty__vila: How do I run it in pdb? import pdb; import bzrlib.tests.test_trace; pdb.run('test_format_sockets_error()')    ?20:20
vila__monty__: try adding a self.debug() at the first line of your test20:20
vila__monty__: and just re-run ./bzr selfest20:20
__monty__vila: Can I go on step by step? Because now it just stops, then I type continue and the results for selftest are shown.20:23
poolievila, tests using threading seem highly likely to be flakey20:24
poolie except KeyboardInterrupt, e:20:24
poolie            out, err = e.args20:24
pooliewow that's quite creative20:24
vila__monty__: you don't know how to use pdb ?20:25
pooliewell, good luck to you20:25
poolie__monty__: to step, use 's' or 'n'20:25
pooliethe latter steps over function calls20:25
__monty__vila: No, but 'step' seems to do the trick.20:25
viladoh, I'm tired, that was a silly question :(20:26
vila__monty__: http://docs.python.org/library/pdb.html?highlight=pdb#module-pdb20:26
vilapoolie: I disagree20:27
__monty__vila: I allready have that open, it's just I don't really see what's the point in using pdb. I can go over the code just reading it no? It doesn't seem to give me extra information.20:27
vilapoolie: they are flaky only when they are buggy, at least that's my experience based on debugging the thread leaks20:28
vilapoolie: most of the bugs where bad synchronization20:28
vila__monty__: you said you didn't understand how the tests worked, the best way to understand them is to see them run, just reading them reading doesn't have the same taste ;)20:29
vilapoolie: s/where/were/20:29
vilapoolie: and unsurprisingly here, that's still a race, involving processes instead of threads but still a race20:30
__monty__vila: What I meant was, why is(are) there except blocks if they don't do anything?20:30
vila__monty__: try removing them and you'll soon realize they *do* something20:31
pooliemonty, where?20:31
vila__monty__: probably swallowing an execption20:31
__monty__Ah, didn't realise that a trp20:32
__monty__*Ah, didn't realise that a try block still raises the error if it's not handled.20:32
poolieit's not so much it still raises it, it just doesn't stop it propagating20:37
__monty__vila: I'm still not sure about what you said earlier, 'the handler that's triggered will proof socket.error is a subclass'. Why should I proof that, it is true(since python 2.6). I think what I need to proof is that the socket.error is allready handled in test_trace.py, no?20:39
__monty__poolie: Thank you for correcting.20:39
vila__monty__: I don't know, does test_trace catch IOError ?20:40
__monty__Yes.20:40
vilathat's not what your test is showing20:41
__monty__vila: That's true but how do I show that?20:41
vilawe're running into cycles, where did you start ? What was failing ?20:42
vila__monty__: the bug report says: "I think that on python2.6 (which is required for bzr2.4) this bug will be implicitly fixed because socket.error has become a subclass of IOError, which does not generate a traceback. We should test that though."20:44
__monty__nvm what I was typing. In short that's the reason for the test ^.20:44
vila__monty__: that's what I described above: proof that IOError is a subclass of socket.error, this can be as simple as assertIsInstance(socket.error(), IOError) or assertTrue(issubclass(socket.error, IOError)) or a bit more detailed as I explained above20:47
vilaif you want to go further then you need to find a case which indeed raise a socket.error, explore the call stack, remove the now useless socket.error handlers and check (with tests) that the behavior is still the same20:49
__monty__vila: What socket.error handlers are you talking about?20:49
pl0shhey guys, how can I publish my branches on my own server?20:50
vilaany try block with a except socket.error clause20:50
vilapl0sh: by allowing people to connect to your server with any protocol supported by bzr: ftp/http/ssh/bzr20:51
vilapl0sh: the setup ranges from none to quite sophisticated depending on the protocol20:52
=== med_out is now known as medberry
pl0shlet's say http, because my dev's uses winsucks, but my server is a freebsd box20:55
pooliepl0sh: do they need read write or readonly access?20:56
poolieif they're developers i guess rw?20:56
pooliethe easiest thing then is to let them ssh in and run bzr over ssh20:56
pooliethe bzr windows client includes ssh support20:56
__monty__vila: I think I don't really understand the problem then. I thought what I was trying to solve was the fact that people got a traceback when a socket.error occured. Bug 364462 is what I started on but poolie(I think) pointed out it's a dupe of 393713.20:57
ubot5Launchpad bug 364462 in bzr email commit hook "smtp "connection timed out" causes full stack trace to be dumped (dup-of: 393713)" [Medium,Confirmed] https://launchpad.net/bugs/36446220:57
ubot5Launchpad bug 393713 in Bazaar "[master] socket.error causes a traceback" [Medium,Confirmed] https://launchpad.net/bugs/39371320:57
pl0shpoolie well, they have to be able to commit and merge the changes20:57
pooliemonty, where are you with it now?20:57
poolieok, so bzr+ssh is the way to go20:57
pl0shOk, where can I find some info?20:58
__monty__poolie: Still nowhere pretty much.20:58
pl0shI have installed bzr on my freebsd and on my windows boxes20:58
pooliepl0sh: there's an admin guide20:59
pooliebut, basically, start an ssh server on the bsd box20:59
pooliethen just from a windows box run eg20:59
poolie'bzr init bzr+ssh://bsd/~/test'20:59
pl0shgreat21:00
pl0shand bzr push bzr+ssh://bsd/~/test right?21:01
pl0shto push changes to the repo21:01
flacosteis there an easy API in bzrlib available to get the LP API branch URL from a working tree?21:01
flacostei have a working tree of a branch on lp and want to make API call on its LP representation21:01
pooliehi flacoste21:08
flacostehi poolie21:08
flacostei was about to try21:08
pooliepl0sh: correct21:08
pooliei think there is one in plugins/launchpad21:08
flacostefrom bzrlib.plugins.launchpad import lp_api21:08
flacostelp_api.from_bzr(lp, branch)21:08
__monty__poolie: I'm trying to write a test for 393713 but I'm not sure what to write in it. (Doing this because you say in comment #4: 'We should test that though.')21:21
poolieflacoste: so is that ok21:22
flacostepoolie: still writing the script :-)21:22
flacostefrom the look of it, it seems like it's exactly what i need21:23
poolieflacoste: separately i was wondering if you could nudge lp reviewers to land more approved 3rd party patches21:23
poolienot me, other peolpe21:23
poolieif you want to add a tip to the api guide docs or wiki page that would be welcome21:23
pooliewhat are you writing, just for curiouisyt?21:23
vilag'night all, have fun !21:24
__monty__vila: gn, thanks for helping.21:24
flacostepoolie: a script to make a principia package branch official21:24
pooliemonty, have you pushed your current code?21:25
flacostepoolie: inspired by set_official.py in udd but less coupled to the package-importer implementation21:25
pooliei'll have a look at the review21:25
pooliecool21:25
* __monty__ nudges poolie to stop ignoring his question? :)21:25
flacostepoolie: people approving a third party branch are supposed to take care of landing it, isn't that happening?21:26
poolieapparently not21:26
flacostepoolie: remember that it's not visiale if they have submitted it to ec2test and it will take some time to update21:26
pooliejust sliping through the cracks i think21:26
flacostewell, i'm seeing 3rd party branches merged21:26
flacostenigelb and chris' one21:26
flacostewhich one haven't landed?21:27
poolielike https://code.launchpad.net/~james-w/launchpad/more-matchers/+merge/3205721:27
flacosteit's lifeless here that needs nudging21:27
poolie3 from chrisjohnson21:27
flacostehe might not be aware of it21:27
poolieoh to rereview it?21:27
flacostehe approved it21:27
pooliei've just put one of chris's up for ec221:27
pl0shpoolie thanks21:27
pooliei'm not saying it never happens, just it apparently doesn't always happen21:28
pooliei am very happy chris & others got prompt reviews21:28
flacostei can send a reminder21:29
poolievila, you just need a couple of tweaks to the utextwrap thing21:29
poolie__monty__: sorry, not trying to ignore you21:29
poolieshow me the test you have currently?21:30
poolieif any21:30
__monty__poolie: It's worthless currently.21:30
pooliei thought yesterday we got up to having a test based on the other error-reporting tests21:30
pooliethat raised a socket error and then checked it was printed in a reasonable way21:31
pooliedid that break?21:31
__monty__Well, turns out the error message is different on different platforms.21:31
poolieoh, that's too be expected, yeah21:32
ironcamelhas anyone got bzr bisect to work http://doc.bazaar.canonical.com/plugins/en/bisect-plugin.html ?21:32
pooliethe main thing we want to assert in the test is just that it does not give a stack trace21:32
poolieironcamel: what specifically is going wrong?21:32
ironcamelpoolie: i installed it, but bzr bisect doen't do anything21:33
ironcamelbzr: ERROR: unknown command "bisect"21:33
__monty__poolie: Agreed, so just test the string for not containing 'traceback' ?21:33
pooliehow about 'bzr plugins -v'21:33
poolie__monty__: i think it's "Traceback" but yes21:33
ironcamelpoolie: it's not listed21:34
pooliehow did you install it?21:34
ironcamelpoolie: python setup.py install21:34
ironcamelgot the source from https://launchpad.net/bzr-bisect21:34
pooliehm, i wonder where that installed it to?21:36
poolieperhaps something that's not on your bzr plugin path21:36
ironcamelnot sure21:36
poolietypically you'd install from source with just eg21:36
pooliebzr branch lp:bzr-bisect ~/.bazaar/plugins/bisect21:36
ironcameloh really21:37
ironcamelit comes with a setup.py, so that's why i did that21:37
ironcamelpoolie: i think that did it :)21:38
ironcamela little documentation would have made this easier21:39
poolieplease file a bug against it about the setup.py not doing the right thing21:39
ironcamelsure21:40
ironcameldone21:42
__monty__poolie: This is what the test should look like right? https://code.launchpad.net/~toonn/bzr/socket.error-traceback-393713/+merge/6258521:51
poolielooks pretty good22:00
__monty__Ok, then I'm off, thanks for the help. Hope I can work on a different bug tomorrow. :)22:02
smoserhm... lp:ubuntu/nagios-plugins seems to be screwed up the same way python-boto is.22:12
smoseropened bug 789342 to address that.22:14
ubot5Launchpad bug 789342 in Ubuntu Distributed Development " lp:ubuntu/nagios-plugins gives strange diffs" [Undecided,New] https://launchpad.net/bugs/78934222:14
=== Ursinha is now known as Ursinha-afk
pooliethanks smoser22:15
=== Ursinha-afk is now known as Ursinha
=== Ursinha is now known as Ursinha-afk
=== Ursinha-afk is now known as Ursinha
=== Ursinha is now known as Ursinha-afk
=== JayFo is now known as JFo
mgzpoolie, did you get a chance to look at my additions to your stale locks branch?23:26
mgzI... was slightly losing track last night but I think the code makes sense23:26
pooliemgz i did merge it in23:28
pooliethanks for that23:28
pooliei have some more items from spiv still to fix23:28
poolieat the moment i'm just finishing off some pending lp work23:28
mgzin unrelated bookkeeping, do I need to bug someone for an expenses form for last week?23:32
poolieyes, marianna23:33
mgzwill email.23:33

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