Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Bug] StackOverflowError #448

Open
strana-evgenii-zhukov opened this issue Nov 21, 2023 · 4 comments
Open

[Bug] StackOverflowError #448

strana-evgenii-zhukov opened this issue Nov 21, 2023 · 4 comments

Comments

@strana-evgenii-zhukov
Copy link

Вид дистрибуции: 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
Copy link
Author

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

@rpiontik
Copy link
Collaborator

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

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

@strana-evgenii-zhukov
Copy link
Author

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

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

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

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

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

@strana-evgenii-zhukov
Copy link
Author

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants