/srv/irclogs.ubuntu.com/2009/08/24/#ubuntuone.txt

jblountWhen I run "ubuntuone-client-applet" in a terminal, I see a notify-osd popup saying "There was a fatal error in Ubuntu One. This mayb be a bug in the software. Please click on the Ubuntu One icon in your panel to report a bug."13:36
verterok--13:37
verterokGuillermo Gonzalez13:37
verterok<http://launchpad.net/~verterok>13:37
verterok--13:37
verterokGuillermo Gonzalez13:37
verterok<http://launchpad.net/~verterok>13:37
verterok--13:37
verterokGuillermo Gonzalez13:37
verterok<http://launchpad.net/~verterok>13:37
verterokooops13:37
jblountI've flushed all the settings and reinstalled a few times to try to sort that.13:37
jblountverterok: :)13:37
verterokjblount: hi13:37
jblountverterok: hi13:37
verterokjblount: could you check the logs?13:37
verterokjblount: ~/.cache/ubuntuone/log/syncdaemon.log13:38
jblountverterok: tailing now...13:38
jblountverterok: http://pastebin.ubuntu.com/258640/13:38
jblountverterok: The oauth log: http://pastebin.ubuntu.com/258641/13:39
verterokjblount: could you paste a few more lines :)13:39
verterok?13:39
verterokjblount: looks like a loop13:39
jblountverterok: On the sd log?13:40
verterokjblount: yeap13:40
verterokjblount:there is an error in the oauth logs13:40
jblountverterok: http://pastebin.ubuntu.com/258642/13:40
jblountverterok: Yeah, I wonder if that is the problem-causer13:41
verterokjblount: syncdaemon is running, pleae confirm : ps aux | grep ubuntuone13:41
verterokjblount: I'm sure we have a bug report with a similar traceback13:42
CardinalFangMoin.13:42
jblountverterok: "/usr/bin/python /usr/lib/ubuntuone-client/ubuntuone-syncdaemon" is running13:42
jblountCardinalFang: j013:42
verterokjblount: so the oauth dbus thingy is having problems, I can't help with that, could you paste a bit more of the oauth logs?13:44
jblountverterok: Sure, http://pastebin.ubuntu.com/258643/ is all of it13:45
=== rmcbride_ is now known as rmcbride4
=== rmcbride4 is now known as rmcbride
verterokjblount: please, check the contents of /etc/xdg/ubuntuone/oauth_urls13:49
verterokjblount: you should have a [default] section with 4 rows13:50
Chipacaverterok: that should've probably ben [DEFAULT]13:50
Chipacaverterok: AFAIK, DEFAULT is special, but default is not13:50
Chipaca(special as in "magically appears in all sections")13:51
verterokChipaca: uh? oauthdesktop isn't usign configglue, just ConfigPArser13:52
Chipacaverterok: that's CP magic, not CG magic13:52
jblountverterok: I don't seem to have this anymore. I did fiddle with it at some point last week trying to do something unrelated, how can I bring this back?13:53
Chipaca“Know Thy Standard Library” :-D13:53
=== chs_ is now known as chs
verterokChipaca: :)13:53
verterokjblount: reinstall the client package maybe?13:53
jblountverterok: Will try again, although I think I have since having this problem.13:54
Chipacait's probably considered a configfile13:54
Chipacayou might have a oauth_urls.dpkg.new or something13:54
verterokChipaca: but when I change config files, apt barf about what version I want to keep13:54
jblountChipaca: donde?13:54
Chipaca/etc/xdg/ubuntuone/oauth_urls.dpkg-new ?13:55
Chipacajblount: qué te hacés el hispanoparlante, ahora! :)13:55
jblountChipaca: :)13:55
jblountChipaca: This file, it doesn't come back with reinstall, so I guess it is treated like a config file. I also don't have a .dpkg-new in that directory (/etc/xdg/ubuntuone).13:56
jblountJust "auth_registration.d" and "syncdaemon.conf"13:56
verterokChipaca: a dpkg-reconfigure?13:56
Chipacaverterok: don't think so13:57
Chipacajblount: dpkg -P python-ubuntuone-client; apt-get install python-ubuntuone-client13:57
* jblount is once again learning that he shouldn't fiddle with random files13:57
* Chipaca goes for some tea13:59
verterokjblount: he next time you need to change a file in /etc/xdg/foo/bar.conf, just add a new file in: ~/.config/foo/bar.txt13:59
verterokjblount: in the case of u1, ~/.config/ubuntuone/ :)13:59
verteroks/he/the/13:59
jblountverterok: Thanks!13:59
verterokjblount: if the app is using xdg correctly it should pick the file in your home13:59
jblountverterok: Chipaca 's suggestion seems to have worked, I just went through the oauth process and sd seems to be working now.14:02
verterokjblount: cool14:02
dobeymeh, oauth :(14:51
aquariusthisfred, CardinalFang: so, afaict, things we need to do for desktopcouch for the freeze (which statik would like finished today if possible): make dc.records use oauth (lp:~sil/desktopcouch/dc-records-oauth, blocked on couchdb patch), make pairing exchange oauth tokens (chad), make DC startup kick off continuous replication (chad, bug 416581), work out how to get cloud oauth tokens into DC (me/thisfred). Is that it?14:54
ubottuLaunchpad bug 416581 in desktopcouch "Start replication to paired servers on desktopcouch startup" [Undecided,New] https://launchpad.net/bugs/41658114:54
jblountMEETING BEGINS15:00
jblountHAPPY MONDAY SAY ME IF YOU WANT TO OR IF STATIK IS THE BOSS15:00
statikhaha15:00
jblountstatik: :)15:01
statikme15:01
aquariusme15:01
teknicome15:01
jblountme15:01
rodrigo_me15:01
teknicodobey, urbanape?15:02
dobeyme15:02
statikCardinalFang ?15:02
statikurbanape is out being famous today15:02
CardinalFangme15:02
statikDONE: desktopcouch merges, packaged couchdb-0.10 branch, landed chads spawning branch and broke edge rollouts15:02
statikTODO: Erlang packaging work (enabling tests) to unblock main inclusion of couchdb15:02
statikBLCK: nope15:02
statikaquarius, you have the stick15:02
aquarius⚀ DONE: talk to chad about pairing app actually doing oauth token exchange and save into management db and DC startup kick off continuous replication to all paired servers; discover that chad is doing all my work; win15:02
aquarius⚁ TODO: piston oauth in snowy; learn about process groups; review desktopcouch changes from past week;  be baffled as to why oauth isn't working but only sometimes; talk to cardinalfang/thisfred about what remains to be done for desktopcouch15:02
aquarius⚂ BLOCKED:  couchdb patch which lets OAuth read users from the ini file doesn't seem to work15:02
aquarius"I ask you to kill teknico and you can't even do that one simple thing" - Robert Vaughn, Superman 315:02
teknicoDONE: installed and configured the new Dell notebook, investigated a problem in markgsaye's phone_setup branch, started a branch to fix the problem15:03
teknicoTODO: completing and landing the mentioned branch, working on the phones web ui15:03
teknicoBLOCKED: none15:03
tekniconext: jblount15:03
teknicosuperman kill me? ha!15:03
jblountDONE: reviews, fixed client (reminded self to stop fiddling with random config files that in my home directory)15:03
jblountTODO: LAND BRANCHES THAT FIX THE WEB UI, take Tuesday and .5 of Wed off15:03
jblountBLOCKED: nope15:03
jblountrodriogo_: rocknroll15:03
rodrigo_• DONE: Tomboy default sync server work. Started adding url fields to evo-couchdb contacts. Played a bit with liboauth15:03
rodrigo_• TODO: Add more tests in couchdb-glib test suite. More openSUSE packaging. Add social services accounts config to about-me. Talk to Ara about writing mago tests for evo-couchdb. Propose couchdb-glib/evo-couchdb for GNOME 2.29. Store UUIDs for postal addresses. Conflict resolver tool in pair tool. oAuth authentication and signing of all couchdb-glib requests. Finish adding URLs to contact records in evo-couchdb15:03
rodrigo_• BLOCKED: none15:03
rodrigo_next: dobey15:03
dobey☭ DONE: Finished #330769, Buenos Aires sprint and back15:03
dobey☭ TODO: Preferences dialog, Fork OAuth15:03
dobey☭ BLCK: None.15:03
dobeyCardinalFang: surprise!15:03
dobeyand fear15:03
* aquarius laughs15:04
CardinalFangDONE: Vacated.  Accidentally thought about d-c replication and worked on that.15:04
CardinalFangTODO: Make advertisement/replication daemon.15:04
CardinalFangBLOCKED: OAuth is still a mystery.  Maybe this doesn't block.15:04
dobeyand an almost fanatical devotion to the pope15:04
teknicothe pope with an eye15:05
jblountMEETING ENDS15:05
rodrigo_hey dobey, how was Buenos Aires? practiced your Spanish? :)15:05
CardinalFangWell, I do admire Alexander Pope mightily.15:05
aquariusrodrigo_, good work on the liboauth stuff :)15:05
statikrodrigo_, did you see the blog post about macaco contacts integrating with couchdb yesterday?15:05
rodrigo_aquarius: well, nothing done yet, just trying to understand the liboauth API15:05
rodrigo_statik: no, in planet ubuntu?15:05
dobeyhaha, oauth15:06
dobeyrodrigo_: a little spanish, not much time outside the hotel though15:06
aquariussome dude suggested an ubutnu one service that tracks your laptop, too, which was interesting15:06
rodrigo_aquarius: track it how?15:06
CardinalFang"Last IP address is:  foo."15:06
rodrigo_dobey: you had at least some good meat, didn't you?15:07
statikrodrigo_, http://www.themacaque.com/?p=22615:07
dobeyrodrigo_: yeah, we went to the meat emporium on monday15:07
rodrigo_statik: SteveA and I talked with him some weeks ago, I even sent him a mail but had no answer, so good he keeps working on it15:07
aquariusrodrigo_, http://jldugger.livejournal.com/32566.html15:07
statikrodrigo_, i registered on the site and left a comment talking about desktopcouch, but it hasn't been moderated yet15:07
* aquarius goes for a cigarette before hassling thisfred and cardinalfang for a full list of what needs doing for a DC 0.3 release15:07
rodrigo_aquarius: ah, cool, anti-theft :D15:08
* CardinalFang interprets that as an invitation to think about it.15:08
rodrigo_statik: yeah, he should use desktopcouch15:09
dobeyhrmm15:12
thisfredaquarius: a cool idea, certainly, but needs some major changes: since ubuntuone needs a logged in user to run, the thief will have gone "WTF is this Umbongo? I'll format and install windows, before ubuntuone would have the chance to report an IP.15:13
thisfredand this, ladies and gentlemen of the jury, is why we need ubuntuone in the kernel!15:14
thisfred;)15:14
aquariusthisfred, CardinalFang: so, afaict, things we need to do for desktopcouch for the freeze (which statik would like finished today if possible): make dc.records use oauth (lp:~sil/desktopcouch/dc-records-oauth, blocked on couchdb patch), make pairing exchange oauth tokens (chad), make DC startup kick off continuous replication (chad, bug 416581), work out how to get cloud oauth tokens into DC (me/thisfred). Is that it?15:14
ubottuLaunchpad bug 416581 in desktopcouch "Start replication to paired servers on desktopcouch startup" [Undecided,New] https://launchpad.net/bugs/41658115:14
thun_thisfred: No, the kernel does not survive a install windows.15:14
thun_thisfred: it *has* to go into the BIOS!15:14
CardinalFangthisfred, Yeah, but we'd have to lower the Python stack space too far.  :(15:14
thisfredthun_: yeah I understand that: but likely the thief would boot the machine at least once15:14
thisfredbefore reinstalling15:14
rodrigo_statik: I just submitted patch for tomboy with u1 as default server. At the end, discussing with Sandy we decided not to allow several sync servers, since tomboy is not ready for that, so it just defaults to having u1 as default. For more than one sync server, it will be done in next cycle15:15
thisfredthun_: but +1 on ubuntuone in the BIOS15:15
thisfred:D15:15
dobeylikely the thief would steal your information before wiping the drive and selling it on ebay15:15
CardinalFangthisfred, Though, think about what a system desktop-couch would get us.15:15
* thun_ would be happy to get a kde version first:-)15:15
aquariusrodrigo_, they're going to ship tomboy in gnome with u1 as default sync server?15:15
rodrigo_aquarius: no, it's a patch for our package15:15
dobeylikely, your laptop is probbly suspended or in hibernation, and so you are already logged in anyway15:15
aquariusrodrigo_, oh, right, heh.i thought: blimey. :)15:15
rodrigo_aquarius: I didn't even suggest Sandy to accept the patch :D15:16
dobeythough likely, the thief will probably be smart enough to not have it hit the network when thieving your data off the disk, before wiping it clean and stuffing it on ebay15:16
statikrodrigo_, that is great15:16
CardinalFangaquarius, I can't get both pairing+oauth and the replication thing done in the next 8 hours.15:16
dobeyis liboauth the C library version?15:17
thisfreddobey: you'd be surprised. Most people who feel they need to resort to stealing physical objects aren't geniuses15:17
CardinalFangOne of them, sure.15:17
rodrigo_statik: well, I would have liked to not lose that much time trying to make it work with several servers, to just submit such an easy patch (https://bugs.edge.launchpad.net/ubuntu/+source/tomboy/+bug/416865), but well, it's done now :)15:17
aquariusCardinalFang, that's why I'm trying to nail down the list, so we can divide up the work ;) First thing is: is there anything else that needs to be on that list and isn't? (thisfred, statik, your comments on that invited too)15:17
ubottuLaunchpad bug 416865 in tomboy "Need to have ubuntuone as default sync server" [Undecided,In progress]15:17
rodrigo_dobey: yes15:17
thisfreddobey:  If they were they'd be stealing intellectual property. That's where all the big money is, I hear. ;)15:17
dobeythisfred: exactly. though you can't really sell open source IP to anyone for any big money15:18
dobeyor i would already have a house or 515:18
statikaquarius, i'm working on unblocking couchdb going into main by enabling tests in the erlang packages, and am standing by to build you a new couchdb package when we get a fixed oauth patch15:18
rodrigo_aquarius: the latest couchdb package in karmic includes the changes feed?15:19
thisfredaquarius: I can't think of anything else, though I envision going through the list itself may sprout a few side items15:19
rodrigo_aquarius: well, or the one in our PPA, which I think was the one being updated this morning15:19
aquariusrodrigo_, certainly the one in our ppa does. I'm not sure about whether that's actually in karmic or not yet. (statik will know)15:19
rodrigo_ah ok, that's enough for testing15:19
statikaquarius, it's in our beta ppa now15:19
dobeydamnit15:19
statikrodrigo_, it's not the global _changes feed15:20
rodrigo_statik: it's per database?15:20
dobeymeh15:21
* dobey hopes autogen works this time15:22
dobeystupid hard disks failing15:22
statikrodrigo_, i'm not quite sure15:23
dobeyhrmm15:27
rodrigo_aquarius: what's the url for the changes feed?15:28
aquariusrodrigo_, http://localhost:portnumber/dbname/_changes15:29
aquariusor _changes?feed=continuous for continuous updates15:29
rodrigo_aquarius: seems to not work for me then, I guess I don't have the latest15:30
* rodrigo_ checks15:30
rodrigo_ah, the db didn't exist :D15:30
aquariusstatik, so, I suspect, we won't have all this stuff finished today, so no dc0.3 today :(15:36
statikaquarius, maybe we can do a 0.3pre with whatever we can get finished today15:42
aquariusstatik, yep; jan is planning to look at the patch in an hour or so15:42
thisfredaquarius: so16:10
thisfredI'm thinking reuse the keys to the filesync car16:10
aquariusagreed entirely16:10
aquariusbut...can you sign up for u1 data without u1 filesync?16:10
thisfredwhich everyone will have after they installed u116:10
thisfredaquarius: not in this alpha you can't is my thinking16:10
aquariuskk. So, then, keys already exist. In order to sync your data with U1, then, you just need to run something on the desktop.16:11
aquariusMy thought is: add a button to the pairing app with "pair with Ubuntu One" on it.16:11
thisfredaquarius: yes, that's a logical enough place for now16:11
thisfredand maybe forever16:12
aquariusand that button would...get the keys from the keyring and write a paired server record for U116:12
aquariusand that's it?16:12
thisfredI really like that it seems we're gonna be able to treat it just like any other pairing almost all of the way16:12
aquariusthat's the plan16:13
thisfredaquarius: yes, then the other side needs work16:13
aquariusthat way U1 is not magic and special16:13
aquariusother side?16:13
thisfredcloud16:13
aquariuswhat work does it need?16:13
aquariusreplication needs to readch out and create databases *anyway*16:13
thisfredwe need a way to put those keys in the .ini/_users db16:13
thisfredwhen a user signs up16:14
aquariuswhy? just put 'em in there when the punter first signs up for u1.16:14
thisfredright16:14
thisfredthat's what I mean16:14
aquariusI'm not sure where those keys are created16:14
thisfredbut that's easy, and not really dtc related16:14
aquarius*nod*16:15
aquariusso it's just easy then, right16:15
aquariusadd one button to the pairing app which gets the keys from the keyring. Done.16:15
aquariusit can't be that easy.16:17
aquariuswhat does u1fs put in the keyring?16:17
aquariusright, so that's doable16:17
dobeyjust the oauth token16:19
statikwow, erlang builds itself 4 times while bootstrapping16:19
aquariusdobey, yep, got it, perfect.16:19
dobeyalthough i think we should probably do it better than we do16:19
dobeybut we can change that later16:21
dobeyhey tcole16:24
tcolehowdy16:24
thisfredaquarius: ok, so: wrt desktopcouch, what can I do right now to help? I have only one very minor desktopcouch issue assigned to me, which I can work on, but it's not a new feature, and basically only code cosmetics16:28
thisfredso, if there is nothing concrete, I'll go on with cloud issues, and respond to your cries of despair and help out wherever appropriate16:29
aquariusthisfred, you can talk to jan when he looks a the patch, and test that it works, since I have to go and get my daughter shortly...but that's not a right-now thing. Hm, what else is on the list?16:29
aquariusthisfred, what will be the URL of my couch in the cloud?16:30
thisfredaquarius: good point: we need to decide that and get a proxy up I suppose16:33
thisfredwhat would be kinda neat to have is ubuntuone.com/couchdb/foodb16:35
thisfredlike /files and /notes16:35
thisfredwhere the login would redirect, but no idea if that's possible with oauth16:35
aquarius*nod*16:35
thisfredif not ubuntuone.com/[u1accountid]/[foodb] works16:36
thisfredI don't think an ugly url matters really16:37
thisfredwe won't be opening futon or anything like that16:37
thisfrednothing needs to go there but replication16:38
dobeyyou can pretty much do anything you want with oauth16:38
thisfredright16:39
thisfredI'm not sure what we want to do though. Since we don't need human readable urls, I think we need to do what is at the intersection of least work and best debuggability16:40
thisfredso less redirection is probably better16:40
aquariusgoing to pick up my daughter16:42
aquariusbbiab16:42
thisfredaquarius: later16:42
aquariusthisfred, am about half done on the Ubuntu-One-button-in-pairing-app16:43
thisfredaquawesome16:44
* CardinalFang acquires lunch.16:51
* dobey does some evil to test his branch16:54
dobeycrap16:59
dobeyneed to make syncdaemon fork/exec (daemonize) itself on start16:59
statikstart-stop-daemon is a built in program to do that17:01
dobeythat's a server thing17:03
dobeyi need it to fork/exec when i run it from the applet17:03
dobeysigh17:19
dobeyand my desktop just locked up hard17:19
dobeyprobably from my attempt at trying to fork/exec syncdaemon17:20
dobeybut i really must get some lunch now, bbiab17:20
J_LitewskiUbuntu One/My Files was removed?17:43
J_Litewskihuh, nevermind, it seems like Nautilius changed the bookmark on me17:53
jblountJ_Litewski: Sorry no one has responded, but I belive that is a recent change from us, we are trying to make it easier to find "where do I put these files"18:02
J_Litewskinp, I was having problems with it syncing yesterday and today my bookmark changed, so I was think my computer was starting to spaz on my18:03
J_Litewski*me18:04
jblountjtatum_: :), if it makes you feel better, I had some video card driver weirdness this morning, and was thinking something along the same lines.18:09
jblountdobey: Is there a reason we're using "allow modification" instead of "allow changes" in the sharing interface on the desktop?18:47
jblount(I'm making the web ui match right now, and modifications seems like a yucky computer word)18:47
dobeyi don't think they had computers when middle english was in widespread use18:49
aquariusthisfred, I have thought of something else that needs doing: port discovery logic. the port number is now output to the log file, and parsing that is better than walking proc18:50
jblountdobey: What do you think about swapping it for changes instead of modifications ?18:50
CardinalFangOoo.18:50
CardinalFangaquarius, Do we have the PID also?18:50
aquariusCardinalFang, yep, it's written to the pidfile. why?18:50
dobeyjblount: i don't know. don't really have time to fuss about it either18:51
jblountdobey: That's fair. I'll leave it alone for now.18:51
CardinalFangaquarius, Just curious.  I want to make sure that the data is right, still.  Walking /proc ensures that the port is recent info.  Log files can be stale forever.18:52
aquariusCardinalFang, yeah, but walking /proc is a horrid hack :)18:52
dobeyChipaca or verterok: ping18:53
Chipacadobey: pong18:53
CardinalFangaquarius, Agreed.  I'd be happier delegating that to a program that does the same, and that everyone would scream about if it broke.  "ps" or "netstat" maybe.  Poor Unix needs better process management functions.18:54
thisfredaquarius: ah18:55
dobeyChipaca: how hard would it be to make syncdaemon "daemonize" (fork/exec itself) on start?18:55
thisfredwell, shouldn't be too hard, and should make things more stable.18:55
thisfredaquarius:  Should I get on that then>18:55
thisfred?18:55
aquariusthisfred, I think so, yes -- it's a nice self-contained bit18:56
thisfredaight18:56
Chipacadobey: not hard18:56
Chipacadobey: why?18:56
Chipacadobey: not hard, if we for a moment can pretend we are not hours away from feature freeze18:57
Chipacadobey: so, why?18:57
dobeyChipaca: so that it can exit(0) and not block the applet when i do subprocess.Popen() to run it when dbus gives me back an error18:58
dobeybut maybe i am just trying to go about this the wrong way in the first place18:58
Chipacadobey: well, dbus shouldn't give you back an error. What error is it giving you back?18:59
dobeyChipaca: me personally? nothing unless i somehow force a failure by simply making it so dbus can't activate syncdaemon18:59
verterokdobey: I don't know if it's the right way, but you can avoid blocking on a subprocess19:00
thisfredoh, btw CardinalFang: I took out the random stopping of couchdb in the tests. I know I said before I wanted to test the stop and automatic start, but I'll think of a more controlled way. Perhaps I'll just copy one other simple test, and run a stop at the beginning.19:00
dobeyChipaca: but lots of people are getting the "Fatal Error" warning at start up, because i guess syncdaemon starts slower than the dbus reply timeout or something, and dbus throws its hands in the air and reports an error saying it doesn't know what's going on19:00
Chipacadobey: the solution changes dramatically depending on that "or something"19:01
Chipacadobey: according to bug #62763 the timeout was raised from 25 to 40 seconds. Both values are immensely huge compared to the u1sd startup times we're seeing.19:03
ubottuLaunchpad bug 62763 in dbus "dbus activation timeout too short" [Low,Fix released] https://launchpad.net/bugs/6276319:03
dobeyChipaca: well given beuno's most recent report, it seems like it fails, and then starts up and sends the StatusChanged signal with READY_WITH_LOTS_OF_THINGS_TO_DO_AND_MAYBE_THERE_IS_SOME_NETWORK (or whatever that state is) :)19:03
Chipacaverterok: dbus registration happens before local rescan, right?19:04
verterokChipaca: yes19:04
Chipacaquite19:04
dobeyChipaca: i don't think it's an activation timeout issue19:04
dobeyChipaca: but rather, message reply timeouts19:04
dobeybasically the general "dbus isn't really async, but you can try and use it like it is" problem19:05
Chipacadbus isn't async?19:05
verterokdbus is async19:06
CardinalFangdbus functions can be sync or asycn.19:06
verterokbut it's usually used in a fake-sync mode19:06
verterokCardinalFang: not really sync, the client just blocks waiting the async reply :/19:07
Chipacaright, but dbus itself is an asynchronous message-passing system19:07
CardinalFangverterok, Dang!  I guess you can think of syscalls doing the same!19:07
verterokCardinalFang: :)19:08
verterokCardinalFang: I mean, it's async by nature, but looks like the sync api is the most used one. but as it don't gurantee delivery, IMO don't make sense to use a sync api ;)19:09
CardinalFangIt does not retry?19:10
* CardinalFang is no dbus expert.19:10
verterokCardinalFang: I'm also not a dbus expert :)19:12
verterokCardinalFang: but I don't think retry is builtin, in the sync api :/19:12
dobeydbus method calls are sync19:13
dobeyif you want async, you have to make your sync dbus method call do something in a timeout/thread/something, and have it call a signal19:13
dobeyand have the method call itself return immediately, and return void19:14
CardinalFangaquarius, Do you have an API in mind for Bug#416581 data?19:15
verterokdobey: no you shouldn't need to run the method call in thread, syncdaemon dbus tests run in a single thread and use dbus calls without blocking19:15
aquariusCardinalFang, api?19:16
dobeyverterok: no no, you misunderstood me19:16
CardinalFangaquarius, Yeah, I need to read those records, so I wondered if you were just designing the data or updating a branch also.19:16
verterokdobey: you mean the endpoint?19:16
dobeyverterok: in the "server" that implements the method call, you have to stick the actual work in a timeout/thread, and return immediately, otherwise it will block19:16
aquariusCardinalFang, ah, the record format is as in the bug, I think: server, oauth, database_name_prefix, pull_from_server top level keys19:17
verterokdobey: hmm, don;t know really. I hate threads, twisted FTW!19:17
verterok:)19:17
CardinalFangaquarius, Er, okay.  So I will write code.  Rgr.19:17
dobeyany dbus method call that doesn't immediately return void, is not async :)19:18
aquariusCardinalFang, just seen your comment. database_name_format seems fine to me. What do you mean by "wary of changing hte name"?19:18
dobeywhich is why we get the "did not get a reply" errors for the get_root call and such19:18
dobeyeh19:19
dobeyverterok: you said i can make popen not block?19:19
aquariusCardinalFang, how are you getting a uuid for the pairing identifier?19:19
CardinalFangaquarius, if the remote database name isn't the same as here, then an uneducated pairing later could (AFAIK) blossom into infinite databases.  foo -> pfx-foo.  pfx-foo -> pfx-pfx-foo ...19:20
dobeyin C i might agree... i don't see how in pydoc19:20
aquariusCardinalFang, yeah, but we have to do that, because your contacts db and my contacts db may well be ont he same U1 couch server19:20
aquariusCardinalFang, hence u1accountid/contacts19:20
verterokdobey: how are you using Popen?19:21
aquariusdobey, does the desktop *know* your U1 account ID in any way?19:21
CardinalFangaquarius, I intended to use one of the functions in the uuid py module.19:21
dobeyaquarius: no, all we know is the oauth access token19:21
aquariusdobey, that's what I thought19:21
aquariusthisfred, any suggestions as to where I should get the database name prefix from, since the desktop doesn't know the u1 account ID? I could oauth to a page on the web server which displays it...19:22
dobeyverterok: verterok http://pastebin.ubuntu.com/258827/19:22
aquariusCardinalFang, str(uuid.uuid4()) ?19:23
CardinalFangaquarius, that sounds right, uuid4()19:23
verterokdobey: p.wait() is the blocking bit19:23
dobeyverterok: how do i know if it failed to start up?19:24
verterokdobey: you need to check p.returncode19:25
CardinalFangaquarius, I don't yet understand why we need prefixes, and if we do need them to keep data straight on servers we own, perhaps we should change the server to keep them arranged without d-c changes.  This means changing Erlang code, I'm sure.19:25
thisfredaquarius: sry phone19:26
dobeyverterok: if the process is still running, p.returncode is None19:27
verterokdobey: yes19:27
dobeyand it blocks19:27
aquariusCardinalFang, we need them because up at u1 we'll have (conceptually) one couch server with all the databases on, so we need to differentiate your contacts db from mine19:27
aquariusCardinalFang, I honestly don't think it's a problem -- when we set up replication, we have to specify the DB names for each end anyway19:28
aquariusCardinalFang, so we just specify xxx for local name and db_prefix+xxx for remote name19:28
verterokdobey: calling returncode blocks?19:28
verterokdobey: it's an attribute lookup :/19:28
dobeywell it's not a call19:28
dobeybut yes the applet is still blocking without p.wait()19:29
verterokdobey: right, it's an attribute lookup19:29
verterokdobey: possiblt the p.stderr.readlines() call19:30
verterok*possibly19:30
dobeyyes, well readlines() also blocks19:30
dobeyand returncode is not None, so...19:30
dobey:(19:30
verterokdobey: != 0 right? :)19:30
CardinalFangaquarius, at U1 server, use oauth token supplied earlier to map to U1 account name, and prefix it there silently.  If I can change a record and/or code on my box and shove data into your database, then you might regret it.19:31
aquariusCardinalFang, that's why we want per-database authentication :)19:31
verterokdobey: maybe moving that into a thread, and block the thread instead of the mainloop?19:31
dobeyah ok19:32
* aquarius proposes lp:~sil/desktopcouch/pair-with-u1, which adds "Ubuntu One" to the pairing app. CardinalFang, a glance from you at that would be good :)19:32
dobey"if returncode and returncode != 0" seems to be ok19:32
aquariuswhy not "if returncode"? 0 is falsy, isn't it?19:32
thisfredaquarius: if we don't know the u1account id we're sort of screwed, unless we do a single url that redirects, or have a service to find out19:33
thisfredaquarius: the account id isn't findoutable from the filesync either?19:33
dobeyaquarius: are negative numbers true?19:33
aquariusthisfred, nope. filesync only knows the oauth tokens.19:33
aquariusdobey, yep19:34
statikaquarius, thisfred: if we are doing oauth, shouldn't the server side be able to handle the account mapping transparently?19:34
aquariusdobey, on the other hand, 0.1 is also false. Er. :-)19:34
statikaquarius, like some kind of really simple proxy that knows if the client is syncing the contacts db signed with elliot's token, then it's really the elliot_contacts database (i'm simplifying, but you get the idea)19:34
aquariusstatik, only if we guarantee that everyone's oauth token is unique, which we don't currently do as far as I know?19:34
dobeyaquarius: uhm, i don't think exit() allows you to exit with float values?19:35
aquariustcole, do we guarantee that all generated oauth tokens are unique? (I'm not sure who did the oauth server side implementation for u1fs)19:35
statikwe guarantee that they are unique, otherwise the whole system would fall apart i think, since the token uniquely identifies a user19:35
aquariusdobey, I don't know what you're using it for, I'm just sayin' :-)19:35
dobeyaquarius: i just have to check the returncode of Popen() :)19:36
dobeystatik: no we don't :)19:36
aquariusdobey, oh, then you oughta be fine :)19:36
tcoleI don't think we guarantee so much as assume that really big randomly generated numbers are unique19:37
dobeyor at least, oauth.py certainly doesn't guarantee uniqueness19:37
statikbut we have database constraints and so on19:37
CardinalFangaquarius,  # parse "a=b&c=d" to {"a":"b","c":"d"}     What if  b  or  d  has an equals-sign in it?  Can it?  Are you sure nothing can have an ampersand in it?19:37
aquariusright, but if we were to assume that they are unique we wouldn't be creating an *extra* problem. got it :)19:37
statikif we ever issued two users the same oauth token, the world would end19:37
tcoleCardinalFang: shouldn't b or d be percent-escaped?19:38
aquariusCardinalFang, that key should only contain oauth_token=whatever&oauth_token_secret=whatever, and u1fs relies on that. my parsing algorithm is relatively simple, I admit it :)19:38
aquariusI wonder how u1fs does it?19:39
CardinalFangaquarius, If you change that  x.split("=") to have  1  as a second parameter, I'd be happy.19:39
aquariusoh, it doesn't, it hands it directly to oauth.OAuthToken19:39
aquariusCardinalFang, wisdom, I will do :)19:39
statikdobey, aquarius: i just verified, we have UNIQUE db constraints on the server side in all the right places on the oauth tables19:39
aquariusCardinalFang, so...maybe you're right and we don't need the prefix. Clever.19:41
dobeyverterok: thanks :)19:41
aquariusCardinalFang, although you have invoked a vapourware interpreting proxy, but that's ok ;-)19:41
CardinalFang:)19:41
verterokdobey: np19:42
dobeyok, now to pick one of thse million bugs to declare "the winner of having all the others be a duplicate of it"19:42
dobeytoo many bugs19:44
CardinalFangaquarius, instead of  print "couch fail" , please use  logging.exception("couch fail") .  We get the error logged this way.19:45
aquariusCardinalFang, ooh, I forgot that. It needs to do something a lot better than print something :)19:46
CardinalFangaquarius, after that, I approve.19:46
aquariusCardinalFang, like give some user feedback. I'll do that now. Meant to come back to it ;)19:46
CardinalFangRgr.19:46
aquariusCardinalFang, any reason why you used a Dialog rather than a MessageDialog in pair?19:56
CardinalFangaquarius, Er, no reason.  Ignorance, most likely.19:56
aquariusCardinalFang, kk :)19:56
dobeymessagedialog == pain19:57
dobeyugh, allergies :-/20:00
CardinalFangaquarius, rather, there may be a reason, but I do not remember what it is any more and can't tell you it.20:00
aquariusCardinalFang, does the logging module have a way of logging a traceback? Or do I have to construct a message myself from the traceback and the logging.exception() the message?20:01
CardinalFangaquarius,  .exception groks it.20:02
thisfredCardinalFang: aquarius: when I find out the port number from the log file, do we really need find_pid() anymore? (I think I'm going to leave well enough alone, but wouldn't we be able to use get_port to see if a db was running? something for the future...)20:02
CardinalFangthisfred, we want to make sure that the log file isn't stale, I say.20:02
aquariusthisfred, you need find_pid because the logfile might be stale20:02
aquariusthisfred, and you need to know whether couch is already running or not to know whether to start it up or point at the existing one20:03
aquariusCardinalFang, is it clever enough to just do logging.exception() inside an except handler? Or do I need to grab sys.last_traceback or whatever it is?20:03
thisfredsure, but with a stale log, we could just to a call to the url, and see it's not running20:04
aquarius(or e, of course)20:04
thisfredanyway, I'm leaving get_pid in,20:04
thisfredit's just that it seems silly, since the actual pid is then aggressively ignored by all the code20:04
CardinalFangaquarius, Hmm, I think it must be inside an exception handler.  Any manner of exceptions are thrown in mundane calls, and you don't want to make it easy to get the wrong one.20:04
CardinalFang"Oh darn, I logged the StopIteration instead."20:05
aquariusCardinalFang, winner, it works fine, I think :)20:07
aquariusCardinalFang, and pushed20:07
CardinalFangaquarius, Looks good.20:10
CardinalFangaquarius, Is that all we need for writing pairing, even among local machines?20:11
aquariusCardinalFang, I think so!20:11
aquariusCardinalFang, unless you think I'm missing something. There is obviously your find-the-port daemon cleverness thing20:12
aquariusCardinalFang, bug for the vapourware proxy server: https://bugs.edge.launchpad.net/ubunet/+bug/41826620:13
ubottuError: This bug is private20:13
aquariusI *think* this is almost doable completely inside apache, although it probably isn't. I'd be interested in thoughts on how best to have it implemented20:13
CardinalFangaquarius, all I need is a local list of all the UUIDs of hosts we pair with, and my UUID so I can yell it onto the network.20:13
aquariusCardinalFang, so, for local ones, "server" would be blank and instead there'd be a "server_uuid"?20:14
CardinalFangIt's the UUID you already added.20:15
CardinalFangBut blank, yes, is fine.20:15
aquariusCardinalFang, hang on, confused now. I'd have thought that the U1 record would have "server: ubuntuone.com", and the local record would have "server_uuid: {93457934573}"20:16
CardinalFangaquarius, Yes, that's fine.  The ID is all I care about.  It's a filter-list for IDs I see advertised nearby.20:17
aquariusCardinalFang, cool20:18
tcolehow do I run a subset of tests with 'make check' in ubuntuone-client?20:18
CardinalFangtcole,  "trial mod.ule.path"20:19
CardinalFangtcole, you may need to set PYTHONPATH .20:19
tcolecould you give me a specific example please?20:20
tcolehm, I think I got it20:21
aquariusthisfred, so...the vapourware redirecting proxy...how does the proxy get a list of oauth-tokens<->userids?20:22
thisfredaquarius: that info would be in postgres right?20:23
aquariusthisfred, I imagine so, yes :)20:23
thisfredso the vaproxy could be a simple (sic) twisted process, or a django view20:24
* CardinalFang votes for "vaporoxy"20:24
aquariusthisfred, I can think of two ways of doing this: 1. have the proxy be a program, which accesses postgres, works it out, and returns a 301 redirect, 2. dump the data to a HUGE RewriteMap, and have apache do it, which might be more efficient20:24
aquariusif we're using Apache20:25
thisfredI like 220:25
aquariusyeah, the problem comes with: how often do you re-dump it?20:25
CardinalFangIf maps are smartly written, then good with 2.  Apache is correct, not fast, so it may be dumb iteration searching.20:26
aquariusI'm thinking that, at least initially, a small twisted app is better. Optimise later.20:28
* CardinalFang talks to his dog about moving the computation out to the user, by putting the ID in at pair time, and using a specific hostname that we need only check. So, I'd connect to cmiller.hashedSecretAndUsernameWeCanCheckWithoutDb.ubuntuone.com .20:31
* CardinalFang 's dog hates the idea.20:31
CardinalFangStupid dog.20:31
dobeyoi20:38
aquariusyour dog is wisdom20:38
CardinalFangI wasn't talking about authentication, just the multiplexing to databases.  All addresses point to same box.  SHA224 is cheaper than DB lookup.20:41
aquariusCardinalFang, I don't get how it'd work20:42
aquariusCardinalFang, also, it's going to be quite handy for later on when there's web access to your couch in the cloud to be able to tell everyone, the place you point at is ubuntuone.com/yourdatabase without any identifying features at all, so the instructions are identical for everyone20:44
CardinalFangaquarius, Throw out the hash bit.  It's not important.  Instead, put the username in the hostname we connect to.  HTTP 1.1 gets the hostname.  FIrst part of hostname is database that we'll prefix with.  The rest is normal, except we don't need to map the oauth key to the username.20:45
aquariusCardinalFang, the problem is that the desktop doesn't *know* the username20:45
dobeyoh nice20:45
dobeypython crashed :(20:45
CardinalFangaquarius, Right, but it can.  Pairing is once.  Replication is hundreds of times per day.20:46
aquariusCardinalFang, that's broadly the same thing as db_prefix, then. :)20:46
aquariusCardinalFang, and it can know the username if we set up an oauthable URI which returns the username, which means that you need to be online, and you need to do an http request -- admittedly it saves us a DB hit per replication, though20:47
CardinalFangaquarius, Yeah, but an idiot user messing around in the database can't hose up their network with one-new-database per replication cycle with this.20:47
CardinalFangaquarius, my dog just bit me, so I'm giving up this idea.  It's probably dumb anyway.20:48
* aquarius grins20:49
aquariusok, so...records uses oauth (can't test without couch patch, being looked at by jchris). pairing storing oauth tokens (being done by CardinalFang). daemon to start continuous replication requests (being done by CardinalFang). set up pairing with U1 (done by me, branch up for review). vaporoxy to make U1 pairing work (not being done by anybody atm). parse couch logfile for port (being done by thisfred). Is there anything else that needs doing for a20:52
aquariusDC 0.3 release?20:52
aquariusi.e., should I be working on something now, or can I stop for today?20:52
thisfredaquarius: I think you can stop. parse couchfile almost done. I think it works, but it broke all my test hackery to not use the user's db20:53
thisfredalso the new contacts picker's tests used the user'20:54
thisfreds db once again20:54
aquariusthisfred, so you're happy to catch up with jchris about the ini-file bug?20:54
thisfredaquarius: yeah, I'll ask him to ping me20:54
CardinalFangaquarius, Eh, I think that's all.  Good night!20:54
thisfredwhen there's something to test20:55
thisfredaquarius: have an excellent night!20:55
aquariuskk. thanks, all. Sorry I didn't get more done.20:55
thisfredyeah, slacker20:55
thisfred:P20:55
aquarius:)20:55
=== __till is now known as till
thisfredCardinalFang: port discovery from logfile branch propoz0rd21:45
CardinalFangthisfred, that log file may be huge.21:48
thisfredCardinalFang: yep, but it's being read on the user's machine21:49
thisfredbut a suggestion to make it more efficient is very welcome21:49
thisfredI just attacked it very high level first21:49
thisfredseeking in the file is an option21:50
thisfredI have code that does something similar in cloud_server (which I was about to replace)21:50
CardinalFangthisfred, hrm, how about "for line in log_file" and "if line.startswith(Apache CouchDB has started on http://'):" and no "break" -- catch all port lines, and last one wins.21:51
thisfredanyone know of a way to make readline/readlines behave lazily when reading from the end backward?21:51
thisfredor something like it21:51
CardinalFangI do not.21:51
thisfredCardinalFang: unfortunately the lines do not start with that, but yeah, I can do that21:52
thisfredthanks21:52
CardinalFangstartswith() is O(1), and "in" is O(n), I'm sure.21:53
CardinalFangthisfred, if you're okay with the read-the-whole-file thing, then just a big string and rfind() should work.21:54
thisfredCardinalFang: pushed21:54
* statik goes on a desktopcouch merge and test rampage21:54
thisfredCardinalFang: yeah, but all the lines start with non unique crap21:55
CardinalFangBah!21:55
thisfredanyway in shouldn't take that long when the lines aren't long21:55
thisfredI could do a regex21:56
thisfrednot sure if that is a big win though21:56
dobeysigh21:56
CardinalFangIt's not big enough to bother with.21:57
CardinalFangthisfred, so, suppose you find nothing.  Do you want to raise a ValueError?21:59
thisfredCardinalFang: any error that we can catch, but a better suggestion than ValueError is also welcome22:00
CardinalFangthisfred, well, the name of the function starts with "get_" so I wouldn't mind if it returned None on finding nothing.22:02
thisfredalso I only catch IOError now22:02
thisfredyeah, perhaps that is fine22:02
CardinalFangDo we need get_pid() any more?  It's a strange way to make sure the db is running if we don't need the PID value.22:04
dobeyi think it uses that to poke through proc to get the port22:04
dobeybut i guess if that's fixed with some dbus thing upstream or whatever now, it's not needed22:05
* CardinalFang boggles.22:05
thisfredpushed fixed22:05
thisfredCardinalFang: that's what I was saying: we don't22:06
thisfredCardinalFang: except we need a way to detect that the log is stale and/or the couchdb isn't running22:06
thisfredif we can think of a way to do that with less complexity then great, but all I could think of was while tries < 1000: urllib2.urlopen(uri:port_read_from_log) which may be less complex but also less good22:10
CardinalFangthisfred, okay, let's not invent problems.  This looks good to me.  If we hear of problems, we can address them.22:12
thisfredCardinalFang: sounds good to me. Let someone else invent the problems for once! ;)22:13
CardinalFangGeez, I was hoping to get further today.  I have only one karmic machine so far so hard to test the zeroconf stuff.  /me eyeballs jblount and pfibiger for tomorrow.22:14
* thisfred is debating whether he has the skillz to start on the vaporoxy.22:17
thisfredI don't have a dog to tell me "no stupid"22:17
thisfredalthough as luck would have it, that could change tonight, as a very unsaynoableto puppy was found by one of our neighbors last week, and she still hasn't been claimed22:18
statikthisfred, the proxy isn't needed for feature freeze is it, since it's on the server side?22:21
statikthisfred, i was kinda hoping we could do it with something as simple as mod_rewrite22:21
statiksince the db name is in the URL22:21
statikare we going to be doing the  replication back to ubuntuone.com over SSL?22:22
dobey(if you answer no, you're fired)22:24
dobey:)22:24
thisfredNO!22:24
thisfredmaybe22:24
thisfredsounds like a good idea22:24
dobeyi would hope so22:25
dobeyin the sense that replicating all my contacts' information over plaintext sounds like a bad idea :)22:25
thisfredstatik: we need to decide the urls, because depending on what they look like we need the client side to know the user's u1 account id22:26
dobeyshouldn't22:26
dobeyyou should be able to just point at a script on the server and have it redirect based on the OAuth authorization22:27
statikthisfred, the reason i was asking about SSL is because i'm unsure whether desktopcouch/python-couchdb supports SSL properly22:27
dobeyand then just point cllient at https://ubuntuone.com/couch/dbname22:27
thisfredright, should be able to, so is that our choice? (I'd vote for that, but I'm not sure what implications it has)22:28
statikso the proxy needs to rewrite the URL based on the user22:28
dobeyi vote for it22:28
dobeyand i think aquarius voted for it earlier22:28
thisfredstatik: since aquarius made couchdb-python speak oauth, I'm optimistic: it exposes the httplib internals pretty much all the way.22:29
statiki guess that means the proxy needs to read the oauth signature on the request, so we can't do it in plain old apache mod_rewrite22:29
statikthisfred, so i want to use a separate subdomain so that we have more control over how to route the requests and the SLA on the load balancers/proxies can be different from the main website, but i'm voting for what you said22:31
thisfredstatik: I don't think we use couchdb-python for the replication, so if couchdb itself can handle ssl replication, we're good22:31
statikwe're probably in trouble then22:32
statikon the server side we will use apache as a proxy to handle the SSL unwrapping22:32
statikbut something on the client side needs to be able to speak SSL22:32
thisfredstatik: well, python-couchdb is not a candidate for that, since it always talks to couchdb, and not another python-couchdb on the other end22:33
dobeycouchdb doesn't do SSL?22:33
dobeythat seems like fail22:34
thisfredstatik: ah you mean to do the SSL wrapping, rather than unwrapping22:34
statikthisfred, yes. i see what you mean about python-couchdb not being in that part of the replication path though22:35
thisfredthat we could (ab)use couchdb-python for. I was thinking what about all the replication with other couches than the cloud22:35
statiki guess maybe thats handled by ibrowse, and it does handle ssl after all - it's what is causing the export restriction notification to be filed for couchb22:35
* thisfred pages through couchdb mailing list archives22:41
jblountCan someone confirm for me that the "stop sharing" button in the info popup doesn't work?22:47
thisfredstatik: ibrowse has ssl support, but couchdb doesn't use it for anything other than uuid generation. Couchdb leaves ssl to the proxy like a lot of other things.22:49
thisfredstatik: so we can maybe make it work by subverting couchdb-python for the client<->cloud replication, but client<->client not so much22:50
thisfredand we break the cloud is just another paired couchdb a little more22:50
thisfredand kittens cry22:50
statikyeah, we should support ssl between client<->client too22:51
thisfredbut bad luck to the kittens, if we can do it22:51
thisfredapache on every client won't fly, probably23:15
CardinalFangGood night, all.23:16
thisfredlater monseigneur Fang23:17

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