-1

I having a mvn spark project with following dependency jars (showing only relevant jars).

    mvn dependency:tree |grep slf4j
[INFO] |  +- org.slf4j:slf4j-log4j12:jar:1.7.2:compile
[INFO] +- org.slf4j:slf4j-api:jar:1.7.2:compile
[INFO] +- org.slf4j:jcl-over-slf4j:jar:1.7.2:runtime
[INFO] \- org.slf4j:jul-to-slf4j:jar:1.7.2:runtime

when I run this mvn project using this code

SparkSession spark = SparkSession
                .builder()
                .appName("Test spark model file")
                .master("local")
                .getOrCreate();

I get the following error

Exception in thread "main" java.lang.StackOverflowError
    at java.util.concurrent.ConcurrentHashMap.get(ConcurrentHashMap.java:936)
    at org.slf4j.impl.JDK14LoggerFactory.getLogger(JDK14LoggerFactory.java:59)
    at org.slf4j.LoggerFactory.getLogger(LoggerFactory.java:277)
    at org.slf4j.bridge.SLF4JBridgeHandler.getSLF4JLogger(SLF4JBridgeHandler.java:204)
    at org.slf4j.bridge.SLF4JBridgeHandler.publish(SLF4JBridgeHandler.java:289)
    at java.util.logging.Logger.log(Logger.java:738)
    at org.slf4j.impl.JDK14LoggerAdapter.log(JDK14LoggerAdapter.java:579)
    at org.slf4j.impl.JDK14LoggerAdapter.log(JDK14LoggerAdapter.java:651)
    at org.slf4j.bridge.SLF4JBridgeHandler.callLocationAwareLogger(SLF4JBridgeHandler.java:224)
    at org.slf4j.bridge.SLF4JBridgeHandler.publish(SLF4JBridgeHandler.java:299)
    at java.util.logging.Logger.log(Logger.java:738)
    at org.slf4j.impl.JDK14LoggerAdapter.log(JDK14LoggerAdapter.java:579)
    at org.slf4j.impl.JDK14LoggerAdapter.log(JDK14LoggerAdapter.java:651)...

I saw this Using log4j2 with slf4j related to my error, but did not seem to help

Community
  • 1
  • 1
nag
  • 153
  • 1
  • 8
  • Can you providd the content of your pom? Also, what actions did you take related to the other posts? Both errors seems indeed related. – Pierre B. May 08 '17 at 18:10

1 Answers1

1

By the stack, you can see there is a circulation of slf4j/jdk14logger bridges.

JDK14LoggerAdapter bridge slf4j logger to jdk14logger, and SLF4JBridgeHandler then do the opposite. So it cause a loop and will then cause stackoverflow error.

You can solve it by removing one of these two jars.

Mobility
  • 3,117
  • 18
  • 31