Message-ID: From: "MosheElisha (@MosheElisha)" To: "pgjdbc/pgjdbc" Date: Wed, 12 Jun 2024 15:59:11 +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: MosheElisha X-GitHub-Comment-Id: 2163403910 X-GitHub-Comment-Type: issue_comment X-GitHub-Issue: 194 X-GitHub-Repo: pgjdbc/pgjdbc X-GitHub-Type: comment X-GitHub-Url: https://github.com/pgjdbc/pgjdbc/issues/194#issuecomment-2163403910 Content-Type: text/plain; charset=utf-8 I encountered this with driver version 42.7.1 Stacktrace is: ``` "pool-11-thread-2" #147 prio=5 os_prio=0 cpu=346598.54ms elapsed=813984.15s tid=0x00005638808b2080 nid=0x9e runnable [0x00007fc803ffa000] java.lang.Thread.State: RUNNABLE at sun.nio.ch.Net.poll(java.base@17.0.9/Native Method) at sun.nio.ch.NioSocketImpl.park(java.base@17.0.9/NioSocketImpl.java:186) at sun.nio.ch.NioSocketImpl.park(java.base@17.0.9/NioSocketImpl.java:195) at sun.nio.ch.NioSocketImpl.implRead(java.base@17.0.9/NioSocketImpl.java:319) at sun.nio.ch.NioSocketImpl.read(java.base@17.0.9/NioSocketImpl.java:355) at sun.nio.ch.NioSocketImpl$1.read(java.base@17.0.9/NioSocketImpl.java:808) at java.net.Socket$SocketInputStream.read(java.base@17.0.9/Socket.java:966) at sun.security.ssl.SSLSocketInputRecord.read(java.base@17.0.9/SSLSocketInputRecord.java:484) at sun.security.ssl.SSLSocketInputRecord.readHeader(java.base@17.0.9/SSLSocketInputRecord.java:478) at sun.security.ssl.SSLSocketInputRecord.bytesInCompletePacket(java.base@17.0.9/SSLSocketInputRecord.java:70) at sun.security.ssl.SSLSocketImpl.readApplicationRecord(java.base@17.0.9/SSLSocketImpl.java:1465) at sun.security.ssl.SSLSocketImpl$AppInputStream.read(java.base@17.0.9/SSLSocketImpl.java:1069) at org.postgresql.core.VisibleBufferedInputStream.readMore(VisibleBufferedInputStream.java:161) at org.postgresql.core.VisibleBufferedInputStream.ensureBytes(VisibleBufferedInputStream.java:128) at org.postgresql.core.VisibleBufferedInputStream.ensureBytes(VisibleBufferedInputStream.java:113) at org.postgresql.core.VisibleBufferedInputStream.read(VisibleBufferedInputStream.java:73) at org.postgresql.core.PGStream.receiveChar(PGStream.java:465) at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:2154) at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:573) at org.postgresql.jdbc.PgStatement.internalExecuteBatch(PgStatement.java:896) at org.postgresql.jdbc.PgStatement.executeBatch(PgStatement.java:919) at org.postgresql.jdbc.PgPreparedStatement.executeBatch(PgPreparedStatement.java:1677) at com.zaxxer.hikari.pool.ProxyStatement.executeBatch(ProxyStatement.java:127) at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.executeBatch(HikariProxyPreparedStatement.java) at org.hibernate.engine.jdbc.batch.internal.BatchingBatch.performExecution(BatchingBatch.java:121) at org.hibernate.engine.jdbc.batch.internal.BatchingBatch.doExecuteBatch(BatchingBatch.java:106) at org.hibernate.engine.jdbc.batch.internal.AbstractBatchImpl.execute(AbstractBatchImpl.java:148) at org.hibernate.engine.jdbc.internal.JdbcCoordinatorImpl.getBatch(JdbcCoordinatorImpl.java:187) at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:3386) at org.hibernate.persister.entity.AbstractEntityPersister.updateOrInsert(AbstractEntityPersister.java:3311) at org.hibernate.persister.entity.AbstractEntityPersister.update(AbstractEntityPersister.java:3725) at org.hibernate.action.internal.EntityUpdateAction.execute(EntityUpdateAction.java:201) at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:604) at org.hibernate.engine.spi.ActionQueue.lambda$executeActions$1(ActionQueue.java:478) at org.hibernate.engine.spi.ActionQueue$$Lambda$2059/0x00007fc8313f64a8.accept(Unknown Source) at java.util.LinkedHashMap.forEach(java.base@17.0.9/LinkedHashMap.java:721) at org.hibernate.engine.spi.ActionQueue.executeActions(ActionQueue.java:475) at org.hibernate.event.internal.AbstractFlushingEventListener.performExecutions(AbstractFlushingEventListener.java:348) at org.hibernate.event.internal.DefaultAutoFlushEventListener.onAutoFlush(DefaultAutoFlushEventListener.java:57) at org.hibernate.internal.SessionImpl$$Lambda$2049/0x00007fc8313e0b28.accept(Unknown Source) at org.hibernate.event.service.internal.EventListenerGroupImpl.fireEventOnEachListener(EventListenerGroupImpl.java:102) at org.hibernate.internal.SessionImpl.autoFlushIfRequired(SessionImpl.java:1327) at org.hibernate.internal.SessionImpl.list(SessionImpl.java:1407) at org.hibernate.query.internal.AbstractProducedQuery.doList(AbstractProducedQuery.java:1565) at org.hibernate.query.internal.AbstractProducedQuery.list(AbstractProducedQuery.java:1533) at org.hibernate.query.Query.getResultList(Query.java:165) at org.springframework.data.jpa.repository.query.JpaQueryExecution$CollectionExecution.doExecute(JpaQueryExecution.java:128) at org.springframework.data.jpa.repository.query.JpaQueryExecution.execute(JpaQueryExecution.java:90) at org.springframework.data.jpa.repository.query.AbstractJpaQuery.doExecute(AbstractJpaQuery.java:156) at org.springframework.data.jpa.repository.query.AbstractJpaQuery.execute(AbstractJpaQuery.java:144) at org.springframework.data.repository.core.support.RepositoryMethodInvoker$RepositoryQueryMethodInvoker$$Lambda$1915/0x00007fc831394850.invoke(Unknown Source) at org.springframework.data.repository.core.support.RepositoryMethodInvoker.doInvoke(RepositoryMethodInvoker.java:137) at org.springframework.data.repository.core.support.RepositoryMethodInvoker.invoke(RepositoryMethodInvoker.java:121) at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.doInvoke(QueryExecutorMethodInterceptor.java:160) at org.springframework.data.repository.core.support.QueryExecutorMethodInterceptor.invoke(QueryExecutorMethodInterceptor.java:139) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.data.projection.DefaultMethodInvokingMethodInterceptor.invoke(DefaultMethodInvokingMethodInterceptor.java:76) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.transaction.interceptor.TransactionInterceptor$$Lambda$1914/0x00007fc831394208.proceedWithInvocation(Unknown Source) at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:367) at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:118) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.dao.support.PersistenceExceptionTranslationInterceptor.invoke(PersistenceExceptionTranslationInterceptor.java:139) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.data.jpa.repository.support.CrudMethodMetadataPostProcessor$CrudMethodMetadataPopulatingMethodInterceptor.invoke(CrudMethodMetadataPostProcessor.java:145) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.interceptor.ExposeInvocationInterceptor.invoke(ExposeInvocationInterceptor.java:97) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at io.opentelemetry.javaagent.instrumentation.spring.data.v1_8.SpringDataInstrumentationModule$RepositoryInterceptor.invoke(SpringDataInstrumentationModule.java:112) at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:186) at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:241) at jdk.proxy4.$Proxy250.getApplicationSubscribedFlow(jdk.proxy4/Unknown Source) ... ```