Author: jflesch
Date: 2007-03-19 18:23:05 +0000 (Mon, 19 Mar 2007)
New Revision: 12221

Modified:
   trunk/apps/Thaw/src/thaw/core/FreenetURIHelper.java
   trunk/apps/Thaw/src/thaw/plugins/index/DatabaseManager.java
   trunk/apps/Thaw/src/thaw/plugins/index/Index.java
   trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java
Log:
Set lock on the database when parsing an index + improve support of non-USK 
indexes

Modified: trunk/apps/Thaw/src/thaw/core/FreenetURIHelper.java
===================================================================
--- trunk/apps/Thaw/src/thaw/core/FreenetURIHelper.java 2007-03-19 17:23:35 UTC 
(rev 12220)
+++ trunk/apps/Thaw/src/thaw/core/FreenetURIHelper.java 2007-03-19 18:23:05 UTC 
(rev 12221)
@@ -248,7 +248,7 @@
                try {
                        return Integer.parseInt(split[2]);
                } catch(NumberFormatException e) {
-                       Logger.error(new FreenetURIHelper(), "Unable to parse 
'"+key +"'");
+                       Logger.warning(new FreenetURIHelper(), "Unable to parse 
'"+key +"'");
                        return -1;
                }
        }

Modified: trunk/apps/Thaw/src/thaw/plugins/index/DatabaseManager.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/index/DatabaseManager.java 2007-03-19 
17:23:35 UTC (rev 12220)
+++ trunk/apps/Thaw/src/thaw/plugins/index/DatabaseManager.java 2007-03-19 
18:23:05 UTC (rev 12221)
@@ -585,19 +585,22 @@

                DatabaseHandler handler = new DatabaseHandler(indexBrowser);

-               try {
-                       // Use the default (non-validating) parser
-                       SAXParserFactory factory = 
SAXParserFactory.newInstance();
+               /* and remember kids, always lock the database before parsing 
an index ! */
+               synchronized(indexBrowser.getDb().dbLock) {
+                       try {
+                               // Use the default (non-validating) parser
+                               SAXParserFactory factory = 
SAXParserFactory.newInstance();

-                       // Parse the input
-                       SAXParser saxParser = factory.newSAXParser();
-                       saxParser.parse(input, handler);
-               } catch(javax.xml.parsers.ParserConfigurationException e) {
-                       Logger.error(new DatabaseManager(), "Error (1) while 
importing database : "+e.toString());
-               } catch(org.xml.sax.SAXException e) {
-                       Logger.error(new DatabaseManager(), "Error (2) while 
importing database : "+e.toString());
-               } catch(java.io.IOException e) {
-                       Logger.error(new DatabaseManager(), "Error (3) while 
importing database : "+e.toString());
+                               // Parse the input
+                               SAXParser saxParser = factory.newSAXParser();
+                               saxParser.parse(input, handler);
+                       } catch(javax.xml.parsers.ParserConfigurationException 
e) {
+                               Logger.error(new DatabaseManager(), "Error (1) 
while importing database : "+e.toString());
+                       } catch(org.xml.sax.SAXException e) {
+                               Logger.error(new DatabaseManager(), "Error (2) 
while importing database : "+e.toString());
+                       } catch(java.io.IOException e) {
+                               Logger.error(new DatabaseManager(), "Error (3) 
while importing database : "+e.toString());
+                       }
                }



Modified: trunk/apps/Thaw/src/thaw/plugins/index/Index.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/index/Index.java   2007-03-19 17:23:35 UTC 
(rev 12220)
+++ trunk/apps/Thaw/src/thaw/plugins/index/Index.java   2007-03-19 18:23:05 UTC 
(rev 12221)
@@ -537,7 +537,7 @@
                }

                if (withRev) {
-                       if (rev > 0 || privateKey == null)
+                       if (rev > 0 || (rev == 0 && privateKey == null))
                                return displayName + " 
(r"+Integer.toString(rev)+")";
                        else {
                                if (rev > 0)
@@ -723,6 +723,9 @@
                        rewriteKey = true;
                }

+               if (rev < 0)
+                       rewriteKey = false;
+
                Logger.info(this, "Updating index ...");
                Logger.debug(this, "Key asked: "+key);

@@ -1231,6 +1234,7 @@
                                }

                                return;
+
                        }

                        /* ignore unknown tags */
@@ -1310,19 +1314,21 @@
        public synchronized void loadXML(final java.io.InputStream input, 
boolean clean) {
                IndexHandler handler = new IndexHandler();

-               try {
-                       // Use the default (non-validating) parser
-                       SAXParserFactory factory = 
SAXParserFactory.newInstance();
+               synchronized(db.dbLock) {
+                       try {
+                               // Use the default (non-validating) parser
+                               SAXParserFactory factory = 
SAXParserFactory.newInstance();

-                       // Parse the input
-                       SAXParser saxParser = factory.newSAXParser();
-                       saxParser.parse(input, handler );
-               } catch(javax.xml.parsers.ParserConfigurationException e) {
-                       Logger.error(this, "Error (1) while parsing index: 
"+e.toString());
-               } catch(org.xml.sax.SAXException e) {
-                       Logger.error(this, "Error (2) while parsing index: 
"+e.toString());
-               } catch(java.io.IOException e) {
-                       Logger.error(this, "Error (3) while parsing index: 
"+e.toString());
+                               // Parse the input
+                               SAXParser saxParser = factory.newSAXParser();
+                               saxParser.parse(input, handler );
+                       } catch(javax.xml.parsers.ParserConfigurationException 
e) {
+                               Logger.error(this, "Error (1) while parsing 
index: "+e.toString());
+                       } catch(org.xml.sax.SAXException e) {
+                               Logger.error(this, "Error (2) while parsing 
index: "+e.toString());
+                       } catch(java.io.IOException e) {
+                               Logger.error(this, "Error (3) while parsing 
index: "+e.toString());
+                       }
                }
        }


Modified: trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java
===================================================================
--- trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java   
2007-03-19 17:23:35 UTC (rev 12220)
+++ trunk/apps/Thaw/src/thaw/plugins/index/IndexManagementHelper.java   
2007-03-19 18:23:05 UTC (rev 12221)
@@ -550,9 +550,6 @@

                int revision = FreenetURIHelper.getUSKRevision(publicKey);

-               if (revision < 0)
-                       return null;
-
                Hsqldb db = indexBrowser.getDb();

                Index index = null;


Reply via email to