You are viewing a plain text version of this content. The canonical link for it is here.
Posted to solr-commits@lucene.apache.org by sh...@apache.org on 2009/02/11 12:01:44 UTC
svn commit: r743299 - in /lucene/solr/trunk/contrib/dataimporthandler: ./
src/main/java/org/apache/solr/handler/dataimport/
Author: shalin
Date: Wed Feb 11 11:01:44 2009
New Revision: 743299
URL: http://svn.apache.org/viewvc?rev=743299&view=rev
Log:
SOLR-1017 -- Fix thread-safety issue with last_index_time for concurrent imports in multiple cores due to unsafe usage of SimpleDateFormat by multiple threads.
Modified:
lucene/solr/trunk/contrib/dataimporthandler/CHANGES.txt
lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java
lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DocBuilder.java
lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/EvaluatorBag.java
lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/FileListEntityProcessor.java
lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/SolrWriter.java
lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/TemplateString.java
Modified: lucene/solr/trunk/contrib/dataimporthandler/CHANGES.txt
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/contrib/dataimporthandler/CHANGES.txt?rev=743299&r1=743298&r2=743299&view=diff
==============================================================================
--- lucene/solr/trunk/contrib/dataimporthandler/CHANGES.txt (original)
+++ lucene/solr/trunk/contrib/dataimporthandler/CHANGES.txt Wed Feb 11 11:01:44 2009
@@ -125,6 +125,10 @@
16.SOLR-1009: Repeated column names result in duplicate values.
(Fergus McMenemie, Noble Paul via shalin)
+17.SOLR-1017: Fix thread-safety issue with last_index_time for concurrent imports in multiple cores due to unsafe usage
+ of SimpleDateFormat by multiple threads.
+ (Ryuuichi Kumai via shalin)
+
Documentation
----------------------
Modified: lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java?rev=743299&r1=743298&r2=743299&view=diff
==============================================================================
--- lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java (original)
+++ lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DataImporter.java Wed Feb 11 11:01:44 2009
@@ -414,8 +414,12 @@
}
};
- static final SimpleDateFormat DATE_TIME_FORMAT = new SimpleDateFormat(
- "yyyy-MM-dd HH:mm:ss");
+ static final ThreadLocal<SimpleDateFormat> DATE_TIME_FORMAT = new ThreadLocal<SimpleDateFormat>() {
+ @Override
+ protected SimpleDateFormat initialValue() {
+ return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ }
+ };
static final class MSG {
public static final String NO_CONFIG_FOUND = "Configuration not found";
Modified: lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DocBuilder.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DocBuilder.java?rev=743299&r1=743298&r2=743299&view=diff
==============================================================================
--- lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DocBuilder.java (original)
+++ lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/DocBuilder.java Wed Feb 11 11:01:44 2009
@@ -76,8 +76,8 @@
VariableResolverImpl resolver = new VariableResolverImpl();
Map<String, Object> indexerNamespace = new HashMap<String, Object>();
if (dataImporter.getLastIndexTime() != null)
- indexerNamespace.put(LAST_INDEX_TIME, DataImporter.DATE_TIME_FORMAT
- .format(dataImporter.getLastIndexTime()));
+ indexerNamespace.put(LAST_INDEX_TIME,
+ DataImporter.DATE_TIME_FORMAT.get().format(dataImporter.getLastIndexTime()));
indexerNamespace.put(INDEX_START_TIME, dataImporter.getIndexStartTime());
indexerNamespace.put("request", requestParameters.requestParams);
indexerNamespace.put("functions", EvaluatorBag.getFunctionsNamespace(resolver,
@@ -165,7 +165,7 @@
if (stop.get()) {
if (DataImporter.ABORT_CMD.equals(requestParameters.command)) {
// Dont commit if aborted using command=abort
- statusMessages.put("Aborted", DataImporter.DATE_TIME_FORMAT.format(new Date()));
+ statusMessages.put("Aborted", DataImporter.DATE_TIME_FORMAT.get().format(new Date()));
rollback();
} else if (requestParameters.commit) {
// Debug mode, commit if commit=true was specified
@@ -277,7 +277,7 @@
@SuppressWarnings("unchecked")
public void addStatusMessage(String msg) {
- statusMessages.put(msg, DataImporter.DATE_TIME_FORMAT.format(new Date()));
+ statusMessages.put(msg, DataImporter.DATE_TIME_FORMAT.get().format(new Date()));
}
@SuppressWarnings("unchecked")
Modified: lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/EvaluatorBag.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/EvaluatorBag.java?rev=743299&r1=743298&r2=743299&view=diff
==============================================================================
--- lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/EvaluatorBag.java (original)
+++ lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/EvaluatorBag.java Wed Feb 11 11:01:44 2009
@@ -155,7 +155,7 @@
} else {
String s = o.toString();
try {
- date = DataImporter.DATE_TIME_FORMAT.parse(s);
+ date = DataImporter.DATE_TIME_FORMAT.get().parse(s);
} catch (ParseException exp) {
throw new DataImportHandlerException(
DataImportHandlerException.SEVERE,
Modified: lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/FileListEntityProcessor.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/FileListEntityProcessor.java?rev=743299&r1=743298&r2=743299&view=diff
==============================================================================
--- lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/FileListEntityProcessor.java (original)
+++ lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/FileListEntityProcessor.java Wed Feb 11 11:01:44 2009
@@ -111,7 +111,7 @@
}
}
try {
- return DataImporter.DATE_TIME_FORMAT.parse(dateStr);
+ return DataImporter.DATE_TIME_FORMAT.get().parse(dateStr);
} catch (ParseException exp) {
throw new DataImportHandlerException(DataImportHandlerException.SEVERE,
"Invalid expression for date", exp);
Modified: lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/SolrWriter.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/SolrWriter.java?rev=743299&r1=743298&r2=743299&view=diff
==============================================================================
--- lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/SolrWriter.java (original)
+++ lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/SolrWriter.java Wed Feb 11 11:01:44 2009
@@ -98,7 +98,7 @@
try {
if (result != null)
- return DataImporter.DATE_TIME_FORMAT.parse(result);
+ return DataImporter.DATE_TIME_FORMAT.get().parse(result);
} catch (ParseException e) {
throw new DataImportHandlerException(DataImportHandlerException.WARN,
"Unable to read last indexed time from: "
@@ -113,8 +113,8 @@
Properties props = readIndexerProperties();
try {
- props.put(SolrWriter.LAST_INDEX_KEY, DataImporter.DATE_TIME_FORMAT
- .format(date));
+ props.put(SolrWriter.LAST_INDEX_KEY,
+ DataImporter.DATE_TIME_FORMAT.get().format(date));
String filePath = configDir;
if (configDir != null && !configDir.endsWith(File.separator))
filePath += File.separator;
Modified: lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/TemplateString.java
URL: http://svn.apache.org/viewvc/lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/TemplateString.java?rev=743299&r1=743298&r2=743299&view=diff
==============================================================================
--- lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/TemplateString.java (original)
+++ lucene/solr/trunk/contrib/dataimporthandler/src/main/java/org/apache/solr/handler/dataimport/TemplateString.java Wed Feb 11 11:01:44 2009
@@ -100,7 +100,7 @@
private String getObjectAsString(Object val) {
if (val instanceof java.sql.Date) {
java.sql.Date d = (java.sql.Date) val;
- return DataImporter.DATE_TIME_FORMAT.format(d);
+ return DataImporter.DATE_TIME_FORMAT.get().format(d);
}
return val.toString();
}