Null out Completer in _DiscoverAvailableFilesTask.

It might have caused a memory leak.
It is hard to say - there ware some references from Closure, from
other Closure, and eventually from the _completer.

R=brianwilkerson@google.com

Change-Id: I18c75f48e74e9ae04265170751224261f51ccf76
Reviewed-on: https://dart-review.googlesource.com/c/78322
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
This commit is contained in:
Konstantin Shcheglov 2018-10-05 20:35:12 +00:00 committed by commit-bot@chromium.org
parent 330deaa4e1
commit ebf042d599

View file

@ -17,11 +17,13 @@ import 'package:analyzer/error/listener.dart';
import 'package:analyzer/exception/exception.dart';
import 'package:analyzer/file_system/file_system.dart';
import 'package:analyzer/src/context/context_root.dart';
import 'package:analyzer/src/dart/analysis/byte_store.dart';
import 'package:analyzer/src/dart/analysis/file_state.dart';
import 'package:analyzer/src/dart/analysis/file_tracker.dart';
import 'package:analyzer/src/dart/analysis/index.dart';
import 'package:analyzer/src/dart/analysis/library_analyzer.dart';
import 'package:analyzer/src/dart/analysis/library_context.dart';
import 'package:analyzer/src/dart/analysis/performance_logger.dart';
import 'package:analyzer/src/dart/analysis/search.dart';
import 'package:analyzer/src/dart/analysis/session.dart';
import 'package:analyzer/src/dart/analysis/status.dart';
@ -38,12 +40,10 @@ import 'package:analyzer/src/generated/resolver.dart';
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/generated/utilities_general.dart';
import 'package:analyzer/src/lint/registry.dart' as linter;
import 'package:analyzer/src/summary/api_signature.dart';
import 'package:analyzer/src/summary/format.dart';
import 'package:analyzer/src/summary/idl.dart';
import 'package:analyzer/src/summary/package_bundle_reader.dart';
import 'package:analyzer/src/dart/analysis/byte_store.dart';
import 'package:analyzer/src/summary/api_signature.dart';
import 'package:analyzer/src/dart/analysis/performance_logger.dart';
import 'package:meta/meta.dart';
/**
@ -586,6 +586,10 @@ class AnalysisDriver implements AnalysisDriverGeneric {
* potentially available is done, so that they are included in [knownFiles].
*/
Future<void> discoverAvailableFiles() {
if (_discoverAvailableFilesTask != null &&
_discoverAvailableFilesTask.isCompleted) {
return new Future.value();
}
_discoverAvailableFiles();
_scheduler.notify(this);
return _discoverAvailableFilesTask.completer.future;
@ -2213,9 +2217,9 @@ class _DiscoverAvailableFilesTask {
static const int _MS_WORK_INTERVAL = 5;
final AnalysisDriver driver;
final Completer<void> completer = new Completer<void>();
bool isCompleted = false;
Completer<void> completer = new Completer<void>();
Iterator<Folder> folderIterator;
List<String> files = [];
@ -2273,10 +2277,13 @@ class _DiscoverAvailableFilesTask {
}
// The task is done, clean up.
isCompleted = true;
folderIterator = null;
files = null;
// Complete and clean up.
isCompleted = true;
completer.complete();
completer = null;
}
void _appendFilesRecursively(Folder folder) {