bazelbuild / rules_closure

Closure rules for Bazel
https://developers.google.com/closure
Apache License 2.0
152 stars 114 forks source link

Cannot shutdown WebfilesServer #566

Open ptmphuong opened 1 year ago

ptmphuong commented 1 year ago

The WebfilesServer currently lacks a shutdown method.

Simply shutting down the ExecutorService that runs the server doesn't work:

  public static void main(String[] args) throws Exception {
    ExecutorService executor = Executors.newCachedThreadPool();
    WebfilesServer server =
        DaggerWebfilesServer_Server.builder()
            .args(ImmutableList.of(serverConfig))
            .executor(executor)
            .fs(FileSystems.getDefault())
            .serverSocketFactory(ServerSocketFactory.getDefault())
            .build()
            .server();

    server.spawn();
    executor.shutdownNow();

    // at this point, the server is still running
  }

WebfilesServer also contains MetadataLoader and MetadataReloader instances that also implement Runnable and loop infinitely. Some work needs to be done to break the loops and release the resources properly.