Vladimir Sitnikov
Vladimir Sitnikov
Yeah, making JUnit fail on illegal property values might probably make sense.
Thank you for the report. It would help if you could provide a reproducer or a heapdump. `LazyCleaner` thread should terminate after (30000ms of inactivity, `pgjdbc.config.cleanup.thread.ttl` system property), so it...
@embuc , can you find `org.postgresql.util.LazyCleaner` instance in the heap dump and show its values? The question is whether `LazyCleaner#first` value is `non-null` and if it is `non-null`, then what...
Can you show "paths to GC roots" for the referent anyway?
> It doesn't seems to be availabl Can you elaborate? Can you open the dump in Eclipse Memory Analyzer?
We need a reproducible case. If the object is not referenced, then the phantom reference should be cleared at some point and it should enqueue the reference so the thread...
@embuc, just for reference, if the `LazyCleaner` queue is not empty, then it means there are unclosed connections. In other words, it means the application leaks connections (or it still...
> queue seems to be empty on all instances I checked If the queue is empty the thread should terminate, and it should no longer hold the resources.
JDBC has a standard API: `java.sql.Connection#isValid`, so it would probably be a better choice by default.
Here's a case for it: * https://github.com/pgjdbc/pgjdbc/pull/3631 The problematic case was calling a method that was already available on the base `java.sql.Statement`: ```java try (Statement checkConnectionQuery = createStatement()) { //...