*** flwang has quit IRC | 00:03 | |
*** jcru has quit IRC | 00:11 | |
*** flwang has joined #openstack-marconi | 00:19 | |
*** amitgandhi has joined #openstack-marconi | 00:23 | |
*** amitgandhi has quit IRC | 00:28 | |
*** kgriffs_afk is now known as kgriffs | 00:52 | |
*** kgriffs is now known as kgriffs_afk | 01:07 | |
*** amitgandhi has joined #openstack-marconi | 01:14 | |
*** oz_akan_ has joined #openstack-marconi | 01:17 | |
*** amitgandhi has quit IRC | 01:18 | |
*** nosnos has joined #openstack-marconi | 01:33 | |
*** reed has quit IRC | 01:35 | |
openstackgerrit | Fei Long Wang proposed a change to openstack/python-marconiclient: Add /health support to the client https://review.openstack.org/66787 | 02:06 |
---|---|---|
*** amitgandhi has joined #openstack-marconi | 02:14 | |
*** amitgandhi has quit IRC | 02:19 | |
*** balajiiyer has joined #openstack-marconi | 02:23 | |
*** fifieldt has joined #openstack-marconi | 02:47 | |
*** oz_akan_ has quit IRC | 02:58 | |
*** flwang has quit IRC | 03:04 | |
*** ayoung_ has joined #openstack-marconi | 03:14 | |
*** amitgandhi has joined #openstack-marconi | 03:15 | |
*** amitgandhi has quit IRC | 03:20 | |
*** lbragstad has joined #openstack-marconi | 04:08 | |
*** oz_akan_ has joined #openstack-marconi | 04:14 | |
*** amitgandhi has joined #openstack-marconi | 04:16 | |
*** amitgandhi has quit IRC | 04:20 | |
*** reed has joined #openstack-marconi | 04:26 | |
*** reed has quit IRC | 04:36 | |
*** amitgandhi has joined #openstack-marconi | 05:16 | |
*** amitgandhi has quit IRC | 05:21 | |
*** nosnos_ has joined #openstack-marconi | 05:27 | |
*** lbragstad has quit IRC | 05:27 | |
*** nosnos has quit IRC | 05:28 | |
*** balajiiyer has quit IRC | 05:31 | |
*** oz_akan_ has quit IRC | 06:06 | |
*** nosnos_ has quit IRC | 06:10 | |
*** nosnos has joined #openstack-marconi | 06:10 | |
*** oldfish has joined #openstack-marconi | 06:12 | |
*** oldfish has quit IRC | 06:14 | |
*** flwang has joined #openstack-marconi | 06:14 | |
*** amitgandhi has joined #openstack-marconi | 06:17 | |
*** amitgandhi has quit IRC | 06:21 | |
*** chandankumar has joined #openstack-marconi | 06:23 | |
*** oz_akan_ has joined #openstack-marconi | 06:38 | |
*** oz_akan_ has quit IRC | 06:43 | |
*** amitgandhi has joined #openstack-marconi | 07:18 | |
*** amitgandhi has quit IRC | 07:22 | |
*** flaper87|afk is now known as flaper87 | 07:35 | |
*** oz_akan_ has joined #openstack-marconi | 07:39 | |
*** oz_akan_ has quit IRC | 07:44 | |
*** jamieh has joined #openstack-marconi | 08:08 | |
*** amitgandhi has joined #openstack-marconi | 08:18 | |
openstackgerrit | Sascha Peilicke proposed a change to openstack/python-marconiclient: Sync with global requirements https://review.openstack.org/67046 | 08:20 |
openstackgerrit | Flavio Percoco proposed a change to openstack/python-marconiclient: Add shard support to the client https://review.openstack.org/64829 | 08:22 |
*** amitgandhi has quit IRC | 08:23 | |
*** oz_akan_ has joined #openstack-marconi | 08:39 | |
*** oz_akan_ has quit IRC | 08:44 | |
*** yassine has joined #openstack-marconi | 09:18 | |
*** amitgandhi has joined #openstack-marconi | 09:19 | |
*** amitgandhi has quit IRC | 09:23 | |
*** oz_akan_ has joined #openstack-marconi | 09:40 | |
openstackgerrit | A change was merged to openstack/python-marconiclient: Let Hacking choose the right dependencies on its own https://review.openstack.org/66526 | 09:41 |
*** oz_akan_ has quit IRC | 09:45 | |
*** nosnos has quit IRC | 09:51 | |
*** ykaplan has joined #openstack-marconi | 09:51 | |
*** flwang has quit IRC | 09:58 | |
*** amitgandhi has joined #openstack-marconi | 10:20 | |
*** amitgandhi has quit IRC | 10:24 | |
*** oz_akan_ has joined #openstack-marconi | 10:41 | |
*** oz_akan_ has quit IRC | 10:42 | |
*** oz_akan_ has joined #openstack-marconi | 10:43 | |
*** oz_akan_ has quit IRC | 10:47 | |
*** ykaplan has quit IRC | 10:49 | |
*** flaper87 is now known as flaper87|afk | 10:59 | |
*** amitgandhi has joined #openstack-marconi | 11:20 | |
*** amitgandhi has quit IRC | 11:25 | |
*** ykaplan has joined #openstack-marconi | 11:59 | |
*** oz_akan_ has joined #openstack-marconi | 12:21 | |
*** amitgandhi has joined #openstack-marconi | 12:21 | |
*** amitgandhi has quit IRC | 12:26 | |
*** tedross has joined #openstack-marconi | 12:41 | |
*** flaper87|afk is now known as flaper87 | 13:06 | |
*** flwang has joined #openstack-marconi | 13:15 | |
*** oz_akan_ has quit IRC | 13:18 | |
*** amitgandhi has joined #openstack-marconi | 13:22 | |
*** amitgandhi has quit IRC | 13:26 | |
*** oz_akan_ has joined #openstack-marconi | 13:29 | |
*** fifieldt has quit IRC | 13:31 | |
openstackgerrit | Sascha Peilicke proposed a change to openstack/python-marconiclient: Sync with global requirements https://review.openstack.org/67046 | 13:33 |
*** oz_akan_ has quit IRC | 13:33 | |
*** mpanetta has joined #openstack-marconi | 13:37 | |
*** ayoung_ has quit IRC | 13:42 | |
flwang | flaper87: ping | 13:56 |
flaper87 | flwang: pong | 13:56 |
flaper87 | flwang: glance or marconi? | 13:57 |
flwang | flaper87: a question about oslo.messaging :) | 13:57 |
flaper87 | glance | 13:57 |
*** haomaiwang has quit IRC | 14:03 | |
*** haomaiwang has joined #openstack-marconi | 14:04 | |
*** cpallares has joined #openstack-marconi | 14:08 | |
*** oz_akan_ has joined #openstack-marconi | 14:12 | |
*** haomaiwa_ has joined #openstack-marconi | 14:14 | |
cpallares | good mornin' | 14:15 |
*** jcru has joined #openstack-marconi | 14:15 | |
flaper87 | cpallares: gooood morning | 14:17 |
cpallares | flaper87: o/ | 14:17 |
cpallares | how are you today? | 14:17 |
*** haomaiwang has quit IRC | 14:17 | |
flaper87 | cpallares: I'm doing fine, how are you? | 14:18 |
*** ykaplan has quit IRC | 14:18 | |
*** oz_akan_ has quit IRC | 14:18 | |
*** oz_akan_ has joined #openstack-marconi | 14:19 | |
openstackgerrit | Cindy Pallares proposed a change to openstack/marconi: Create communication between API request & storage https://review.openstack.org/67168 | 14:24 |
flaper87 | woooooooooooooooooooooooooow | 14:25 |
flaper87 | lemme look at THAT! | 14:25 |
*** whenry has joined #openstack-marconi | 14:26 | |
cpallares | :D | 14:28 |
*** amitgandhi has joined #openstack-marconi | 14:28 | |
cpallares | You should also give some love to this one http://review.openstack.org/#/c/61476/ | 14:28 |
cpallares | flaper87: ^ | 14:28 |
*** ykaplan has joined #openstack-marconi | 14:29 | |
* flaper87 will hug all those patches today | 14:30 | |
*** balajiiyer has joined #openstack-marconi | 14:34 | |
*** amitgandhi has quit IRC | 14:37 | |
*** amitgandhi has joined #openstack-marconi | 14:38 | |
*** lbragstad has joined #openstack-marconi | 14:46 | |
*** kgriffs_afk is now known as kgriffs | 14:50 | |
*** malini has joined #openstack-marconi | 14:53 | |
*** alcabrera has joined #openstack-marconi | 15:03 | |
alcabrera | Good morning! :D | 15:03 |
*** rwsu has joined #openstack-marconi | 15:07 | |
*** jmckind has joined #openstack-marconi | 15:15 | |
cpallares | Hello alcabrera, good morning to you. | 15:17 |
alcabrera | cpallares: Good morning! | 15:21 |
alcabrera | How are you? | 15:21 |
*** ayoung_ has joined #openstack-marconi | 15:26 | |
kgriffs | flaper87: quick review here plz - https://review.openstack.org/#/c/65521/ | 15:27 |
flaper87 | kgriffs: looking | 15:27 |
flaper87 | alcabrera: good morning. How are you doing? | 15:28 |
flaper87 | kgriffs: I thought I had reviewed that patch :/ | 15:28 |
flaper87 | doone | 15:28 |
alcabrera | flaper87: good morning! I'm feeling hungry. It's one of those days where I've forgotten to eat breakfast since waking up. >.> | 15:29 |
kgriffs | flaper87: thanks! | 15:32 |
kgriffs | flaper87: different topic | 15:32 |
kgriffs | I am thinking about introducing two-phase commit when posting messages to mongodb | 15:33 |
alcabrera | I'm out for a little while - headed to an appointment. See you guys a little after noon! | 15:33 |
*** alcabrera has quit IRC | 15:33 | |
kgriffs | that would allow us to say that--even in the case of a nasty network failure--either the entire message batch was posted, or none were. | 15:34 |
kgriffs | my idea was to post messages with a boolean flag, e.g., "committed" | 15:34 |
kgriffs | and then message queries would filter out anything where committed == False | 15:34 |
kgriffs | downside is that this requires an extra write on posting messages, and an extra filter on reading messages. The latter probably won't impact performance significantly. | 15:35 |
kgriffs | flaper87: thoughts? | 15:35 |
flaper87 | mmhhh, a question first :) | 15:36 |
kgriffs | shoot | 15:36 |
flaper87 | will this be part of the API or just related to the mongodb backend? As you explained, I'd assume the later | 15:36 |
kgriffs | great question | 15:37 |
kgriffs | so | 15:37 |
flaper87 | As you explained it* | 15:37 |
kgriffs | v1.1 removes the "partial" field | 15:37 |
kgriffs | but there is still a chance for partial enqueuing if there is a sudden, prolonged network failure in the middle of sending the messages over. | 15:38 |
kgriffs | or, consider that the master mongod crashes hard | 15:39 |
kgriffs | we get autoreconnect | 15:39 |
kgriffs | and then have to figure out what, if anything was replicated to a secondary | 15:39 |
kgriffs | I guess this all assumes a few things about how mongod works | 15:39 |
kgriffs | iirc, mongod writes each doc as it comes in, rather than waiting for the entire set in the request to arrive before getting to work. | 15:40 |
flaper87 | indeed, my concern is that I don't want to bring this concepts to the API | 15:40 |
flaper87 | kgriffs: that's correct | 15:40 |
flaper87 | mongod writes happen in a FIFO fashion | 15:41 |
flaper87 | if it stays within the mongodb backend boundaries then I think it's fine | 15:41 |
flaper87 | bringing that to the API will make implementations like amqp even harder | 15:41 |
flaper87 | we'll have queue flavors, though | 15:42 |
flaper87 | that could solve that issue | 15:42 |
flaper87 | but lets not get there yet | 15:42 |
flaper87 | that being said. I don't think reads will be a huge impact since it's an eq match on an indexed field | 15:42 |
flaper87 | the updates may be an issue, though. | 15:43 |
kgriffs | kk. we can try it and benchmark to see. | 15:43 |
flaper87 | I guess you're thinking to do all this before returning to the client | 15:43 |
kgriffs | correct | 15:43 |
flaper87 | ok, cool | 15:43 |
kgriffs | otherwise, you have to do some messy hacks to figure out which ids made it (if any) so you can tell the client | 15:44 |
kgriffs | wrt putting this in the API | 15:44 |
kgriffs | do you mean, we should not require atomic message postings for all backends? | 15:44 |
flaper87 | thinking aloud. Would it be that bad to have a partial insert in case of network failure ? | 15:45 |
flaper87 | from a user stand point, what would that mean? | 15:45 |
malini | flaper87: depends on what response you send back | 15:45 |
kgriffs | suppose i am using marconi for metering so I can bill a customer | 15:45 |
kgriffs | if I get a partial insert, I *have* to know what succeeded and what failed. Otherwise the customer could get overbilled if I resend some messages. | 15:46 |
kgriffs | so, i can catch socket and autoreconnect errors and retry, plus query to see which of the messages made it in | 15:47 |
kgriffs | but at some point i will have to give up for a prolonged network partition | 15:47 |
kgriffs | and in that case there is no way for me to discover which messages succeeded in order to inform the client, since by definition, I can't talk to the DB. | 15:48 |
flaper87 | mmh, but that's different than saying partial inserts are bad. | 15:49 |
kgriffs | on the other hand, if I do two-phase, then i can just tell the client to assume nothing succeeded and it is safe for them to resend the entire batch. | 15:49 |
flaper87 | I mean, if we can tell what messages were not inserted, then we're offering some level of safety | 15:49 |
kgriffs | flaper87: well, they are only bad if you can't tell the client which messages succeeded | 15:49 |
flaper87 | :) | 15:49 |
kgriffs | exactly | 15:49 |
kgriffs | but we can't always tell | 15:50 |
kgriffs | that's what I'm concerned about | 15:50 |
flaper87 | because we removed the partial stuff | 15:50 |
flaper87 | :P | 15:50 |
flaper87 | jokes apart | 15:50 |
kgriffs | heh | 15:50 |
flaper87 | FWIW, mongodb 2.6 will introduce a better error reporting (AFAIU) | 15:51 |
kgriffs | i mean, we could still do partial stuff, but at some point you have to just give up if the outage lasts too long | 15:51 |
flaper87 | and yes, YOU ARE WELCOME, mongodb community | 15:51 |
kgriffs | w00t | 15:51 |
flaper87 | why should we wait? What if we return back to the client as soon as the failure happens instead of retrying ? | 15:52 |
flaper87 | it'd be safer for the client to get back to it and let it retry than retrying ourselves from the same node | 15:52 |
kgriffs | we could do that. | 15:52 |
kgriffs | but that doesn't solve the problem of not knowing what succeeded | 15:52 |
flaper87 | because mongodb <2.6 makes that very hard | 15:53 |
kgriffs | say I get a socket error. I immediately return to the client and they have no idea which messages succeeded | 15:53 |
flaper87 | kgriffs: true that | 15:53 |
flaper87 | socket errors | 15:53 |
kgriffs | networking sucks. | 15:54 |
* kgriffs hides | 15:54 | |
flaper87 | kgriffs: networking sucks BIG TIME | 15:54 |
flaper87 | kgriffs: where are you hiding? quick quick | 15:54 |
kgriffs | :D | 15:54 |
kgriffs | wrt AMQP | 15:54 |
kgriffs | i don't believe message delivery is guaranteed, is it? | 15:54 |
flaper87 | at least we could hack from the same place, that would remove any network partition in our conversation | 15:55 |
flaper87 | :D | 15:55 |
malini | fyi..we have marconi on the agenda for today's openstack-qa meeting | 15:55 |
flaper87 | kgriffs: there are a few ways to guarantee message delivery | 15:56 |
malini | if anybody is interested in joining its @ 1700 UTC | 15:56 |
flaper87 | malini: AWESOME! Glad to know that :D | 15:56 |
kgriffs | malini: kk | 15:57 |
malini | Hopefully tht'll get some folks to look at our reviews seriously | 15:57 |
kgriffs | flaper87: so, if we said that all backends had to have atomic commits of batch messages, would that work for AMQP? | 15:57 |
kgriffs | i guess that is a little different from guaranteed delivery | 15:57 |
kgriffs | perhaps we could say this in the v1.1 spec: "When using the official SQL and MongoDB drivers, Marconi will either succeed in enqueuing all messages in the submitted batch, or fail to enqueue any of them." | 16:00 |
flaper87 | kgriffs: that depends on whether the backend supports batch inserts or not but yes, that sounds reasonable | 16:01 |
kgriffs | so, for v2.0 we could define some "optional" operations. batch inserts could be one of those. | 16:02 |
flaper87 | TBH, given the performance expectations we've for marconi and the underlying backends, I'd rather send 50 messages than just sending 1 batch insert | 16:02 |
flaper87 | Based on the reliability needs of some use cases like billing | 16:03 |
flaper87 | kgriffs: re for v2.0: +1. I don't think the AMQP backend will happen anytime soon. It's likely to happen for Jth | 16:04 |
flaper87 | I'm happy that we already discussed that, though. | 16:04 |
kgriffs | hmm | 16:05 |
kgriffs | so, how about this | 16:05 |
kgriffs | err | 16:05 |
kgriffs | so, i think we have at least two options | 16:05 |
kgriffs | A. do not guarantee atomic batch inserts and tell people to do one at a time if they need to be safe | 16:06 |
kgriffs | B. guarantee atomic batch inserts for some drivers/queue flavors, but not for others | 16:06 |
kgriffs | C. best-effort, where we tell them, if possible, which messages succeeded and which did not | 16:07 |
kgriffs | ordered by complexity of implementation ^^^ | 16:08 |
kgriffs | TBH, I like A over C since C is a PITA for client devs | 16:08 |
kgriffs | So, A or B? | 16:15 |
flaper87 | sorry, got distracted | 16:15 |
kgriffs | I am leaning toward trying B and if it is too slow, doing A | 16:16 |
flaper87 | I think B is fine | 16:16 |
kgriffs | B-2: guarantee atomic for everyone | 16:16 |
kgriffs | (forgot that option) | 16:16 |
kgriffs | and by "everyone" I mean "every backend" | 16:16 |
flaper87 | read my mind, I was going to add the atomic part | 16:16 |
kgriffs | "every backend that supports batch posts" | 16:17 |
flaper87 | if a backend can't provide atomic batch, then it better don't provide batch inserts at all | 16:17 |
kgriffs | kewl | 16:17 |
kgriffs | sounds like a plan | 16:17 |
flaper87 | rock on | 16:17 |
kgriffs | we need to some docs for driver devs! | 16:17 |
kgriffs | malini: we will need to benchmark my two-phased commit patch before allowing it to be merged | 16:18 |
*** ykaplan has quit IRC | 16:18 | |
malini | kgriffs: sorry I wasnt following the conversation | 16:19 |
malini | do we already have the patches in place ? | 16:19 |
malini | as in ready for review | 16:20 |
kgriffs | malini: no code yet; I was waiting to discuss with the team. | 16:21 |
malini | kgriffs: its really easy to run the benchmark tests..But the hard part is getting it deployed in an env | 16:22 |
malini | We shud come up with a better strategy for tht | 16:22 |
kgriffs | so, I'll get to work on this. It will make fixing the autoreconnect and socket error bugs easier. | 16:22 |
kgriffs | malini: for sure | 16:22 |
kgriffs | AUTOMATE ALL THE THINGS | 16:22 |
malini | kgriffs: does the benchmarking need to happen in a full blown env, or is it enough to run it against devstack? | 16:23 |
kgriffs | srsl. WHAT IS WRONG with gate lately? https://review.openstack.org/#/c/65521/ | 16:25 |
kgriffs | malini: as long as it hits mongodb we should be fine | 16:25 |
kgriffs | this will add a little bit of time to message posting | 16:25 |
kgriffs | so we want to measure the impact | 16:25 |
malini | kgriffs: tht makes it a lot easier !! I'll work on adding a non-voting job to run the tsung tests against devstack | 16:26 |
malini | Adding a bp | 16:26 |
malini | well no..I'll update an existing | 16:26 |
malini | we have too many load-test bps already | 16:27 |
kgriffs | heh | 16:28 |
kgriffs | cool beans | 16:28 |
*** kgriffs is now known as kgriffs_afk | 16:35 | |
*** amitgandhi has quit IRC | 16:45 | |
*** ayoung_ is now known as admiyo | 16:51 | |
openstackgerrit | A change was merged to openstack/python-marconiclient: Add shard support to the client https://review.openstack.org/64829 | 17:06 |
flaper87 | w000000000000000000t | 17:10 |
flaper87 | it took way too long | 17:10 |
*** amitgandhi has joined #openstack-marconi | 17:16 | |
*** amitgandhi has quit IRC | 17:20 | |
*** amitgandhi has joined #openstack-marconi | 17:28 | |
*** amit has joined #openstack-marconi | 17:30 | |
*** amit is now known as Guest55059 | 17:31 | |
*** Guest55059 has quit IRC | 17:32 | |
*** amitgandhi has quit IRC | 17:33 | |
*** amitgandhi has joined #openstack-marconi | 17:33 | |
malini | flaper87: is there anywhere I can find a list of core devs for each project? | 17:34 |
malini | a wiki maybe ? | 17:34 |
*** amitgandhi has quit IRC | 17:41 | |
*** chandankumar has quit IRC | 17:41 | |
*** whenry has quit IRC | 17:52 | |
flaper87 | malini: gerrit | 17:57 |
*** amitgandhi has joined #openstack-marconi | 17:58 | |
flaper87 | https://review.openstack.org/#/admin/groups/104,members | 17:58 |
flaper87 | malini: https://review.openstack.org/#/admin/groups/ | 17:58 |
flaper87 | back in a bit | 17:58 |
*** amitgandhi has quit IRC | 17:58 | |
malini | thanks flaper87! | 17:58 |
*** amitgandhi has joined #openstack-marconi | 17:59 | |
*** alcabrera has joined #openstack-marconi | 17:59 | |
malini | weird why they dont have the infra core there .. | 18:02 |
*** reed has joined #openstack-marconi | 18:02 | |
*** lbragstad has left #openstack-marconi | 18:09 | |
*** whenry has joined #openstack-marconi | 18:16 | |
*** jamieh has quit IRC | 18:25 | |
*** yassine has quit IRC | 18:33 | |
openstackgerrit | A change was merged to openstack/marconi: test: Use srmock header_dict in preparation for Falcon 0.1.8 https://review.openstack.org/65521 | 18:36 |
*** kgriffs_afk is now known as kgriffs | 18:50 | |
*** openstackgerrit has quit IRC | 18:52 | |
*** openstackgerrit has joined #openstack-marconi | 18:52 | |
*** alcabrera is now known as alcabrera|afk | 19:53 | |
*** alcabrera|afk is now known as alcabrera | 20:12 | |
*** malini has left #openstack-marconi | 20:24 | |
*** kgriffs is now known as kgriffs_afk | 20:45 | |
*** cpallares has quit IRC | 21:28 | |
*** jbernard has joined #openstack-marconi | 21:38 | |
*** amitgandhi has quit IRC | 21:39 | |
*** amitgandhi has joined #openstack-marconi | 21:51 | |
jbernard | flaper87: there is only the python-marconi package, correct? no -doc or client packages that i can see | 21:52 |
flaper87 | jbernard: correct | 21:52 |
flaper87 | jbernard: and thanks for reminding us that we've failed at documenting things | 21:52 |
flaper87 | :P | 21:53 |
jbernard | you're welcome ;) | 21:53 |
jbernard | DB dependency - up to the user, or do we depend on a default? | 21:53 |
jbernard | im guessing the latter | 21:53 |
*** amitgandhi has quit IRC | 22:00 | |
*** balajiiyer has quit IRC | 22:01 | |
*** amitgandhi has joined #openstack-marconi | 22:01 | |
*** mpanetta has quit IRC | 22:07 | |
flaper87 | jbernard: the default would be sqlite | 22:08 |
flaper87 | which is not good for production envs | 22:08 |
flaper87 | so, I'd expect users to change that | 22:08 |
flaper87 | but yeah, the default is sqlite | 22:08 |
jbernard | and the daemon is to be run as the marconi user/group? | 22:09 |
*** alcabrera has quit IRC | 22:10 | |
*** oz_akan_ has quit IRC | 22:21 | |
*** whenry has quit IRC | 22:43 | |
*** tedross has quit IRC | 22:47 | |
openstackgerrit | Kurt Griffiths proposed a change to openstack/marconi: fix(mongodb): Ensure batch message posts are atomic (all or nothing) https://review.openstack.org/67320 | 23:11 |
flaper87 | kgriffs_afk: weren't you afk ? | 23:12 |
flaper87 | that was fast | 23:12 |
flaper87 | :D | 23:12 |
*** jcru has quit IRC | 23:14 | |
*** flaper87 is now known as flaper87|afk | 23:19 | |
*** admiyo has quit IRC | 23:26 | |
*** amitgandhi has quit IRC | 23:37 |
Generated by irclog2html.py 2.14.0 by Marius Gedminas - find it at mg.pov.lt!