'java.lang.IllegalArgumentException: Cannot parse pattern for log back

I am getting this error in my application which is running on EMR Here are few details about this error

  1. It is not consistent. This error comes once in while (in two days or in a week also).
  2. We have tried building JARs from Local /Jenkins/Maven but no luck. Still this errors appears.
  3. Verified class in the JAR file and it is present at correct location.
  4. It does not look like corrupted jars or class not present issue as this error is not consistent.

Here is the complete stack trace

java.lang.IllegalArgumentException: Cannot parse pattern '%d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n'
    at org.apache.logging.log4j.core.layout.PatternLayout$SerializerBuilder.build(PatternLayout.java:490)
    at org.apache.logging.log4j.core.layout.PatternLayout.<init>(PatternLayout.java:140)
    at org.apache.logging.log4j.core.layout.PatternLayout.<init>(PatternLayout.java:61)
    at org.apache.logging.log4j.core.layout.PatternLayout$Builder.build(PatternLayout.java:770)
    at org.apache.logging.log4j.core.config.AbstractConfiguration.setToDefault(AbstractConfiguration.java:715)
    at org.apache.logging.log4j.core.config.DefaultConfiguration.<init>(DefaultConfiguration.java:47)
    at org.apache.logging.log4j.core.LoggerContext.<init>(LoggerContext.java:95)
    at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.createContext(ClassLoaderContextSelector.java:254)
    at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.locateContext(ClassLoaderContextSelector.java:218)
    at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:136)
    at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:123)
    at org.apache.logging.log4j.core.selector.ClassLoaderContextSelector.getContext(ClassLoaderContextSelector.java:117)
    at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:150)
    at org.apache.logging.log4j.core.impl.Log4jContextFactory.getContext(Log4jContextFactory.java:47)
    at org.apache.logging.log4j.LogManager.getContext(LogManager.java:196)
    at org.apache.logging.log4j.LogManager.getLogger(LogManager.java:599)
    at com.company.search.tcp.rdf.jumper.driver.processclass.processMessages(processclass.java:110)
    at com.company.search.ecp.tcp.jumper.driver.processclass.lambda$process$5dfe0a07$1(processclass.java:95)
    at org.apache.spark.api.java.JavaRDDLike$$anonfun$foreachPartitionAsync$1.apply(JavaRDDLike.scala:741)
    at org.apache.spark.api.java.JavaRDDLike$$anonfun$foreachPartitionAsync$1.apply(JavaRDDLike.scala:741)
    at org.apache.spark.SparkContext$$anonfun$37.apply(SparkContext.scala:2212)
    at org.apache.spark.SparkContext$$anonfun$37.apply(SparkContext.scala:2212)
    at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:90)
    at org.apache.spark.scheduler.Task.run(Task.scala:123)
    at org.apache.spark.executor.Executor$TaskRunner$$anonfun$10.apply(Executor.scala:408)
    at org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1360)
    at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:414)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.IllegalStateException: zip file closed
    at java.util.zip.ZipFile.ensureOpen(ZipFile.java:690)
    at java.util.zip.ZipFile.access$200(ZipFile.java:61)
    at java.util.zip.ZipFile$ZipEntryIterator.hasNext(ZipFile.java:512)
    at java.util.zip.ZipFile$ZipEntryIterator.hasMoreElements(ZipFile.java:507)
    at java.util.jar.JarFile$JarEntryIterator.hasNext(JarFile.java:264)
    at java.util.jar.JarFile$JarEntryIterator.hasMoreElements(JarFile.java:273)
    at org.apache.logging.log4j.core.config.plugins.util.ResolverUtil.loadImplementationsInJar(ResolverUtil.java:347)
    at org.apache.logging.log4j.core.config.plugins.util.ResolverUtil.findInPackage(ResolverUtil.java:233)
    at org.apache.logging.log4j.core.config.plugins.util.PluginRegistry.loadFromPackage(PluginRegistry.java:225)
    at org.apache.logging.log4j.core.config.plugins.util.PluginManager.collectPlugins(PluginManager.java:136)
    at org.apache.logging.log4j.core.pattern.PatternParser.<init>(PatternParser.java:132)
    at org.apache.logging.log4j.core.pattern.PatternParser.<init>(PatternParser.java:113)
    at org.apache.logging.log4j.core.layout.PatternLayout.createPatternParser(PatternLayout.java:255)
    at org.apache.logging.log4j.core.layout.PatternLayout$SerializerBuilder.build(PatternLayout.java:473)
    ... 29 more

we don't use the pattern mentioned in the error stack trace at all . We use below in our code

name="OFF_File_appender"
fileName="$${sys:spark.yarn.app.container.log.dir}/log4j2.log"
filePattern="$$${sys:spark.yarn.app.container.log.dir}/log4j2.log.%d{yyyy-MM-dd-HH}"
>
<PatternLayout pattern="%d{ISO8601} %-5level %c{3}[%X{currentContext}] - [log4j2] %msg%n"/>


Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source