Why are you using both abort
I think you are supposed to only use one of them depending on what you want. I do think the error message is confusing though.
From the fine manual.
The "shutdown" method waits for all jobs to be executed, remove
worker threads, handles any results that still need to be strea
before it returns. Call the abort method if you do not want to
until all jobs have been executed.
It is called automatically when the object is destroyed, unless
specifically disabled by providing a false value with the
"autoshutdown" field when creating the pool with new, or by cal
the autoshutdown method.
The "abort" method waits for all worker threads to finish their
current job, removes all worker threads, before it returns. Ca
shutdown method if you want to wait until all jobs have been do
You can restart the job handling process after calling "abort"
adding workers again.