Hi all

the problem was in incorrect access to getting primary keys.

In OracleDialect class there is predefined sequence name 'tablename_fieldname_S' - and I had different setting in my database, FeatureStore was ignoring the sequence and getting max(id) from database. And it get locked.

I've fixed sequence name and now it is OK - but would be nice (for future users) if such a requirement for sequence name be published somehow. Or maybe I've missed a documentation?

regards

Lukasz


Cytowanie Jody Garnett <jody.garn...@gmail.com>:

Well first up - you may have found a bug (which we would need to report to GeoTools). The version of oracle datastore we are using here has only been added to uDig recently (although it has been in GeoServer for a long time).

It sounds like you have the correct setup; one thing I want to check though before we report a bug.

The Map holds on to a transaction, and tries to make sure that all user interaction on the map happens using the same transaction; and all changes happen using the same transaction.

This is done so that the "commit" and "revert" buttons in the toolbar apply to both edits made with the tools; and any edits made by larger java operations.

So if you can just confirm for me that you are using FeatureStore directly; and not as part of a uDig map; I can ask you to go ahead and report a bug here: https://jira.codehaus.org/browse/GEOT/component/10483

Jody

On 21/09/2010, at 11:29 PM, Lukasz Stawicki wrote:

I have multithreaded application and got in triuble with uDig 1.2 / Oracle

Two threads start to insert data to same Oracle table. I get FeatureStore, for each thread I set new transaction. I debugged it under Eclipse - i get two distinct objects for FeatureStore, two distinct transactions, and one (same) instance of org.geotools.jdbc.JDBCDataStore class.

It gets locked on insert method

protected void insert(Collection features, SimpleFeatureType featureType, Connection cx) / starting at line 1218

First thread waits on 1223 :  synchronized (this) {
- this is perfectly OK for me.

The second hungs in 1249 : ps.execute();
- is performing some internal socket read.

I tried this multiple times and always got the same problem. I checked in Oracle : select * from V$TRANSACTION gives me 2 transactions open.

So why two different transactions gets locked?? Is there any glitch in uDig pooling access to database? Or maybe there is one special way to start two autonomous transactions?

Can anybody help?

regards

Lukasz


_______________________________________________
User-friendly Desktop Internet GIS (uDig)
http://udig.refractions.net
http://lists.refractions.net/mailman/listinfo/udig-devel





_______________________________________________
User-friendly Desktop Internet GIS (uDig)
http://udig.refractions.net
http://lists.refractions.net/mailman/listinfo/udig-devel

Reply via email to