poolboy icon indicating copy to clipboard operation
poolboy copied to clipboard

Runtime size changes

Open reiddraper opened this issue 12 years ago • 3 comments

It would be nice to be able to change the size and max_overflow parameters at runtime. This would be useful for situations where you have long-running processes that it would be inconvenient to be interrupted by a node reboot. I suspect, however, that this change would be more complicated than a simple:

update_size(PoolPid, Size, MaxOverflow) ->
  gen_server:call(PoolPid, {update_state, {Size, MaxOverflow}}).

handle_call({update_state, _From, {Size, MaxOverflow}}, State) ->
  UpdatedState = State#state{size=Size, max_overflow=MaxOverFlow},  
  {reply, ok, UpdatedState}.

but I could be over-thinking it. I'm wondering about issues like: what happens if you shrink the pool size, do you kill workers? Just wait for them to be returned to the pool and then gracefully dismiss them? What happens if you raise the base pool size, do you pre-populate again?

Thoughts?

reiddraper avatar Apr 02 '13 03:04 reiddraper

This actually wouldn't be hard at all. If it was coded right it would just begin scaling to new parameters. However, reducing the pool size should NOT kill off workers.

devinus avatar Apr 10 '13 17:04 devinus

Cool, I have a half-started branch that implements this. I'll finish it up and make a PR in the next week or so.

reiddraper avatar Apr 10 '13 18:04 reiddraper

Any updates on this?

TurplePurtle avatar Feb 02 '16 16:02 TurplePurtle