Skip to content

Commit

Permalink
Remove isolates from the analyzer service. (#8509)
Browse files Browse the repository at this point in the history
  • Loading branch information
isoos authored Feb 3, 2025
1 parent 11de346 commit f99f380
Showing 1 changed file with 8 additions and 45 deletions.
53 changes: 8 additions & 45 deletions app/lib/service/entrypoint/analyzer.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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');

Expand All @@ -34,56 +33,20 @@ class AnalyzerCommand extends Command {
Future<void> 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;
}

0 comments on commit f99f380

Please sign in to comment.