/srv/irclogs.ubuntu.com/2012/08/06/#ubuntuone.txt

Kilosmorning all05:58
Kiloscan someone please tell me how to get the last 200 meg of an upload to ubuntuone to update or sync with the folder on my desktop05:59
Kilosif i right click the file on my destop  syncronise is greyed out so cannot sync it. please help06:28
Kilosubuntuone seems to be syncing to my pc but not from my pc back06:32
Kilosim a newbie and still learning so please try help me06:33
=== JanC_ is now known as JanC
gatoxgood morning!11:25
gatoxmandel, hi, could you review this one? https://code.launchpad.net/~diegosarmentero/ubuntuone-client/menu/+merge/11811712:03
=== yofel_ is now known as yofel
alecugatox: mandel is on vacation!12:40
alecugatox: and good morning btw :-)12:40
gatoxalecu, ahhhh i forgoy about that..... and good morning to you sir!12:40
ralsinagood morning!12:47
gatoxralsina, hi12:49
ralsinaalecu: what do you think about bug #1033488 beyond "please don't do that!" ?13:01
ubot5Launchpad bug 1033488 in ubuntuone-client (Ubuntu) "UbuntuOne fails to synchronise folder when invalid symlink with same name as cloud folder is present" [Undecided,New] https://launchpad.net/bugs/103348813:01
ralsinaalecu: also, another twist of the SSL bug in comment in bug #103100913:02
ubot5Launchpad bug 1031009 in Ubuntu One Client "Cannot auth, register, reset password" [Undecided,New] https://launchpad.net/bugs/103100913:02
alecuralsina: I think we should treat 1033488 as a feature request... SD should handle this cases in a gentler way...13:03
alecuralsina: also, that's something we could figure out in the control panel13:03
ralsinaalecu: hmmmm yes, some sort of warning about that being unsyncable13:03
alecuralsina: if the u1cp finds a symlink it should warn, in a similar way to when if finds a folder there13:03
alecuright13:04
ralsinaalecu: we have the same problem if it's a file or a library, IIRC13:04
alecuexactly13:04
ralsinaand it looks easy enough to do13:04
ralsinasince we already have a test there13:04
alecuralsina: it's nice that we discussed about this. I saw the bug earlier and had no clue on if we wanted to solve it...13:05
alecuralsina: since I was thinking about it from the perspective of SD13:05
ralsinafrom SD it's not solvable, I think13:06
ralsinait's just a conflict13:06
ralsinawhich needs handling though13:06
alecuralsina: right. But should SD show a notification, or an error in our menu for this case?13:07
ralsinano, because it's a "it shouldn't happen"13:07
alecuralsina: this happens when creating a UDF, so it's not right to rename the symlink or...13:07
ralsinaalecu: if u1cp doesn't let you set it to sync, it should never go far enough that SD sees it13:07
alecuralsina: right, and if the user is playing with u1sdtool, let him figure that out...13:08
alecuralsina: hmmm13:08
alecuralsina: even u1sdtool could figure out if there's a symlink there and warn in that case.13:08
ralsinaalecu: yes13:08
ralsinaalecu: there is a "check if this is a valid UDF" method u1sdtol and u1cp should use13:09
ralsinaalecu: so, it's a fix in sd, I think13:09
alecuralsina: awesome.13:10
alecuhmmm... there's sand under my desk!13:10
ralsinaalecu: on u1cp it's ackend.validate_path_for_folder13:11
alecueither amelia played here on friday after kinder.... or one of my vm sandboxes is leaking.13:11
ralsinaalecu: which calls something in sd :-)13:12
ralsinaalecu: it should already fail if it's a symlink13:14
ralsinaalecu: :-(13:14
ralsinaalecu: ubuntuone/syncdaemon/volume_manager.py in validate_path13:14
alecuralsina: in validate_path_for_folder ?13:15
ralsinaalecu: yes, sorry13:15
ralsinaOhhhh I know13:16
ralsinaIt's not when CREATING the folder, it's when setting it to sync13:16
alecuralsina: but this is not "create udf", this is "subscribe udf"13:16
alecuright13:16
ralsinaso, we just need to validate the path when subscribing13:16
alecuso, it's _subscribe_volume13:16
ralsinapiece of cake13:16
alecuwe should do the check in _create_volume_dir, and fail if it's a link13:17
ralsinaalecu: cool, I'll give it a shot13:17
gatoxalecu, ping.... do you have a minute? i'm kind of stuck with a test13:23
alecugatox: sure13:26
gatoxalecu, i'm working on this branch: https://code.launchpad.net/~diegosarmentero/ubuntuone-client/ipcmenu13:26
gatoxand when i run: u1trial -t test_sync_menu tests/platform/ipc/test_external_interface.py13:26
gatoxit fails in tests/platform/ipc/test_linux.py line 18113:27
gatoxand i'm not following very well all the black magic that is there :P13:27
alecugatox: how are you running the tests?13:30
gatoxalecu, u1trial -t test_sync_menu tests/platform/ipc/test_external_interface.py13:30
gatoxit seems that the fakedobject is not being called, so it doesn't register the info in _called.... but i'm not quite sure from where it should be called13:34
alecugatox: the difference I see is in ubuntuone/platform/ipc/linux.py13:39
alecugatox: in sync_menu()13:39
alecugatox: sync_menu there builds the status array, and returns it13:39
gatoxalecu, ohhhhhh right13:40
gatoxalecu, stupid mistake for testing stuff13:40
alecugatox: but the other methods (for example, waiting_content) call self.service.status....13:40
gatoxalecu, thx... i was fighting so long with that, that i couldn't see it13:40
alecugatox: so, I think the patching is done there, no?13:41
alecugatox: no problem!13:41
gatoxalecu, also when you have some time, a small review please: https://code.launchpad.net/~diegosarmentero/ubuntuone-client/menu/+merge/11811713:57
alecugatox: "class FixedQueue(Queue.Queue, object):"14:03
alecugatox: why do you inherit from object?14:03
gatoxalecu, ahhhhh yes, we discuss that on pyar.... the thing is:14:03
=== teknico_ is now known as teknico
gatoxalecu, Queue.Queue is an old-style object, so i can't use super... but if i inherit from object, i can't use super without any problems.... and is nicer than Queue.Queue.whatever()14:04
gatoxsorry...... if i inherit from object too, i CAN use super14:04
alecugatox: is there a restriction on why to use Queue?14:04
gatoxalecu, sorry.. didn't understand that14:05
alecugatox: I mean... do we need to use Queue.Queue for some reason, or a different struct can work too?14:06
alecuand by "struct" I really meant data type.14:06
gatoxalecu, i can use a different data type... i used Queue because it seems that the obvious choice.... i need a queue... but with the restriction i implement there14:07
* alecu looks for the collections module14:07
alecugatox: for instance, collections.deque14:08
ralsinaalecu: when you have 2' I think I ran into a larger problem :-/14:08
gatoxalecu, yap14:09
mmcchi people, happy monday14:09
ralsinahi mmcc!14:09
gatoxalecu, deque it is14:09
gatoxmmcc, hi14:09
alecugatox: wait! let's give this a minute thought14:09
alecugatox: deque is an option, Queue is an option, list is another, still.14:10
gatoxalecu, it makes sense, and the doc says that it does what i need14:10
ralsinaalecu: subscribe_volume pushes errors back through IPC but all that arrives at the other side is "IPCError()"14:10
gatoxalecu, i only need to use the proper append and popleft in the right places14:10
ralsinaalecu: which makes error messages impossible. We never noticed because the only possible failure is "UDF desn't exist" which just doesn't happen IRL14:10
alecuralsina: so we don't know the exact reason for it, right?14:10
gatoxalecu, i prefer deque rather than list14:11
ralsinaalecu: exactly14:11
alecummcc: good morning. And a late Happy Birthday btw!14:11
gatoxmmcc, hey! happy birthday! :D14:11
ralsinaalecu: and the solution looks a heck of a lot more complicated (to my little twisted) than just checking for a symlink on u1cp's side14:12
gatoxalecu, so.... do you agree on deque?14:12
mmccthanks guys :)14:12
=== teknico_ is now known as teknico
ralsinammcc: didn't know, so happy birthday from me too14:12
mmccthanks ralsina - yeah I don't usually make a big deal out of it anymore. Mostly just an excuse to overeat :)14:13
gatoxmmcc, i share that feeling :P14:13
alecugatox: oh, deque has a maxlen14:15
gatoxalecu, right14:15
alecuOnce a bounded length deque is full, when new items are added, a corresponding number of items are discarded from the opposite end.14:15
alecuawesome!14:15
gatoxalecu, just what i needed....14:16
alecugatox: so, there you go. That sounds like the best14:16
ralsinaalecu: that's why it's a deque ;-)14:16
alecuralsina: nahhh14:16
alecuralsina: it was a deque (in 2.4) before having the maxlen (added in 2.6)14:17
ralsinainteresting14:17
ralsinaI had never seen a deque with infinite size14:17
* ralsina goes read Knuth volume 1 again14:17
alecuprobably "unbounded" in this context in fact means "until your swap explodes"14:20
ralsinaalecu: so, for that symlink bug, I have a 2-line solution in u1cp on one hand, and no idea how to fix it on sd on the other ;-)14:22
gatoxalecu, branch updated: https://code.launchpad.net/~diegosarmentero/ubuntuone-client/menu/+merge/11811714:25
alecuralsina: btw: this looks like something we should recommending for users running u1 on xp: http://www.microsoft.com/en-us/download/details.aspx?id=2943414:28
alecu*should be14:28
ralsinaalecu: that should be autoinstalled14:28
ralsinaalecu: the only ones who don't have that are those who have not validated their copy14:29
ralsinaalecu: and those are avoiding updates intentionally if you know what I mean14:29
aleculol14:29
alecuralsina: or not connected to the internet.14:30
alecuralsina: and those are not our users either :-)14:30
ralsinaalecu: and in that case, they are not using u1 to their fullet extent ;-)14:30
ralsinaalecu: so, would it be very awful of me to just check for the symlink on u1cp instead of tweaking all the way up and down our IPC(s)  how to pass an error?14:41
alecuralsina: I guess not. But what about other similar errors?14:43
ralsinaalecu: AFAIK there are no other similar errors14:44
alecuralsina: like, a file named like the folder... or a folder already existing...14:44
ralsinaalecu: you are right14:44
ralsinaalecu: I had a moment of weakness14:44
ralsinaalecu: but there is already a check for merging, isn't there?14:45
alecuralsina: yes, for merging folders there is, you are right.14:45
alecuralsina: but wait, I'm not saying that the doing the ipc dance is the right route14:45
ralsinabut how does that even work?14:45
ralsinathe check for merging there is u1cp-side14:46
ralsinasigh14:46
ralsinaand on _creating_ a UD is sd-side14:46
ralsinaUDF*14:46
ryeralsina: or here14:47
alecuralsina: so, if the user decides to merge, SD goes ahead and merges, right?14:48
ralsinarye: we have a similar error but not on that function, that sounds like a bug14:48
ralsinaalecu: yes14:48
ryeralsina: okay14:48
ralsinaalecu: easier solution, use validate_path_for_folder also on subscription14:54
ralsinaalecu: and i it fails with "is nested" go ahead anyway ;-)14:54
gatoxme15:01
briancurtinme15:03
gatoxralsina, alecu thisfred mmcc dobey15:03
ralsiname15:03
ralsinano notes yet15:03
thisfredme15:03
mmccme15:03
* mmcc writes15:03
ralsinaalecu?15:04
alecume15:05
* alecu writes notes!15:05
ralsinagatox: go15:05
gatoxDONE:15:05
gatoxPropose and fix u1-client menu branch. Finishing ipc part of the implementation to propose today.15:05
gatoxTODO:15:05
gatoxMove on to u1-cp menu implementation.15:05
gatoxBLOCKED:15:05
gatoxNo15:05
gatoxbriancurtin, go15:05
briancurtinDONE: installer with PyQt 4.9.415:05
briancurtinTODO: make installer identifiable as 3.0.2b or something, fix SyncTimestampChecker15:05
briancurtinNEXT: ralsina (or thisfred if notes aren't ready)15:05
ralsinaDONE: twisted contract negotiation, but it's stuck because of a typo (in the date sigh) reviews, team call, 1-1s canonicaladmin cleanup random minor things TODO: fix a bug or two, fix that contract problem, bug triaging, misc BLOCKED no NEXT thisfred15:05
thisfredDONE: cosas background sync TODO: cosas background sync BLOCKED: no NEXT: mmcc15:05
ralsinadobey is on holiday15:05
mmccDONE: first-run code, forgetting something15:06
mmccTODO: propose first-run code, fix u1cp test.bat to ignore darwin,15:06
mmccBLCK: none15:06
mmccNEXT: none?15:06
ralsinammcc: alecu15:07
alecuDONE: a bunch of mumbles, some reviews, debugging of bug #103119715:07
alecuTODO: fix said bug15:07
alecuBLOCKED: no15:07
ubot5Launchpad bug 1031197 in ubuntuone-client (Ubuntu) "DownloadFinished signal triggers when file has not yet completed writing" [Undecided,Confirmed] https://launchpad.net/bugs/103119715:07
alecuNEXT: None15:07
ralsinaComments?15:07
alecuNo comments15:07
briancurtindid we come to a consensus on what the new 3.0.2 release will be named? is 3.0.2b it?15:07
briancurtinthis is the one with the new PyQt15:08
mmccalecu, gatox, are there any further branches pending for the macfsevents part of u1-client?15:08
ralsinabriancurtin: no consensus. I don't quite care about naming ;-)15:08
ralsinabriancurtin: 3.0.2b looks good to me15:08
alecummcc: I think only a fixup branch for the tests, that's bouncing in tarmac15:08
ralsina3.0.2-1 i what it would be calledin ubuntu, IIRC15:08
alecummcc: https://code.launchpad.net/~diegosarmentero/ubuntuone-client/darwin-tests-refactoring/+merge/11328915:08
gatoxmmcc, ohh i need to fix the refactoring tests one..... it has some issues when trying to land..... doing that right now15:09
mmccok, thanks. What are we going to do with the code from macfsevents? Right now it's in gatox's lp +junk, right?15:10
gatoxalecu, ^15:13
alecugatox: do I have to answer that? :-)15:14
gatoxalecu, i don't know.... maybe :P15:14
alecummcc: we should first try to get those fixes upstream15:14
gatoxwhat we should do we that??15:14
gatoxfork it, or propose the changes to the author15:14
alecugatox: first we should try proposing15:15
alecugatox: do you have the url of your junk branch?15:15
mmccgatox: where is the upstream hosted?15:15
gatoxalecu, lp:~diegosarmentero/+junk/python-macfsevents15:15
gatoxmmcc, don't know.... need to check15:15
alecummcc: http://pypi.python.org/pypi/MacFSEvents/15:15
alecummcc: I'm not sure if there's even a repo for it.15:16
gatoxalecu, i'll email the author to ask where the repo is15:16
gatoxthe repo is not listed anywhere15:17
gatoxnot even in the code15:17
alecugatox: perhaps it's https://github.com/malthe/macfsevents ?15:17
mmccalecu, yeah, I just found that too :)15:18
gatoxseems like it15:18
gatoxalecu, ok, i'll fork that one, and propose the changes15:18
alecugatox: so, how intrusive or specific is your code?15:18
gatoxalecu, is not a big change.... but it changes the way it works, in the sense that i think for some reason the lib works first adding the folders, and then starting the observer15:20
gatoxbut that is not what we need15:21
* gatox lunch!15:35
=== gatox is now known as gatox_lunch
mmccbrb15:46
ralsinabriancurtin: is there any peculiarity about window's is_dr?15:54
ralsinabriancurtin: I meant isdir()?15:54
ralsinabriancurtin: as in, it returns true for links or libraries or other evil stuff15:55
briancurtinralsina: for os.path.isdir? if so, none that i'm familiar with off the top of my head. i'll take a look15:55
ralsinabriancurtin: thanks15:55
briancurtinralsina: it returns false for symlinks and hardlinks. i'm not sure how you isdir a library - as far as i know that's just a GUI thing in explorer that aggregates multiple directories (e.g., "Documents" library pulls your user's documents and public all-user documents)16:00
ralsinabriancurtin: cool then16:00
briancurtinralsina: but the C:\Users\brian\Documents folder and/or library returns True on isdir, which would be correct16:00
ralsinabriancurtin: ok, not doing a platform-specific isdir then :-)16:01
alecuralsina, all: my spouse has skipped work today because she's feeling ill. I might be away for some time at times while tending her, so ping me or sms me if I'm needed.16:30
ralsinaalecu: ack16:30
ralsinagargl are the u1-client tests slow or are they very very very slow?16:31
briancurtinalecu, ralsina: http://ubuntuone.com/7O01iFMjvTQSFWtZIKdcaI is a 3.0.2 installer now set with "3.0.2b" as the version reported in the SD log, plus PyQt 4.9.416:33
ralsinabriancurtin: awesome16:34
briancurtinim working on a way to automate that version updating for the log. i just set it manually in clientdefs.py for now16:34
ralsinabriancurtin: did you also raise the build number for the auto updater?16:34
briancurtinralsina: ah, crap i didn't change that. i will update the build number for autoupdate, but will leave it identified as 3.0.2 for anything else16:34
ralsinabriancurtin: cool, thanks16:34
ralsinabriancurtin: it shouldn't really matter really, but just to be neat :-)16:35
=== gatox_lunch is now known as gatox
briancurtinralsina: the link i sent now has an updated installer with the right build number and such. when alecu is available and can confirm that the PyQt/Qt pairing does what we need, i'll send it off for signing16:57
ralsinabriancurtin: awesome16:57
thisfredmandel, ralsina https://code.launchpad.net/~thisfred/u1db/cosas-bg-sync/+merge/11839817:06
thisfrednot very big or complicated17:06
ralsinathisfred: I'll do it, mandel is off17:07
thisfredthanks!17:07
thisfredit's qt and twisted17:07
thisfredbut not a lot of either17:07
ralsinathisfred: all you use twisted for is to use a callLater?17:10
ralsinathisfred: or was it in use before already?17:10
thisfredralsina, well I used deferreds already17:10
thisfrednot the reactor though17:10
ralsinathisfred: because now you are adding a dependency on qt4reactor which is unmaintained17:10
thisfredralsina, so I should look at the qt way of scheduling?17:11
ralsinathisfred: 'fraid so17:11
thisfrednp, will do17:11
ralsinaQTimer.singleshot(timeout, callable)17:11
ralsinacorrect case as needed17:11
ralsinathisfred: let me get you a tip though17:11
ralsinathisfred: http://lateral.netmanagers.com.ar/tr/es/weblog/posts/BB974.html17:12
thisfredthx17:12
thisfredtipping is encouraged ;)17:12
ralsinaOr, if you prefer english: http://lateral.netmanagers.com.ar/weblog/posts/BB974.html17:12
thisfredyay, I get to use my level 11 spanish skill17:12
ralsinais level 11 the one where you get the magic spanish wand?17:14
thisfredIt's where you learn the "mañana" spell :P17:14
thisfredand "tengo una bomba"17:15
thisfredI kid you not17:15
thisfredwhy would you teach anyone that17:15
ralsinahahaha17:15
ralsinalet me show you a good reason...17:16
ralsinathisfred: http://tinyurl.com/cr7klus17:17
thisfredralsina, ooooh17:17
thisfredthe english translation was definitely the one you wouldn't want to use out loud in public though17:18
thisfredralsina, now I wonder if that is derived from a Berliner (the pastry, obviously not the name) or if it's just coevolution to fill a similar niche :)17:18
ralsinathisfred: Berliners are called Berlinesas17:20
ralsinathisfred: these are more like profiteroles17:20
ralsinaalthough Berlinesas are da bomb17:20
ralsinaalso, they are known are friar's balls (pun very very intended)17:20
ralsinaCan I get a simple review https://code.launchpad.net/~ralsina/ubuntuone-client/verify-harder/+merge/118399 ?17:21
thisfredwell repay in kind17:21
* ralsina will someday write his monography about the origin of pastry names in argentina17:21
ralsinathey mostly have anti-clerical anti-militaristic anti-police names because the bakery union was formed by italian anarchists17:22
mmccfrom the pun very intended dept: http://www.twitpic.com/6hmjct17:22
thisfredmmcc, have you tried their schweddy balls? :)17:23
ralsinahahahahaha17:23
mmccthisfred: you know, I haven't…17:23
ralsinaalso, the "polite" name for friar balls is "nun sighs"17:23
thisfredI also like clusterfluff17:23
ralsinawhich is hardly an improvement, if you ask me17:24
thisfredmmcc, it's actually pretty good17:24
mmccralsina: that's hilarious17:24
thisfredbut I think it's already out of rotation17:24
ralsinammcc: the name for a small ham&cheese sandwich is "little kid"17:24
mmccthisfred: yeah I think it was a special edition.17:25
* ralsina looks for the south park chef balls song17:25
ralsinaok, too much. u1cp17:25
* ralsina tries to look serious17:25
thisfredralsina, that branch sets my spidey sense atingle. I may be misunderstanding, but it seems a bit yagni, to have the same platform independent implementation called from platform specific functions?17:26
ralsinathisfred: could just use os.path.isdir in os_helper17:27
thisfredor why does it even need to be in os_helper, if it works everywhere?17:27
ralsinathisfred: what I don't want is to use it in our code and then have to search for it when we inevitably find out it's not all that crossplatorm ;-)17:27
thisfredit's meant to be17:27
ralsinathisfred: been there, had to change that ;-)17:27
ralsinathisfred: so is everything in os_helper17:28
* briancurtin lunch17:28
thisfredIt's very defensive17:28
ralsinathisfred: also, the windows_path decorator protects us against calling it with the wrong kind of thing17:28
thisfredas in, it makes all your code hard to read, for the dubious benefit of being able to fix it in one place.17:29
thisfredralsina, why would we do that? :)17:29
ralsinathisfred: because once is_dir exists we will use it somewhere without looking17:29
ralsinathisfred: but yes, it's fairly paranoid17:29
ralsinathisfred: I can dial it down17:30
thisfredralsina, then just fire the people who do :D17:30
thisfredjk17:30
ralsinaI'll remove the per-platform implementation17:30
thisfredanyhow, it's a matter of taste, but I'd prefer that yeah17:30
thisfredat least until we find out that it doesn't work everywhere17:30
ralsinaoh, wait, we are using isdir everywhere.17:32
ralsinawhat's one more spot in the leopard17:32
ralsinathisfred: re-running tests and will ping you when the branch is updated17:33
thisfredcool17:33
ralsinaI am going to have lunch while tests run. That can't be right.17:46
thisfredralsina, when you get17:46
thisfredback I pushed my fixes17:46
ralsinathisfred: looking now17:46
thisfrednot I keep a reference to the qtimer to be able to stop it17:47
thisfrednote17:47
thisfrednot because of gc17:47
ralsinahmmmm17:48
ralsinamakes sense17:48
ralsinathisfred: but singleShot doesn't return a timer17:49
ralsinathisfred: you will have to instantiate a QTimer and call instance.singleShot17:49
thisfredah17:50
thisfredfixing17:50
mmccralsina: when you get back from lunch, https://code.launchpad.net/~mikemc/ubuntuone-control-panel/fix-1024623-install-confs/+merge/11840417:50
ralsinammcc:  looking17:51
* briancurtin back17:51
ralsinadamn launchpad branch-scanning delay :-(17:51
mmccralsina: with that branch, Double-clicking on "UbuntuOne.app" works without tossing up error boxes. (Assuming you have SSO creds already)17:52
ralsinawhoohoo17:52
thisfredralsina, pushed again17:52
ralsinathisfred: looking17:53
ralsinammcc: looks good to me, get a second review from alecu though17:54
ralsinathisfred: you could create the QTimer on __init__ and keep it, just start/stop it as needed17:56
ralsinathisfred: it's not as if it's expensive to have one. But that's a nitpick17:56
ralsinathisfred: so +117:57
gatoxralsina, sorry, didn't read the whole conversation..... but if you are using something that extends from qobject, you can just use the startTimer method without the qtimer17:57
ralsinagatox: really? Didn't know that one :-)17:57
thisfredralsina, I'll change that, seems tidier.17:58
alecuthisfred: "tengo una bomba" reminds me of: http://media.nowpublic.net/images//39/2/392ad9a1977af8f4df757c0778beb126.jpg17:58
gatoxralsina, every qobject has a startTimer(int interval), and that calls the timerEvent(event) from the qobject17:58
ralsinagatox: but you can have stacked calls with that17:58
ralsinagatox: which is a very very bad thing to have17:59
ralsinaor rather something I really dislike ;-)17:59
gatoxwell...... i didn't say it was perfect jeje17:59
thisfredhehe17:59
ralsinathisfred: I think having a single timer is nicer18:00
ralsinaand more explicit (you would still need to have something holding the int that is the timer reference anyway)18:00
thisfredralsina, so if I have a single timer object, will t.singleShot(TIMEOUT, foo) ... t.stop() ... t.singleShot(TIMEOUT, foo) just work, or do I need to do more resetting than that?18:01
ralsinathisfred: just that18:01
thisfredkcool18:01
ralsinathisfred: oh, wait18:01
ralsinathisfred: let me check the docs ;-)18:01
ralsinathisfred: the docs are inconclusive but I bet it does stop it ;-)18:02
thisfredwill test :)18:02
ralsinasadly it's not something that can be tested in the python prompt since it needs an event loop running18:03
ralsinaok, now really lunch because u1-client tests are still running :-(18:04
thisfredhmm, stop does not actually seem to stop anymore18:06
thisfredI might as well not use the singleshot, since I keep the timer around anyway18:07
gatoxralsina, back!18:08
gatoxralsina, i don't know if you read my sms..... maybe i get back before you read it jeje18:08
thisfredralsina, going back to multiple singleshots, since that seems to behave more predictably18:10
thisfredralsina, actually no. stop seems to have no effect on singleShots. Or more likely: I'm doing it wrong18:14
thisfredthouf18:15
thisfredthough I don't see how. ralsina: pushed a version with a 10 sync period, and a debug print that shows stop() is called. It does not stop the singleShot though. To test: PYTHONPATH=. cosas/ui.py  and then open File/Sync, and then activate and deactivate the checkbox...18:17
thisfredhmmm18:17
thisfredI think I know18:17
thisfredmaybe18:17
thisfrednope, no idea18:18
mmccthisfred: (and ralsina ) - ui.py will pull in twisted anyway from ubuntuone.platform.credentials18:25
mmccbut I guess not reactor… just deferred, so that won't pull in qt4reactor?18:26
mmccwell, nothing in platform/credentials should import reactor, but how does a twisted deferred work without a reactor?18:28
alecummcc: the deferreds do not depend at all on the reactor18:29
alecummcc: the deferred is just an object that has a list of callbacks and a list of errbacks attached.18:29
alecummcc: and it calls one or the other when the deferred's callback or errback method is called.18:30
alecummcc: so, a deferred is just a way to encapsulate a series of callbacks. I tend to explain it as a kind of control structure.18:31
alecummcc: the other stuff in the defer module do not depend on the reactor either (for instance, the inlineCallbacks decorator).18:32
alecummcc: that is why we can use the defer module with other main loops, like the qt main loop or the gobject one, without using the twisted reactor.18:32
mmccalecu: ok, I follow that. still a little fuzzy on how defer interacts with a main loop, but I can go look18:33
alecummcc: a defer does not interact directly with a main loop.18:34
mmccalso thisfred - does your code work if you use setSingleShot and start instead of just singleShot?18:34
mmccthisfred: (from http://qt-project.org/forums/viewthread/4852)18:34
alecummcc: you may use the deferred's callback or errback method as a callback function for a given main loop. But the deferred module does not need to depend on any given main loop.18:35
alecummcc: also: the twisted.python.defer module is very well commented and pretty understandable if you want to understand how it works.18:37
mmccalecu: ok, thanks18:37
thisfredmmcc, that may work. Then I need to hook up the event handler some other way though, I think18:38
thisfredsince start doesn't take a callback18:38
mmccthisfred, yeah it looks like you need to do the PyQt equivalent of connect(), which I don't know :)18:40
thisfredmmcc, connect, so that's simple enough18:41
thisfredthe thing that I don't know is, is how this affects setting the timer in the timeout itself. One way to find out :)18:41
thisfredmaybe this is just18:42
thisfreda case where we actually don't want a singleshot at all18:42
thisfredmmcc, that fixed it, thx. pushed new version, for the curious18:49
mmccthisfred: great!18:50
alecuralsina: I've been testing the latest installer that briancurtin built, and I've found some issue with the proxy credentials.18:57
alecuralsina: it seems that if the user types the credentials wrong, then those are saved to the windows keyring and are retried forever.18:58
alecuralsina: everything else I tried seems to be working ok, though. For instance, I can login and sync successfully with the right proxy credentials.18:59
alecubut if I get them wrong, then the only solution is to manually stop evey process and remove the creds from "Credentials Manager"19:00
mmccalecu, when you get a chance, could you look at this mp: https://code.launchpad.net/~mikemc/ubuntuone-control-panel/fix-1024623-install-confs/+merge/118404 (it already has tests)19:00
alecubriancurtin2: [15:57] <alecu> ralsina: I've been testing the latest installer that briancurtin built, and I've found some issue with the proxy credentials.19:05
alecu[15:58] <alecu> ralsina: it seems that if the user types the credentials wrong, then those are saved to the windows keyring and are retried forever.19:05
alecu[15:59] <alecu> ralsina: everything else I tried seems to be working ok, though. For instance, I can login and sync successfully with the right proxy credentials.19:05
briancurtin2alecu: is that new?19:05
alecummcc: I have that tab opened, didn't get to it yet, sorry :P19:06
mmccalecu, no worries19:06
alecubriancurtin2: I think mandel mentioned something similar while working on it. I don't recall if it was with pyqt 4.9 or 4.8.19:07
mmccanyone: how do I poke tarmac to pick up an approved branch? I approved too many at once last week, and now this one is still stuck at "Approved": https://code.launchpad.net/~mikemc/ubuntuone-windows-installer/fix-1032290/+merge/11796019:07
alecummcc: try moving it to "needs review" and back.19:11
alecuok, it's kinder time. TTYAL19:11
ralsinaalecu: that looks like something we may have had since ever19:12
mmccthanks & bye alecu19:12
ralsinathisfred: re-review of https://code.launchpad.net/~ralsina/ubuntuone-client/verify-harder/+merge/118399 please?19:19
thisfredralsina, on it19:19
thisfredmine is fixed and pushed too19:19
thisfredralsina, +n for n > 019:23
mmccinteresting error loading the SSL certs for me - http://paste.ubuntu.com/1133087/19:24
mmcctaken from how we load them in storageprotocol's context.py19:25
mmccwhich is where I first saw the error19:25
thisfredmmcc, does getIssuer maybe return a special object instead of raising exceptions when something goes wrong?19:26
thisfredoh wow, that's twisted itself erroring right?19:28
mmccthisfred: yes… it's erring in __repr__19:28
thisfredmmcc, so it's probably never been tested in the console19:30
mmccwell, I just looked and we never use the actual twisted Certificate, we use the .original… looking now to see where that gets set19:30
mmccok, no errors unless I try to print the Certificate. uh, hooray?19:31
ralsinammcc: yike19:36
ralsinas19:36
ralsinammcc: that sounds like "it totally fails, but if you don't look the issuer seems valid"19:36
mmccralsina: if you print the Certificate.original, the underlying X509 object seems fine (to me)19:37
mmccand that's what our code actually uses…19:37
ralsinammcc: ok then :-)19:37
mmcchrm, although - what kind of object does verify_server_hostname get passed as 'cert'…19:39
mmcc(I'm looking)19:39
mmccok, it's expecting the 'original' object. weird that twisted's twisted.internet.ssl.CertificateOptions class doesn't accept twisted.internet.ssl.Certificate objects for its 'caCerts' constructor argument…19:44
mmccno wonder Certificate() isn't well tested19:45
ralsinammcc: that's one way to put it19:50
ralsinammcc: twisted is a maze of twisted little passages, some alike, some different.19:50
mmccralsina: so I'm learning. Its quirks are not endearing19:51
briancurtin2i need some fresh air. brb - quick walk around the neighborhood19:55
mmcclunchtime now19:58
thisfredSabemos dónde vive su familia.20:02
thisfredanother interesting choice of phrase to teach new speakers20:02
ralsinacould it be we don't have tarmac running for u1-client?20:02
ralsinathisfred: are you following a "Spanish for criminals" course?20:03
thisfredI think I may inadvertently be20:03
ralsinathisfred: because if those quotes are real, I am sure you can become semi-famouse by submitting it to gawker or something20:03
thisfredralsina, they are. I am of course cherry picking out of hundreds of phrases, but still20:04
ralsinabriancurtin, thisfred: small review? https://code.launchpad.net/~ralsina/ubuntuone-control-panel/check_subscribe_errors/+merge/11842020:05
thisfredcheck20:06
ralsina"¡Yo soy el ratón más rápido de todo Mexico!"20:06
thisfredralsina, could you also lift the needs fixing from mine, if you feel it's ok now? :)20:06
gatoxspeedy gonzalez?20:06
ralsinagatox: yep :-)20:07
ralsinathisfred: looking!20:07
gatoxok..... eod here!! see you tomorrow!! byeeeeeee20:07
thisfredralsina, de este lado del Río Grande20:07
ralsinabye gatox!20:08
thisfredpor lo menos20:08
ralsinathisfred: you're getting good at this!20:08
thisfredgracias :)20:08
* ralsina considers meetings in spanish starting this thursday20:08
thisfredralsina, and then in Dutch the week after? :P20:09
ralsinathisfred: your branch is a bit confusing20:09
ralsinathisfred: you are using start() which makes it a recurring timer20:09
thisfredralsina, it is a recurring timer now20:09
ralsinathisfred: and you are doing it on every lap20:09
thisfredI stop it in the signal handler20:09
ralsinaoh, right!20:10
ralsina+1 then :-)20:10
thisfredralsina, the singleshot one didn't really listen to stop()20:10
thisfredmuch like my dog20:10
ralsinathisfred: pity20:10
thisfredralsina, well, we were mildly abusing the single shot to get around issues where the actual call would be so slow that the timer would trigger again, etc.20:11
ralsinathisfred: yes20:12
ralsinathisfred: timers are surprisingly easy to get a bit wrong20:12
thisfredif you stop the timer as the first thing in the handler, I don't think you need to worry about that, so the workaround is no longer necessary20:12
thisfredbut yeah20:12
ralsina1 hour until the USA men's basketball team starts beating the .ar one20:13
* ralsina is so not jinxing it20:13
thisfredralsina, I would say "folder X already exists *on* your device"20:14
ralsinathisfred: I really need to get copy approval for this20:14
ralsinabut yes "on" sounds better.20:15
thisfredprepositions are tricky :)20:17
thisfredsubtly different in every language20:17
ralsinaI can still say all the spanish prepositions (useless thing we learn in school)20:18
ralsinaa ante bajo cabe con contra de dede en entre hasta hacia para por según sin so sobre tras20:18
thisfredI can do the german ones that take the 3rd case20:18
thisfredaus bei mit nach zeit von zu \ bis durch für gegen ohne um entlang20:19
ralsinaOMG there is a different "non traditional list" that adds durante, mediante vía!20:19
ralsinamediante is so totally an adverb, you silly royal spanish academy!20:20
ralsina*fist to the sky*20:20
thisfredheh20:20
ralsinaugh, crazy bad headache coming20:26
* briancurtin back, doing ralsina's review20:30
ralsinathanks briancurtin!20:30
ralsinabriancurtin: just don't set it to approved :-)20:30
briancurtinwas just reading that, slapping my hand to not set it yet20:30
ralsinahahaha20:31
briancurtinif i set it, you can call the police...they are down the street arresting a house full of people20:32
briancurtinwas a pleasant end to my walk20:32
ralsinabriancurtin: whoa20:33
thisfredLos individuos viven aquí20:34
aleculol!20:35
ralsinathisfred: "hay unos individuos sospechosos cerca de la casa de brian, oficial!"20:35
thisfredheh20:36
alecummcc: that ssl issue looks like the twisted repr code is expecting the commonName to be always present on the certificate, but it surely is not.20:36
thisfredbut surely the attribute should be there?20:40
thisfredotherwise it's pretty unpythonic. (shock! horror!)20:41
ralsinais that repr our code or is it in twisted?20:42
thisfredit's in twisted20:42
thisfredit looked like20:43
alecuthisfred: those attributes show up on OpenSSL objects when the corresponding fields in the certificate are present.20:43
alecuthisfred, ralsina: it's twisted code20:44
thisfredalecu, that's what I mean by unpythonic :P20:44
ralsinaalecu: then that looks like a bug20:44
ralsinahaving a repr that fails is just yucky20:44
thisfredproperties should not magically appear20:44
alecuright and right20:44
ralsinaso, mmcc you get to file a twisted upstream bug ;-)20:45
alecuthe thing is that *our* certificate is pretty weird in not including a Common Name field.20:45
alecubut that's a case that twisted should handle more gracefully20:46
ralsinaI am going to EOD a bit early today because my head is exploding20:46
thisfredeither that, or not allow it20:46
ralsinawill be back late, mail me for reviews20:47
ralsinathisfred: certs without common name are valid AFAIK, just weird20:47
thisfredright20:47
thisfredso twisted is wrong20:47
thisfredbut it would be better if it refused them, instead of failing in some specific cases, because now I don't trust that it actually doesn't do the wrong thing elsewhere20:48
ralsinaalthough reading ssl.com it seems that it can't be empty. Would have to read the RFC and won't20:48
ralsinahttp://info.ssl.com/Article.aspx?id=1004820:48
thisfredregardless, there is a bug in twisted: it allows a case that it can't properly handle20:49
ralsinaand googling for "missing certificate CN" gives me a ton of results on CNN about obama's birth certificate20:50
thisfredHAHA20:51
thisfredthe UN really should take away our rights to be a country for a few decades20:51
alecucertificates without commonName (which is the hostname that the certificate is valid for) use a different field so they can hold a list of hostnames, and this usually replaces commonNames.20:52
thisfredboolean trap20:52
alecuso it's ok for a cert to have an empty or non existing commonName20:52
thisfredachievement unlocked20:52
alecuso, the only thing we should fix is twisted trying to repr them.20:53
thisfredhttp://ariya.ofilabs.com/2011/08/hall-of-api-shame-boolean-trap.html20:53
thisfredwell, not exactly, but20:54
thisfredclose.20:54
thisfrednullean trap20:54
ralsinahaha now with bootstrap all sites look the same: compare ariya's site to http://nikola.ralsina.com.ar20:57
thisfred:)20:59
alecuralsina: if you have a symlink pointing to a folder, then os.path.isdir returns True21:11
alecuralsina: that may break some of the newer branches, won't it?21:12
ralsinaalecu: we test for symlinks first21:12
alecuoh, right!21:13
ralsinareally off to see olympic basketball now. Have fun121:13
ralsina!21:13
alecuralsina: when you get back: the isdir issue affects the control-panel branch; I've added some comments to it now.21:37
ralsinaralsina: thanks21:38
ralsinaralsina: I'll fix them tonight21:39
mmccHi guys, sorry I missed the discussion above - all the certificates have a commonName field, which you can get to using the .original property of twisted.internet.ssl.Certificate, which gives you a X509 object that behaves correctly:  http://paste.ubuntu.com/1133292/21:39
mmccthe twisted code that *should* wrap .original is not obviously broken, how much time should I spend on this?21:42
mmccI mean, it's broken, it's just not obvious how21:42
mmccOK, that paste was broken too. It looks like our go_daddy_class_2 cert has no commonName: http://paste.ubuntu.com/1133308/21:49
alecummcc: exactly21:49
alecummcc: our certificate has the domain name in the field named "Certificate Subject Alt Name", instead of having it in the Common Name.21:52
alecummcc: so: I would suggest filling a bug in twisted, and not using repr for the time being.21:52
alecummcc: and I think we should not worry anymore about this21:53
mmccalecu: done. we don't actually use their repr - I ran into this while debugging21:59
alecummcc: right22:00
alecummcc: I'm reviewing fix-1024623-install-confs22:10
alecummcc: I can't find run-mac-tests.sh22:11
mmccalecu: ok, I'm around if you have comments22:11
alecummcc: should I be running run-tests.sh ?22:11
mmccalecu: yes22:11
mmccas it should be22:11
alecuoh, ok. I see that it's using the devtools from the eggs, so I probably have something broken there.22:12
alecummcc: I might have something broken... have you seen an error like this? http://pastebin.ubuntu.com/1133346/22:14
mmccalecu: no, that's not familiar… let me look22:15
alecuoh, it seems that u1trial considers "test_windows.py, test_linux" to be ONE module name.22:18
mmccalecu, I'm puzzled. it looks like it's setting IGNORE_FILES correctly but then that's getting interpreted as one module name22:18
mmccright22:18
mmccmaybe add a set echo to the script to see what's going on? do you have a dev-tools that parses arguments differently or something?22:19
mmccchecking now to see if mine is out of date22:20
alecummcc: probably! I think that dobey did some changes to the way dev-tools parsed the cmdline args22:20
mmccI bet you have rev 77. I don't have it :)22:20
alecummcc: 77 it is!22:21
mmcchrm, but I just updated to 77 and my control panel tests are still working22:21
alecuI just did "bzr switch -r 76", and I got a bzr stacktrace.22:22
mmccarg22:22
alecuAnd now every bzr command that touches the disk dies with the same backtrace.22:22
alecuawesome!22:22
mmccany good strategies for testing things that are set at import level? move them into a function? I'm looking at ubuntuone-storage-protocol/ubuntuone/storageprotocol/context.py -- where it sets ssl_cert_location at the top of the file22:38
alecummcc: I don't know what's a good global strategy, but for specifically this, it makes a lot of sense to move that to a function or three22:43
alecummcc: and also, we should probably be saving (in a singleton, or something similar) the value returned by get_certificates()...22:45
alecuhmmm...22:45
alecuwell, it's not so expensive anyway.22:45
mmccalecu: agreed (on moving to function). already started doing that. I'll add tests for the windows part too.22:45
mmccyeah, I'm not sure it's called that often22:46
mmcchow many times do we create an ssl context?22:46
alecuthe thing is that the 3 ssl certificates are loaded every time a "webclient" is created in SD.22:46
alecuthat happens only when getting the list of published files, or publishing a new file, or some other thing I can't remember right now, but that is done as often.22:47
alecuso yes, this won't be a speed issue anytime soon.22:47
mmccok22:49
mmccok, have to go - I'll be back later to clean that up23:12

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