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

Reply via email to