scala

[sbt] spark 프로젝트에서 sbt test 할 때 shutdown hook 에러 제거

'김용환' 2019. 9. 27. 14:47

spark / sbt 1.3.0-RC1를 사용 중이다. 


sbt test를 실행해

테스트 코드를 모두 완료하고 종료할 때 Java의 ShutdownHookManager에서 Can not access 또는 Can not load 예외가 발생할 수 있다. 

이는 jvm shutdown하면서 shutdownhook에서 정리할 내용보다 먼저 자원이 정리되면서 발생하는 문제이다. 



$ sbt test 

...

INFO: Illegal access: this web application instance has been stopped already.  Could not load org.apache.hadoop.util.ShutdownHookManager$2.  The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.

java.lang.IllegalStateException

  at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1600)

  at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)

  at org.apache.hadoop.util.ShutdownHookManager.getShutdownHooksInOrder(ShutdownHookManager.java:124)

  at org.apache.hadoop.util.ShutdownHookManager$1.run(ShutdownHookManager.java:52




sbt 실행시 아래와 같은 설정을 추가한다. 더 이상 해당 에러는 발생하지 않는다. 

-Dsbt.classloader.close=false