public ExecutionEnvironment.ExecutionState createExecutionState() { String releaseUsername = Context.buildUser(config); // TODO(mfu): Currently we leave release tag empty String releaseTag = ""; String releaseVersion = Context.buildVersion(config); TopologyAPI.Topology topology = Runtime.topology(runtime); ExecutionEnvironment.ExecutionState.Builder builder = ExecutionEnvironment.ExecutionState.newBuilder(); // set the topology name, id, submitting user and time builder .setTopologyName(topology.getName()) .setTopologyId(topology.getId()) .setSubmissionTime(System.currentTimeMillis() / 1000) .setSubmissionUser(System.getProperty("user.name")) .setCluster(Context.cluster(config)) .setRole(Context.role(config)) .setEnviron(Context.environ(config)); // build the heron release state ExecutionEnvironment.HeronReleaseState.Builder releaseBuilder = ExecutionEnvironment.HeronReleaseState.newBuilder(); releaseBuilder.setReleaseUsername(releaseUsername); releaseBuilder.setReleaseTag(releaseTag); releaseBuilder.setReleaseVersion(releaseVersion); builder.setReleaseState(releaseBuilder); if (builder.isInitialized()) { return builder.build(); } else { throw new RuntimeException("Failed to create execution state"); } }