/*
# Licensed Materials - Property of IBM
# Copyright IBM Corp. 2015
*/
package com.ibm.streamsx.topology.internal.streams;
import java.io.File;
import java.math.BigInteger;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Logger;
import com.ibm.streamsx.topology.Topology;
import com.ibm.streamsx.topology.internal.process.ProcessOutputToLogger;
public class InvokeCancel {
static final Logger trace = Topology.STREAMS_LOGGER;
private final BigInteger jobId;
public InvokeCancel(BigInteger jobId) {
super();
this.jobId = jobId;
}
public void invoke() throws Exception, InterruptedException {
String si = Util.getStreamsInstall();
File sj = new File(si, "bin/streamtool");
Util.checkInvokeStreamtoolPreconditions();
List<String> commands = new ArrayList<>();
commands.add(sj.getAbsolutePath());
commands.add("canceljob");
commands.add(jobId.toString());
trace.info("Invoking streamtool canceljob " + jobId);
ProcessBuilder pb = new ProcessBuilder(commands);
Process sjProcess = pb.start();
ProcessOutputToLogger.log(trace, sjProcess);
sjProcess.getOutputStream().close();
int rc = sjProcess.waitFor();
trace.info("streamtool canceljob complete: return code=" + rc);
if (rc != 0)
throw new Exception("streamtool canceljob failed!");
}
}