Message-ID: From: "rutchkiwi (@rutchkiwi)" To: "pgjdbc/pgjdbc" Date: Tue, 07 Jun 2022 12:07:26 +0000 Subject: Re: [pgjdbc/pgjdbc] issue #194: PgJDBC can experience client/server deadlocks during batch execution In-Reply-To: References: List-Id: X-GitHub-Author-Login: rutchkiwi X-GitHub-Comment-Id: 1148578025 X-GitHub-Comment-Type: issue_comment X-GitHub-Edited-At: 2022-06-07T12:10:20Z X-GitHub-Issue: 194 X-GitHub-Repo: pgjdbc/pgjdbc X-GitHub-Type: comment X-GitHub-Url: https://github.com/pgjdbc/pgjdbc/issues/194#issuecomment-1148578025 Content-Type: text/plain; charset=utf-8 I'm also getting this issue. Not sure if it will help anyone but here is my stack trace: ```java.lang.Thread.State: RUNNABLE java.net.SocketOutputStream.socketWrite0(java.base@11.0.15/Native Method) java.net.SocketOutputStream.socketWrite(java.base@11.0.15/SocketOutputStream.java:110) java.net.SocketOutputStream.write(java.base@11.0.15/SocketOutputStream.java:150) sun.security.ssl.SSLSocketOutputRecord.deliver(java.base@11.0.15/SSLSocketOutputRecord.java:345) sun.security.ssl.SSLSocketImpl$AppOutputStream.write(java.base@11.0.15/SSLSocketImpl.java:1304) java.io.BufferedOutputStream.flushBuffer(java.base@11.0.15/BufferedOutputStream.java:81) java.io.BufferedOutputStream.write(java.base@11.0.15/BufferedOutputStream.java:127) - locked <0x00000000f876baf8> (a java.io.BufferedOutputStream) java.io.FilterOutputStream.write(java.base@11.0.15/FilterOutputStream.java:108) org.postgresql.core.PGStream.send(PGStream.java:361) org.postgresql.core.v3.SimpleParameterList.writeV3Value(SimpleParameterList.java:421) org.postgresql.core.v3.QueryExecutorImpl.sendBind(QueryExecutorImpl.java:1669) org.postgresql.core.v3.QueryExecutorImpl.sendOneQuery(QueryExecutorImpl.java:1910) org.postgresql.core.v3.QueryExecutorImpl.sendQuery(QueryExecutorImpl.java:1433) org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:507) - locked <0x00000000f876b978> (a org.postgresql.core.v3.QueryExecutorImpl) org.postgresql.jdbc.PgStatement.internalExecuteBatch(PgStatement.java:870) org.postgresql.jdbc.PgStatement.executeBatch(PgStatement.java:893) org.postgresql.jdbc.PgPreparedStatement.executeBatch(PgPreparedStatement.java:1639) com.zaxxer.hikari.pool.ProxyStatement.executeBatch(ProxyStatement.java:128) com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeBatch(HikariProxyPreparedStatement.java) clojure.java.jdbc$execute_batch.invokeStatic(jdbc.clj:598) clojure.java.jdbc$execute_batch.invoke(jdbc.clj:591) clojure.java.jdbc$db_do_execute_prepared_statement$fn__1301.invoke(jdbc.clj:1057) clojure.java.jdbc$db_transaction_STAR_.invokeStatic(jdbc.clj:860) clojure.java.jdbc$db_transaction_STAR_.invoke(jdbc.clj:776) clojure.java.jdbc$db_transaction_STAR_.invokeStatic(jdbc.clj:789) clojure.java.jdbc$db_transaction_STAR_.invoke(jdbc.clj:776) clojure.java.jdbc$db_do_execute_prepared_statement.invokeStatic(jdbc.clj:1056) clojure.java.jdbc$db_do_execute_prepared_statement.invoke(jdbc.clj:1042) clojure.java.jdbc$db_do_prepared.invokeStatic(jdbc.clj:1080) clojure.java.jdbc$db_do_prepared.invoke(jdbc.clj:1060) clojure.java.jdbc$insert_cols_BANG_.invokeStatic(jdbc.clj:1594) clojure.java.jdbc$insert_cols_BANG_.invoke(jdbc.clj:1585) clojure.java.jdbc$insert_multi_BANG_.invokeStatic(jdbc.clj:1651) ... ``` 18000 rows on a table with 10 columns. @hitsuyagaa How did you change the batch size? Is this configurable, or did you actually just do it outside of the JDBC driver? I'm using :reWriteBatchedInserts and was hoping that the batch size used by this can be configured somehow.