12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- From bd00cc8bf8742a0c344266879cef680093bfdbf0 Mon Sep 17 00:00:00 2001
- From: Christian Kandeler <christian.kandeler@qt.io>
- Date: Wed, 10 Aug 2022 15:37:31 +0200
- Subject: LanguageClient: Introduce timeout for restart counter
- While it makes sense to stop trying to restart a continuously crashing
- server, the restart counter should be reset regularly, as it's not
- critical if the server restarts "once in a while" during a longer
- programming session.
- Change-Id: Ia2efca28ae4a4dba72da947d9eb776e3909d0cb3
- Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
- Reviewed-by: David Schulz <david.schulz@qt.io>
- ---
- src/plugins/languageclient/client.cpp | 14 ++++++++++++--
- 1 file changed, 12 insertions(+), 2 deletions(-)
- diff --git a/src/plugins/languageclient/client.cpp b/src/plugins/languageclient/client.cpp
- index 78a2a259c9..c624b13979 100644
- --- a/src/plugins/languageclient/client.cpp
- +++ b/src/plugins/languageclient/client.cpp
- @@ -197,6 +197,11 @@ public:
- connect(&m_shutdownTimer, &QTimer::timeout, this, [this] {
- LanguageClientManager::deleteClient(q);
- });
- +
- + m_restartCountResetTimer.setSingleShot(true);
- + m_restartCountResetTimer.setInterval(5 * 60 * 1000);
- + connect(&m_restartCountResetTimer, &QTimer::timeout,
- + this, [this] { m_restartsLeft = MaxRestarts; });
- }
-
- ~ClientPrivate()
- @@ -307,7 +312,9 @@ public:
- AssistProviders m_clientProviders;
- QMap<TextEditor::TextDocument *, AssistProviders> m_resetAssistProvider;
- QHash<TextEditor::TextEditorWidget *, LanguageServerProtocol::MessageId> m_highlightRequests;
- - int m_restartsLeft = 5;
- + static const int MaxRestarts = 2;
- + int m_restartsLeft = MaxRestarts;
- + QTimer m_restartCountResetTimer;
- InterfaceController *m_clientInterface = nullptr;
- DiagnosticManager *m_diagnosticManager = nullptr;
- DocumentSymbolCache m_documentSymbolCache;
- @@ -1511,8 +1518,11 @@ bool Client::reset()
-
- bool ClientPrivate::reset()
- {
- - if (!m_restartsLeft)
- + if (!m_restartsLeft) {
- + m_restartCountResetTimer.stop();
- return false;
- + }
- + m_restartCountResetTimer.start();
- --m_restartsLeft;
- m_state = Client::Uninitialized;
- m_responseHandlers.clear();
- --
- cgit v1.2.1
|