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

Блокировка UI при попытке применить одновременно несколько BSL-ных квик-фиксов #977 #978

Merged
merged 1 commit into from
Feb 14, 2022

Conversation

vadimeg
Copy link
Collaborator

@vadimeg vadimeg commented Feb 14, 2022

Что сделано

Исправлена блокировка при применении множественных увик-фиксов

Чек-лист

Общее:

  • ветка PR обновлена из master и нет конфликтов
  • Тесты-кейсы, JUnit тесты правильного и неправильного состояния
  • Измененные Вами исходники отформатированы в соответствии с конвенцией
  • Авто-аудит (SonarQube и CheckStyle) пройден, покрытие кода хорошее, ошибок нет, плохой код устранен
  • Добавлена запись в ИСТОРИЮ ИЗМЕНЕНИЯ, включаемая в пользовательскую документацию плагина

Если применимо:

  • Пользовательская документация на доп.инструменты написана (на русском)
  • Описание проверок - на двух языках

Закрываемые задачи

Closes #??

@vadimeg vadimeg requested a review from marmyshev February 14, 2022 11:08
Comment on lines +116 to +127
IXtextDocument document = (IXtextDocument)fixModel.getDocument();
XtextResource xtextResource = document.readOnly(new IUnitOfWork<XtextResource, XtextResource>()
{
@Override
public XtextResource exec(XtextResource state) throws Exception
{
return state;
}
});

ExternalQuickfixModification<EObject> quickFixModification = new ExternalQuickfixModification<>(issue,
EObject.class, element -> fixIssue((IXtextInteractiveBslModuleFixModel)fixModel));
EObject.class, element -> fixIssue((IXtextInteractiveBslModuleFixModel)fixModel, xtextResource));
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

у меня сомнения что это правильно - вроде бы операция есть com.e1c.g5.v8.dt.bsl.check.qfix.ExternalQuickfixModification.createChanges(IXtextDocument, Issue, Class, Function<E, TextEdit>)

но тут ты сам скажи, как правильно...

Copy link
Collaborator Author

@vadimeg vadimeg Feb 14, 2022

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Так ведь это просто изменение кода лямбды. Сигнатура функции-параметра не поменялась. Иначе бы компилятор сругался)
Раньше ресурс вытаскивался внутри тела функции. Для его вытаскивания тоже нужна транзакция. В итоге получались вложенные транзакции, что приводило к дэдлоку. Теперь я вынес код по получению ресурса выше. После этого транзакция закрывается и открывается новая.

@vadimeg vadimeg force-pushed the bugfix/977-multiple_qfix_deadlock branch from eceb0e8 to b5fcca9 Compare February 14, 2022 14:22
@sonarqubecloud
Copy link

SonarCloud Quality Gate failed.    Quality Gate failed

Bug A 0 Bugs
Vulnerability A 0 Vulnerabilities
Security Hotspot A 0 Security Hotspots
Code Smell A 0 Code Smells

0.0% 0.0% Coverage
0.0% 0.0% Duplication

@vadimeg vadimeg merged commit 288286b into master Feb 14, 2022
@vadimeg vadimeg deleted the bugfix/977-multiple_qfix_deadlock branch February 14, 2022 15:18
@marmyshev marmyshev added this to the 0.2 для EDT 2021.3 milestone Feb 17, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants