DataSource.setLoginTimeout() is in seconds.  Make sure the milliseconds passed in to addConnection(timeout) is converted to seconds.  Also add a validation to prevent sub-second retries that would be converted to 0 when performing a millisecond to second conversion using TimeUnit.