From: <jes...@us...> - 2009-10-01 18:07:50
|
Revision: 5300 http://geonetwork.svn.sourceforge.net/geonetwork/?rev=5300&view=rev Author: jesseeichar Date: 2009-10-01 18:07:39 +0000 (Thu, 01 Oct 2009) Log Message: ----------- added some debug checks that will warn of concurrent uses Modified Paths: -------------- sandbox/geocat.ch/trunk/src/org/fao/geonet/kernel/DataManager.java Modified: sandbox/geocat.ch/trunk/src/org/fao/geonet/kernel/DataManager.java =================================================================== --- sandbox/geocat.ch/trunk/src/org/fao/geonet/kernel/DataManager.java 2009-10-01 17:49:56 UTC (rev 5299) +++ sandbox/geocat.ch/trunk/src/org/fao/geonet/kernel/DataManager.java 2009-10-01 18:07:39 UTC (rev 5300) @@ -90,11 +90,23 @@ // --- // -------------------------------------------------------------------------- + /** + * True after init has been called once. + */ private boolean running; + /** - * initializes the search manager and index not-indexed metadata - */ - + * This is for debugging. It is true when init is running and false otherwise + * + * init checks to make sure that init is not called in parallel if it is we have a bug + */ + private boolean initializing; + /** + * This is for debugging. It is true when indexMetadata is running and false otherwise + * + * indexMetadata checks to make sure that indexMetadata is not called in parallel if it is we have a bug + */ + private boolean indexing; public DataManager(SearchManager sm, AccessManager am, Dbms dbms, SettingManager ss, ReusableObjManager rom, ExtentManager extentMan, ThesaurusManager thesaurusMan, String baseURL, String htmlCacheDir) throws Exception { @@ -111,6 +123,9 @@ } + /** + * initializes the search manager and index not-indexed metadata + */ /* * Init Data manager and refresh index if needed. Could be called after * GeoNetwork startup in order to rebuild the lucene index @@ -122,6 +137,13 @@ public void init(Dbms dbms, Boolean force) throws Exception { + synchronized (this) { + if(initializing) { + Log.error(Geonet.DATA_MANAGER, "Multiple parrallel calls to initialize"); + } + initializing = true; + } + // get all metadata from DB Element result = dbms.select("SELECT id, changeDate FROM Metadata ORDER BY id ASC"); List list = result.getChildren(); @@ -181,6 +203,9 @@ } running=true; + synchronized (this) { + initializing = false; + } } // -------------------------------------------------------------------------- @@ -220,6 +245,14 @@ private void indexMetadataI(Dbms dbms, String id, SearchManager sm, Element md) throws SQLException, Exception { + + synchronized (this) { + if(indexing) { + Log.error(Geonet.DATA_MANAGER, "Multiple parrallel calls to indexMetadataI"); + } + indexing = true; + } + Vector<Element> moreFields = new Vector<Element>(); String root = md.getName(); @@ -406,6 +439,11 @@ } sm.index(schema, md, id, moreFields, isTemplate, title); + + synchronized (this) { + indexing = false; + } + } // -------------------------------------------------------------------------- This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |