[Geoserver-devel] [JIRA] (GEOS-8802) CoverageViewTest intermittent failures

Ben Caradoc-Davies created an issue

GeoServer / BugGEOS-8802

CoverageViewTest intermittent failures

Issue Type:

BugBug

Affects Versions:

2.14-beta, 2.13.1

Assignee:

Unassigned

Attachments:

gt-epsg-hsql-imagemosaicformat-getreader-printstacktrace.patch, hsqldb-2.3.0.jar

Components:

Main

Created:

25/Jun/18 4:31 AM

Priority:

MediumMedium

Reporter:

Ben Caradoc-Davies

tl;dr: boot Linux with maxcpus=2 to reproduce this failure in about one in four Maven builds.

In hundreds of scripted builds, many other failures were also seen, all related to EPSG code lookup. The core finding of this investigation is an NPE at org.hsqldb.Database.connect(Database.java:384). I suspect a synchronisation problem with EPSG database access.

The super-long version:

  • Attached patch for gt-epsg-hsql changes ImageMosaicReader.getReader to print a stack trace rather than swallowing exceptions.
  • Attached hsqldb-2.3.0.jar has been rebuild with debugging information (needed Oracle JDK 7 to build).
  • Linux booted with maxcpus=2.
  • Building gs-main with mvn -o clean install.

After several builds the following is seen:

Running org.geoserver.catalog.CoverageViewTest
source = /home/ben/geoserver/src with spaces/geoserver/src/main/./target/default5111977893338354336data/s2reduced
hints = Hints:
  REPOSITORY       = org.geoserver.catalog.CatalogRepository@anonymised.com                                                                                  
  EXECUTOR_SERVICE = java.util.concurrent.ThreadPoolExecutor@anonymised.com[Running, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 0]
System defaults:
  GRID_COVERAGE_FACTORY            = GridCoverageFactory                                    
    TILE_ENCODING                  = null                                                   
  FORCE_LONGITUDE_FIRST_AXIS_ORDER = true                                                   
  COMPARISON_TOLERANCE             = 1.0E-7                                                 
  FILTER_FACTORY                   = FilterFactoryImpl                                      
  FORCE_AXIS_ORDER_HONORING        = http                                                   
  STYLE_FACTORY                    = StyleFactoryImpl                                       
  LENIENT_DATUM_SHIFT              = true                                                   
  FEATURE_FACTORY                  = org.geotools.feature.LenientFeatureFactoryImpl@anonymised.com

org.geotools.data.DataSourceException
	at org.geotools.gce.imagemosaic.ImageMosaicReader.<init>(ImageMosaicReader.java:513)
	at org.geotools.gce.imagemosaic.ImageMosaicFormat.getReader(ImageMosaicFormat.java:566)
	at org.geotools.gce.imagemosaic.ImageMosaicFormat.getReader(ImageMosaicFormat.java:108)
	at org.geoserver.catalog.ResourcePool.getGridCoverageReader(ResourcePool.java:1524)
	at org.geoserver.catalog.ResourcePool.getGridCoverageReader(ResourcePool.java:1444)
	at org.geoserver.catalog.CoverageView.buildCoverageInfo(CoverageView.java:387)
	at org.geoserver.catalog.CoverageView.createCoverageInfo(CoverageView.java:398)
	at org.geoserver.catalog.CoverageViewTest.buildHeterogeneousResolutionView(CoverageViewTest.java:698)
	at org.geoserver.catalog.CoverageViewTest.testHeterogeneousViewIntersectionEnvelope(CoverageViewTest.java:458)
	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.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	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.rules.RunRules.evaluate(RunRules.java:20)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
	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: org.geotools.data.DataSourceException
	at org.geotools.gce.imagemosaic.ImageMosaicReader.initReaderFromURL(ImageMosaicReader.java:721)
	at org.geotools.gce.imagemosaic.ImageMosaicReader.<init>(ImageMosaicReader.java:511)
	... 42 more
Caused by: java.lang.NullPointerException
	at org.hsqldb.Database.connect(Database.java:384)
	at org.hsqldb.DatabaseManager.newSession(DatabaseManager.java:163)
	at org.hsqldb.jdbc.JDBCConnection.<init>(JDBCConnection.java:3593)
	at org.hsqldb.jdbc.JDBCDriver.getConnection(JDBCDriver.java:312)
	at org.hsqldb.jdbc.JDBCDataSource.getConnection(JDBCDataSource.java:192)
	at org.hsqldb.jdbc.JDBCDataSource.getConnection(JDBCDataSource.java:151)
	at org.geotools.referencing.factory.epsg.DirectEpsgFactory.getConnection(DirectEpsgFactory.java:3543)
	at org.geotools.referencing.factory.epsg.DirectEpsgFactory.prepareStatement(DirectEpsgFactory.java:807)
	at org.geotools.referencing.factory.epsg.DirectEpsgFactory.createCoordinateReferenceSystem(DirectEpsgFactory.java:2067)
	at org.geotools.referencing.factory.BufferedAuthorityFactory.createCoordinateReferenceSystem(BufferedAuthorityFactory.java:732)
	at org.geotools.referencing.factory.AuthorityFactoryAdapter.createCoordinateReferenceSystem(AuthorityFactoryAdapter.java:780)
	at org.geotools.referencing.factory.BufferedAuthorityFactory.createCoordinateReferenceSystem(BufferedAuthorityFactory.java:732)
	at org.geotools.referencing.factory.AuthorityFactoryAdapter.createCoordinateReferenceSystem(AuthorityFactoryAdapter.java:780)
	at org.geotools.referencing.factory.FallbackAuthorityFactory.createCoordinateReferenceSystem(FallbackAuthorityFactory.java:625)
	at org.geotools.referencing.factory.FallbackAuthorityFactory.createCoordinateReferenceSystem(FallbackAuthorityFactory.java:629)
	at org.geotools.referencing.factory.AuthorityFactoryAdapter.createCoordinateReferenceSystem(AuthorityFactoryAdapter.java:780)
	at org.geotools.referencing.factory.ThreadedAuthorityFactory.createCoordinateReferenceSystem(ThreadedAuthorityFactory.java:636)
	at org.geotools.referencing.DefaultAuthorityFactory.createCoordinateReferenceSystem(DefaultAuthorityFactory.java:177)
	at org.geotools.referencing.CRS.decode(CRS.java:517)
	at org.geotools.gce.imagemosaic.Utils.decodeSrs(Utils.java:930)
	at org.geotools.gce.imagemosaic.Utils.loadMosaicProperties(Utils.java:873)
	at org.geotools.gce.imagemosaic.Utils.loadMosaicProperties(Utils.java:560)
	at org.geotools.gce.imagemosaic.ImageMosaicReader.initReaderFromURL(ImageMosaicReader.java:620)
	... 43 more
Tests run: 15, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 4.276 sec <<< FAILURE!
testHeterogeneousViewIntersectionEnvelope(org.geoserver.catalog.CoverageViewTest)  Time elapsed: 51 sec  <<< ERROR!
java.io.IOException: Failed to create reader from file:/home/ben/geoserver/src%20with%20spaces/geoserver/src/main/./target/default5111977893338354336data/s2reduced/ and hints Hints:
  REPOSITORY       = org.geoserver.catalog.CatalogRepository@anonymised.com                                                                                  
  EXECUTOR_SERVICE = java.util.concurrent.ThreadPoolExecutor@anonymised.com[Running, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 0]
System defaults:
  GRID_COVERAGE_FACTORY            = GridCoverageFactory                                    
    TILE_ENCODING                  = null                                                   
  FORCE_LONGITUDE_FIRST_AXIS_ORDER = true                                                   
  COMPARISON_TOLERANCE             = 1.0E-7                                                 
  FILTER_FACTORY                   = FilterFactoryImpl                                      
  FORCE_AXIS_ORDER_HONORING        = http                                                   
  STYLE_FACTORY                    = StyleFactoryImpl                                       
  LENIENT_DATUM_SHIFT              = true                                                   
  FEATURE_FACTORY                  = org.geotools.feature.LenientFeatureFactoryImpl@anonymised.com

	at org.geoserver.catalog.ResourcePool.getGridCoverageReader(ResourcePool.java:1526)
	at org.geoserver.catalog.ResourcePool.getGridCoverageReader(ResourcePool.java:1444)
	at org.geoserver.catalog.CoverageView.buildCoverageInfo(CoverageView.java:387)
	at org.geoserver.catalog.CoverageView.createCoverageInfo(CoverageView.java:398)
	at org.geoserver.catalog.CoverageViewTest.buildHeterogeneousResolutionView(CoverageViewTest.java:698)
	at org.geoserver.catalog.CoverageViewTest.testHeterogeneousViewIntersectionEnvelope(CoverageViewTest.java:458)
	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.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:47)
	at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
	at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:44)
	at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
	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.rules.RunRules.evaluate(RunRules.java:20)
	at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:271)
	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)

Add Comment

Add Comment

Get Jira notifications on your phone! Download the Jira Cloud app for Android or iOS


This message was sent by Atlassian Jira (v1001.0.0-SNAPSHOT#100087-sha1:2813e6b)

Atlassian logo