Uh oh!
There was an error while loading. Please reload this page.
[ZEPPELIN-1293] Re-create Livy session if it's lost - #1447
Conversation
zjffdu
commented
Sep 23, 2016
@spektom Thanks for the contribution, I am working on a PR about integration test of livy interpreter, could you mind to wait for that PR and then add integration test to that ? |
mispecto
commented
Sep 23, 2016
Of course, it would be great.
|
gss2002
commented
Oct 14, 2016
@spektom and @zjffdu is it possible to add a null check also. I've been doing some debugging over the past few days and certain situations can cause nulls to be returned and in theory if a null is being returned the session is dead. So instead of this: This: |
gss2002
commented
Oct 14, 2016
Also I have some concerns on using Exceptions to as goto's as there is definite performance issues that occur by using exceptions... http://javarevisited.blogspot.com/2013/03/0-exception-handling-best-practices-in-Java-Programming.html. Specifically since code inside of the try catch cannot be optimized. |
12ee62d to
5fdb6dfComparemispecto
commented
Oct 14, 2016
@gss2002 you shouldn't be concerned about performance as this code only runs when command is executed. |
gss2002
commented
Oct 14, 2016
@spektom this fix is good. Did some extensive load testing with it this AM and it solves the session expiration issues. Thanks for the contribution |
| throw new LivyException("Error executing command in Livy", e); | ||
| } | ||
| if (json == null || json.matches("^(\")?Session (\'[0-9]\' )?not found(.?\"?)$")) { | ||
| throw new LivyNoSessionException(); |
There was a problem hiding this comment.
Could we add some logging when this happens?
purechoc
left a comment
There was a problem hiding this comment.
now, "Session not found" pattern matched,
session id between 1 and 10.
| } catch (Exception e) { | ||
| throw new LivyException("Error executing command in Livy", e); | ||
| } | ||
| if (json == null || json.matches("^(\")?Session (\'[0-9]\' )?not found(.?\"?)$")) { |
There was a problem hiding this comment.
need to be change like this, isn't it?
json.matches("^(")?Session ('[0-9]' )?not found(.?"?)$")
gss2002
commented
Oct 19, 2016
@spektom / @zjffdu@purechoc there is definitely an additional condition. Not sure if it's because the ConcurrentHashMaps are not being used correctly. But the exception doesn't get caught completely or correctly at times with the fix proposed here.. ERROR [2016-10-19 14:19:57,638]({pool-2-thread-11} LivyHelper.java[executeHTTP]:378) - Error with 404 StatusCode: "Session '9' not found." |
mispecto
commented
Oct 19, 2016
@gss2002 are you using latest code from the branch? I can't find org.apache.zeppelin.livy.LivyHelper.interpretInput(LivyHelper.java:189) invocation at org.apache.zeppelin.livy.LivySparkInterpreter.interpret(LivySparkInterpreter.java:106) as it's shown in your stack trace. |
gss2002
commented
Oct 20, 2016
@spektom I think what happens here is this code fires.. which has nothing to do with the fix here.. in LivySparkInterpreter: That gets called before the NoSessionException occurs.. And then in |
gss2002
commented
Oct 20, 2016
@spektom just tested against my build by catching the exception and rethrowing.. It definitely solves the issue. } public InterpreterResult interpret(String stringLines, The code base I'm using is here with you patch and a few of @zjffdu patches and one of mine for NestedRuntimeException for 404's with KerberosTemplate: https://github.com/gss2002/zeppelin/blob/GSS_PROD_BUILD/livy/src/main/java/org/apache/zeppelin/livy/LivyHelper.java |
zjffdu
commented
Oct 31, 2016
Sorry for late response. @spektom Could you add some additional message of session recreation to be displayed in frontend. Because if session is recreated, we may need to rerun all the paragraphs, without knowing session recreationusers may be confused for errors like some variables are not defined. |
purechoc
commented
Nov 3, 2016
LGTM. it's working nicely in my environment. (zeppelin 0.7 + livy 2.1) |
@spektom Do you want to rebase it and continue work on it ? |
zjffdu
commented
Jan 6, 2017
@spektom Sorry, I didn't get your reply, I create another PR for it #1861 |
close#83close#86close#125close#133close#139close#146close#193close#203close#246close#262close#264close#273close#291close#299close#320close#347close#389close#413close#423close#543close#560close#658close#670close#728close#765close#777close#782close#783close#812close#822close#841close#843close#878close#884close#918close#989close#1076close#1135close#1187close#1231close#1304close#1316close#1361close#1385close#1390close#1414close#1422close#1425close#1447close#1458close#1466close#1485close#1492close#1495close#1497close#1536close#1545close#1561close#1577close#1600close#1603close#1678close#1695close#1739close#1748close#1765close#1767close#1776close#1783close#1799
What is this PR for?
This patch restarts Livy session when it's lost.
What type of PR is it?
Improvement/Bug Fix
Todos
What is the Jira issue?
https://issues.apache.org/jira/browse/ZEPPELIN-1293
How should this be tested?
livy.server.session.timeoutparameter in LivyQuestions: