Skip to content

Commit

Permalink
Stop listening AnalysisDriverScheduler stream during server shutdown.
Browse files Browse the repository at this point in the history
So, that we don't send analyzing/idle during drivers dispose.

Change-Id: I589cc368b2877baa0878d405f7ab3ca7daf31f3c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/348763
Reviewed-by: Brian Wilkerson <[email protected]>
Commit-Queue: Konstantin Shcheglov <[email protected]>
  • Loading branch information
scheglov authored and Commit Queue committed Jan 27, 2024
1 parent c975fdf commit b6647fd
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 2 deletions.
5 changes: 5 additions & 0 deletions pkg/analysis_server/lib/src/analysis_server.dart
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,8 @@ abstract class AnalysisServer {

late analysis.AnalysisDriverScheduler analysisDriverScheduler;

late StreamSubscription<Object?>? analysisDriverSchedulerEventsSubscription;

DeclarationsTracker? declarationsTracker;

/// The DiagnosticServer for this AnalysisServer. If available, it can be used
Expand Down Expand Up @@ -849,6 +851,9 @@ abstract class AnalysisServer {

@mustCallSuper
Future<void> shutdown() async {
await analysisDriverSchedulerEventsSubscription?.cancel();
analysisDriverSchedulerEventsSubscription = null;

// For now we record plugins only on shutdown. We might want to record them
// every time the set of plugins changes, in which case we'll need to listen
// to the `PluginManager.pluginsChanged` stream.
Expand Down
3 changes: 2 additions & 1 deletion pkg/analysis_server/lib/src/legacy_analysis_server.dart
Original file line number Diff line number Diff line change
Expand Up @@ -406,7 +406,8 @@ class LegacyAnalysisServer extends AnalysisServer {
ServerContextManagerCallbacks(this, resourceProvider);
contextManager.callbacks = contextManagerCallbacks;

analysisDriverScheduler.events.listen(handleAnalysisEvent);
analysisDriverSchedulerEventsSubscription =
analysisDriverScheduler.events.listen(handleAnalysisEvent);
analysisDriverScheduler.start();

onAnalysisStarted.first.then((_) {
Expand Down
3 changes: 2 additions & 1 deletion pkg/analysis_server/lib/src/lsp/lsp_analysis_server.dart
Original file line number Diff line number Diff line change
Expand Up @@ -178,7 +178,8 @@ class LspAnalysisServer extends AnalysisServer {
LspServerContextManagerCallbacks(this, resourceProvider);
contextManager.callbacks = contextManagerCallbacks;

analysisDriverScheduler.events.listen(handleAnalysisEvent);
analysisDriverSchedulerEventsSubscription =
analysisDriverScheduler.events.listen(handleAnalysisEvent);
analysisDriverScheduler.start();

_channelSubscription =
Expand Down

0 comments on commit b6647fd

Please sign in to comment.