davidmoten / davidmoten/rxjava2-jdbc
Pools insufficient demand to initialize
- Dominant language
- Java
- Stars
- 394
- Forks
- 41
- Avg merge
- 2m
- Merged PRs (30d)
- 1
Description
Hello,
We're having an odd issue when using the pool (see debug output below).
After awhile we start to see database queries just not running (VisualVM confirms no JDBC activity other than the database ping. It looks as though the pool is getting stuck but we're really not sure how/why. It does appear to recover after a period of time
Currently trying to reproduce this in a small simple test
This is the output we get when the database activity stops
```
09:51:44.065 [mcl-4] DEBUG org.davidmoten.rx.pool.MemberSingle - subscribed
09:51:44.065 [mcl-4] DEBUG org.davidmoten.rx.pool.MemberSingle - drain called
09:51:44.065 [mcl-4] DEBUG org.davidmoten.rx.pool.MemberSingle - drain loop starting
09:51:44.065 [mcl-4] DEBUG org.davidmoten.rx.pool.MemberSingle - requested=2
09:51:44.065 [mcl-4] DEBUG org.davidmoten.rx.pool.MemberSingle - poll of available members returns null
09:51:44.065 [mcl-4] DEBUG org.davidmoten.rx.pool.MemberSingle - scheduling member creation
09:51:44.065 [mcl-4] DEBUG org.davidmoten.rx.pool.MemberSingle - poll of available members returns null
09:51:44.065 [mcl-4] DEBUG org.davidmoten.rx.pool.MemberSingle - insufficient demand to initialize DecoratingMember [value=null]
```
What we normally get when working
```
09:51:44.065 [mcl-1] DEBUG org.davidmoten.rx.pool.MemberSingle - subscribed
09:51:44.065 [mcl-1] DEBUG org.davidmoten.rx.pool.MemberSingle - drain called
09:51:44.065 [mcl-1] DEBUG org.davidmoten.rx.pool.MemberSingle - drain loop starting
09:51:44.065 [mcl-1] DEBUG org.davidmoten.rx.pool.MemberSingle - requested=1
09:51:44.065 [mcl-1] DEBUG org.davidmoten.rx.pool.MemberSingle - poll of available members returns DecoratingMember [value=conn21: url=jdbc:h2:tcp://localhost:9123/Primary-SCDBSIM user=SA]
09:51:44.065 [mcl-1] DEBUG org.davidmoten.rx.pool.MemberSingle - trying to emit member
09:51:44.065 [mcl-1] DEBUG org.davidmoten.rx.pool.MemberSingle - schedule.now=1521193904065, lastCheck=1521193904060
09:51:44.065 [mcl-1] DEBUG org.davidmoten.rx.pool.MemberSingle - no health check required for DecoratingMember [value=conn21: url=jdbc:h2:tcp://localhost:9123/dbname user=SA]
```
Pool configuration
```
Pools.nonBlocking().url(url).scheduler(Schedulers.from(executorService))
.maxIdleTime(0, TimeUnit.MINUTES).healthCheck(c -> {
try {
return c.prepareStatement("select 1").execute();
} catch (SQLException e) {
LOG.debug("SQLException Occurred whilst invoking a health check on the database", e);
}
return false;
}).idleTimeBeforeHealthCheck(1, TimeUnit.SECONDS).maxPoolSize(100).build();
```
I have tried adjusting the above idle times and pool size but it doesn't appear to have any effect.
The executor service has 10 threads.
Any help/thoughts would be appreciated. We'll keep working to get you a test case for it as well.
Note we are using 0.1-rc19, so going to grab the latest version and test it again..
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.