Zotonic
Zotonic
zotonic@conference.zotonic.com
Friday, 14 December 2012< ^ >
arjan has set the subject to: Zotonic - the Erlang Content Management Framework
Room Configuration

GMT+1
[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
Powered by ejabberd Powered by Erlang Valid XHTML 1.0 Transitional Valid CSS!