Seen locally and on Jenkins, ResourcePoolTest tear down occasionally fails when it is unable to delete its temporary data directory, almost certainly because it is not empty, likely because an H2 thread has not finished shutting down and has written a file between directory content deletion and directory deletion:
https://build.geoserver.org/job/geoserver-master/5355/consoleText
Tests run: 18, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 3.3 sec <<< FAILURE!
org.geoserver.catalog.ResourcePoolTest Time elapsed: 93 sec <<< ERROR!
java.lang.RuntimeException: java.io.IOException: Unable to delete directory ./target/default6742965833692039099data.
at org.geoserver.test.GeoServerBaseTestSupport$1.apply(GeoServerBaseTestSupport.java:109)
at org.junit.rules.RunRules.applyAll(RunRules.java:26)
at org.junit.rules.RunRules.<init>(RunRules.java:15)
at org.junit.runners.BlockJUnit4ClassRunner.withTestRules(BlockJUnit4ClassRunner.java:379)
at org.junit.runners.BlockJUnit4ClassRunner.withRules(BlockJUnit4ClassRunner.java:340)
at org.junit.runners.BlockJUnit4ClassRunner.methodBlock(BlockJUnit4ClassRunner.java:256)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:70)
at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:238)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:63)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:236)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:53)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:229)
at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:26)
at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27)
at org.junit.runners.ParentRunner.run(ParentRunner.java:309)
at org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:252)
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:141)
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:112)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(ReflectionUtils.java:189)
at org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(ProviderFactory.java:165)
at org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFactory.java:85)
at org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBooter.java:115)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:75)
Caused by: java.io.IOException: Unable to delete directory ./target/default6742965833692039099data.
at org.apache.commons.io.FileUtils.deleteDirectory(FileUtils.java:1337)
at org.geoserver.data.test.SystemTestData.tearDown(SystemTestData.java:1026)
at org.geoserver.test.GeoServerBaseTestSupport.doTearDownClass(GeoServerBaseTestSupport.java:206)
at org.geoserver.test.GeoServerBaseTestSupport$1.apply(GeoServerBaseTestSupport.java:107)
... 27 more
This could be fixed by forcing synchronous shutdown of H2 if such a mechanism exists, or by a short Thread.sleep before recursive directory removal. The latter could be applied to all GeoServer tests.
|