New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Intermittent failure in GeoWaveBasicIT (0.9.0-RC1) #564
Comments
Additional information: Subsequent executions of this integration test reveal erratic behavior. I have observed a mix of:
For example, for the spatial-query-with-box-filter, the failure case differs from the success case in that only the following result from the success case is missing from the failure case. All other results match one to one. This exact feature is always the missing feature for the spatial-query-with-box-filter failure case, however sometimes this case passes without issue. featureId:
geometry:
|
I think this is caused by the use of Guava's Interner in SpatialQueryFilter.java, which is causing the JTS geometry 'intersects' method to return invalid values occasionally. When a query is distributed by accumulo client to each TabletServer, multiple separate scans are initiated (I'm assuming for multiple ranges, but my accumulo experience is limited). In the case of this integration test, 8 queries are sent to each tablet server for a total of 16. These queries are executed in separate threads simultaneously. Each thread creates a spatial query filter, which is deserialized from the package sent from the client (via DistributableFilterList). The 'fromBinary()' method uses the Interner to save memory and performance by only creating the prepared geometry once, and sharing that object across threads. Unfortunately, though, it appears that PreparedGeometry is not threadsafe. I created a sample test that sets up the same general circumstances as provided in SpatialQueryFilter and ran it with four threads. I received a failure rate of about 1 in every 5.14 calls to the intersects method, which is roughly the failure rate I experienced when debugging this issue manually. The test is attached. |
Can you try ThreadLocal instead of the intern? On Wed, Jan 20, 2016 at 5:05 PM, datasedai notifications@github.com wrote:
|
Fixed in 0.9.0 |
Travis Build: https://travis-ci.org/ngageoint/geowave/jobs/101144205
Raw Output: https://s3.amazonaws.com/archive.travis-ci.org/jobs/101144205/log.txt
The text was updated successfully, but these errors were encountered: