You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@trafficserver.apache.org by Leif Hedstrom <zw...@apache.org> on 2015/06/17 00:54:41 UTC

Some initial thoughts on making all plugins reloadable

Hi all,

I started this slide show with some ideas how we can solve the “90%” of the problem (i.e. making all plugins reloadable, both code and configs). See the link at

https://www.icloud.com/keynote/AwBUCAESENdl8ooGRL1RjGFpC0Jt03saKd2FE7OokWOx4mDdeu2WkoGhPN-GT6KxDq0Sk01DmcUHUWsF7og8i8kJMCUCAQEEIMibNldjSDbtsm5RR0runUjgkB9WK2a2H5OJy1q3jOxs?redirectReason=notFound#Reloading_plugins <https://www.icloud.com/keynote/AwBUCAESENdl8ooGRL1RjGFpC0Jt03saKd2FE7OokWOx4mDdeu2WkoGhPN-GT6KxDq0Sk01DmcUHUWsF7og8i8kJMCUCAQEEIMibNldjSDbtsm5RR0runUjgkB9WK2a2H5OJy1q3jOxs?redirectReason=notFound#Reloading_plugins>



This is not complete yet, but looking for input / comments so we can maybe discuss this for the next summit. The big picture idea is that we

1) Load plugin.config and remap.config as a unit. Either file changes, they both reload.

2) These loaded units are ref-counted, on a  per-session basis. This means the same plugins / remap rules applies to all transaction on a session.

3) Plugins no longer have to worry about things such as ref-counting their configs / continuations, and we eliminate the (crazy :) time-delayed deletes of remap configurations.


This is not 100% compatible with current behavior (remap.config ls per transaction), but I think it’s worth that compromise. I think the above would be fairly straight forward, with a new struct (atomically swappable?) that holds both remap and plugins. I haven’t thought about all potential issues here, and this obviously still doesn’t solve the issue of gracefully restarting the core, but I think this could solve some of the most serious issues we have today (plugin code reload and plugin config reload).

Cheers,

— Leif


Re: Some initial thoughts on making all plugins reloadable

Posted by Phil Sorber <so...@apache.org>.
On Tue, Jun 16, 2015 at 4:54 PM Leif Hedstrom <zw...@apache.org> wrote:

> Hi all,
>
> I started this slide show with some ideas how we can solve the “90%” of
> the problem (i.e. making all plugins reloadable, both code and configs).
> See the link at
>
>
> https://www.icloud.com/keynote/AwBUCAESENdl8ooGRL1RjGFpC0Jt03saKd2FE7OokWOx4mDdeu2WkoGhPN-GT6KxDq0Sk01DmcUHUWsF7og8i8kJMCUCAQEEIMibNldjSDbtsm5RR0runUjgkB9WK2a2H5OJy1q3jOxs?redirectReason=notFound#Reloading_plugins
> <
> https://www.icloud.com/keynote/AwBUCAESENdl8ooGRL1RjGFpC0Jt03saKd2FE7OokWOx4mDdeu2WkoGhPN-GT6KxDq0Sk01DmcUHUWsF7og8i8kJMCUCAQEEIMibNldjSDbtsm5RR0runUjgkB9WK2a2H5OJy1q3jOxs?redirectReason=notFound#Reloading_plugins
> >
>
>
>
> This is not complete yet, but looking for input / comments so we can maybe
> discuss this for the next summit. The big picture idea is that we
>
> 1) Load plugin.config and remap.config as a unit. Either file changes,
> they both reload.
>
> 2) These loaded units are ref-counted, on a  per-session basis. This means
> the same plugins / remap rules applies to all transaction on a session.
>
> 3) Plugins no longer have to worry about things such as ref-counting their
> configs / continuations, and we eliminate the (crazy :) time-delayed
> deletes of remap configurations.
>
>
> This is not 100% compatible with current behavior (remap.config ls per
> transaction), but I think it’s worth that compromise. I think the above
> would be fairly straight forward, with a new struct (atomically swappable?)
> that holds both remap and plugins. I haven’t thought about all potential
> issues here, and this obviously still doesn’t solve the issue of gracefully
> restarting the core, but I think this could solve some of the most serious
> issues we have today (plugin code reload and plugin config reload).
>
> Cheers,
>
> — Leif
>
>
We've talked offline about this, but I am generally in agreement here. I'll
also volunteer to give this some thorough testing in prod before 7.0.0.