/srv/irclogs.ubuntu.com/2011/09/30/#bzr.txt

spivvila, jam, lifeless: IIRC my change to --parallel was to make it allocate by round-robin01:05
pooliehi spiv01:13
=== wallyworld is now known as Guest64579
AfCI'm curious what might be done to help bzr take advantage of multi-core systems.05:27
AfCI guess Python is a serious roadblock in here :/05:27
PengDoes bzr even doing anything very parallelizable?05:27
PengOther than the test suite? :P05:27
AuroraBorealis_what needs to be05:28
AuroraBorealis_paralleized05:28
AuroraBorealis_honestly05:29
* AfC is watching a bzr process at "fetching revisions 1566/264178" at about 20 per second on one core, and watching three other cores of this server idle.05:29
AfCGonna be a while, this one.05:30
AuroraBorealis_thats probably because05:30
AuroraBorealis_its limited by your download speed05:30
AfCAuroraBorealis_: its local05:30
AuroraBorealis_not because its single threaded.05:30
PengAfC: And how exactly would you multithread that?05:30
AfCThe system is not in iowait at all.05:30
AuroraBorealis_ive copied the bazaar source code which is like 37000 revisions05:30
AuroraBorealis_in seconds...05:30
AfCIt's a quad Xeon. It's not a slow system. Anyway05:31
AfCPeng: that is, of course, a fascinating question05:31
AfCPeng: I don't know how much the Python runtime is an obstacle here.05:31
AfCPeng: but, on e.g. import loads, mapping any one revision would conceivably be independent of mapping any other revision.05:32
AuroraBorealis_python probably is not the obstacle05:32
AfCI imagine at some point there is the whole "sequence adjacent revision texts" thing05:32
AuroraBorealis_branching the bazaar source code which is at 38,000 revisions took less than a minute05:33
AuroraBorealis_i feel thats acceptable05:33
bob2shared or non-shared repo?05:33
AfCAuroraBorealis_: if it's CPU bound, then yes, the Python runtime's global locks will be an obstacle (if threading is the approach one uses to parallelism).05:34
AfC6000 down. Only 258 thousand to go.05:34
bob2welll, if it's cpu-bound /and/ parallelisable :)05:35
AfCbob2: heh05:35
AuroraBorealis_dunno why its taking so long for you.05:35
AuroraBorealis_what are you branching05:35
AfCLinux05:35
bob2it's 10x as many revs as bzr05:35
bob2AuroraBorealis_, one minute to branch into a new unshared repository?05:35
AuroraBorealis_wait05:35
AuroraBorealis_i have it locally05:35
AuroraBorealis_so yes05:35
AuroraBorealis_well i didnt put it into a repo05:35
AuroraBorealis_and where are you getting linux in a bazaar repo05:36
AuroraBorealis_it uses git05:36
bob2lots of people import lots of things05:37
AuroraBorealis_i mean going from git->bzr sounds like it could take a while05:37
AfCInteresting data points: getting the kernel from github was 15 minutes. Getting the vcs-import on Launchpad was 1 hour 20 min. I'm assuming that was lp's net I/O fault, but we'll see later today.05:37
bob2barely relatedly, 1:04 to git clone linux-2.6 with cold cache, 40s with warm05:39
AfCbob2: that is interesting, thanks05:39
bob2lp to au is tedious :/05:39
AfCbob2: yeah. I'm getting tired of hearing all the reasons why Launchpad can't mirror content.05:40
AuroraBorealis_sounds like a problem with lp rather then bazaar :>05:43
AfCJust hit the repack at 10k revisions. That was exciting.05:43
AuroraBorealis_whats the link to clone the kernel05:45
AuroraBorealis_kernel.org is...down05:45
AfCAuroraBorealis_: here05:46
AfC$ git clone https://github.com/torvalds/linux.git linux05:46
AfCAuroraBorealis_: then, see https://bugs.launchpad.net/bzr-git/+bug/861973 as you'll hit a bug when you try to bzr branch from the local copy05:47
ubot5Ubuntu bug 861973 in Bazaar Git Plugin "crashes when cloning local git repository with tags pointing at Tree objects" [High,Fix committed]05:47
AuroraBorealis_of course the git gui sucks05:47
AfC[the local copy being necessary since currently released bzr-git crashes when talking to github. THAT is fixed in the ppa:bzr/daily (yeay) though this bug's fix isn't there yet]05:47
AuroraBorealis_again, going through bzr->git seems like some problems...05:48
AuroraBorealis_just sayin05:48
AuroraBorealis_cause not only bazaar has to support itself but now it has to flawlessly support every other version control software out there05:50
AuroraBorealis_also github is sure taking its dear sweet time. siqq no progress indicators05:52
AuroraBorealis_yeah. cloning from github does NOT take 1 minute =P05:56
vilahi all !06:20
AfCAuroraBorealis_: as I said above, I got it in ~15 minutes.06:21
* fullermd vilas at wave.06:50
vilafullermd: :)06:52
AuroraBorealis_well06:57
AuroraBorealis_the fast-export output for the linux kernel is currently 15 gb06:57
AuroraBorealis_i might run out of drive space o.o06:57
jammorning all07:00
vilajam: _o/07:01
vilajam: no hang today, you're getting closer, the hang(s?) is scared and hides ;)07:02
fullermdMaybe it's just hanging him out to dry.07:03
jamvila: well, in testing, it was hanging around 2pm, and then stopped around 5pm. Apparently it is related to the phase of the moon.07:03
vilajam: also note that windows has never hung which is a good sign07:03
vilajam: testing locally you mean ? How ? Otherwise, yes, of course it's related to the moon...07:04
vila:)07:04
jamvila: yes, locally07:05
jamand on devpad07:05
jamI could reliably get it to hang, and then it started always working...07:05
vilajam: infuriating07:06
jamyep07:06
vilabut being able to trigger it more and more is a sure sign you're making progress07:07
viladon't let it drive you nuts, you'll win in the end, it knows that...07:07
vilajam: which server is involved in the hang, the pipe or the TCP one ?07:10
jamvila: tcp, we generally don't use the pipe one in testing.07:34
vilajam: did you consider using cethread there ? I seem to remember some hangs being caused by uncaught exceptions...07:36
jamvila: cethread?07:49
jamCatchingExceptionThread?07:49
* vila nods07:49
jamI don't think that is this specific problem, but i'm still digging.07:49
vilabzrlib.cethread07:49
jamI'm not getting an uncaught exception traceback on the terminal07:50
vilaI think I encountered cases where you don't get tracebacks (can't remember the details, that was... hairy)07:51
mgzmorning all07:54
vilamgz: _o/07:55
jelmer'morning08:02
mgzjelmer: what's the process for landing things for bzr-builddeb?08:08
mgz(thanks for reviewing)08:08
jelmermgz: once you have approval, you can land them manually by doing one merge per MP into trunk08:09
mgzhm, I'll need to join the right team08:10
mgzdoes that mean bugging james_w?08:12
jelmeryep08:16
* mgz gets out his butterfly net08:16
pooliehello mgz, jelmer, europa08:29
mgzhey poolie!08:29
jelmerhi poolie08:29
jelmerhah, netsplits08:38
jelmermgz: one of the other bzr-builddeb-hackers should also be able to land it for you until you get commit access08:38
vilajelmer: _o/09:02
jelmerjam: hi09:02
jelmerjam: did you see my follow-up to https://code.launchpad.net/~jelmer/bzr/vf-fileids-altered-by-revisions/+merge/76851 ?09:02
vila. o O (Using semaphores during net storm sounds appropriate)09:02
jamjelmer: approved09:02
jelmerjam: Thanks!09:03
jelmervila: wrt https://code.launchpad.net/~jr/bzr/plugin-test-failure/+merge/7756909:12
jelmervila: isn't the test for export-pot ?09:12
vilayes, but applied to a plugin09:12
vilai.e. it should run if the plugin is available and not run it's not there, so putting it in plugin test suite makes sense09:13
vilanow it may also makes sense to have another test that we fail gracefully when we try to export-port an unknown plugin09:13
jelmervila: it should run in either case I think; it's a test for 'bzr export-pot', not for bzrlib.plugins.launchpad09:14
jelmervila: perhaps rather than using launchpad the test should register a dummy plugin09:14
vilawould work too but that seems more complex than two simpler tests09:14
vilathe dummy plugin stuff is brittle09:15
jelmervila: it seems wrong to put a export-pot test in the launchpad plugin testsuite though09:15
vilareally ? Why ?09:15
jelmervila: I would never think to look there if I was looking for export-pot tests09:15
vilahaa09:15
mgzhm.09:15
jelmervila: I'd have to check the testsuite of every other plugin too to see if it happens to test export-pot09:15
mgzI think it's a question of whether this is just a test that any plugin works at all09:16
jelmervila: using requiresFeature in the tests seems like the right thing to me09:16
mgzor whether every plugin that grows translatability will want a test that it works09:16
jelmermgz: it is09:16
vilawell, it there are bits specific to plugins in export-pot, it makes sense to run that kind of test for all  plugins09:16
mgzif the former, the current location and a skip seem fine09:16
mgzif the latter, there should be a testcase class that plugins can subclass and use09:16
vilamgz: +109:17
vilathat'll make plugin autors life easier to have already written tests for them09:17
vilaauthors09:17
jelmermgz: in this case, it's the former09:18
vilajelmer: and you won't test the unknown plugin case09:25
=== yofel_ is now known as yofel
jelmervila: The unknown plugin situation deserves its own testcase09:56
mgzokay, all caught up on launchpad mails, found some interesting bug reports10:18
RiddellModuleAvailableFeature from tests is deprecated, anyone know what replaces it?10:40
mgzRiddell from tests.features instead?10:42
jamRiddell: use it from features10:42
Riddellright, just a move10:43
jambzrlib.tests.features.ModuleAvailableFeature10:43
Noldorinhi jelmer11:58
jelmerhi Noldorin11:59
Noldorinjelmer, how's it going?11:59
Noldorinjelmer, you seem to disappear each time i poke you hehe12:00
jelmeralright, how are you ?12:00
Noldorinpretty good12:00
Noldorinworking on various things; putting bzr-git aside for now12:00
Noldorinbut speaking of which, how's progress? :-)12:00
Noldorinjelmer,12:03
jelmerNoldorin: nothing new yet12:11
Noldorinjelmer, ah okay. any time soon though you think? :-)12:12
jelmerNoldorin: no idea, sorry12:12
Noldorinokay12:12
jelmerit might be very soon, might take a month or so12:12
Noldorinhaha12:12
jelmerit just depends on what else comes my way12:12
Noldorinvery specific12:12
Noldorinoh well12:12
Noldorinfair enough12:12
Noldorinjelmer, it's okay, i understand. you seem quite over-workd to be fair :-P12:13
Noldorinshame there isn't someone else helping you out12:13
jelmerNoldorin: nothing stopping you :)12:15
Noldorinjelmer, except my lack of knowledge of both python and bzr-git? :-P12:15
jelmerthat's fixable12:15
Noldorini mean...the code is well-written with doubt...but not exactly well commented heh12:16
Noldorinalas, i don't have the many hours required for such a task12:16
jamvila: so, I found out why it was hanging, now to figure out what to do next.12:17
jamSpecifically, if any client causes an exception in SmartTCPServer_for_testing it causes the server to stop12:17
jamwhich also has the side effect that the next connection sees "oh, I'm stopping"12:18
jambut doesn't actually close the connection12:18
jamand because we keep a list of ".clients" the socket stays around and doesn't get garbage collected12:18
jamso the client just hangs indefinitely12:18
vilajam: which exception ?12:24
jamvila: I'm not sure on that part yet, but this fixes the hang: http://paste.ubuntu.com/699711/12:24
jamI think there was a failure in the previous request (which might eventually bubble up)12:25
jambut we don't get there, because the next request is denied and just hangs12:25
vilathat's probably the race12:25
jamvila: right, now we might start seeing test *failures* after this12:26
jambut we shouldn't see hangs12:26
jamwhich I'm happier with :)12:26
vilahehe, progress !12:27
Noldorinjelmer, okay, so i'm actually a little bored now. if i can make this fix within an hour or two, maybe it's just worth it :-P12:27
Noldorinjelmer, that is, if you could provide any specific details how that function needs to be rewritten...would help a lot12:27
Noldorini know you summarised already, which helps ;-)12:28
jamvila: and I *think* what is happening is that we get 3-4 connections to the smart server during the test case12:29
jamand some of those start a connection, and then never make another request12:29
jamso they eventually timeout as an idle connection12:29
jamwhich is actually true12:29
jamthey are dead, but just never called disconnect()12:29
vilaprobably related to daemon threads which should be joined instead during tests (at least)12:30
jamhowever, if any of those trigger ConnectionTimeout, that is an exception which gets passed to the server and shuts it down12:30
jambecause you don't have the "handle a connection timeout" logic in SmartTCPServer_for_testing that is in SmartTCPServer12:30
jamwe re-implemented the '.serve()' stack12:30
vilawell, there was no timeout when it was implemented12:30
jamvila: sure, though that also meant we just stayed connected on dead connections forever.12:31
jamso I think the sequence is12:31
vilaknown thread leaks12:31
jamwe make an initial request to the server12:31
jamand never disconnect12:31
jamthat connection is then 'idle'12:31
jamif the rest of the test takes longer than 4.0 seconds to finish12:31
vilawhen I mentioned the issue, the answer was, we don't want to change the server design because we don't care12:32
jamthe idle thread wakes up and disconnects the client12:32
jamwhich has a side effect of shutting down the server as a whole12:32
jamwhich causes further requests to get side lined12:32
jamcausing a hang without the patch, and probably a test failure with ti.12:32
vilaso ConnectionTimeout just needs to be added to ignored_exceptions12:32
jamvila: right, something like that12:33
jamI'm still poking around there12:33
jamvila: though not exactly that12:33
jambecause handle_error is the one shutting down the server12:33
jamnot CEThread12:33
jamCEThread would raise it as an exception during thread.join12:33
jambut before we get to the point of reaping old connections12:34
jamwe've already shut down the server because one request failed12:34
vilaI think you have been mixing two designs12:36
vilaif ConnectionTimeout is not an error, handle_error should never see it12:36
jamvila: I'm not 100% sure about ConnectionTimeout, I am pretty sure about handle_request causing a hang if the server is in shutdown mode.12:37
vilajam: I don't quite get why a client can connect if the server is shutting down, isn't the listening socket closed as soon as the server shuts down ?12:40
jamvila: *not* if it is shutting down because of handle_error12:40
jamvila: If you call "stop_server" then it tries to connect to its own socket to force the server to stop accepting connections12:40
vilaha right !12:40
jambut if you call handle_error()12:40
jamit just sets "self.stopping"12:40
jambut it is stuck in "self.accept()"12:40
jamsocket.accept()12:40
vilabecause only a single client could fail before your patch12:40
jamso it will accept *1 more connection*12:40
jamthat it won't respond to12:40
jamvila: yeah probably12:41
vilawell, that's more than probably :)12:41
jamoh, another small bug12:41
jamvila: http://paste.ubuntu.com/699723/12:41
vilathe test runs in the main thread so only one client can run at a time, therefore only one client can fail at a time12:41
jamcan you point out why close_request won't get called?12:41
vilasame constraint12:42
jamvila: handle_request has a blanket "raise" in it12:42
vilathe server shutdown takes care of closing12:42
vilawhere ?12:43
jamvila: bzrlib.tests.test_server.TestingTCPServerMixin.handle_error12:43
vilaand ?12:44
jamvila: we get an exception, we 'handle it' by re-raising it, which means you won't call close_request() though the code sure looks like it would12:44
jelmerNoldorin: I'm not sure if I can really provide much more details without spending a considerable amount of time on it myself12:44
vilano12:44
jelmerNoldorin: either way, it would be worth reading up on the bzr and git internals if you want to have a stab at this12:45
jamvila: TestingTCPServerMixin.handle_request calls process_request in a try/except12:45
vilathe code calls handle_error and then close_request, if an execption is raised in handle_error, close won't be called12:45
Noldorinjelmer, hmm okay sure. anything i should read beside the general code and bug report itself?12:45
jamvila: except handle_error calls "raise"12:45
jamre-raising the existing error12:45
vilathat's what I just said12:45
Noldorinjelmer, even a rough pseudocode implementation of the new implementation perhaps...? ;-)12:45
vilajam: and I said previously: <vila> the server shutdown takes care of closing12:45
vilajam: which was based on the same assumption that a single client can fail at a time12:46
jamvila: so, it violates the SocketServer paradigm to have handle_error raise an exception. Sure, it may get caught later.12:46
jelmerNoldorin: the repository structure (how a tree is built up, etc)12:46
jambut it can also cause hangs12:46
vilawhat paradigm ?12:46
jambecause the client is never disconnected12:46
jelmerNoldorin: sorry, I'm not entirely sure what the pseudocode would have to look like yet either12:46
Noldorinheh okay12:46
Noldorinthat's fine12:47
jamso say the client makes a bad request, that triggers an exception on the server12:47
jamthe client then hangs forever waiting for the server to respond12:47
jambecause the server didn't close the connection.12:47
viladoesn't happen in tests12:47
jamvila: we haven't triggered it yet in tests12:47
vilayou can't12:47
vilaunless you introduce a new kind of failure like you did with the timeout12:48
jamvila: if process_request itself was buggy it would be triggering this12:48
jamit happens that process_request immediately deferrs to a thread for the actual processing.12:48
vilaby design12:48
jamvila: sure, but if there were a bug in that code, it would cause hangs12:48
jamvila: also you have "t.pending_exception()" so if an exception happens at thread start, it will also cause hangs.12:49
vilawhich is why there should be no bug there :)12:49
jamagain, I haven't tracked down where the actual failure is causing the code to then hang, I'm pointing out that the current implementation is likely to hang if there are failures in a few key aspects of the code.12:49
jamrather than getting a test suite failure that we can debug12:50
vilawell, I suggest focusing on this new failure mode you've introduced first12:50
jamvila: I have to get an actual failing test first12:50
jamwhich involved not having the test suite hang12:50
jamOn windows, because the hang is in a sock.recv() you can't even ^C out of it to get a traceback.12:50
vilause cethread to check which exception is shutting down the server then12:50
vilajam: the TCP server on windows ?12:51
jamvila: socket.recv() is one of those "blocking and cannot be interrupted" calls on Windows12:51
jamthis is actually during "self.make_repository()"12:51
vilajam: the TCP server on windows ?12:51
jamvila: the *client* code is blocked12:51
vilajam: the TCP server on windows ?12:52
Noldorinjelmer, heh. i guess that 'in progress' is for me? ;-)12:52
jelmerno, just in general since there's a testcase and some initial work12:52
jamvila: Repeating yourself doesn't make me understand what you are asking. Vs what?12:52
vilajam: is that when using the TCP server on windows ?12:53
jamvila: yes12:53
vilaas opposed to the pipe server, there are only 212:53
jamvila: as I said way back when, we generally don't use the pipe server in testing12:53
jamThis is a per_interrepository test.12:53
jamBut per_repository where Repository format is Remote triggers the same code paths12:53
jamWe have a SmartTCPServer_for_testing running, it received a request but decided it didn't want to respond because it was shutting down.12:54
Noldorinjelmer, ok sure ;-)12:54
jamThe client is then blocked waiting for the server to respond (or disconnect it)12:54
jamOn Windows, the client is blocked so badly you have to kill the process.12:54
jamOn Linux, you can at least do ^C and get a traceback in ~/.bzr.log12:54
vilayeah, on linux too12:55
vilanot always when a hang happens12:55
jamvila: for this particular hang, ^C worked fine for me12:55
jamit is how I pinpointed the hanging part12:55
vilahmm, lucky you then ;)12:55
vilajam: so, IIUC, if the client is in a blocking read, you should not shut down the server12:57
vilajam: or if you do so, you should close the connected socket in a way that will unblock the client12:57
jamvila: right, I think "closing sockets on shutdown" is the most reasonable process.12:57
jamand currently the code has a few bugs where during exceptions that will stop the server, it doesn't close the connections12:58
vilaapart from the timeout case, I think the test server is quite well tested in this regard12:59
vilathe only problematic case being th TCP smart server because it didn't track the client connections12:59
jaman exception during process_request will cause the server to not disconnect the client12:59
jamthat includes process_request_thread because SocketServer was also written as "self.handle_error(); self.close_request(request)"13:00
vilathat was the right thing to do as long as a single client thread could fail13:01
vilaif this is not true anymore for your server, you should probably overload verify_request and handle_error13:02
mgzhm, not sure if it'd be better to give instructions or just do the changes.13:24
jamvila: so interestingly enough, you had a test case for "test_server_fails_while_serving_or_stopping", but you had wrapped the client.read with a socket timeout and suppressed the socket error.14:09
jamIt turns out, that if you don't need the timeout if you close the connection.14:09
jamhowever, there is a catch14:09
jamif you use SocketServer.StreamRequestHandler14:09
jamit creates an "rfile"14:09
jamwhich is *another handle to the socket*14:10
jamso just closing the 'request' object isn't sufficient14:10
jamyou have to either a) Not use StreamRequestHandler, or b) somehow get at the handler to tell it to close its handle because you had an error.14:10
jamalternatively, if you don't raise an exception in handle_error, the StreamRequestHandler goes out of scope naturally, and closes its connection14:11
jambut with an exception, I think it ends up in the traceback, and thus doesn't get gc'd14:11
jamgiven that we avoid StreamRequestHandler everywhere else because makefile doesn't play very nicely with other bits (in general)14:13
jamit would seem reasonable to just avoid it.14:13
vilaand replace all read/write with recv/send ?14:13
jamthere is only one or two read write calls anyway.14:14
jamThe comment on the timeout was that "the server may not get cycles" but the reality was that the server got the cycles, it just wasn't disconnecting the client.14:14
vilawhich comment ?14:15
mgzyeah, makefile is more trouble than it's worth14:17
AfCThat bzr branch of a local git to local bzr tree that I kicked off earlier is at 8h53m22s elapsed, 245 minutes CPU time. Half way done.14:20
jelmerhmm14:31
* jelmer ponders deprecating make_branch_and_tree14:31
AfCjelmer: oh, hey14:32
AfCjelmer: I applied poolies workaround tag deletes14:32
AfCjelmer: and I'm churning though it now.14:32
jelmerAfC: cool14:32
jelmerAfC: note that his bug shouldn't crop up if you clone from the remote git branch directly14:33
AfCjelmer: yeah, I couldn't do that [at the time] because bzr-git choked on github URLs (or, rather, the 405 redirect thereby)14:35
AfCjelmer: ppa:bzr/daily appears to have fixed that, I discovered subsequently.14:35
jelmerAfC: git:// should work in older versions of bzr-git, too14:35
jelmerAfC: but yeah, http/https weren't supported earlier14:35
AfCjelmer: plus, old habit - I got tired of things crashing :/14:35
jelmerAfC: yeah, this is all still pretty experimental stuff..14:36
vilahang on lucid :-/14:40
vilaI was hoping to *not* see that as it means it can happen on pqm too :-/14:40
AfCvila: I don't want to hear these things!14:41
vilaAfC: sorry, I wasn't talking to you :)14:41
AfCheh14:41
* AfC adds 8GB of swap to his server in hopes that bzr will not OOM on me14:45
vilaFinally, https://launchpad.net/bzr/+milestones starts to become readable...15:24
jelmervila: still there?15:47
jelmerit looks like any bzrlib usage now breaks if bzrlib isn't explicitly initialized15:47
jelmerI've filed a bug15:49
vilaha, I had some doubts about that :-/15:51
vilajelmer: assign it to me, I ~know what is going on15:52
vilajelmer: sorry about that :-/15:53
vilajelmer: how did you encounter it ?15:53
jelmervila: I was writing a simple test script when I hit it: http://pastebin.ubuntu.com/699875/15:53
vilaha. Add 'with bzrlib.initialize():' :-p15:54
SpamapSHi guys, I'm trying to use bzr builder to do a dailydeb for a source tree that has a debian/ dir that differs from the packaging branch..16:11
SpamapSIs there a way to tell nest-part to just do a forcible merge?16:11
=== 64MAAICBP is now known as mtaylor
vilajelmer: where did you file this bug ?16:17
=== soren_ is now known as soren
=== deryck is now known as deryck[lunch]
AuroraBorealiswell. converting the linux kernel git repo to bazaar has taken 9 hours so far and only 1/6th done haha16:24
AuroraBorealisno i lied its half done16:25
=== marienz_ is now known as marienz
AuroraBorealisall this in the name of science!16:29
=== vila is now known as science
AuroraBorealis:O\16:30
scienceAuroraBorealis: thanks !16:30
=== science is now known as vila
AuroraBorealissomeone here was saying a local branch with a tons of commits took forever16:30
AuroraBorealisso i'm trying it out16:30
AuroraBorealisbut i think he was trying to branch the git repo which means it had to convert it, which of course is taking forever16:32
mgzjelmer: if you get a moment, please do merge my bzr-builddeb branches16:42
mgzjam: you can review your own fix for bug 856731 if you like16:43
ubot5Launchpad bug 856731 in Bazaar "out of memory Fetching revisions:Inserting stream:Estimate on AIX" [Medium,In progress] https://launchpad.net/bugs/85673116:43
SpamapSWho would be the best person to ask about build recipes? I am having a hell of a time with one right now. :-/16:49
SpamapSjames_w: ping?16:49
=== deryck[lunch] is now known as deryck
jelmermgz: will do17:22
vilajelmer: still there ?17:33
vilajelmer: I'm running a full test run before submitting my fix for bug #86340117:34
ubot5Launchpad bug 863401 in Bazaar "now requires explicit initialization" [Critical,Confirmed] https://launchpad.net/bugs/86340117:34
vindolinanyone else having problems commiting with bazaar explorer?  bzr: ERROR: exceptions.TypeError: unsupported type u'Collecting changes [0] - Stage'17:57
AuroraBorealisdoes it happen with the command line bazaar?17:58
vindolinAuroraBorealis: no.. works perfect17:58
AuroraBorealishmm17:59
AuroraBorealislatest version of explorer and all that?17:59
vindolin1.2.117:59
vindolinand all that :)17:59
vindolinhttp://paste.pocoo.org/show/eUq2c1UEqxfo3wHvM2eE/18:00
vindolin^ traceback18:00
AuroraBorealiswell you are using bazaar 2.5 :o18:00
=== beuno is now known as beuno-lunch
vindolinAuroraBorealis: what's wrong with that?18:05
AuroraBorealiswell the '2.5dev2' kinda speaks for itself =P18:05
AuroraBorealisare you sure its not  a problem with the development version?18:06
vilavindolin: check that 'all that' is the tip for all your plugins and if you still encounter the issue: https://bugs.launchpad.net/bzr/+filebug18:07
vilavindolin: it looks like qzbr is confused by a progress bar output18:08
vilavindolin: so may be you should report at: https://bugs.launchpad.net/qbzr/+filebug instead18:08
vilavindolin: unless you played tricks with BZR_PROGRESS_BAR but I fail to imagine which...18:09
vindolini have no idea where the dev version comes from.. checking..18:12
vilavindolin: someone installed it from source, there is no released version with 'dev' in its name, but you're using a bzr installed in /usr/lib/python2.7/dist-packages/ nevertheless18:14
vindolinok.. apt-get removed everything bzr.. reinstalled.. works :/18:15
vindolinbzr is now 2.4.1.. strange18:16
vilavindolin: meh, I'm glad for you, let us know what happened if you ever find out18:16
vilaIt's still a weird behavior even running from sources18:16
vindolinok thanks everyone18:17
=== beuno-lunch is now known as beuno
jeff_hello people, have a silly newbie question.19:44
jeff_can't seem to find the answer in the docs for bzr: I just did bzr add, not realising that my .bzrignore filter was not on this machine.  how do i tell bzr to forget my massively incorrect add operation, without any changes to my files?19:45
lifelessvila: hi20:03
lifelessvila: i thought initialize was mandatory for about 6 months now; surely the break has already been done?20:03
vilalifeless: I thought so too but as you can see, that's not the case20:04
lifelessvila: jelmers bug doesn't indicate that20:04
lifelessvila: 'fetch.py' might be years old20:04
lifelessvila: poolies 'new' deprecation thing says its ok to break apis across major releases20:05
vilalifeless: what triggered this bug is that the config now needs initialize to be called or bzrlib.global_state is None20:05
lifelessvila: sounds fine to me :)20:05
lifelessvila: I'm just saying, if its cleaner not implicitly initializing (it is I think), then you've already made that transition.20:05
vilalifeless: our own generate_docs.py was calling it20:06
vilagrr wasn't20:06
vilano, it doesn't initialize implicitly20:06
lifelessvila: actually, did you just say you're using bzrlib.global_state from config?20:06
lifelessthats a bug.20:06
lifelessYou should be passing the library state *into the config system*20:06
lifelessnothing new should ever be accessing bzrlib.global_state20:07
vilafrom where ?20:07
vilayeah, there are so many constraints on it that nobody can use it20:07
vilawithout violating at least one20:08
lifelessI'm not sure what you mean20:08
lifelessthe thing was a centralisation of existing globals spread out through the code base20:08
vilahow should the config system acquire the library state ?20:09
lifelessit should be passed in20:09
vilaby who ?20:09
lifelesscallers20:09
vilayou want it to be a parameter to all bzrlib calls ?20:09
lifelessor held as an instance variable20:09
vilaintialized when ?20:10
lifelesswhen you create the object20:10
vilain bzrlib.initialize ?20:10
lifelesswhy would bzrlib.initialize need to know about configs?20:11
vilawhich object ? the config ? From where... ELOOP20:11
lifelesslet me phrase it differently. *a* goal is to be properly isolated in tests from the test runner, which also uses a BzrLibraryState20:11
lifelessuses of 'bzrlib.global_state' are in violation of that goal, though we have workarounds today.20:12
vilanot the bzr one :-/20:12
vilawhat workarounds ?20:12
vilaeither the state is passed all over place or you need to access it20:13
lifelessindeed bzrlib/tests/__init__ is missing a push-pop of the library state in each test.20:14
lifelessthat will be contributing to test isolation issues.20:14
lifeless(I haven't pulled recently, you may have worked around it)20:14
lifelessyes, thats right - the state needs to be passed around when creating objects that need access to the state.20:14
vilasince branches needs a config, all branch operation should pass the state then20:15
lifelessnote the BIG comments in bzrlib/__init__.py20:15
lifeless# If using this variable by looking it up (because it can't be easily obtained)20:15
lifeless# it is important to store the reference you get, rather than looking it up20:15
lifeless# repeatedly; that way your code will behave properly in the bzrlib test suite20:15
lifeless# and from programs that do use multiple library contexts.20:15
vilaand since branches can be obtained from wt, same goes for all wt operations, etc20:15
lifelessvila: thats bogus20:15
lifelesspass it to __init__. Once.20:15
lifelessfin, end of story, done20:15
vilawhich __init__ ?20:16
lifelessTHE OBJECT INIT20:16
lifelesssorry, I have to go, EBABY etc.20:16
vilaoh come on, where did the caller got it brom ?20:16
vilafrom20:16
lifelessvila: the ultimate caller gets it from bzrlib.initialize()20:16
lifelessthey pass it to Branch.open() which passes it to the constructor of the Branch. All ops on the branch use self.library_state.20:17
lifelessfor instance.20:17
vilathat still means a lot of code paths need to carry it20:18
lifelessI *have* to go, sorry. This seems very straight forward to me.20:18
vilaeasier said than done, I fully understand *how* it can be done, I just don't think adding such a parameter to a bunch of signatures will outweight the benefits.20:19
vilaand I probably meant the losses :)20:20
lifelessin terms of overheads, its at most 1*number-of-classes + the call stacks for key factory functions like Branch.open20:23
* lifeless is gone20:23
lifelessvila: and back but I suspect you are sleeping now :)22:15
=== yofel_ is now known as yofel

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