Настройка таймаута для подключения к БД

После изменения файла gradle.build требуется сделать реимпорт проекта. В процессе этого поднимаются коннекты к базе. Если этот проект сконфигурирован под другое окружение, то коннектов, естественно не будет, но пока не истечет таймаут интерфейс IDE зафризен, что сильно мешает. Под виндой я в логах вижу, что таймаут около 20 секунд, но под убунтой он достигает полутора-двух минут.

Как можно настроить этот таймаут? Версия платформы 7.0. Версия плагина 13.2-191. Версия IDEA: 2019.3.4.

Вторая проблема похожа - фриз интерфейса среды разработки на время “requesting maven metadata”. В браузере я этот файл получаю мгновенно, но из IDE это занимает около минуты. В какую сторону надо смотреть?

Здравствуйте @a.zanakhov!

  1. Не очень понятно, что значит сконфигурирован под другое окружение? Т.е. подключиться к БД не возможно? Какую БД вы используете? При старте проекта наблюдается такое же поведение?

  2. Можете уточнить, как именно проявляется фриз и какие действия вы выполняете для этого?

  1. Да, это ситуация, когда я не могу подключиться к БД. Например, я беру тестовую ветку из гита, где прописаны подключения для тестового стенда. С локальной машины я эту БД не вижу. В процессе пулла ветки файл build.gradle изменяется и требуется ребилд проекта. В процессе ребилда пытаются подняться коннекты к базе и фризится интерфейс. Хочется сократить именно этот момент. Это все до стадии компиляции и запуска проекта. Используется БД Oracle.

  2. Я открываю проект, где прописаны коннекты к не доступной базе. Интерфейс перестает реагировать на любые нажатия, скролл и прочее. Индикаторы останавливаются. Через какое-то время это прекращается.
    Кусок логов IDEA:

020-04-29 12:34:08,404 [ 806847]   INFO - ct.resolve.CubaProjectResolver - CUBA project import: smartInvokeLater start 
2020-04-29 12:34:10,571 [ 809014]   INFO - ge.ExternalProjectsDataStorage - Load external projects data in 252 millis (read time: 249) 
2020-04-29 12:38:29,782 [1068225]   WARN - DbmsConnectionExceptionHandler - Database server connection error 
com.haulmont.studio.backend.exceptions.DbmsConnectionException: java.sql.SQLRecoverableException: Ошибка ввода/вывода: The Network Adapter could not establish the connection
	at com.haulmont.studio.backend.ed.ddl.DbManager.dbExists(DbManager.java:286)
	at com.haulmont.studio.intellij.project.resolve.CubaProjectResolver.lambda$nonGradleImport$4(CubaProjectResolver.java:218)
	at com.intellij.openapi.application.ReadAction.lambda$run$1(ReadAction.java:64)
	at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:821)
	at com.intellij.openapi.application.ReadAction.compute(ReadAction.java:71)
	at com.intellij.openapi.application.ReadAction.run(ReadAction.java:64)
	at com.haulmont.studio.intellij.project.resolve.CubaProjectResolver.nonGradleImport(CubaProjectResolver.java:206)
	at com.haulmont.studio.intellij.project.resolve.CubaProjectResolver.lambda$proceedImport$3(CubaProjectResolver.java:168)
	at com.intellij.openapi.project.DumbServiceImpl.lambda$smartInvokeLater$7(DumbServiceImpl.java:460)
	at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:309)
	at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.doRun(LaterInvocator.java:441)
	at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.runNextEvent(LaterInvocator.java:424)
	at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:407)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:908)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:781)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:424)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:698)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:423)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.sql.SQLRecoverableException: Ошибка ввода/вывода: The Network Adapter could not establish the connection
	at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:801)
	at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:782)
	at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:39)
	at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:704)
	at com.haulmont.studio.backend.dbdrivers.DriverWrapper.connect(DbDriversManager.kt:190)
	at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677)
	at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:189)
	at com.haulmont.studio.backend.ed.ddl.DbManager.openConnection(DbManager.java:306)
	at com.haulmont.studio.backend.ed.ddl.DbManager.dbExists(DbManager.java:259)
	... 30 more
Caused by: oracle.net.ns.NetException: The Network Adapter could not establish the connection
	at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:569)
	at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:521)
	at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:660)
	at oracle.net.ns.NSProtocol.connect(NSProtocol.java:287)
	at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1481)
	at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:540)
	... 38 more
Caused by: java.io.IOException: Время ожидания соединения истекло, socket connect lapse 130102 ms. /172.21.128.31 1521 0 1 true
	at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:229)
	at oracle.net.nt.ConnOption.connect(ConnOption.java:172)
	at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:508)
	... 43 more
Caused by: java.net.ConnectException: Время ожидания соединения истекло
	at java.base/sun.nio.ch.Net.connect0(Native Method)
	at java.base/sun.nio.ch.Net.connect(Net.java:476)
	at java.base/sun.nio.ch.Net.connect(Net.java:468)
	at java.base/sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:694)
	at java.base/java.nio.channels.SocketChannel.open(SocketChannel.java:194)
	at oracle.net.nt.TimeoutSocketChannel.connect(TimeoutSocketChannel.java:108)
	at oracle.net.nt.TimeoutSocketChannel.<init>(TimeoutSocketChannel.java:86)
	at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:188)
	... 45 more
2020-04-29 12:38:29,819 [1068262]   INFO - ct.resolve.CubaProjectResolver - CUBA project imported successfully: /home/hd/IdeaProjects/KVP.CORE 
2020-04-29 12:38:29,819 [1068262]   INFO - io.backend.model.StudioProject - StudioProject.incModificationCount 
1 симпатия

Спасибо за репорт!

  1. Я убрал подключение к БД после рефреша проекта, оно было лишнем для всех БД, кроме локального HSQL. Исправление будет в ближайшем баг-фикс релизе.
  2. Интересует кейс фриза на время “requesting maven metadata”.
2 симпатии

Удалось его воспроизвести простым открытием проекта. Всплывает окно с заголовком “Requesting maven metadata” и прогрес-баром и интерфейс фризится. Судя по логам, проблема связана с тем же подключением к БД.

2020-04-29 14:27:59,799 [  20810]   INFO - ct.resolve.CubaProjectResolver - CUBA project import: importProject start
2020-04-29 14:27:59,802 [  20813]   INFO - ct.resolve.CubaProjectResolver - CUBA project import: proceedImport start
2020-04-29 14:27:59,813 [  20824]   INFO - cloudConfig.CloudConfigManager - === StatusBar.start another widget: com.intellij.cloudConfig.StatusBarInfoManager$InfoComponent@7d2221a ===
2020-04-29 14:27:59,952 [  20963]   INFO - ge.ExternalProjectsDataStorage - Load external projects data in 719 millis (read time: 705)
2020-04-29 14:28:01,675 [  22686]   INFO - ct.resolve.CubaProjectResolver - CUBA project import: smartInvokeLater start
2020-04-29 14:28:01,830 [  22841]   INFO - nd.maven.RemoteMavenRepository - [external_req] Load file content https://artifactory.skblab.ru/artifactory/KVPROD/com/haulmont/cuba/cuba-global/maven-metadata.xml
2020-04-29 14:30:17,117 [ 158128]   WARN - DbmsConnectionExceptionHandler - Database server connection error
com.haulmont.studio.backend.exceptions.DbmsConnectionException: java.sql.SQLRecoverableException: Ошибка ввода/вывода: The Network Adapter could not establish the connection
	at com.haulmont.studio.backend.ed.ddl.DbManager.dbExists(DbManager.java:286)
	at com.haulmont.studio.intellij.project.resolve.CubaProjectResolver.lambda$nonGradleImport$4(CubaProjectResolver.java:218)
	at com.intellij.openapi.application.ReadAction.lambda$run$1(ReadAction.java:64)
	at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:821)
	at com.intellij.openapi.application.ReadAction.compute(ReadAction.java:71)
	at com.intellij.openapi.application.ReadAction.run(ReadAction.java:64)
	at com.haulmont.studio.intellij.project.resolve.CubaProjectResolver.nonGradleImport(CubaProjectResolver.java:206)
	at com.haulmont.studio.intellij.project.resolve.CubaProjectResolver.lambda$proceedImport$3(CubaProjectResolver.java:168)
	at com.intellij.openapi.project.DumbServiceImpl.lambda$smartInvokeLater$7(DumbServiceImpl.java:460)
	at com.intellij.openapi.application.TransactionGuardImpl$2.run(TransactionGuardImpl.java:309)
	at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.doRun(LaterInvocator.java:441)
	at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.runNextEvent(LaterInvocator.java:424)
	at com.intellij.openapi.application.impl.LaterInvocator$FlushQueue.run(LaterInvocator.java:407)
	at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:313)
	at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:776)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:727)
	at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:721)
	at java.base/java.security.AccessController.doPrivileged(Native Method)
	at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:85)
	at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:746)
	at com.intellij.ide.IdeEventQueue.defaultDispatchEvent(IdeEventQueue.java:908)
	at com.intellij.ide.IdeEventQueue._dispatchEvent(IdeEventQueue.java:781)
	at com.intellij.ide.IdeEventQueue.lambda$dispatchEvent$8(IdeEventQueue.java:424)
	at com.intellij.openapi.progress.impl.CoreProgressManager.computePrioritized(CoreProgressManager.java:698)
	at com.intellij.ide.IdeEventQueue.dispatchEvent(IdeEventQueue.java:423)
	at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
	at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
	at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
	at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Caused by: java.sql.SQLRecoverableException: Ошибка ввода/вывода: The Network Adapter could not establish the connection
	at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:801)
	at oracle.jdbc.driver.PhysicalConnection.connect(PhysicalConnection.java:782)
	at oracle.jdbc.driver.T4CDriverExtension.getConnection(T4CDriverExtension.java:39)
	at oracle.jdbc.driver.OracleDriver.connect(OracleDriver.java:704)
	at com.haulmont.studio.backend.dbdrivers.DriverWrapper.connect(DbDriversManager.kt:190)
	at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:677)
	at java.sql/java.sql.DriverManager.getConnection(DriverManager.java:189)
	at com.haulmont.studio.backend.ed.ddl.DbManager.openConnection(DbManager.java:306)
	at com.haulmont.studio.backend.ed.ddl.DbManager.dbExists(DbManager.java:259)
	... 30 more
Caused by: oracle.net.ns.NetException: The Network Adapter could not establish the connection
	at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:569)
	at oracle.net.resolver.AddrResolution.resolveAndExecute(AddrResolution.java:521)
	at oracle.net.ns.NSProtocol.establishConnection(NSProtocol.java:660)
	at oracle.net.ns.NSProtocol.connect(NSProtocol.java:287)
	at oracle.jdbc.driver.T4CConnection.connect(T4CConnection.java:1481)
	at oracle.jdbc.driver.T4CConnection.logon(T4CConnection.java:540)
	... 38 more
Caused by: java.io.IOException: Время ожидания соединения истекло, socket connect lapse 131213 ms. /172.21.128.31 1521 0 1 true
	at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:229)
	at oracle.net.nt.ConnOption.connect(ConnOption.java:172)
	at oracle.net.nt.ConnStrategy.execute(ConnStrategy.java:508)
	... 43 more
Caused by: java.net.ConnectException: Время ожидания соединения истекло
	at java.base/sun.nio.ch.Net.connect0(Native Method)
	at java.base/sun.nio.ch.Net.connect(Net.java:476)
	at java.base/sun.nio.ch.Net.connect(Net.java:468)
	at java.base/sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:694)
	at java.base/java.nio.channels.SocketChannel.open(SocketChannel.java:194)
	at oracle.net.nt.TimeoutSocketChannel.connect(TimeoutSocketChannel.java:108)
	at oracle.net.nt.TimeoutSocketChannel.<init>(TimeoutSocketChannel.java:86)
	at oracle.net.nt.TcpNTAdapter.connect(TcpNTAdapter.java:188)
	... 45 more
2020-04-29 14:30:17,306 [ 158317]   INFO - ct.resolve.CubaProjectResolver - CUBA project imported successfully: /home/hd/IdeaProjects/KVP.CORE
2020-04-29 14:30:17,307 [ 158318]   INFO - io.backend.model.StudioProject - StudioProject.incModificationCount
2020-04-29 14:30:17,336 [ 158347]   INFO - er.TrialAddonExpirationChecker - Starting check after project import event
2020-04-29 14:30:17,557 [ 158568]   WARN - .diagnostic.PerformanceWatcher - UI freezed for 132382ms, details saved to /home/hd/.IntelliJIdea2019.3/system/log/threadDumps-freeze-20200429-142805-IU-193.6911.18-Net.connect0-132sec
2020-04-29 14:30:17,957 [ 158968]   INFO - tion.PackageJsonUpdateNotifier - processPackageJsonFiles []

Спасибо за быструю реакцию.

Думаю, это общий прогресс-бар который висит на момент подключения к БД, просто в нем не поменялось сообщение с предыдущего действия и действительно проблема связана с подключение к БД.