DocHub icon indicating copy to clipboard operation
DocHub copied to clipboard

[Bug] StackOverflowError

Open strana-evgenii-zhukov opened this issue 2 years ago • 4 comments

Вид дистрибуции: plugin Версия: 3.7.0 IDE: WebStorm 2023.2.5 Build: #WS-232.10227.9, built on November 11, 2023


stacktrace.txt ⬇️

java.lang.StackOverflowError
	at com.intellij.concurrency.ConcurrentHashMap.hash(ConcurrentHashMap.java:6182)
	at com.intellij.concurrency.ConcurrentHashMap.get(ConcurrentHashMap.java:935)
	at com.intellij.util.indexing.impl.storage.TransientChangesIndexStorage.read(TransientChangesIndexStorage.java:191)
	at com.intellij.util.indexing.impl.MapReduceIndex.getData(MapReduceIndex.java:236)
	at com.intellij.util.indexing.storage.MapReduceIndexBase.getNullableIndexedData(MapReduceIndexBase.java:78)
	at com.intellij.util.indexing.impl.storage.TransientFileContentIndex.getNullableIndexedData(TransientFileContentIndex.java:97)
	at com.intellij.util.indexing.storage.MapReduceIndexBase.lambda$getIndexedFileData$1(MapReduceIndexBase.java:60)
	at com.intellij.util.ConcurrencyUtil.withLock(ConcurrencyUtil.java:246)
	at com.intellij.util.indexing.storage.MapReduceIndexBase.getIndexedFileData(MapReduceIndexBase.java:56)
	at com.intellij.indexing.composite.CompositeInvertedIndexBase.getIndexedFileData(CompositeInvertedIndexBase.java:151)
	at com.intellij.util.indexing.FileBasedIndexEx.lambda$getFileData$2(FileBasedIndexEx.java:216)
	at com.intellij.util.indexing.FileBasedIndexEx.lambda$processExceptions$6(FileBasedIndexEx.java:324)
	at com.intellij.util.ConcurrencyUtil.withLock(ConcurrencyUtil.java:246)
	at com.intellij.util.indexing.FileBasedIndexEx.processExceptions(FileBasedIndexEx.java:324)
	at com.intellij.util.indexing.FileBasedIndexEx.getFileData(FileBasedIndexEx.java:209)
	at com.intellij.util.indexing.FileBasedIndexImpl.getFileData(FileBasedIndexImpl.java:1111)
	at org.dochub.idea.arch.indexing.CacheBuilder.parseYamlManifest(CacheBuilder.java:84)
	at org.dochub.idea.arch.indexing.CacheBuilder.parseYamlManifest(CacheBuilder.java:95)
	at org.dochub.idea.arch.indexing.CacheBuilder.parseYamlManifest(CacheBuilder.java:95)
	// ... тут строк 500 рекурсивных вызовов
	at org.dochub.idea.arch.indexing.CacheBuilder.parseYamlManifest(CacheBuilder.java:95)
	at org.dochub.idea.arch.indexing.CacheBuilder.parseYamlManifest(CacheBuilder.java:95)


Также, плагин конфликтует с bundled-плагинами - например, с коробочным OpenAPI-плагином

strana-evgenii-zhukov avatar Nov 21 '23 03:11 strana-evgenii-zhukov

Доп. инфо: после возникновения ошибки IDE наглухо виснет

strana-evgenii-zhukov avatar Nov 21 '23 03:11 strana-evgenii-zhukov

С самой ошибкой будем разбираться.

Проверьте, что yaml файлы корректны. Вероятнее всего проблема в некорректной структуре yaml.

rpiontik avatar Nov 21 '23 07:11 rpiontik

С самой ошибкой будем разбираться.

Проверьте, что yaml файлы корректны. Вероятнее всего проблема в некорректной структуре yaml.

Синтаксис провалидировали, все ок. В проблем-чекере докхаба нет ни одной, связанной с тем манифестом, при редактировании которого происходит ошибка.

Есть предположение: это происходит это из-за попыток докхаба распарсить себе директивы в yaml-файлах, не являющихся манифестами (например, у нас достаточное количество openapi/asyncapi), чего он по-идее делать не должен.

Есть предложение/фичареквест - добавить в файлы манифестов признак того, что это манифесты (по аналогии с докеркомпоузовым version - какой-нибудь dochub_version), и парсить только ямлы с этим признаком. Сделать тестовый билд с отключаемой валидацией признака манифеста, и с ним протестить, будет ли повторяться ошибка. Если не будет - причина найдена, решение готово, всё работает и все радуются ☺️

strana-evgenii-zhukov avatar Nov 21 '23 18:11 strana-evgenii-zhukov

Проблема обнаружена - циклические импорты манифестов. Описания API ни при чём. @rpiontik думаю, имеет смысл добавить ограничение/валидацию на циклические импорты, и при обнаружении подобных - не подгружать их в озеро, отплёвывая соответствующую ошибку

strana-evgenii-zhukov avatar Dec 05 '23 04:12 strana-evgenii-zhukov