When running my tests multithreaded I sometimes get the following error:
org.ehcache.xml.exceptions.XmlConfigurationException:
Error parsing XML configuration at
file:/C:/Projekte/.../target/testtemp/Test5854976511211866905/CacheConfig.xml
at org.ehcache.xml.XmlConfiguration.<init>(XmlConfiguration.java:167)
at org.ehcache.xml.XmlConfiguration.<init>(XmlConfiguration.java:131)
....
at org.junit.rules.RunRules.evaluate(RunRules.java:20)
at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
at org.junit.runners.Suite.runChild(Suite.java:128)
at org.junit.runners.Suite.runChild(Suite.java:27)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
at org.apache.maven.surefire.junitcore.pc.Scheduler$1.run(Scheduler.java:393)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.NullPointerException
at
com.sun.org.apache.xerces.internal.jaxp.validation.XMLSchemaFactory$XMLGrammarPoolWrapper.retrieveInitialGrammarSet(XMLSchemaFactory.java:510)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.initGrammarBucket(XMLSchemaLoader.java:1085)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.reset(XMLSchemaLoader.java:1008)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadGrammar(XMLSchemaLoader.java:559)
at com.sun.org.apache.xerces.internal.impl.xs.XMLSchemaLoader.loadGrammar(XMLSchemaLoader.java:538)
at com.sun.org.apache.xerces.internal.jaxp.validation.XMLSchemaFactory.newSchema(XMLSchemaFactory.java:255)
at org.ehcache.xml.ConfigurationParser.<init>(ConfigurationParser.java:155)
at org.ehcache.xml.XmlConfiguration.parseConfiguration(XmlConfiguration.java:175)
at org.ehcache.xml.XmlConfiguration.<init>(XmlConfiguration.java:163)
... 16 more
I think there is some locking missing, either on my side or on ehcache.
Is there something I have to lock before calling: new XmlConfiguration(dataDir.resolve(CACHE_CONFIG_FILE_NAME).toUri().toURL(), this.getClass().getClassLoader()) ?
I could not find anything in the documentation about needing lock before using the cache providers.
Thanks a lot,
David