Запускается 10 потоков из пула потоков ExecutorService. В каждом потоке создается соединение и выполняется 1 sql запрос и комититься. Сам по себе запрос большой выборки (select из нескольких таблиц) выполняется 1-2 минуты.
После запуска запросы висят и не выполняются. Отслеживание производилось из pg_stat_activity, где у 10 потоков (порой эти статистики менялись, то заблокирован, то нет) стоят следующие статусы:
Они могут выполниться через час. Раньше такой проблемы не было в связи с меньшим количеством данных в таблицах при тех же запросах.
<property name="hibernate.dialect">org.hibernate.dialect.PostgreSQL82Dialect</property>
<property name="hibernate.connection.provider_class">org.hibernate.hikaricp.internal.HikariCPConnectionProvider</property>
<property name="show_sql">true</property>
<property name="log_statement">all</property>
<property name="hibernate.hikari.dataSourceClassName">org.postgresql.ds.PGSimpleDataSource</property>
<property name="hibernate.hikari.connectionTimeout">300000</property>
<property name="hibernate.hikari.maximumPoolSize">35</property>
<property name="hibernate.hikari.poolName">hicari</property>
<property name="hibernate.hikari.dataSource.url"></property>
<property name="hibernate.hikari.dataSource.user"></property>
<property name="hibernate.hikari.dataSource.password"></property>
<property name="hibernate.hikari.autoCommit">false</property>
<property name="hibernate.current_session_context_class">thread</property>
@Override
public List<SendObj> call() {
List<SendObj> sendObjList = null;
Session session = sessionFactory.getCurrentSession();
session.getTransaction().setTimeout(200);
session.getTransaction().begin();
...
//здесь происходит выполнение query.list()
...
if (session.isOpen())
session.getTransaction().commit();
return sendObjList;
}