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;