From aeb327da0a49c6ff99bd8cd9f99e8960556fb546 Mon Sep 17 00:00:00 2001 From: Istvan Soos Date: Thu, 30 Jan 2025 14:03:35 +0100 Subject: [PATCH 1/2] Remove isolates from the analyzer service. --- app/lib/search/backend.dart | 2 +- app/lib/service/entrypoint/analyzer.dart | 53 ++++-------------------- 2 files changed, 9 insertions(+), 46 deletions(-) diff --git a/app/lib/search/backend.dart b/app/lib/search/backend.dart index f7a577547..a81288afc 100644 --- a/app/lib/search/backend.dart +++ b/app/lib/search/backend.dart @@ -96,7 +96,7 @@ class SearchBackend { /// /// When other process has the claim, the loop waits a minute before /// attempting to get the claim. - Future updateSnapshotInForeverLoop() async { + Future updateSnapshotInForeverLoop() async { final lock = GlobalLock.create( '$runtimeVersion/search/update-snapshot', expiration: Duration(minutes: 20), diff --git a/app/lib/service/entrypoint/analyzer.dart b/app/lib/service/entrypoint/analyzer.dart index 21166faf1..ca12d7721 100644 --- a/app/lib/service/entrypoint/analyzer.dart +++ b/app/lib/service/entrypoint/analyzer.dart @@ -19,7 +19,6 @@ import '../../task/backend.dart'; import '../../tool/neat_task/pub_dev_tasks.dart'; import '../download_counts/backend.dart'; -import '_isolate.dart'; final Logger logger = Logger('pub.analyzer'); @@ -34,56 +33,20 @@ class AnalyzerCommand extends Command { Future run() async { envConfig.checkServiceEnvironment(name); await withServices(() async { - final worker = - await startWorkerIsolate(logger: logger, entryPoint: _workerMain); - registerScopeExitCallback(worker.close); + await downloadCountsBackend.start(); + await taskBackend.start(); + registerScopeExitCallback(() => taskBackend.stop()); - final indexBuilder = await startWorkerIsolate( - logger: logger, - entryPoint: _indexBuilderMain, - kind: 'index-builder', - ); - registerScopeExitCallback(indexBuilder.close); + setupPeriodTaskSchedulers(); + // TODO: rewrite this loop to have a start/stop logic + scheduleMicrotask(searchBackend.updateSnapshotInForeverLoop); if (activeConfiguration.exportedApiBucketName != null) { - final apiExporterIsolate = await startWorkerIsolate( - logger: logger, - entryPoint: _apiExporterMain, - kind: 'api-exporter', - ); - registerScopeExitCallback(apiExporterIsolate.close); + await apiExporter!.start(); + registerScopeExitCallback(() => apiExporter!.stop()); } await runHandler(logger, analyzerServiceHandler); }); } } - -Future _workerMain(EntryMessage message) async { - message.protocolSendPort.send(ReadyMessage()); - - await downloadCountsBackend.start(); - await taskBackend.start(); - registerScopeExitCallback(() => taskBackend.stop()); - - setupPeriodTaskSchedulers(); - - // wait indefinitely - await Completer().future; -} - -Future _indexBuilderMain(EntryMessage message) async { - message.protocolSendPort.send(ReadyMessage()); - await downloadCountsBackend.start(); - await searchBackend.updateSnapshotInForeverLoop(); -} - -Future _apiExporterMain(EntryMessage message) async { - message.protocolSendPort.send(ReadyMessage()); - await downloadCountsBackend.start(); - await apiExporter!.start(); - registerScopeExitCallback(() => apiExporter!.stop()); - - // wait indefinitely - await Completer().future; -} From fcebef75f6d9ee77244bf54d36d175bfc7b814ec Mon Sep 17 00:00:00 2001 From: Istvan Soos Date: Mon, 3 Feb 2025 13:46:58 +0100 Subject: [PATCH 2/2] Revert never --- app/lib/search/backend.dart | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/lib/search/backend.dart b/app/lib/search/backend.dart index a81288afc..f7a577547 100644 --- a/app/lib/search/backend.dart +++ b/app/lib/search/backend.dart @@ -96,7 +96,7 @@ class SearchBackend { /// /// When other process has the claim, the loop waits a minute before /// attempting to get the claim. - Future updateSnapshotInForeverLoop() async { + Future updateSnapshotInForeverLoop() async { final lock = GlobalLock.create( '$runtimeVersion/search/update-snapshot', expiration: Duration(minutes: 20),