Github user Leemoonsoo commented on the pull request: https://github.com/apache/incubator-zeppelin/pull/267#issuecomment-136511380 Thanks for fix and procedure to reproduce the problem. Changing SparkSqlInterpreter.getSparkInterpreter() totally make sense. But i'm not quite get change of LazyOpenInterpreter.open(). It blocks running open() concurrently in the same interpreter group. Instead of blocking open(), if `((LazyOpenInterpreter) p).open();` can be moved to outside of `synchronized(intpGroup)` block, i guess it'll also solve the problem without restriction of blocking open() from concurrent execution. for example ``` private SparkInterpreter getSparkInterpreter() { InterpreterGroup intpGroup = getInterpreterGroup(); LazyOpenInterpreter lazy = null; SparkInterpreter spark = null; synchronized (intpGroup) { for (Interpreter intp : getInterpreterGroup()){ if (intp.getClassName().equals(SparkInterpreter.class.getName())) { Interpreter p = intp; while (p instanceof WrappedInterpreter) { if (p instanceof LazyOpenInterpreter) { lazy = (LazyOpenInterpreter) p; } if (p instanceof SparkInterpreter) { spark = (SparkInterpreter) p; } p = ((WrappedInterpreter) p).getInnerInterpreter(); } } } } if (lazy != null) { lazy.open(); } return spark; } ```
--- If your project is set up for it, you can reply to this email and have your reply appear on GitHub as well. If your project does not have this feature enabled and wishes so, or if the feature is enabled but not working, please contact infrastructure at infrastruct...@apache.org or file a JIRA ticket with INFRA. ---