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