Блокировка jOOQ в `DSL.using`JAVA

Программисты JAVA общаются здесь
Anonymous
Блокировка jOOQ в `DSL.using`

Сообщение Anonymous »

Некоторые из моих Java-сервисов начали «зависать» при запуске (периодически их перезапуск заставляет их работать). Я использовал AWS CodeGuru, чтобы увидеть, что они выполняли, пока «ничего не делали», и я увидел, что два моих потока использовали 68% процессорного времени внутри метода DSL.using (другой поток был заблокирован ).
Вот одна из таких тем:
[img]https://i.sstatic .net/M6ojiGBp.png[/img]

Метод, выполняющий DSL.using, выглядит следующим образом:

Код: Выделить всё

    public void myMethod(final Instant now) {
final int count = using(configuration)
.update(MY_TABLE)
.set(MY_TABLE.ACTIVE, true)
.where(MY_TABLE.PAUSED_UNTIL.isNotNull())
.and(MY_TABLE.ACTIVE.isFalse())
.execute();
if (count > 0) {
...
}
}
Где конфигурация получается следующим образом (в конструкторе этого класса):

Код: Выделить всё

    DataSource dataSource = DataSourceFactory.provide()
Configuration configuration = new DefaultConfiguration()
.derive(dataSource)
.derive(SQLDialect.POSTGRES)
.derive(EnumFixingExecuteListener::new);
И DataSourceFactory — это наш собственный класс, а метод предоставления такой:

Код: Выделить всё

    public HikariDataSource provide() {
HikariConfig config = new HikariConfig();
config.setDataSourceClassName("org.postgresql.ds.PGSimpleDataSource");
config.addDataSourceProperty("serverName", postgresConfig.host);
config.setMaximumPoolSize(6);
config.addDataSourceProperty("databaseName", postgresConfig.database);
config.addDataSourceProperty("user", postgresConfig.username);
config.addDataSourceProperty("password", postgresConfig.password);

HikariDataSource dataSource = new HikariDataSource(config);
log.trace("Providing dataSource {}", dataSource);
return dataSource;
}
Знаете, почему DSL.using может зависать? или что еще может привести к его зависанию?
Используемые версии:
  • jOOQ 3.16.23 (Дата сборки: 2023-12-20T14:13:48Z)
  • PostgreSQL 14.10


Подробнее здесь: https://stackoverflow.com/questions/788 ... -dsl-using

Вернуться в «JAVA»