IndexedShapefileDatastore doesn't play nice with read-only Shapefiles
---------------------------------------------------------------------
Key: GEOT-3245
URL: http://jira.codehaus.org/browse/GEOT-3245
Project: GeoTools
Issue Type: Bug
Components: data shapefile
Affects Versions: 2.7-M2, 2.6.5
Reporter: Stefan Alfons Tzeggai
Assignee: Andrea Aime
Fix For: 2.6.6, 2.7-M3
Attachments: preventIndexShapefileDStoCreateWhenReadonly.patch,
removeLocksWhenExceptionHappenedInStorageFile.patch
When using IndexedShapefileDatastor on a Shapefile that is read-only and
doesn't have a .fix index file, this is that happens:
1. there is no exception thrown
2. access to that Shapefile doesn't work cleanly (in other works, AtlasStyler
hangs shortly after when tryin to paint the layer)
3. Subsequent tests in IndexedShapefileDataStoreTest (if executed after the
read-only access) log severe messages about a lock not being correctly removed.
SCHWERWIEGEND: The following locker still has a lock write on
file:.../geotools/2.6.x/modules/plugin/shapefile/target/test-classes/org/geotools/data/shapefile/test-
data/shapes/statepop.shp by StorageFile: statepop5902879307908035242.fix
it was created with the following stack trace
org.geotools.data.shapefile.ShpFilesLocker$Trace: Locking
file:....geotools/2.6.x/modules/plugin/shapefile/target/test-classes/org/geotools/data/shapefile/test-data/shapes/statepop.shp
for write by StorageFile: statepop5902879307908035242.fix in thread main
at
org.geotools.data.shapefile.ShpFilesLocker.setTraceException(ShpFilesLocker.java:72)
at
org.geotools.data.shapefile.ShpFilesLocker.<init>(ShpFilesLocker.java:56)
at org.geotools.data.shapefile.ShpFiles.acquireWrite(ShpFiles.java:509)
at
org.geotools.data.shapefile.StorageFile.replaceOriginals(StorageFile.java:97)
at
org.geotools.data.shapefile.StorageFile.replaceOriginal(StorageFile.java:73)
at
org.geotools.data.shapefile.indexed.FidIndexer.generate(FidIndexer.java:74)
at
org.geotools.data.shapefile.indexed.IndexedShapefileDataStore.generateFidIndex(IndexedShapefileDataStore.java:385)
at
org.geotools.data.shapefile.indexed.IndexedShapefileDataStore.<init>(IndexedShapefileDataStore.java:204)
at
org.geotools.data.shapefile.indexed.IndexedShapefileDataStore.<init>(IndexedShapefileDataStore.java:170)
Now I have two patches: The first one prevents the IndexedShapefileDatastore to
try and create a .fix if it doesn't have write access. (Similar to the checks
already performed that the URL to the Shapefile is "file://" and not "http://").
The second patch is probably (and no junit test comes with it) a fix to the
problem, that the lock has not been removed after the permission-denied
exception is thrown.
Please review and give your opinions. The first "preventive" patch is longer
but I understand what's happening there. With the second patch I am not 100%
sure what is going on there.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://jira.codehaus.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
------------------------------------------------------------------------------
This SF.net email is sponsored by
Make an app they can't live without
Enter the BlackBerry Developer Challenge
http://p.sf.net/sfu/RIM-dev2dev
_______________________________________________
Geotools-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geotools-devel