Hey all, I've identified a nasty concurrency issue in the arcsde DataStore. I'm attaching a patch, but it's basically a one-liner.
A brief explanation: Every SDE "stream" object (query, update, etc.) is based on an SDE connection, and if more than one "stream" object (SeStreamOp derived class) is constructed with the same underlying connection object, and then they're both pushed to do anything with the underlying connection (for an SeQuery, that'd be "execute()", for an SeUpdate that'd be "update()", etc.) bad things will happen. Generally the underlying connection object just locks up, causing the map being rendered to simply hang. I think there's a logical error in the ArcSDEQuery class, in the getSeQuery() method. The finally block at the end releases the connection that was just used to create the SeQuery object, and then returns the SeQuery object to the calling method. Presumably the calling method then uses the SeQuery.execute() method, and the underlying connection will likely then be re-handed out and re-used...causing a deadlock. I've commented out the releaseConnection() call. What should I do to file this as an official bug and patch? --saul ------------------------------------------------------- SF.Net email is sponsored by: Tame your development challenges with Apache's Geronimo App Server. Download it for free - -and be entered to win a 42" plasma tv or your very own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php _______________________________________________ Geotools-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/geotools-devel
