Friday, 14 December 2012< ^ >
arjan has set the subject to: Zotonic - the Erlang Content Management Framework
Room title: "Zotonic"
Allow users to change subject
Allow users to send private messages
Allow users to query other users
Allow users to send invites
Make room semianonymous
Default users as participants
Make room members-only
Make room moderated
Make room password protected
Make room persistent
Make room public searchable
Make participants list public
[08:49:26] Arjan leaves the room
[09:05:51] Arjan joins the room
[09:42:26] Andreas Stenius joins the room
[10:36:53] Arjan leaves the room
[11:04:32] maas.maarten.zeeman joins the room
[11:10:32] Arjan joins the room
[11:24:52] <Marc Worrell> :p found a comment in z_media_preview: "%% gif is gif, daar kan je gif op innemen"
[11:25:29] <maas.maarten.zeeman> lol
[11:34:12] <maas.maarten.zeeman> Hey @marc. I have some thoughts about gradually restarting services and isolating that kind of services a little bit more in order to prevent crashes and timeouts elsewhere. You suggested we could design something together. What is a good time, or way to do that. Shall I write / draw something first?
[11:35:03] <Marc Worrell> we can discuss in a hangout - should work well to ping pong some idead
[11:35:05] <Marc Worrell> ideas
[11:35:14] <Marc Worrell> (what is an iDead?)
[11:35:55] <Andreas Stenius> a ressurrected i[Pad|Mac|Phone|Pod]... ?
[11:37:01] <maas.maarten.zeeman> That is fine. Was already experimenting a bit in code. Little bit opportunistic. Hangout is currently not an option. The internet is dead here.
[11:37:39] <maas.maarten.zeeman> Next week i'm working from home except tuesday
[11:45:58] <maas.maarten.zeeman> Was thinking about a http://en.wikipedia.org/wiki/Circuit_breaker_design_pattern for erlang. The breaker could be made to monitor a process. When it exits and the breaker is closed it should restart it. When the breaker is open it will be reset to half-open after N secs. In half open state it could call an MFA to re-start the failed process. The breaker could also monitor mfa calls, when those timeout or throw exceptions it could mark it as a failure.
[11:48:49] <Marc Worrell> Sounds like a sound architectural direction to me. We have a lot of services that we can disable. Actually most of Zotonic's parts are decoupled so that we can run just fine with less functionality.
[11:50:00] <Marc Worrell> The bullshit index of the last sentence was 0.57 :p
[11:50:07] <Marc Worrell> http://www.blablameter.com/index.php
[11:54:45] <maas.maarten.zeeman> Bullshit index, who invents these things....?
[11:55:43] <maas.maarten.zeeman> Adding a leaked bucket counter also might work to detect if failures are just glitches or more fundamental problems.
[11:56:17] <maas.maarten.zeeman> Btw those things might also be handy for rate-limiting clients.
[11:58:26] <maas.maarten.zeeman> Want it as a separate erlang app. It's useful for a lot of other projects.
[12:01:03] <Marc Worrell> The "jobs" app has also some rate limiting features
[12:01:23] <Marc Worrell> https://github.com/esl/jobs
[12:02:28] Andreas Stenius leaves the room
[12:02:41] <Marc Worrell> I think of adding that one for sending e-mails, resizing etc
[12:04:07] andreas.stenius joins the room
[12:04:41] <maas.maarten.zeeman> Here is a circuit breaker for erlang. It monitors mfa calls. Limited to one circuit breaker. https://github.com/carlosvarelap/ecbreak
[12:06:00] <maas.maarten.zeeman> Was busy working on an implementation with ets so parallel calls are possible.
[12:06:19] <maas.maarten.zeeman> and multiple fuses.
[12:07:14] <Marc Worrell> Problem with ecbreak might be that is always copies all MFA args to the fsm first.
[12:07:32] <Marc Worrell> That is a no-go when we have many calls
[12:07:52] <maas.maarten.zeeman> Yeah. If the fuse is closed you should just call it.
[12:08:09] <maas.maarten.zeeman> but you have to somehow catch timeouts exceptions.
[12:08:22] <Marc Worrell> or is this thing just sitting on the restart of processes, then it is ok
[12:08:48] <Marc Worrell> i like your supervisor/circuit breaker approach - far better for Erlang
[12:09:04] <maas.maarten.zeeman> you could spawn a process, but then you will also suffer the copy penalty
[12:09:19] <maas.maarten.zeeman> (to monitor the timeout)
[12:09:34] <Marc Worrell> In Erlang we are not so much interested in failed calls, as we are in failed processes
[12:09:58] <maas.maarten.zeeman> that's true.
[12:10:57] <maas.maarten.zeeman> Then the caller should be able to handle that the process is offline because the circuit breaker is open.
[12:11:07] <maas.maarten.zeeman> expose that a little bit more.
[12:11:24] <maas.maarten.zeeman> And not magical via some proxy
[12:11:55] <Marc Worrell> that is indeed up to the caller
[12:12:15] <Marc Worrell> and regulated nicely in the case of sites or modules (notifiers)
[12:12:55] <Marc Worrell> More a kind of restart strategy - when a process crashes it takes the whole message queue with it, so you need to be able to recover from lost messages anyway
[12:13:24] <Marc Worrell> (especially when a complete node goes down - or an ethernet switch gives up…)
[12:18:17] <maas.maarten.zeeman> Yep. The fusebox could start the process as a temporary dynamic child of some supervisor.. Or it could be made to actually monitor a supervisor which takes care of restarting as fast as possible for some time until the circuit breaker takes over.
[12:20:04] maas.maarten.zeeman leaves the room
[12:22:16] <andreas.stenius> Marc Worrell: escape_html_comment/2 is not used (from z_html2markdown)... is it supposed to be, or can we simply remove it?
[12:22:26] andreas.stenius is cleaning up compile time warnings...
[12:22:43] Arjan leaves the room
[12:23:28] <Marc Worrell> It should be used at some point, to get the images in the html comments to markdown format
[12:23:40] Arjan joins the room
[12:24:04] <Marc Worrell> for now - remove it
[12:24:16] <andreas.stenius> ah, ok.
[12:25:04] <andreas.stenius> I'll mention that purpose in the commit message.
[12:26:51] Arjan leaves the room
[13:01:47] <andreas.stenius> looking at the issue labels on github. Isn't efficiency and performance two words for (almost) the same thing?
[13:29:39] Arjan joins the room
[13:31:05] <Arjan> andreas.stenius: +1
[13:32:09] <andreas.stenius> so I'd suggest we keep one of them, and move over the existing labels from the other one, then drop it. Q: which to keep.. ?
[13:32:23] <andreas.stenius> have you had your talk yet?
[13:34:33] maas.maarten.zeeman joins the room
[13:36:01] <Arjan> yep just did
[13:36:04] <Arjan> went pretty well
[13:36:15] <Arjan> they liked it and I got compliments about my presentation style :)
[13:36:52] <maas.maarten.zeeman> Nice
[13:37:07] <Arjan> putting the slides online right now
[13:37:24] <Arjan> I borrowed from a bunch of other erlang presentations :p
[13:37:32] <Arjan> one of the guys even got the original erlang book from 1993
[14:16:39] <maas.maarten.zeeman> He should get that copy signed.
[14:25:10] <Arjan> indeed
[14:25:14] <Arjan> I'll tweet a picture of it
[15:24:31] Arjan leaves the room
[15:34:49] Arjan joins the room
[17:43:35] Arjan leaves the room
[17:50:31] maas.maarten.zeeman leaves the room
[18:59:46] Arjan joins the room
[19:36:36] Arjan leaves the room
[20:33:32] Arjan joins the room
[21:24:08] Arjan leaves the room
[21:45:20] andreas.stenius leaves the room