liuxunorg commented on a change in pull request #3342: [ZEPPELIN-4031] Fixed
Unable to detect that the interpreter process was killed manually
URL: https://github.com/apache/zeppelin/pull/3342#discussion_r268967854
##########
File path:
zeppelin-zengine/src/main/java/org/apache/zeppelin/interpreter/ManagedInterpreterGroup.java
##########
@@ -141,17 +165,27 @@ private void close(Collection<Interpreter> interpreters)
{
private void closeInterpreter(Interpreter interpreter) {
Scheduler scheduler = interpreter.getScheduler();
- for (final Job job : scheduler.getAllJobs()) {
- job.abort();
- job.setStatus(Job.Status.ABORT);
- LOGGER.info("Job " + job.getJobName() + " aborted ");
- }
+ // Need to abort the task being executed
+ // when actively shutting down the remote interpreter
+ if (false == remoteIntpProcessIsShutdown()) {
Review comment:
### 1. If interpreter process is normal, isRunning() must equal true
`isRunning()` is not a flag, It's a function call.
`interpreterProcess.isRunning()` Will call
`RemoteInterpreterUtils.java::checkIfRemoteEndpointAccessible()` , Check if the
remote interpreter is available through the socket.
### 2. Avoid invalid calls
`Job.abort()` Will go to the remote to call the interpreter,
`Interpreter.cancel(getInterpreterContext(null));` function. If the interpreter
is no longer connected, The `interpreter.cancel()` function cannot be called
correctly.
But if you find that the remote interpreter is not available in
`job.abort()`, Will pass again
`RemoteInterpreter.java::getOrCreateInterpreterProcess()`, Trying to create
an interpreter process, This will fail due to a 30 second timeout.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services