Hi Sterl, Thanks for the update. I'm assuming that data_source reference is static and no one else initialises it at the same time through a race condition - although that wouldn't explain this particular problem.
Hmm, browsing through the Hikari source code, I've noticed there are some issues that can cause a connection to be evicted from the pool. Do you have any other exceptions prior to this one? Do you perhaps have any execute listeners that may run stuff on the same connection while a statement is being executed? Are you using transactions? If so, how? On Thu, Oct 25, 2018 at 5:14 PM <[email protected]> wrote: > Sure, this is how I get my db reference. > > DSLContext db = DbConnection.getPooledConnection(); > > > Here are my getPooledConnection() and getConnectionPool() methods. > > > > public static DSLContext getPooledConnection() > { > HikariDataSource ds = getConnectionPool(); > DSLContext db = DSL.using(ds,SQLDialect.POSTGRES_9_4,new Settings() > .withExecuteWithOptimisticLocking(true) > .withExecuteLogging(false) > ); > return db; > } > > static HikariDataSource getConnectionPool() > { > if( data_source == null ) > { > Properties props = AppProperties.getProperties("db"); > > HikariConfig config = new HikariConfig(); > config.setJdbcUrl( props.getProperty("jdbc.url")); > config.setUsername( props.getProperty("username")); > config.setPassword( props.getProperty("password")); > config.setConnectionTestQuery("SELECT tablename FROM > pg_catalog.pg_tables WHERE schemaname='public'"); > data_source = new HikariDataSource(config); > } > return data_source; > } > > Regards, > Sterl... > > > > On Thursday, October 25, 2018 at 8:58:23 AM UTC-4, Lukas Eder wrote: >> >> This is most likely related to how you set up your connection pool / data >> source / etc inside of that db reference. Would you mind showing relevant >> code / configuration logic? >> >> Alternatively, someone else could be using your data source (other than >> jOOQ) and is handling connections incorrectly. >> >> Thanks, >> Lukas >> >> On Wed, Oct 24, 2018 at 7:48 PM <[email protected]> wrote: >> >>> HI, I'm getting the this weird exception when I call update() on >>> UpdatableRecord after creating it. >>> >>> org.jooq.exception.DataAccessException: SQL [update "public"."job" set >>> "context" = ?, "modified_at" = cast(? as timestamp) where >>> ("public"."job"."id" = ? and "public"."job"."modified_at" = cast(? as >>> timestamp))]; Connection is closed >>> at org.jooq_3.11.5.POSTGRES_9_4.debug(Unknown Source) >>> at org.jooq.impl.Tools.translate(Tools.java:2384) >>> at >>> org.jooq.impl.DefaultExecuteContext.sqlException(DefaultExecuteContext.java:811) >>> at org.jooq.impl.AbstractQuery.execute(AbstractQuery.java:364) >>> at >>> org.jooq.impl.UpdatableRecordImpl.storeUpdate0(UpdatableRecordImpl.java:253) >>> at >>> org.jooq.impl.UpdatableRecordImpl.access$100(UpdatableRecordImpl.java:84) >>> at >>> org.jooq.impl.UpdatableRecordImpl$2.operate(UpdatableRecordImpl.java:209) >>> at org.jooq.impl.RecordDelegate.operate(RecordDelegate.java:125) >>> at >>> org.jooq.impl.UpdatableRecordImpl.storeUpdate(UpdatableRecordImpl.java:205) >>> at org.jooq.impl.UpdatableRecordImpl.update(UpdatableRecordImpl.java:155) >>> at org.jooq.impl.UpdatableRecordImpl.update(UpdatableRecordImpl.java:150) >>> at channellister.jobs.JobManager.submitJob(JobManager.java:91) >>> at channellister.jobs.JobDefinition.submit(JobDefinition.java:58) >>> at >>> channellister.clutil.commands.JobsSubmit.lambda$processCommand$0(JobsCommand.java:95) >>> at >>> infomorph.dbconnection.DbThrowingConsumer.accept(DbThrowingConsumer.java:20) >>> at infomorph.dbconnection.DbConnection.dbAction(DbConnection.java:61) >>> at >>> channellister.clutil.commands.JobsSubmit.processCommand(JobsCommand.java:94) >>> at >>> channellister.clutil.ClAbstractCommand.processSubCommand(ClAbstractCommand.java:69) >>> at >>> channellister.clutil.ClAbstractCommand.processCommand(ClAbstractCommand.java:55) >>> at >>> channellister.clutil.ClAbstractCommand.processSubCommand(ClAbstractCommand.java:69) >>> at channellister.clutil.ClUtil.processCommand(ClUtil.java:76) >>> at channellister.clutil.ClUtil.main(ClUtil.java:91) >>> Caused by: java.sql.SQLException: Connection is closed >>> at >>> com.zaxxer.hikari.pool.ProxyConnection$ClosedConnection$1.invoke(ProxyConnection.java:469) >>> at com.sun.proxy.$Proxy1.prepareStatement(Unknown Source) >>> at >>> com.zaxxer.hikari.pool.ProxyConnection.prepareStatement(ProxyConnection.java:310) >>> at >>> com.zaxxer.hikari.pool.HikariProxyConnection.prepareStatement(HikariProxyConnection.java) >>> at >>> org.jooq.impl.ProviderEnabledConnection.prepareStatement(ProviderEnabledConnection.java:109) >>> at >>> org.jooq.impl.SettingsEnabledConnection.prepareStatement(SettingsEnabledConnection.java:73) >>> at >>> org.jooq.impl.ProviderEnabledConnection.prepareStatement(ProviderEnabledConnection.java:109) >>> at >>> org.jooq.impl.SettingsEnabledConnection.prepareStatement(SettingsEnabledConnection.java:73) >>> at org.jooq.impl.AbstractQuery.prepare(AbstractQuery.java:416) >>> at org.jooq.impl.AbstractDMLQuery.prepare(AbstractDMLQuery.java:512) >>> at org.jooq.impl.AbstractQuery.execute(AbstractQuery.java:322) >>> ... 18 more >>> >>> >>> Simplified Example code: >>> >>> JobRecord job = db.insertInto( JOB, JOB.CODE, JOB.DESCRIPTION, >>> JOB.STATUS, JOB.CONTEXT, JOB.STEP ) >>> .values( jobCode, jobDescription, jobStatus, jobContext, jobStep ) >>> .returning() >>> .fetchOne(); >>> >>> // Create Job Execution Context >>> int jobId = jobRecord.getId(); >>> JSONObject executionContext = new JSONObject(); >>> executionContext.put("id", String.valueOf( jobId ) ); >>> String executionContextString = executionContext.toString(); >>> >>> // Set the Execution Context on the Job Record >>> jobRecord.setContext( executionContextString ); >>> jobRecord.update(); >>> >>> >>> Environment: >>> Jooq 3.11.5, Postgres 9.4, Java 10 >>> >>> Thanks in advance for any assistance you can offer. >>> Sterl... >>> >>> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "jOOQ User Group" group. >>> To unsubscribe from this group and stop receiving emails from it, send >>> an email to [email protected]. >>> For more options, visit https://groups.google.com/d/optout. >>> >> -- > You received this message because you are subscribed to the Google Groups > "jOOQ User Group" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "jOOQ User Group" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. For more options, visit https://groups.google.com/d/optout.
