/srv/irclogs.ubuntu.com/2010/04/14/#bzr.txt

lifelessjelmer: lp:~jelmer/bzr-pqm/fix-branch-root00:19
lifelessjelmer: why the rejection?00:19
jelmerlifeless: it just fixed the hack that was there, somebody else fixed it properly in the meantime by using the lp API00:24
igcmorning00:32
mwhudsonlifeless: https://bugs.edge.launchpad.net/bzr/+bug/56266600:55
ubottuLaunchpad bug 562666 in bzr "2a fetch is very cpu intensive" [Undecided,New]00:55
pooliehi igc, still here?01:38
igchi poolie01:39
poolieDirk might be willing to do x64 builds (see mail)01:39
pooliethat would be cool if it works01:39
igcpoolie: it certainly would01:40
igcpoolie: I'll reply to Dirk later today01:40
pooliecool, i thought you would, just wanted to make sure you saw it01:40
igcpoolie: yep, I did01:41
=== retupmoca` is now known as retupmoca
johnfcan someone remind me how to add an existing branch to a shared repository?02:25
fullermdYou mean reconfigure --use-shared?02:27
johnffullermd: thankyou02:27
* igc out for a few hours02:40
mtaylorbzr: ERROR: exceptions.ImportError: cannot import name XMLSerializer02:47
mtayloraroo?02:47
spivI haven't seen that for a while.02:48
spivIIRC it has been due to installing bzr on top of an older installation without first cleaning out the .pyc files.02:49
spivIf that's not the issue, then more details please :)02:49
krobertsonanyone know of some good documentation for bazaar's python API?  need to write some stuff that programmatically queries a repo02:55
mtaylorspiv: GREAT.03:01
mtaylorspiv: well. that would fix the activity03:01
lifelesskrobertson: our pydoc is ok03:01
lifelesskrobertson: for specific use cases we generally advise people to look at the code in builtins.py03:02
krobertsonlifeless: thanks, I will check that out03:02
spivspm, lifeless: pqm has (I assume) failed my branch twice, but has not sent me a failure email03:31
spmspiv: Ahh I think I know why - and it's likely your fault. again. ;-)03:32
fullermdIt doesn't want to hurt your feelings...03:32
spmspiv: smtplib.SMTPSenderRefused: (552, '5.3.4 Message size exceeds fixed limit', 'pqm@bazaar-vcs.org') <== I haven't yet had a chance to chase down tho03:32
spivspm: erk03:32
spmthat's a *guess* mind. but I've noticed 2 of them...03:33
spivspm: that would be because of the log of the failing test run, I suppose :(03:33
spmspiv: 8.30 last night; and 11.05 this morning. Sound about right?03:33
spivYep.03:33
spivAny chance you can send me the most recent one manually?03:34
spivHow big is the offending message, do you know?03:34
spmI suspect they get dropped; but the pqm log for it may exist...03:35
spmspiv: ~spiv/bzr/diff-relock ?03:38
spivspm: right03:40
lifelessspm: oh, can we get that limit raised ? :)03:47
spmlifeless: I suspect so. :-) submit an RT? it'll be a GSA task.03:47
spmspiv: https://chinstrap.canonical.com/~spm/patch.1271201969.log.gz03:48
lifelessspm: how big is that unzipped ?03:48
spmlifeless: 44Mb03:48
lifelesswoah03:48
lifelesshmm03:48
lifelesswe may want to strip passing tests sooner rather than later.03:49
spivspm: thanks!03:49
spivlifeless: yeah03:49
lifelessthats a pqm tweak03:50
spmlifeless: afaict, something changed around the 2d of April (~ 3K gzip) and the 6th 22K, and later on the 6th, was 44Mb.03:50
lifelessspm: subunit detailed streams03:50
lifelessspm: we're getting much more data about errors now03:50
spmahhhh03:50
spmwasn't sure if know change; or not. coolio.03:51
spivNot to mention much more data about successes ;)03:51
spmknown*03:51
spmheh03:51
lifelessspm: sent to launchpad at rt.c.c03:52
spmta03:52
lifelessspm: which I'm told makes an instant right-queue task03:52
lifelessspm: is pjdc an appropriate naggee for this ?03:52
spmlifeless: not atm unless super zomg critical03:53
lifelessspm: we shouldn't leave errors getting blocked for long03:53
spmErik's the current VG, so our mornings.03:53
lifelesstheres no vg listed atm ?03:54
spmhe finishes around midday I believe03:56
spm11. close enough. DST changes.03:56
lifelessok03:57
lifelessso I want to make sure this is changed before 5pm - or whever you clock off03:57
lifelessits my fault its been left like this :(03:57
poolielifeless: re bug 56207904:03
ubottuLaunchpad bug 562079 in bzr "incorrect warning after update" [High,Confirmed] https://launchpad.net/bugs/56207904:03
poolieis this actually a regression, ie something that used to work?04:03
lifelesspoolie: I'm pretty sure it is04:03
pooliealso, please put a meaningful subject line on04:03
poolie"incorrect warning after update" could mean almost anything04:03
lifelessI think the rearranged update code is picking up some noise04:03
lifelesspoolie: I do try to put meangingful subjects04:04
lifelesspoolie: I'm sorry that that one isn't meaningful enough04:04
poolienp04:04
mwhudsonis there code for doing the moral equivalent of ls -lR on a transport somewhere already?04:08
poolieiter_files_recursive04:09
pooliebut it does not directly get the stat values04:09
poolieor do you want a human-oriented one?04:09
lifelessmwhudson: for http you'll need webdav04:09
lifelessmwhudson: to do listing04:09
mwhudsonlifeless: we can switch away from http04:09
mwhudsonpoolie: thanks, i think that'll do04:10
lifelesspoolie: on the subject of subjects etc; you seem to remind people a lot; perhaps you could just lead by example and say 'I've changed the subject to XXX which I think is clearer'04:10
mwhudsonlifeless: for a dump copy, does http://pastebin.ubuntu.com/414067/ sounds vaguely like what you meant wrt ls -lR ?04:15
mwhudsonmm04:15
mwhudsoni guess i should sort them04:16
lifelessmwhudson: yeah04:20
lifelessas a first approx thats simplest and it shouldn't a) infinite loop or b) trigger often04:20
mwhudsonsimple is good here04:21
mwhudsonlifeless: fwiw, i don't think i've said this yet, this is only for the initial mirror of the branch04:21
lifelessmwhudson: sure, you have and I got that ;)04:22
mwhudsonok cool04:22
lifelessmaybe not explicitly but I'm passingly familiar with the problem04:23
jamhey spiv... it looks like your _move_index code has higher overhead than we predicted04:45
jamI'm profiling loggerhead04:45
jamand a bit of code that iterates over 'get_parent_map()' in order to build up the mainline history04:46
jamends up calling _move_* 5k times for the mainline04:46
jamwhich ends up taking 3.7s of runtime04:46
jamI can reproduce it by just using "branch.revision_history()"04:50
jamcertainly something we usually avoid, but still, 5k get_parent_map() calls shouldn't end up costing 3.5s of wall-clock time04:50
jamone possibility...04:52
jamhit_names is a list04:52
jamand you do "for name, index in X: if name in hit_names"04:52
jamwhich means that if you have 20 indices04:53
jamand all are hit04:53
jamyou end up doing 20x20 lookups, rather than 20x1 lookups04:53
jamI'll poke a bit04:54
jamchanging it to a set didn't really help04:58
jamchanging it to only _move_to_front every 10th call to iter_entries did04:58
jam(dropping total time from 3.5s => .35s...)04:59
jamfound a better fix, at least for my use case05:20
jamif the given indexes are already at the front, skip trying to reorder05:20
jamhappens 5138 out of 5153 times05:20
spivjam: ah, nice05:23
jamI think this is bug #562429, btw05:23
ubottuLaunchpad bug 562429 in bzr "performance regression for 'log' in trunk?" [High,Confirmed] https://launchpad.net/bugs/56242905:23
jambut haven't actually looked at the bug close enough yet.05:23
spivjam: yeah, I just guessed that :)05:24
jamI'm not sure about the hit_names being a set vs a list05:25
spiv"if the given indexes are already at the front, skip trying to reorder" sounds good to me.05:25
jamI *think* a set is better05:25
jambut since the real improvement is to just skip05:25
jamI'll leave that code alone for now05:25
spivYeah.05:25
spivOr to rephrase: "if no accessed index was a miss, then don't reorder."05:29
spivHow common is it (in your use case at least) that iter_entries doesn't look at every index in self._indices?05:30
jamhttps://code.edge.launchpad.net/~jameinel/bzr/2.2-move-to-front-if-changed-562429/+merge/2337105:31
jamspiv: so I'm iterating the mainline05:31
jamI may hit a few of them on the way back05:31
jambut the last few thousand are all in the same index05:31
spivI'm thinking that iter_entries could note how many it looked at, and tell _move_to_front, so that _move_to_front can avoid touching the last half if only the first half needs to change.05:32
jamspiv: something like that could be worthwhile, but the above fix is pretty trivial05:32
jamand solves my prob completely05:32
jamto give an impression, my '.rix' has 1.3MB as the largest, next is 120k, 88k, 6x40k, 4x4k, 8x1k05:33
jamSo orders of magnitude each, and I'm guessing 90% of my query is that first index05:33
jamspiv: alternatively, your iteration loop could see once all hit_names have been found05:34
jamand stop the loop05:34
jamwouldn't that do the same?05:34
spivjam: which loop?  The one in _move_to_front_by_index?05:36
spivThe loop in _move_to_front_by_name would benefit from that, but I don't think that alone would benefit as much as your current fix.05:38
spivI expect most of the cost is in _move_to_front_by_index, not _move_to_front_by_name.05:39
spivAlthough there is a little bit of repeated effort when _move_to_front_by_name is invoked, because it calls _move_to_front_by_index which constructs the same list comprehension.05:40
jamspiv: as an example: http://paste.ubuntu.com/414088/05:41
spivThe way _move_to_front_by_index has to zip-then-unzip the self._index_names + self._indices lists doesn't help.05:41
jamand yes, the cost is in _move_to_front_by_index according to lsprof05:42
jamThat avoids the packing and repacking05:42
jamwell, with a bug05:42
jamhttp://paste.ubuntu.com/414089/05:42
jamthat should be better05:42
spivOh, right, yes that approach would be a little better.05:43
jamanyway, *my* fix avoids calling all the siblings entirely05:43
poolielifeless: oh good idea re commenting on the bug05:43
spivRight.05:43
pooliehi jam05:43
jamhi poolie05:43
jamspiv: it would be nice to be 'cheaper' in case we don't know about other cases05:43
spivHmm05:43
jamI was also thinking about the 'ordering' issue05:43
spivThat's true.05:43
jamAnd iter_entries() should preserve the existing order05:44
jamgiven that is *why* we are bothering to reorder them05:44
spivI don't expect http://paste.ubuntu.com/414089/ will perform worse than the current implementation in any case.05:44
jamso if the first indexes are all 'active' then we won't be thrashing the first few for minor improvements05:44
jamwhich my original proposal of "sort by count() of hits"05:44
jamcould have done05:44
jam(though again, in my particular use case, it wouldn't matter)05:45
spivRight.05:45
spivAnd of course, over the network the relative cost of a little CPU thrashing vs. extra IO looks different to what you're looking at.05:45
jamsure05:45
lifelesspoolie: econtext I think05:46
spivSo if we can keep both down reasonably easily, we're both happy ;)05:46
pooliefrom before our conversation, about explaining why i'm retargeting05:46
poolies//resummarizing05:46
jamspiv: right. Also, don't all the sibling entries have identical index ordering?05:47
spivjam: yeah :/05:47
jamwell, good and bad05:48
jamit means that if we built a map of where to move them05:48
jamwe could just apply it multiple times05:48
jamhowever05:48
jamthe good is that if we know this one is sorted well enough05:48
jamthen we don't have to worry that we aren't sorting a sibling05:48
spivRight.05:48
lifelesspoolie: oh right05:48
lifelesspoolie: and for laughts, a bugfix for the bug we discussed05:51
lifelesshttps://code.edge.launchpad.net/~lifeless/bzr/update/+merge/2337205:51
jamlifeless: merge: approve05:52
jamthough there would be potential other cases if you had >1 pending merge and only one of them ended up filtered05:53
lifelessright05:53
jambut hey, no need to be perfect about it05:53
lifelessthats the history analysis or api changes to feed those decisions up the stack that I refer to05:53
lifelesspoolie: https://code.edge.launchpad.net/~lifeless/bzr/update/+merge/23372 - using my patched hydrazone05:57
lifeless*zine*05:57
jamspiv: some perf results05:57
jambzr.dev: 2.142s05:58
jammy paste w/o shortcut: 1.491s05:58
jamshortcut: 1.111s05:58
pooliethanks05:59
jamshortcut w/ paste: 1.111s05:59
jamenough variability to be within the noise with or without the paste05:59
jamso... we may want to merge it, as it would have helped05:59
jambut the shortcut helps more06:00
jamspiv: oh, and the reason I put it in _move_... is because it is called from 2 places06:00
jam_iter_entries and iter_entries_by_prefix06:00
jamlifeless: what's with the "Status Approved => Queued; Queue Position => 68" message?06:01
pooliejam/lifeless: any thoughts on the possibly ip problems in https://answers.edge.launchpad.net/bzr/+question/9865706:02
jampoolie: other than saying "I've seen similar throughput issues from launchpad" I don't really know06:02
spivjam: cool, that's about what I'd expect.06:02
spivjam: I think I'm happy for you to merge the paste too, because as you say there might be other access patterns that the shortcut doesn't entirely fix.06:03
spivjam: I'm glad that the results are matching up with our analysis of the problem :)06:04
lifelessmwhudson: hey, I beg to differ: '# Looms suck.'06:11
lifelessjam: moving towards using the queueing abstraction in lp06:11
spivlifeless: don't beg, just invoke /usr/bin/diff :P06:11
mwhudsonlifeless: i guess someone should test if that bit is still necessary06:12
lifelessjam: I realise the extra mails may be a little annoying, I'm going to beg^Wask for a little patience06:12
mwhudsoni have this recollection of being extremely angry getting that code to work06:12
lifelessmwhudson: and *file a bug* if it is06:12
mwhudson(i think weaves broke it too, or something ridiculous like that)06:12
lifelessoh06:23
lifelessis 2.2 open ? can't seem to choose it when proposing for merge06:24
jamlifeless: trunk06:25
jam2.2 is still just a merge from trunk away06:25
jamit is just there to make the RM manager's life easier06:25
jamwell, at least how I used to RM06:25
jamspeaking of which.. poolie did we ever get pqm happy with your 2.2 tarball?06:28
poolieno, still on my plate for today06:28
jamk06:28
jamnight everyone06:28
poolieso i should close my mail :)06:28
poolienight06:28
lifelessjam: I was noting that you merged to 2.2 in pqm06:44
igcback07:02
lifelesspoolie: sorry for the spam messages from me; still learning hotkeys etc07:43
fperezHowdy, anyone with a sec to help with a question regarding shared repository formats?07:47
lifelesssure, just ask07:48
fperezthx107:48
fperezquestion is: can I find out what the repo format of lp:ipython is?07:48
fperezbzr info gives me:07:48
fperezStandalone branch (format: unnamed)07:49
fperezLocation:07:49
fperez  branch root: bzr+ssh://bazaar.launchpad.net/~ipython-dev/ipython/trunk/07:49
fperezbzr: ERROR: Parent not accessible given base "bzr+ssh://bazaar.launchpad.net/~ipython-dev/ipython/trunk/" and relative path "../../../../%7Evcs-imports/ipython/main/"07:49
fperezI need to create a shared repo that I can then push from, but all my attempts end up with07:49
lifelesstry bzr info -v nosmart:lp:ipython07:49
lifelesssorry07:49
fperezUsing saved push location: lp:ipython07:49
fperezbzr: ERROR: RemoteRepository(bzr+ssh://bazaar.launchpad.net/~ipython-dev/ipython/trunk/.bzr/)07:49
fperezis not compatible with07:49
fperezKnitPackRepository('file:///home/fperez/ipython/repo/.bzr/repository/')07:49
fperezdifferent rich-root support07:49
lifelesstry bzr info -v nosmart+lp:ipython07:49
lifelessthat may work better07:49
fperezaha!07:49
fperezmany thanks!07:49
fperezStandalone branch (format: pack-0.92)07:50
fperezL07:50
fperezThat's what I needed :)07:50
lifelessfperez: I suspect though07:52
lifelessfperez: that the vcs import is in 2a or similar, and that you'll want to upgrade trunk, and your local branches - everything - to 2a.07:52
lifeless#launchpad can talk about branch mgmt stuff in more detail. Well we know here too, but that is the right channel :P :)07:53
fperezMmh, let me try the push I was about to make and see how it goes. Back in a sec.07:53
jelmermoin07:54
fperezlifeless: actually it just worked:07:55
fperezamirbar[lp]> bzr push07:56
fperezUsing saved push location: lp:ipython07:56
fperezPushed up to revision 1232.07:56
fperezthanks a lot, you saved me a ton of grief07:56
lifelessfperez: ok cool08:00
lifelessfperez: glad I could help08:00
parthmhello. i am trying to write a test case for bug #41340608:27
ubottuLaunchpad bug 413406 in bzr "bzr export fail with directory contain non-ascii char." [Medium,Confirmed] https://launchpad.net/bugs/41340608:27
parthmhttp://pastebin.com/sb8hMUU1 the test doesn't seem to throw the exception while doing the same from command line throws the exception08:27
lifelesshmm something seems to have broken bzr-search :<08:28
parthmdo i need to do something differently in the test?08:28
lifelessparthm: intersting08:28
parthmlifeless: the fix is quite simple actually http://pastebin.com/SS5TKqFw i am assuming bzr uses utf8 internally. is that correct? the only thing i don't have is an automated test :(08:30
lifelessparthm: we use unicode internally08:32
lifelessparthm: utf8 in some code paths where we have audited it carefully08:32
lifelessparthm: if name is the filename on disk we're meant to create, it sounds like the user in that bug has an invalid fs encoding08:33
lifelesshmm, bug shows that assumption is wrong08:34
lifelessparthm: I've commented on the bug08:35
lifelessparthm: you need to use the fs encoding, not utf8, because its a pathname on disk we're setting08:36
parthmlifeless: makes sense08:37
parthmlifeless: i suppose they fixed it in py3.0 :)08:37
lifelessparthm: possibly, but likely not.08:37
lifelessparthm: as fo the unit teset08:39
lifelesstest08:39
lifelesstry08:39
lifelessself.run_bzr(['export', '--format', 'tgz', u'test.tar.gz'])08:39
parthmlifeless: yes. that makes the test case work. thanks.08:40
lifelessI'd add a comment there that we're tickling a posixpath.py bug and need a unicode argument to do so.08:41
lifelessfor clarity.08:41
parthmlifeless: for fs encoding does bzr provide an api or is os.getfilesystemencoding() the suggested way? i see osutils doing "_fs_enc = sys.getfilesystemencoding() or 'utf-8'"08:41
parthmlifeless: good point. will do that.08:41
lifelesslook in osutils08:42
lifelesswe do have a wrapper/cache I think08:42
parthmlifeless: osutils.get_user_encoding?08:43
lifelessno, thats the terminal08:44
lifeless_fs_enc08:44
lifelessis what is used throughout the module08:45
parthmlifeless: will use that. maybe that should be _fs_enc? or exposed via a api?08:46
lifelessspell it osutils._fs_enc08:49
lifelessfor test friendliness08:49
lifelessit is exposed through an API :) - osutils._fs_enc08:49
parthmlifeless: :) thanks for your help. i will raise a merge proposal for this fix.08:51
lifelesscool08:51
parthmlooks like bzr 2.1.1 was not announced. is missing on the feed on homepage. https://launchpad.net/bzr/+announcements09:02
maxband from the channel topic :-)09:06
* igc dinner09:29
lifelesspoolie: is there a way to mute things that are 'to: me' in gmail ?09:49
lifelesspoolie: (e.g. all lp bug fail)09:49
edgimarare there any PPAs which have packages of the 2.0.x release branch in them?09:49
lifelessOOPS-1565CEMAIL3809:51
ubottuhttps://lp-oops.canonical.com/oops.py/?oopsid=1565CEMAIL3809:51
lifelessmthaddon: (losa) ^ - looks like we're still failing on merge emails09:52
edgimarIt seems that all of the PPAs listed in http://wiki.bazaar.canonical.com/DistroDownloads don't contain the 2.0.x branch.09:56
* vila back online and from dentist09:59
vilahi all09:59
edgimarhow do I convert a lightweight checkout to a heavy checkout?10:03
bialixheya vila!10:04
bialixedgimar: reconfigure10:04
edgimarbialix, ok thanks.10:04
vilabialix: _o/10:05
edgimarbialix, tried 'bzr reconfigure --checkout', and got "bzr: ERROR: exceptions.AssertionError: <bzrlib.bzrdir.BzrDirMeta1 object at 0x24acad0> is not a RemoteBzrDir"10:07
edgimar(using 2.1.1)10:08
bialixthis is a bug10:09
bialixedgimar: please, file a bug10:10
edgimarhow can it be that this kind of bug has not already occurred (or has it?)-- no one else has ever tried converting a lightweight to a heavy checkout??10:10
bialixedgimar: I suspect the problem here is that your master branch is not local one10:11
edgimarYes, that is correct.10:11
bialixI believe it works correctly if master branch is local one10:11
bialixand I think there is even test for the local case10:11
bialixjust somewhere between here and there something become broken, and there is no corresponding test, so core devs won't noticed it10:12
bialixas a workaround you'll need create heavy checkout from scratch :-/10:13
edgimarok fine -- but I guess that for every test which is performed on local branches, it should also be tested on remote branches, right?10:13
bialixanyway you'll need to download entire branch history from remote location10:13
bialixvila: ^10:13
bialixedgimar: in theory -- yes. in practice???10:14
vilabialix: you're correct, filing a bug will help find the hole in the test coverage10:14
edgimarI'm sure that doing the testing in both scenarios for all tests can be automated/encapsulated.10:15
edgimaranyway, I'll file the bug...10:15
bialixedgimar: thanks10:16
=== vila changed the topic of #bzr to: Bazaar version control | try https://answers.launchpad.net/bzr for more help | http://irclogs.ubuntu.com/ | Patch pilot: spiv | bzr 2.1.0 is out
=== vila changed the topic of #bzr to: Bazaar version control | try https://answers.launchpad.net/bzr for more help | http://irclogs.ubuntu.com/ | Patch pilot: spiv | bzr 2.1.1 is out
bialixindeed 2.1. is out10:18
edgimarBut filed at: https://bugs.launchpad.net/bzr/+bug/56289610:22
ubottuLaunchpad bug 562896 in bzr "crash when converting lightweight to heavy checkout with remote master branch" [Undecided,New]10:22
lifelessvila: http://pqm.bazaar-vcs.org/12:20
lifelessvila: check the pqm message out :P12:20
vilalifeless: even better ! the leading 'success' is new right ? (the running [ x%] was there for a couple of days already)12:21
lifelessvila: the success is not new12:21
vilalifeless: what is then ?12:21
vilathe test ids ?12:21
lifelessvila: the (lifeless)  and (Parth Malwankar)12:22
vilahaaa, the *message* ! I had a crash last day and forgot to file the bug after that12:22
vilalifeless: where did you fix that ?12:23
lifelesshydrazine12:23
lifelessbzr+ssh://bazaar.launchpad.net/~lifeless/hydrazine/cron/12:24
lifelessthumper: why you get up, why do new queued proposals get queu position *68* ? it seems oddly high,,,12:24
spivAnd highly odd.12:25
spivBut also even.12:25
vila2 * 2 * 17, perfectly regular12:26
lifelessspiv: even if its highly odd, its still oddly high12:27
spivlifeless: :)12:27
vilalifeless: where is this queue coming from ?12:30
lifelesslp12:30
lifelessvila: if you use my branch and set a message, and submit them, I'll do the signing.12:30
vilameh12:31
vilayou mean your cron job will do the actual pqm submission ?12:31
vilais there an url on lp where I can see this queue ?12:32
vilalifeless: ^ ?12:38
lifelessvila: oh, no.12:38
vilanot wanting to wake up fullermd by fixing typos but did you mean "it'll do the signing" ?12:38
lifelessmy gpg key12:42
lifelessso 'me'12:42
vilalifeless: *I* do a submission and *you* sign it ?12:47
lifelessyes12:47
lifelessdecoupled 'queue' and 'tell pqm'12:47
lifelessanyone with review approval permissions can land stuff now, using my hydrazine cron branch12:48
vilaha ok, I'm not the primary target. So, that will avoid ready-to-land patches languishing but I'm a bit uncomfortable with automated landing... (I already make mistakes manually :)12:50
lifelessvila: its no more automated than what you're using12:50
lifelesssomeone has to say 'land this now', by hand.12:50
vilalifeless: ok, I was confused by 'cron', you still need to run feed-pqm12:52
lifelessright12:52
lifelessyou run feed-pqm12:52
lifelessand it sets the metadata12:52
lifelessthen my feed-pqm picks it up and sends the email12:52
vilaok, ok, there is a race condition of course but I doubt we run into it soon, may be the patch pilot should be the one to run with --cron12:54
lifelessvila: race condition ?12:55
vilaif two people try to send_mp()12:55
lifelessno race12:55
lifelessor rather, no worse than bzr-pqm's pqm-submit command has12:56
=== mrevell is now known as mrevell-lunch
vilalifeless: hmm, in queue_mp(), you have setStatus(status='Approved') followed by setStatus('Queued')12:59
vilalifeless: then in send_mp, you check that the mp has already been sent and return early, if two users come here they will both miss the other submission and will both submit no ?13:01
lifelessvila: only one person will be running the email mode13:02
lifelessvila: so its up to lp to prevent in-flight collisions on the metadata13:03
vilalifeless: says who ?13:03
lifelessvila: says me13:03
vilaby email mode you mean --cron ?13:03
lifelessyes13:03
vilaright, then indeed no race :)13:03
=== masklinn_ is now known as masklinn
lifelessvila: try it - run that branch 'feed-pqm bzr'13:16
lifelessvila: and submit it13:16
vilalifeless: wanna approve https://code.edge.launchpad.net/~vila/bzr/cleanup-log-direction/+merge/23382 ?13:18
vilalifeless: trivial13:18
lifelessvila: not trivial at all, but I have already approved it13:19
=== masklinn_ is now known as masklinn
vilalifeless: hehe, feed-pqm sees it but lp not yet :)13:19
vilalifeless: done13:20
vilalifeless: I see the mp status is not Queued on lp, but this can't be set from the web right ?13:22
lifelessright13:22
vilalifeless: using your branch means I can't submit directly myself anymore13:23
lifelessright13:23
lifelessthats the point13:23
lifelessit is submitted now13:23
lifelessin the sense of 'you have done what you need to'13:24
lifelessyou should not have put (vila) in the commit message though13:24
vilalifeless: but I now depend on you before pqm see my submission13:24
lifelessyes13:24
vilalifeless: meh, I see no code to put it there in your branch13:24
lifelessvila: trust me13:25
jamlifeless: thanks for the catch on the 2.2 thing. I recently reworked my layout to handle having 3 stable branches, and accidentally did the work in the 2.2 area. So the default submit was the 2.2 branch.13:25
lifelessvila: change the message, take (vila) out13:25
jammorning vila, /wave lifeless13:25
jamjust heading to breakfast13:25
lifelessjam: moinmoin13:25
vilamorning jam enjoy it13:25
vilalifeless: I can't: Looking for ['Approved'] mps in https://api.edge.launchpad.net/beta/bzr13:26
vilaNothing matched status ['Approved']?13:26
lifelessvila: you can in the web ui, or by passing --queued to feed-pqm13:26
vilalifeless: done13:27
lifelessvila: http://pqm.bazaar-vcs.org/13:30
lifelessvila: and if you want to see where teh code is - look for the format string (%s) %s (%s)13:30
lifelessvila: now, this isn't running fully cronned yet, I need to make a subkey for it or something.13:30
lifelessvila: but13:30
lifelessvila: It would be good to get other people with code to land to use this13:31
vilaright, I found the code.13:32
lifelessgnight13:34
vilalifeless: but I still don't get why you want to introduce a *single* sender (I understand why for people without pqm access), that's just adding another point of failure on top of pqm13:34
lifelessvila: refactoring to remove layers13:34
lifelessvila: checkout lp:pqm13:35
=== mrevell-lunch is now known as mrevell
vilajam: Am I the only one *feeling* pqm slower these days ?14:47
jamvila: not sure, but the new cron script is certainly making my review folder bloat14:47
jamfeed-pqm was bad enough14:47
jamcron adds at least 1 more message... :(14:47
vilakillfiles ftw !14:47
jamwe will now get 7 messages for your cleanup-log-direction, one is your proposal, 2 is your approval, the rest....14:48
jamvila: how do you separate out the automated messages about "queued" from the "review: approve" messages?14:49
jamanyway, I'll survive14:49
jambut certainly I am surprised when I get up and my review folder has 30 new messages14:49
jambut oh, only 5 of them mean anything14:49
vilajam: I don't kill them but since they are in the same thread, it's easy enough to handle them14:51
jamstill a 2.5:1 noise to signal ratio14:52
vilajam: sure, but... wfm :->14:58
* bialix feels unhappy too15:02
spivvila: pqm feels much slower for me too, lately15:03
* vila suspects subunit buffering..... /me whistles15:04
spivvila: random thought: maybe all the verbose subunit details, including log text from passing tests, is part of it?15:04
spivIt emits ~44M of stuff now, which stopped PQM sending me a failure message today :(15:05
vilaspiv: my gut feeling is that the bandwidth is not relevant here but I may be wrong15:05
vilawow, 44M !15:05
vilaspiv: worth a critical bug15:06
spivI suppose it's not too hard to run the experiment...15:06
spivSubmit a branch that changes the Makefile to call date before and after the selftest, and then fail.  (i.e. date; selftest; date; false)15:08
spivAnd then do the same, but remove the --subunit option15:08
spivAnd then compare the times.15:08
spivOh, except I'm not sure if sending of failure messages from --subunit is fixed :/15:09
jamand hope the load is similar both times15:09
spivStill, I guess you could do the second half of my experiment, and just watch existing PQM jobs to find the time for the first half.15:09
spivAnyway, bedtime for me.15:10
vilaspiv: you wish ! I'm sure Vincent wants to play with his daddy *now* :)15:13
jamvila: well, Vincent slept through the night last night15:14
jamI'm guessing he's been asleep for a while :)15:14
jamspiv: have a good evening15:14
vilajam: how do you know that ? 8-)15:14
jamvila: spiv's wife has a baby blog15:15
jamhttp://incrementum.dreamwidth.org/15:16
vilaHa yes15:16
jamsince I have a recent newborn, it is fun to read about someone else's experience15:16
vilahehe, yeah, I know the feeeling: oooh, now *they* are in trouble :-D15:17
vilajam: anyway, from the discussion above, I guess you don't want me to do a merge proposal for yet another update-copyright cleanup ?15:18
vilajam: I'm sure you Approve the idea of pqm-submitting it directly :-D15:18
vilajam: more seriously, is there an easy way to use your plugin to check the copyrights for *all* files ?15:19
jamvila: I think my plugin has an explicit "don't do everything" check which can be disabled.15:20
jamlet me check real quick15:20
jamone option15:20
jamjust disrupt the copyright line of every file :)15:20
jamvila: run "bzr update-copyright"15:21
jamshould be enough15:21
vilajam: you really want me to resurrect my old perl script ? :-D15:21
jamshould do a recursive check-everything-and-update15:21
vilajam: awesome15:21
jamon my bzr.dev it seems to be at about 200 changed, vs 60015:22
jamstill going15:22
vila355 updated15:22
jam$ bzr update-copyright15:22
jamChecked 1183 files15:22
jamUpdated 35615:22
jamAlready correct 38315:22
jamNo copyright 44415:22
vila381 already correct, 444 no copyright15:22
vilahuh ?15:22
jam.png .svg, some .txt don't have copyright statements15:22
vilawe have so many of them ?15:22
jamalso, I only update specific copyright statements, if they aren't the first line, they don't get touched, etc.15:23
jamwe have 1200 files15:23
jamMy guess, though, is the "not first line" thing15:23
vilajam: here is the full list: http://paste.ubuntu.com/414352/15:26
jamvila: a lot of those look correct15:26
jamlots of doc file15:26
jamfiles15:26
vilayup15:26
jamand 'tools' files15:26
jamwe have a source check to ensure .py and .pyx inside bzrlib/*15:26
jambut not elsewhere15:27
jamI'm surprised on the .c .h and _patiencediff_py.py files, though15:27
jamah, not first line15:27
jamthough the #! line is wrong anyway...15:28
jamgiven there is no __name__ == '__main__' line15:28
vilajam: also, http://www.gnu.org/software/hello/manual/texinfo/copying.html says ranges are not allowed15:30
vilaI don;t remember the details, but I'm pretty sure there is a legal reason behind that (but IANAL)15:31
jamvila: meh15:31
jamwe had that, then we didn't, then we did15:31
vilaI've read a discussion about it years ago15:31
jamranges look a lot cleaner15:31
jam2005,2006,2007,2008,2009,2010 is getting really long for some of the files15:31
vilathey sure look cleaner, but lawyers...15:31
vilayeah, they say The copyright `line' may actually be split across multiple lines15:32
jamvila: well, Martin manually editted some to use ranges, I took that as an opportunity to update the plugin15:32
jamI *really* don't want to rehash all 1.2k files now :)15:32
vila:-)15:32
vilajam: pfff, no need to rehash, what I really like with your plugin is that it updates things without trauma for anyone15:33
SamB_XPvila: what about lawyers?15:33
SamB_XPthey can't really argue that 2002-2009 is any less meaningful than 2002,2003,2004,2005,2006,2007,2008,200915:34
vilaSamB_XP: they sometimes do things in a way that makes no sense to me, yet, they have good reasons for that (or not that good, but you get the idea)15:34
SamB_XPit's not like it tells you which parts of the code are copyrighted when either way!15:34
SamB_XPif you wanna know that you've got to use "bzr annotate" or something15:34
vilawho knows, some lawyers recently spend some 7 years arguing about who owns  the Unix copyright...15:35
SamB_XPvila: that's different15:35
vilawhy ? Because they didn't have a VCS ?15:35
SamB_XPthere was actually some so-called "intellectual property" that had actually changed hands somewhere in the vicinity of that case15:35
SamB_XP;-P15:36
SamB_XPI do admit it is kinda pathetic it took 'em 7 years to settle it15:36
vilaSamB_XP: I thought they finally agree that "it" didn't change hands :)15:36
SamB_XPvila: I meant, the trademark on UNIX has been given to that standards body15:36
vilaSamB_XP: yeah, kidding, I stop reading groklaw on a regular basis long ago ;)15:37
SamB_XPvila: me too15:37
vilaSamB_XP: But I'm glad it still exists !15:37
SamB_XPI only looked at it recently because my mom seemed to think something BAD for Linux had been decided in some case15:38
SamB_XPshe didn't have any details, so I looked on groklaw and found out that Novell finally won that very day15:38
SamB_XPbut probably after she'd heard something about the case mentioned on the radio15:38
vilayup, typical clash between the broadcast and peer-to-peer models distribute information :)15:39
SamB_XPhmm, what was the reason they had to delay the ruling? one of the jury-members had an urgent vacation or something ?15:39
SamB_XPvila: well, maybe they were actually talking about what the outcome COULD mean15:40
SamB_XPdepending on what it was15:40
SamB_XPI think my mom said she hadn't been listening very attentively15:40
SamB_XPwas Novell in no particular hurry to win the case or something ?15:41
vilasure, it's easier to re-read a web page than to catch the next broadcast of that news you were listening to with one ear15:42
SamB_XPvila: well, you CAN go online and look for the archived show usually15:43
SamB_XPor news segment or whatever they call those things15:43
SamB_XPit's not like, you know, there are for-profit stations with news on the radio anymore ;-P15:43
vila:)15:44
SamB_XPat any rate my mom doesn't listen ...15:44
SamB_XP... but in any case, a lawyer who prefers the listing of all years to a listing of ranges is, IMNSHO, just being silly and paranoid15:45
vilahttp://www.gnu.org/prep/maintain/html_node/Copyright-Notices.html#Copyright-Notices15:46
SamB_XPI'm not even sure why it's helpful to have anything but the most recent years (and lots of places they don't)15:46
vilabut they don't explain *why* ranges should not be used15:46
SamB_XPciting GNU is not a good way to convince anyone that the idea isn't silly and/or paranoid15:47
vilathe url above explains that they indicate when older versions might theoretically go into the public domain15:47
SamB_XPyeah, okay, true15:47
vilaI don't care that much, it's just that I don't want us to do the bad thing just because we didn't know15:48
SamB_XPbut they're not useful for determining when any part of the version of the source you're seeing now will be in the public domain15:48
SamB_XPanyway, will any of it EVER be?15:48
vilaenough law for me, back to coding ;)15:48
SamB_XPdisney always pushes back the copyright expiration just in time, don't they ?15:48
viladon't start me on that :)15:48
SamB_XPheheehe15:49
jamvila: the other reason I didn't run' bzr update-copyright' on everything was to avoid artificially adding 2010 to all the files. Since I don't think updating a copyright line would be considered a valid code update :)15:49
vilajam: point taken, end of the experiment :)15:50
vilajam:  as said above, I find the workflow implied by your plugin really nice, the only caveat if that merging bzr.dev in a loom tend to trigger updates and I was looking at an rough estimate of files that still needed to be updated15:54
jamvila: I wouldn't block it if you want to just run it15:54
jamProbably some of the changes are "spurious" in that it is simple formatting15:55
jamalternatively do this15:55
jamtake an old bzr.dev15:55
jammerge in a new bzr.dev15:55
jamhave those files get updated, and submit it15:55
jamthen it will only touch actually modified files15:55
jamyou could merge bzr.dev into, say the 2.0 branch15:55
vilahmm, that makes me realize that I need to install the plugin on my other dev machine :015:57
sabdflhttp://hginit.com/ looks fantastic16:14
jamvila: graph.is_ancestor() is probably a really painful way to do it. It is a heads() graph search for every pair...16:19
vilajam: I know, but what is the cheap alternative ?16:23
jamvila: graph.find_unique_ancestors() or there is another, let me check16:23
jamGraph.find_difference()16:24
jamI think you want to do:16:24
jaminteresting_set = Graph.find_unique_ancestors(wanted_tip, [unwanted_tail])16:24
jamx = merge_sort()16:24
jamfor rev in x:16:24
jam  if x not in interesting_set:16:24
jam    continue16:24
vilajam: haa, I searched for something like that but the name didn't ring a bell16:25
vilasabdfl: it has mentioned here (or was it the ML)  when it came out, various reactions, summary: except for the graphical (nice) look, our various docs covers the subject but yet another friendly introduction can be tried, people found the humour a bit too distracting16:29
=== IslandUsurper is now known as IslandUsurperAFK
vilas/has/was/16:29
vilasabdfl: thanks for the heads-up anyway16:30
sabdflsure16:30
sabdflmy brother says:16:30
sabdfl(16:14:38) Brad Shuttleworth: great marketing for his hg-apps16:30
sabdfl(16:15:05) Brad Shuttleworth: the bzr stuff is *really* dry, and is all "you can do almost anything you want" rather than what *i* want to know16:30
sabdfl(16:15:16) Brad Shuttleworth: "how should i do it, how does it make my life easy".16:30
sabdfli think he's right16:30
sabdflfor 3.0 we need to tighten up the UI, the way we prioritise how people learn about the tool16:31
sabdflour stuff is written from the perspective of people who already love it16:31
sabdflnot from the perspective of people coming from svn or cvs16:31
vilayeah, I mentioned having a 'what's next' command too for beginners (or even newcomers) that could propose commands based on the state of the current tree16:32
vilaor interactive tutorials...16:33
=== verterok is now known as verterok|lunch
=== deryck is now known as deryck[lunch]
=== verterok|lunch is now known as verterok
vilajam: thanks for the heads-up, I did a real-life test (wrong) and didn't notice a bug impact on performance. Redoing it more carefully reveals a *huge* penalty if using only is_ancestor17:34
jamvila: yeah, if you had say 100 revs to be displayed, it would be bad17:35
jamalso, Graph.heads() is O(N^2) IIRC17:35
jamso is find_unique_ancestors() but at least you only do it once17:35
vilayeah, I wanted to do something like that if needed. It's needed :)17:36
vilait's still a bit dirty to calculate the graph difference and iterate anyway, but well.. enough on that17:36
vilajam: pushed17:38
jamvila: well, iter_merge_sorted can be given a range17:38
jamor you are already inside there17:38
jamanyway, you still need to sort them17:38
vilaI am and I need a different stop_rule (hackish)17:39
jamvila: on the plus side, bzr-history-db, can17:39
jama) Compute the graph difference cheaper17:40
vila:-P17:40
jamb) compute only a partial merge_sort17:40
jamc) already hooks in there, and just needs to support the new rule17:40
vilajam: gimme that in core :)17:41
jamvila: respond to my comments off-list :)17:42
vilaI should... I really should...17:42
=== IslandUsurperAFK is now known as IslandUsurper
=== deryck[lunch] is now known as deryck
=== beuno is now known as beuno-lunch
jamany loggerhead hackers around18:19
jmljam, beuno-lunch is probably at lunch, and mwhudson is a couple of hours away18:29
jmlI know this is probably in a faq somewhere, but why does PQM say that it's the author of the commit to do the merge?18:29
jamjml: pqm says it is the committer, which is accurate, I don't think it sets --author18:30
jmljam: thanks.18:30
jamthe primary reason is that we don't send information for pqm to use to set the real committer18:30
jamor author18:30
allquixoticHello! Using bzr+ssh, what is needed from ssh to make it so that the root directory when logging in to ssh is the bazaar depot home, so I can check out files with bzr+ssh://my-server.com/my_project instead of bzr+ssh://my-server.com/svr/bzr/my_project ?18:31
jamallquixotic: look into the 'bzr_access' script18:37
jamin contrib/bzr_access18:37
jamhttp://bazaar.launchpad.net/~bzr-pqm/bzr/bzr.dev/annotate/head%3A/contrib/bzr_access18:37
allquixoticjam: that has to be used from the client side?18:41
jamallquixotic: you set up bzr_access on the server18:41
=== beuno-lunch is now known as beuno
beunojml, jam, hi, what's up?19:13
jambeuno: trying to get my head around some of the loggerhead code19:14
jamspecifically "get_view()" does something with a revid and a start_revid19:15
jamand I don't quite understand what it is trying to do there19:15
beunojam, without even looking, isn't that to batch the log view?19:15
jamwell, it seems to play pretty fast-and-loose with which value it uses at a given time19:16
jamand pretty much every time I check start_revid == revid19:16
jamhmmm...19:19
jambeuno: so I'm trying to improve perf19:19
jamand I've found some interesting bits19:19
jamwith my bzr-history-db plugin, and some reworking of History19:19
jamI can get to render bzr.dev in about 0.5s19:20
beunoI've been following the thread with a sense of shame for not participating19:20
beunowow, that's amazing19:20
jamthe next bit I noticed19:22
jamwas that we always walk the full mainline19:22
jambut we only end up displaying the last 20 revs19:22
jamso I can shave maybe another 100ms by skipping that19:22
jamhowever, I just saw that I lose the "Older>>" and "Newer>>" links19:23
jambeuno: do you know what causses those to get showwn?19:24
jamah 'navigation' is the object19:24
jamdo we actually pay attention to the page_position / page_count anymore?19:25
jamI guess it isn't terrible.19:28
jamOn emacs it is 0.467s vs 0.339s to render that page19:28
jamweird, after navigating, it becomes 1.318s19:29
jamso if start_revid is set, it slows way down19:29
jamand now, even without it I"m at 900ms19:29
jamvery weird19:29
jami'm guessing a cache is getting filled out and causing gc overhead, but I'm guessing19:30
jamah, I see now19:30
jamchanges => 300ms19:30
jamchanges/99865 => 866ms19:30
jamchanges/99865?start_rev=99865 => 1300ms19:30
jamit is being slow on a dotted => revid lookup19:31
jamwhich is a bit weird19:31
beunohm19:32
beuno(sorry, in the middle of firefighting)19:32
beunodotted revnos have always been the slow point I think19:32
jamI found a bug in my code19:39
jambeuno: now changes => 350ms, change/99885 => 350ms, changes/99885?start_revid=99885 => 350ms19:41
jam\o/19:41
jambzr-history-db was finding the map quickly, and then continuing to search the rest of history19:41
beunoah19:43
beunojam, the start_revid is also used to diff revisions IIRC19:44
jambeuno: so how does loggerhead deal with caching a given branch, and handling the 'stateless' nature of HTTP?19:47
beunolets excersize my memory19:48
beunowe use the LRU cache for some bits19:48
beunoand fall back to sqlite19:51
jambeuno: but you basically instantiate a History object per request, right?19:51
beunoyes19:52
jamok19:52
jamcause I got rid of both caches in History :)19:52
beunoin loggerhead/apps/branch.py19:52
beunoget_history19:52
jamRevInfoMemoryCache and RevInfoDiskCache19:52
beunoah, heh19:52
beunothat's pretty mind-blowing  :)19:52
jamall about data-structures19:53
jamyou have to create ones that match what you want to get out of them19:53
jambeuno: loggerhead.zptsupport.expand_into19:54
jamthat is the take a template, turn it into html code?19:54
beunoyes, although that's mwhudson's code, so he can answer with more conviction than me19:55
beunoit looks like it19:55
jamok, I was wrong, I had a different bit here20:00
jamIf I stop iterating history at 100 revs20:00
jamthings are fast20:00
jamotherwise emacs trunk takes 6s20:00
jamvs 300ms20:01
jamwhich is why I wanted to stop early20:01
jambut it seemed to mess up the page navigation code20:01
beunoit needs to know the ranges20:01
beunoso maybe you can get $current+120:01
beunoor $current+batch_size20:01
jamwell, you seem to need to know + and -1 page20:03
jamwhich is a bit tricky to get Newer by 1 page without starting from the 'start_revid'20:04
jambut I could start at start_revid, and stop once I've found revid + 1 page20:04
jamIt means looking at 10k old revisions would be slow20:04
jambut I doubt people do that often20:04
jamand still faster than today :)20:05
jambeuno: the other bit is how to handle the 'merge_points' stuff20:06
jamI think I understand the point of it20:06
jambut either it is buggy, or I'm actually misunderstanding20:06
jamspecifically, if I click on a merged revision20:06
jamI can sometimes see a link back to the rev that merged me20:06
jambut generally not if that revision was trunk20:06
jamfor now, I've disabled merge_points, because it was the one bit of code that I can't cheaply answer via regular bzrlib apis which bzr-history-db just makes faster20:07
jamI'd have to actually query the new db20:07
beunoI think dropping that is fine for now20:08
beunoit's intersting to navigate up20:08
beunobut not crucial20:08
mtaylorhey all ...20:08
mtaylorbzr: ERROR: exceptions.ImportError: cannot import name XMLSerializer20:08
mtaylorhappened to me after I upgraded20:08
james_wis that the "this revision was merged to the mainline at revision" stuff?20:09
beunojames_w, yes20:09
beunoand hi  :)20:09
jamjames_w: morning20:09
james_wmtaylor: could you run whatever you did again with -Derror and pastebin the traceback?20:09
james_whi beuno, jam20:09
mtaylorjames_w: yes!20:09
james_wI like that in loggerhead, and would like to be able to query that sort of information in bzr often20:09
jamjames_w: so right now all revs have a merge_points20:10
jamhowever, it seems buggy in its implementation20:10
jamnamely, if you click on a directly merged rev, it doesn't seem to show20:10
jamfor example, expand the first revision here: http://bazaar.launchpad.net/~bzr-pqm/bzr/bzr.dev/changes/5129.1.320:10
jamIt *should* show that it was merged into bzr.dev 515820:10
james_wyeah, I'm fine with losing it for other improvements, but was just piping up to support re-implementing it on top of faster bzrlib APIs that would then make it available in the bzr client :-)20:10
beunojam, but if you go to the revision: http://bazaar.launchpad.net/~bzr-pqm/bzr/bzr.dev/revision/5129.1.320:11
beunoThis revision was merged to the branch mainline in revision 5158.20:11
beunoand you can click to it20:11
beunowhich is the interesting bit I think20:11
mtaylorjames_w: http://pastebin.com/gsd1RQbJ20:12
jamhowever, it is present here:20:13
james_wmtaylor: how do you have bzr installed on that machine?20:13
jamhttp://bazaar.launchpad.net/~bzr-pqm/bzr/bzr.dev/changes/5080.2.120:13
beunoodd20:13
mtaylorjames_w: installed from source -it's a centos5 box20:13
beunojam, and yes, feels broken20:13
jambeuno: ah sorry, the link is present there is pointing to another merge20:14
jambut if you follow *that*20:14
jamhttp://bazaar.launchpad.net/~bzr-pqm/bzr/bzr.dev/changes/4797.33.420:14
jamyou can see both arrows20:14
jamMy guess is something weird with _simplify_merge_points20:14
jamjames_w: the main prob in bzrlib is that we only have child => parent mappings20:14
jamto find parent => child, you have to walk all the revs20:14
james_wyeah20:14
jambzr-history-db has them20:14
jamand you built them during the 'load_whole_history' step20:15
jamwhich I'm trying to get rid of :)20:15
james_wyou can answer the question reasonably cheaply using Graph, but not from the cli20:15
james_wmtaylor: hmm, something is odd20:15
mtayloryeah20:15
jamjames_w: so with my current implementation, I can probably answer "what mainline rev merged X" fairly cheaply, but it doesn't scale into merges-of-merges20:16
james_wmtaylor: hoe does python -c "from bzrlib.xml_serializer import XMLSerializer" fare?20:16
jamdoes that make sense?20:16
james_wyeah, I think so20:16
jamwould that be a reasonable tradeoff?20:16
mtaylorjames_w: quite poorly20:16
jamit means that when you find the revision that andrew merged into 2.1 and then into bzr.dev20:16
mtaylorImportError: cannot import name XMLSerializer20:16
james_wyeah, I'm usually after "does this release contain this revision" type stuff20:16
jamyou would see when it landed in bzr.dev, but not a direct link to the 2.1 branch20:16
jamunless you were looking in the 2.1 branch :)20:16
james_wmtaylor: python -c "from bzrlib import xml_serializer" ?20:17
edayhttp://pastebin.com/iZNAaZ5c any quick thoughts/fixes on this error?20:17
james_whi eday20:17
edayjames_w: hi!20:17
mtaylorjames_w: that works20:17
james_wgosh, when it rains it drizzles20:17
edaymtaylor: oh, you're here20:17
mtaylorjames_w: should I just delete the install on the box and go from scratch?20:18
jammtaylor: any chance you have different versions of python on your path and it is getting confused about ti?20:18
jamit20:18
james_wmtaylor: I think it's something do to with elementtree20:18
mtaylorjam: not that I can find ...20:18
jambad marshal data20:18
jamsure looks like something wrong with .pyc files20:18
* mtaylor deleted all the .pyc files20:18
mtayloroh - hrm20:19
james_wmtaylor: can you import elementtree and cElementTree ?20:19
* mtaylor is very confused - this box was working perfectly and then, all of a sudden, it had bzr 1.14 installed 20:20
mtaylorjames_w: yes20:20
james_whrm20:20
james_wI don't see yet how you can import bzrlib.xml_serializer but not have XMLSerializer in it20:20
james_wmtaylor: could you pastebin your /usr/lib64/python2.4/site-packages/bzrlib/xml_serializer.py?20:21
mtaylorjames_w: very odd - I moved bzrlib out of the way and installed again and now it works20:21
james_whmm, that is odd20:22
mtaylorjames_w: http://pastebin.com/hfWnFr7G20:22
mtaylorjames_w: there's what was there20:22
james_waha20:23
james_wthat's out of date or something20:23
james_wfor some reason that file wasn't in sync with the rest of your bzrlib20:23
mtaylorjames_w: so I installed over top of the 1.14 that was there - perhaps setuptools decided to not install some of the bits of 2.120:24
edayjam: the bad marshall data went away with 2.1.1 upgrade. strange thing is it had just stopped working, even after removing .pyc files20:24
james_wthat seems both unlikely and likely at the same time20:24
james_wyou are both up and running again now?20:25
* mtaylor is20:25
jammtaylor: setuptools doesn't delete things that are already there20:25
jamand possibly a perms issue for overwritting it?20:25
* james_w goes back to using your code instead then20:27
* mtaylor _so_ prefers packages20:27
=== grahal_ is now known as grahal
jambeuno: \o/ changing it to number until revid + pagesize +1 worked. It only takes 400ms to show the tip of emacs trunk, but I still get the navigation links20:31
beunojam, I'm almost in tears knowning that you're working on this  :)20:31
beunojam, so, I should reply to igc's thread20:34
beunobut my original idea was to make loggerhead a layer to serve anything bzr over web20:34
beunoie, it would always return jsons20:35
beunoit would come with a set of templates that renders it and makes it standalone20:35
beunobut it can be very well used for a hosting facility of bzr branches that needs to extract information and display on a web ui  :)20:36
jamside note20:36
jamI believe you always open the branch from scratch each time20:36
jamis that correct?20:37
jam(It seems to be done in apps/transport/__call__)20:37
beunoyes20:37
jamWhich means that any caching that might have been done at the Branch level would be lost20:37
jamwhich means that my changes will destroy loggerhead w/o my plugin... sigh20:37
jamsome changes would have done ok, as long as the Branch caches stayed in effect20:38
jamslow to start, but decent at N+1 requests20:38
jammaybe add an lru cache of branch objects?20:38
jamthey aren't very thread-safe, though20:38
beunodon't we do that already?20:38
jambeuno: transport.py BranchesFromTransportServer __call__20:39
jamalways calls open_from_transport20:39
jamBranchWSGIApp was always lock_read and unlock around doing stuff20:39
jamwhich I was hoping to push up higher20:39
jambut doesn't really matter if we are getting a completely separate Branch object each time.20:40
beunoah. we stick graphs in the LRU cache20:40
jamright20:40
jamwhich is what I'm getting rid of20:40
jamin favor of just using Branch apis20:40
jamwhich bzr-history-db was overriding to make fast20:41
jamI was hoping to get to the point where I could say20:41
jam"you can use loggerhead, and install bzr-history-db as an accelerator if you need it"20:41
jambut I'd have to bring back the old code to make that feasible20:41
jamand then change the code back to querying primarily on loggerheads cached objects20:42
beunowell, if you're code makes such a difference, I think I'd be inclined to include it by default20:42
beunonot sure why we wouldn't want that20:42
beunoare you using sqlite?20:42
jambeuno: atm I'm using sqlite21:10
jamthe goal was to simplify loggerhead21:11
beunoright, so that would make sqlite a dependency21:11
jamswitch to standard bzrlib apis21:11
jamand introduce this new bzrlib accelerator plugin21:11
jamwhich long-term may not use sqlite21:11
jambeuno: sure, but loggerhead stores its existing cache in sqlite if you use anything on disk21:11
jamI guess the it can run with just in-memory21:11
beunoyeah, ot checks for sqlite, otherwise it defaults to not caching outside of the LRU cache21:12
jambeuno: sure, though getting rid of the in-memory cache would be a big win for memory consumption...21:13
beunoabsolutely21:14
jamthough not that huge maybe...21:15
jamI'm seeing 120MB for just emacs/trunk21:15
jamand it only goes to 140MB when I get a second branch21:16
jamI guess that is vs 30MB, with my code, though21:18
jamStaticTuple helping there...21:18
jamPeng: /wave21:18
* jam needs food, bbiab21:24
james_wabentley: is there a preferred way to check if your cwd is a pipeline or a plain branch?21:39
james_wI get the impression that's not really so much of a distinction with pipelines21:40
abentleyjames_w, plain branches are pipelines with a length of 1.21:40
james_wright21:40
james_wso what's the preferred way to determine if there are previous pipes for the current branch?21:41
james_wcli-accessible that is21:42
abentleyjames_w, create a PipeManager for the branch, and execute get_prev_pipe21:42
abentleyjames_w, from the commandline, run "bzr pipes".21:43
lifelessjam: so sqlite is single client22:04
lifelessjam: but loggerhead is multithreaded;22:04
jamlifeless: sqlite is multi-reader 1 writer22:33
jambut the writer is supposed to only block when the 'commit' step happens22:33
jamnot for the whole transaction22:33
lifelessjam: thats not a complete description22:40
lifelesshttp://www.sqlite.org/lockingv3.html22:40
jamlifeless: sure, I've read the doc22:40
jamWe'd have to see the specific impact in practise22:41
jamand see how to work around it.22:41
jamFor launchpad's instance, we could just move the backend db to postgres and not worry about concurrancy22:42

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