Hi, I've just landed on trunk the configuration/catalog locking code we discussedlast week. As anticipated it uses a rest callback and a new wicket callback with readwrite locks to prevent concurrency issues, and it can be disabled by raisinga system variable.I've added a test that does concurrent manipulations over different featuretypes via rest, each thread adds a feature type, checks it's there, reloads the catalog, deletes it again, with each thread working against a separatefeature type. Before the locking code it bombed out, now it works fine. Rest wise the write lock is taken for all attempts to make modifications(post, delete, put) while a read lock is taken otherwise,Wicket wise I've made it so that admin reserved pages take a write lockwhile other pages take a read lock. The latter allowed me to use the GUI without problems with a backgroundloop on the shell making rest reload the catalog in a continuous way(a rest request after the other, that is). The current test support does not play so well with concurrent requests,as instantiating a new DispatcherServlet for each test results in concurrentspring config reloads (not sure why...) so I've made a small modificationto the test framework that allows selected tests to build their own dispatcherservlet, and in particular the one that does concurrent requests buildsone and caches it.I wanted to do this for all tests but it seems to be breaking some othertests (WPS ones) in a way I could not understand, so I left it optional. If anyone wants to have a look the relevant bits are listed here:- the global locker: http://svn.codehaus.org/geoserver/trunk/src/main/src/main/java/org/geoserver/GeoServerConfigurationLock.java- the rest dispatch callback doing the locks: http://svn.codehaus.org/geoserver/trunk/src/restconfig/src/main/java/org/geoserver/rest/RestConfigurationLockCallback.java- the new wicket callback exposing Wicket request life cycle details: http://svn.codehaus.org/geoserver/trunk/src/web/core/src/main/java/org/geoserver/web/WicketCallback.java- the implementation doing locks: http://svn.codehaus.org/geoserver/trunk/src/web/core/src/main/java/org/geoserver/web/WicketConfigurationLockCallback.java It seems to be all safe changes so I'd like to backport on 2.1.x,but I'd appreciated if some other core developer could have a look CheersAndrea
-- ------------------------------------------------------- Ing. Andrea Aime GeoSolutions S.A.S. Tech lead Via Poggio alle Viti 1187 55054 Massarosa (LU) Italy phone: +39 0584 962313 fax: +39 0584 962313 http://www.geo-solutions.it http://geo-solutions.blogspot.com/ http://www.youtube.com/user/GeoSolutionsIT http://www.linkedin.com/in/andreaaime http://twitter.com/geowolf ------------------------------------------------------- ------------------------------------------------------------------------------ All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity, and more. Splunk takes this data and makes sense of it. IT sense. And common sense. http://p.sf.net/sfu/splunk-novd2d _______________________________________________ Geoserver-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/geoserver-devel
