Every GeoSpatialImageReader has a 'slicesCatalog', which is created using the GeoSpatialImageReader#initCatalog method. However, in a multi threaded environment with lots of open files, the maintenance of this catalog, which seems to be an external H2 database, seems to cause a lot of overhead. On the other hand, it seems that in my application this catalog is not really used.
I got rid of this by overriding the initCatalog method so that it returns null. I had to apply this simple patch to make NetCDF reading work again:
diff --git a/modules/plugin/coverage-multidim/netcdf/src/main/java/org/geotools/imageio/netcdf/NetCDFImageReader.java b/modules/plugin/coverage-multidim/netcdf/src/main/java/org/geotools/imageio/netcdf/NetCDFImageReader.java
index b14f99a..f3efba4 100644
--- a/modules/plugin/coverage-multidim/netcdf/src/main/java/org/geotools/imageio/netcdf/NetCDFImageReader.java
+++ b/modules/plugin/coverage-multidim/netcdf/src/main/java/org/geotools/imageio/netcdf/NetCDFImageReader.java
@@ -337,7 +337,9 @@
final int features = collection.size();
if (features > 0) {
- getCatalog().addGranules(indexSchema.getTypeName(), collection, transaction);
+ if(getCatalog()!=null){
+ getCatalog().addGranules(indexSchema.getTypeName(), collection, transaction);
+ }
collection.clear();
startPagingIndex += features;
}
@@ -919,6 +921,7 @@
}
}
+
/**
* Create the schema in case not already defined
* @param indexSchema
@@ -927,7 +930,7 @@
private void forceSchemaCreation(SimpleFeatureType indexSchema) throws IOException {
final String typeName = indexSchema.getTypeName();
final CoverageSlicesCatalog catalog = getCatalog();
- if (typeName != null) {
+ if (typeName != null && catalog!=null) {
String[] typeNames = catalog.getTypeNames();
if (typeNames != null) {
Would this be an option to get checked in? Or is there a better way to deal with it?
|