use of org.apache.zeppelin.helium.ApplicationException in project zeppelin by apache.
the class RemoteInterpreterServer method unloadApplication.
@Override
public RemoteApplicationResult unloadApplication(String applicationInstanceId) throws InterpreterRPCException, TException {
RunningApplication runningApplication = runningApplications.remove(applicationInstanceId);
if (runningApplication != null) {
try {
LOGGER.info("Unloading application {}", applicationInstanceId);
runningApplication.app.unload();
} catch (ApplicationException e) {
LOGGER.error(e.getMessage(), e);
return new RemoteApplicationResult(false, e.getMessage());
}
}
return new RemoteApplicationResult(true, "");
}
use of org.apache.zeppelin.helium.ApplicationException in project zeppelin by apache.
the class RemoteInterpreterServer method close.
@Override
public void close(String sessionId, String className) throws InterpreterRPCException, TException {
// unload all applications
for (String appId : runningApplications.keySet()) {
RunningApplication appInfo = runningApplications.get(appId);
// see NoteInterpreterLoader.SHARED_SESSION
if (appInfo.noteId.equals(sessionId) || sessionId.equals("shared_session")) {
try {
LOGGER.info("Unload App {} ", appInfo.pkg.getName());
appInfo.app.unload();
// see ApplicationState.Status.UNLOADED
intpEventClient.onAppStatusUpdate(appInfo.noteId, appInfo.paragraphId, appId, "UNLOADED");
} catch (ApplicationException e) {
LOGGER.error(e.getMessage(), e);
}
}
}
// close interpreters
if (interpreterGroup != null) {
synchronized (interpreterGroup) {
List<Interpreter> interpreters = interpreterGroup.get(sessionId);
if (interpreters != null) {
Iterator<Interpreter> it = interpreters.iterator();
while (it.hasNext()) {
Interpreter inp = it.next();
if (inp.getClassName().equals(className)) {
try {
inp.close();
} catch (InterpreterException e) {
LOGGER.warn("Fail to close interpreter", e);
}
it.remove();
break;
}
}
}
}
}
}
use of org.apache.zeppelin.helium.ApplicationException in project zeppelin by apache.
the class RemoteInterpreterServer method runApplication.
@Override
public RemoteApplicationResult runApplication(String applicationInstanceId) throws InterpreterRPCException, TException {
LOGGER.info("run application {}", applicationInstanceId);
RunningApplication runningApp = runningApplications.get(applicationInstanceId);
if (runningApp == null) {
LOGGER.error("Application instance {} not exists", applicationInstanceId);
return new RemoteApplicationResult(false, "Application instance does not exists");
} else {
ApplicationContext context = runningApp.app.context();
try {
context.out.clear();
context.out.setType(InterpreterResult.Type.ANGULAR);
ResourceSet resource = appLoader.findRequiredResourceSet(runningApp.pkg.getResources(), context.getNoteId(), context.getParagraphId());
for (Resource res : resource) {
System.err.println("Resource " + res.get());
}
runningApp.app.run(resource);
context.out.flush();
InterpreterResultMessageOutput out = context.out.getOutputAt(0);
intpEventClient.onAppOutputUpdate(context.getNoteId(), context.getParagraphId(), 0, applicationInstanceId, out.getType(), new String(out.toByteArray()));
return new RemoteApplicationResult(true, "");
} catch (ApplicationException | IOException e) {
return new RemoteApplicationResult(false, e.getMessage());
}
}
}
Aggregations