When an attempt is made to access a closed datasource, the current behaviour is to send that thread into an infinite loop, effectively killing one cpu core.
The cause was that a new getter in the ComboPooledDataSource was automatically (per reflection) used in the toString() method. This method is used when building an exception text, but the new getter causes the same exception anew.
I believe that the current pattern to use reflection minus a blacklist is detrimental to the maintainability of this class, because you can't just add a new get method to this class. On top of that, the blacklist is now longer than the corresponding whitelist.
This fix is therefore to explicitly name the properties to use in the toString() method.