From 94a52b4e2564cca7bbf581617e44e764ebdd49d0 Mon Sep 17 00:00:00 2001 From: Luciano Resende Date: Tue, 17 Jan 2017 09:52:48 -0800 Subject: Propagate errors as success with error details --- python/toree_kernel.py | 8 +++++--- src/main/scala/com/ibm/ToreeClient.scala | 11 ++++++++--- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/python/toree_kernel.py b/python/toree_kernel.py index e73d916..4b6266e 100644 --- a/python/toree_kernel.py +++ b/python/toree_kernel.py @@ -19,6 +19,7 @@ import signal import sys import time import io +import logging from os import O_NONBLOCK, read from fcntl import fcntl, F_GETFL, F_SETFL @@ -70,8 +71,8 @@ class ToreeKernel(MetaKernel): self.gateway_proc = Popen(args, stderr=PIPE, stdout=PIPE) time.sleep(1.5) self.gateway = JavaGateway( - start_callback_server=True, - callback_server_parameters=CallbackServerParameters()) + start_callback_server=True, + callback_server_parameters=CallbackServerParameters()) flags = fcntl(self.gateway_proc.stdout, F_GETFL) # get current p.stdout flags fcntl(self.gateway_proc.stdout, F_SETFL, flags | O_NONBLOCK) @@ -128,7 +129,7 @@ class ToreeKernel(MetaKernel): self.handle_output(self.gateway_proc.stderr, self.Error) except Py4JError as e: if not silent: - self.Error(e.cause) + self.Error(format(e)) if retval is None: return @@ -139,3 +140,4 @@ class ToreeKernel(MetaKernel): if __name__ == '__main__': ToreeKernel.run_as_main() + diff --git a/src/main/scala/com/ibm/ToreeClient.scala b/src/main/scala/com/ibm/ToreeClient.scala index d3714d6..d21d419 100644 --- a/src/main/scala/com/ibm/ToreeClient.scala +++ b/src/main/scala/com/ibm/ToreeClient.scala @@ -38,9 +38,10 @@ class ToreeGateway(client: SparkKernelClient) { final val log = LoggerFactory.getLogger(this.getClass.getName.stripSuffix("$")) private def handleResult(promise:Promise[String], result: ExecuteResult) = { + log.warn(s"Result was: ${result.data(MIMEType.PlainText)}") // promise.success(result.data(MIMEType.PlainText)) promise.success(result.content) - log.warn(s"Result was: ${result.data(MIMEType.PlainText)}") + } private def handleSuccess(promise:Promise[String], executeReplyOk: ExecuteReplyOk) = { @@ -50,7 +51,8 @@ class ToreeGateway(client: SparkKernelClient) { private def handleError(promise:Promise[String], reply:ExecuteReplyError) { log.warn(s"Error was: ${reply.ename.get}") - promise.failure(new Throwable("Error evaluating paragraph: " + reply.content)) + //promise.failure(new Throwable("Error evaluating paragraph: " + reply.content)) + promise.success(reply.status + ":" + reply.ename.getOrElse("") + " - " + reply.evalue.getOrElse("")) } private def handleStream(promise:Promise[String], content: StreamContent) { @@ -73,7 +75,10 @@ class ToreeGateway(client: SparkKernelClient) { }) } catch { - case t : Throwable => log.info("Error proxying request: " + t.getMessage, t) + case t : Throwable => { + log.info("Error proxying request: " + t.getMessage, t) + promise.success("Error proxying request: " + t.getMessage) + } } Await.result(promise.future, Duration.Inf) -- cgit v1.2.3