Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
// Validate the input, do nothing if invalid kernel info is provided.
if (!(kernel && (kernel.channels || kernel.spawn))) {
return Promise.resolve(true);
}
// Fallback to forcefully shutting the kernel down.
function handleShutdownFailure(err) {
console.error(
`Could not gracefully shutdown the kernel because of the
following error. nteract will now forcefully shutdown the kernel.`,
err
);
forceShutdownKernel(kernel);
}
const request = shutdownRequest({ restart: false });
const shutDownReply = kernel.channels
.pipe(
childOf(request),
ofMessageType("shutdown_reply"),
map(msg => msg.content)
)
.toPromise();
kernel.channels.next(request);
// Attempt to gracefully terminate the kernel.
return shutDownReply
.then(k => {
// At this point, the kernel has cleaned up its resources. Now we can
// terminate the process and cleanup handles by calling forceShutdownKernel
}
const kernel = selectors.kernel(state$.value, { kernelRef });
if (!kernel) {
// tslint:disable-next-line:no-console
console.warn("tried to kill a kernel that doesn't exist");
return empty();
}
// Ignore the action if the specified kernel is not ZMQ.
if (kernel.type !== "zeromq") {
return empty();
}
const request = shutdownRequest({ restart: false });
// Try to make a shutdown request
// If we don't get a response within X time, force a shutdown
// Either way do the same cleanup
const shutDownHandling = kernel.channels.pipe(
childOf(request),
ofMessageType("shutdown_reply"),
first(),
// If we got a reply, great! :)
map((msg: { content: { restart: boolean } }) =>
actions.shutdownReplySucceeded({ content: msg.content, kernelRef })
),
// If we don't get a response within 2s, assume failure :(
timeout(1000 * 2),
catchError(err =>
of(actions.shutdownReplyTimedOut({ error: err, kernelRef }))
}
const kernel = selectors.kernel(state$.value, { kernelRef });
if (!kernel) {
// tslint:disable-next-line:no-console
console.warn("tried to kill a kernel that doesn't exist");
return empty();
}
// Ignore the action if the specified kernel is not ZMQ.
if (kernel.type !== "zeromq") {
return empty();
}
const request = shutdownRequest({ restart: false });
// Try to make a shutdown request
// If we don't get a response within X time, force a shutdown
// Either way do the same cleanup
const shutDownHandling = kernel.channels.pipe(
childOf(request),
ofMessageType("shutdown_reply"),
first(),
// If we got a reply, great! :)
map((msg: { content: { restart: boolean } }) =>
actions.shutdownReplySucceeded({ content: msg.content, kernelRef })
),
// If we don't get a response within 2s, assume failure :(
timeout(1000 * 2),
catchError(err =>
of(actions.shutdownReplyTimedOut({ error: err, kernelRef }))
shutdownEpic(timeoutMs: number = 2000) {
const request: JupyterMessage<"shutdown_request", any> = shutdownRequest({
restart: false
});
// Try to make a shutdown request
// If we don't get a response within X time, force a shutdown
// Either way do the same cleanup
const shutDownHandling = this.channels.pipe(
/* Get the first response to our message request. */
childOf(request),
ofMessageType("shutdown_reply"),
first(),
// If we got a reply, great! :)
map((msg: { content: { restart: boolean } }) => {
return {
status: "shutting down",
content: msg.content