August 22, 2011  
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31

[00:23:07] *** fredreichbier_ has joined #ooc-lang
[00:26:52] *** fredreichbier has quit IRC
[00:41:38] *** Oddity007 has quit IRC
[01:19:52] *** fredreichbier_ has quit IRC
[02:47:21] *** Oddity007 has joined #ooc-lang
[03:22:53] *** echelog-2 has joined #ooc-lang
[03:47:36] *** shahri has quit IRC
[04:35:16] *** MrSamuel has quit IRC
[05:03:55] *** MrSamuel has joined #ooc-lang
[05:18:16] *** Oddity007 has quit IRC
[06:13:48] *** mickael9` has quit IRC
[07:45:32] *** aanderse has quit IRC
[07:48:42] *** aanderse has joined #ooc-lang
[08:57:04] *** Nilium has quit IRC
[09:01:42] *** Nilium has joined #ooc-lang
[09:01:42] *** ChanServ sets mode: +v Nilium
[10:29:15] *** MrSamuel has joined #ooc-lang
[12:28:38] *** MayDaniel has joined #ooc-lang
[12:50:17] *** MayDaniel has quit IRC
[13:34:35] *** MayDaniel has joined #ooc-lang
[13:46:47] *** MayDaniel has quit IRC
[16:56:48] *** Oddity007 has joined #ooc-lang
[21:26:43] *** echelog-2 has joined #ooc-lang
[21:30:57] <duckinator> nddrylliog: so i've tracked the issue down to this line:   bytesRecv := socket recv(descriptor, chars, length, flags)
[21:31:07] <duckinator> nddrylliog: after that point, it's completely butchered
[21:31:23] <duckinator> wait, what...
[21:31:38] <duckinator> in receiveByte() that works...
[21:31:40] * duckinator dies of confusion
[21:33:40] *** Nilium_ has joined #ooc-lang
[21:33:40] *** ChanServ sets mode: +v Nilium_
[21:36:07] *** MayDaniel has joined #ooc-lang
[21:36:56] <duckinator> ok i failed, receiveByte() doesn't use that...hm...
[21:41:57] *** curtism has joined #ooc-lang
[21:47:24] *** MayDaniel has quit IRC
[21:47:57] *** Nilium_ has quit IRC
[21:50:15] <duckinator> ...*FACEDESK*
[21:50:29] <duckinator> nddrylliog: apparently the entire issue is readLine()
[21:50:50] <duckinator> nddrylliog: replacing `conn in readLine() println()` with a nasty loop fixed it...
[21:52:55] *** joshthecoder has joined #ooc-lang
[21:52:55] *** ChanServ sets mode: +v joshthecoder
[21:59:12] *** Nilium_ has joined #ooc-lang
[21:59:12] *** ChanServ sets mode: +v Nilium_
[22:00:45] *** Nilium_ has quit IRC
[22:07:58] <nddrylliog> duckinator: so how do we fix readLine ?
[22:08:08] <duckinator> nddrylliog: i'm not entirely sure :(
[22:08:48] <duckinator> i'm thinking the fix for ASCII files ending with a backspace might be related but idk
[22:08:53] <duckinator> if(c == end || (!hasNext?() && c == 8)) { <-- that
[22:14:44] <duckinator> nddrylliog: huh...apparently NOT having that c==8 breaks sockets as well o.O
[22:14:49] <duckinator> i don't understand this lol
[22:15:27] <duckinator> anywho, brb/bbs
[22:15:32] <nddrylliog> hm
[22:15:51] <nddrylliog> well hasNext is kind of weird for sockets
[22:15:52] <duckinator> nddrylliog: my fork's socket branch works if you avoid readUntil() and anything using it
[22:15:59] <duckinator> nddrylliog: i've fixed that :)
[22:16:24] <duckinator> afaik, it's solely down to readUntil() behaving bizarrely
[22:17:22] <duckinator> nddrylliog: https://github.com/duckinator/ooch/blob/master/ooch.ooc
[22:17:38] <duckinator> nddrylliog: replacing the readLine() with a disgusting loop yields a perfectly functional httpd
[22:19:02] <nddrylliog> (haha I like ooch)
[22:19:20] <duckinator> isn't it nice? :>
[22:19:38] <duckinator> hmm
[22:20:02] <duckinator> nddrylliog: since twiddling with the if() condition yields nothing, it may be related to Buffer append(Char)
[22:21:15] <duckinator> i'm really just sorta making half-assed guesses at this point, because none of the issues even make sense really
[22:24:47] <duckinator> ...derp
[22:24:50] <duckinator> what the hell
[22:25:00] <duckinator> nddrylliog: wd, i think hasNext? might actually be the issue still :|
[22:25:16] <duckinator> idk *HOW*, but yea
[22:27:56] <nddrylliog> duckinator: I don't know how you're testing, but this shouldn't be that hard
[22:28:16] <duckinator> well o cam
[22:28:25] <duckinator> ...let's try that again
[22:28:55] <duckinator> hm
[22:29:09] <duckinator> nddrylliog: in readUntil(), the loop isn't reading all the bytes it should be
[22:29:40] <duckinator> while(hasNext?()) { c := read(); c toString() println(); /* ... */ } only prints "E/" instead of "GET /"
[22:36:22] <nddrylliog> duckinator: so read() reads one too much? and toString() messes up?
[22:36:35] <duckinator> seems so
[22:36:51] <duckinator> but i mean...
[22:36:57] <nddrylliog> duckinator: is there a simple test independent from ooch and your changes I could try?
[22:36:57] <duckinator> read: func ~char -> Char { source receiveByte() }
[22:37:05] <duckinator> how CAN that read too much :S
[22:37:18] <nddrylliog> duckinator: look at the generated C code ?
[22:37:22] <nddrylliog> duckinator: ..maybe it's calling it twice ?
[22:39:49] <duckinator> return net_TCPSocket__TCPSocket_receiveByte(this->source); -- so read() itself is fine
[22:41:10] <duckinator> unrelated issue, but receiveByte~withFlags(flags) doesn't actually pass the flags on
[22:41:39] <duckinator> ...
[22:41:53] <duckinator> are you fucking serious...
[22:42:04] <duckinator> nddrylliog: receive(c&, 1, 0) -> receive(c&, 1, flags) and it works...
[22:45:27] <duckinator> heh
[22:47:17] <duckinator> nddrylliog: now i think the only issue is specific to my httpd, probably not flushing the socket or similar
[22:54:01] <nddrylliog> huh
[22:54:02] <nddrylliog> weird
[22:54:03] <nddrylliog> anyway
[22:54:08] <nddrylliog> gonna doze off for tonight,
[22:54:18] <nddrylliog> got stuff to deal with
[22:54:35] <nddrylliog> duckinator: thx for your work, make a pull request when I can pull your changes in
[22:54:37] *** nddrylliog has quit IRC
[22:54:41] <duckinator> alri---bye?
[23:12:36] *** fredreichbier has joined #ooc-lang
[23:12:36] *** ChanServ sets mode: +v fredreichbier
[23:25:11] <duckinator> ohai fredreichbier
[23:25:23] <duckinator> fredreichbier: i fixed the ooc socket bugs :D
[23:25:25] <fredreichbier> hey theres
[23:25:26] <fredreichbier> YES
[23:25:29] <fredreichbier> how?
[23:25:40] <duckinator> https://github.com/duckinator/rock/commits/sockets ^^
[23:26:26] <duckinator> it's all very small changes
[23:26:28] <duckinator> probably 10 lines total
[23:27:17] <fredreichbier> mmmmkay!
[23:27:19] <fredreichbier> very nice!
[23:27:44] <duckinator> submitting a pull request now
[23:28:48] <duckinator> http://loadimpact.com/result/mono.ath.cx:8000/-9b0448828a435d2052c70a3529f13e11 that's a very load test of a very simple httpd
[23:28:53] <duckinator> er
[23:28:56] <duckinator> http://loadimpact.com/result/mono.ath.cx:8000/-9b0448828a435d2052c70a3529f13e11 that's a load test of a very simple httpd*
[23:34:35] <fredreichbier> is that ... good? :D
[23:35:20] <duckinator> fredreichbier: 40 clients hitting a 100% unoptimized server simultaneously getting ~0.6s...i think it's decent :P
[23:35:33] <fredreichbier> cool! :D
[23:35:41] <fredreichbier> my mongodb bindings is working so far
[23:36:03] <duckinator> hmm
[23:36:20] <duckinator> it's not good at concurrency (namely because it is a single thread...), but it's very fast
[23:37:43] <fredreichbier> maybe use ooc-coroutines or so
[23:37:52] <duckinator> yea
[23:37:56] <duckinator> assuming they work on arch now
[23:38:05] <duckinator> there was bizarre issues with them last i tried
[23:39:00] <duckinator> fredreichbier: https://gist.github.com/1163672
[23:39:03] <fredreichbier> hehe
[23:39:22] <duckinator> longest transaction out of 10,000 was 0.02s
[23:39:32] <fredreichbier> Transaction rate:	      151.40 trans/sec <- okay?
[23:39:43] <duckinator> that's the same as 151 views a second
[23:39:55] <duckinator> that's WITHOUT adding any concurrency
[23:40:57] <fredreichbier> niiiice!
[23:42:34] <duckinator> fredreichbier: btw that was 100 bursts of 100 simultaneous connections, btw
[23:42:49] <fredreichbier> hehe
[23:42:53] <fredreichbier> that's okay i guess. :D
[23:47:57] <duckinator> fredreichbier: https://gist.github.com/1163699 <-- groups of 100 simultaneous hits for 30 seconds, ended up with 323,609 requests, all answered within 0.03s
[23:48:27] <fredreichbier> sounds quite okay!
[23:48:38] <duckinator> trying bursts of 900 now
[23:48:47] <duckinator> 80% CPU on all 4 cores :D
[23:49:47] <fredreichbier> hehe
[23:50:07] <duckinator> still "Lifting the server siege" :P
[23:50:45] <duckinator> ....still
[23:51:03] <duckinator> i think it died
[23:52:25] <duckinator> O.o
[23:52:41] <duckinator> fredreichbier: i stepped it down to 500 simultaneous requests. at 5130 transactions/second, it's still got 99.96% availability
[23:53:15] <duckinator> bbl, dinner
[23:53:20] <fredreichbier> hehe
[23:53:25] <fredreichbier> enjoy :D

top