private static void run()

in src/main/java/com/spotify/fmt/ForkingExecutor.java [371:413]


    private static void run(Path closureFile, Path resultFile, Path errorFile) {
      log.debug("deserializing closure: " + closureFile);
      final SerializableCallable<?> fn;
      try {
        fn = Serialization.deserialize(closureFile);
      } catch (SerializationException e) {
        log.error("Failed to deserialize closure: " + closureFile, e);
        System.exit(5);
        return;
      }

      log.debug("executing closure");
      Object result = null;
      Throwable error = null;
      try {
        result = fn.call();
      } catch (Throwable e) {
        error = e;
      }

      if (error != null) {
        log.debug("serializing error", error);
        try {
          Serialization.serialize(error, errorFile);
        } catch (SerializationException e) {
          log.error("failed to serialize error", e);
          System.exit(6);
          return;
        }
      } else {
        log.debug("serializing result: " + result);
        try {
          Serialization.serialize(result, resultFile);
        } catch (SerializationException e) {
          log.error("failed to serialize result", e);
          System.exit(7);
          return;
        }
      }

      System.err.flush();
      System.exit(0);
    }