You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by mi...@apache.org on 2012/07/19 17:59:32 UTC
svn commit: r1363400 [25/31] - in /lucene/dev/branches/pforcodec_3892: ./
dev-tools/ dev-tools/eclipse/ dev-tools/idea/.idea/
dev-tools/idea/.idea/copyright/ dev-tools/idea/.idea/libraries/
dev-tools/idea/lucene/ dev-tools/maven/ dev-tools/maven/lucene...
Modified: lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/SnapPuller.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/SnapPuller.java?rev=1363400&r1=1363399&r2=1363400&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/SnapPuller.java (original)
+++ lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/SnapPuller.java Thu Jul 19 15:58:54 2012
@@ -17,23 +17,23 @@
package org.apache.solr.handler;
import org.apache.commons.io.IOUtils;
-import org.apache.http.Header;
-import org.apache.http.HttpResponse;
-import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
-import org.apache.http.client.entity.UrlEncodedFormEntity;
-import org.apache.http.client.methods.HttpPost;
-import org.apache.http.message.AbstractHttpMessage;
-import org.apache.http.message.BasicNameValuePair;
import org.apache.lucene.index.IndexCommit;
+import org.apache.lucene.index.IndexWriter;
+import org.apache.lucene.store.Directory;
+import org.apache.solr.client.solrj.SolrServer;
+import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpClientUtil;
+import org.apache.solr.client.solrj.impl.HttpSolrServer;
+import org.apache.solr.client.solrj.request.QueryRequest;
import org.apache.solr.common.SolrException;
+import org.apache.solr.common.params.CommonParams;
import org.apache.solr.common.params.ModifiableSolrParams;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.FastInputStream;
import org.apache.solr.util.FileUtils;
-import org.apache.solr.common.util.JavaBinCodec;
import org.apache.solr.common.util.NamedList;
+import org.apache.solr.core.CachingDirectoryFactory.CloseListener;
import org.apache.solr.core.SolrCore;
import org.apache.solr.core.IndexDeletionPolicyWrapper;
import static org.apache.solr.handler.ReplicationHandler.*;
@@ -57,7 +57,6 @@ import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.zip.Adler32;
import java.util.zip.Checksum;
-import java.util.zip.GZIPInputStream;
import java.util.zip.InflaterInputStream;
/**
@@ -116,13 +115,14 @@ public class SnapPuller {
// HttpClient for this instance if connectionTimeout or readTimeout has been specified
private final HttpClient myHttpClient;
- private static synchronized HttpClient createHttpClient(String connTimeout, String readTimeout, String httpBasicAuthUser, String httpBasicAuthPassword) {
+ private static synchronized HttpClient createHttpClient(String connTimeout, String readTimeout, String httpBasicAuthUser, String httpBasicAuthPassword, boolean useCompression) {
if (connTimeout == null && readTimeout == null && client != null) return client;
final ModifiableSolrParams httpClientParams = new ModifiableSolrParams();
httpClientParams.set(HttpClientUtil.PROP_CONNECTION_TIMEOUT, connTimeout != null ? connTimeout : "5000");
httpClientParams.set(HttpClientUtil.PROP_SO_TIMEOUT, readTimeout != null ? readTimeout : "20000");
httpClientParams.set(HttpClientUtil.PROP_BASIC_AUTH_USER, httpBasicAuthUser);
httpClientParams.set(HttpClientUtil.PROP_BASIC_AUTH_PASS, httpBasicAuthPassword);
+ httpClientParams.set(HttpClientUtil.PROP_ALLOW_COMPRESSION, useCompression);
// Keeping a very high number so that if you have a large number of cores
// no requests are kept waiting for an idle connection.
httpClientParams.set(HttpClientUtil.PROP_MAX_CONNECTIONS, 10000);
@@ -132,13 +132,19 @@ public class SnapPuller {
return httpClient;
}
- public SnapPuller(NamedList initArgs, ReplicationHandler handler, SolrCore sc) {
+ public SnapPuller(final NamedList initArgs, final ReplicationHandler handler, final SolrCore sc) {
solrCore = sc;
- SolrParams params = SolrParams.toSolrParams(initArgs);
- masterUrl = (String) initArgs.get(MASTER_URL);
+ final SolrParams params = SolrParams.toSolrParams(initArgs);
+ String masterUrl = (String) initArgs.get(MASTER_URL);
if (masterUrl == null)
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,
"'masterUrl' is required for a slave");
+ if (masterUrl.endsWith("/replication")) {
+ masterUrl = masterUrl.substring(0, masterUrl.length()-12);
+ LOG.warn("'masterUrl' must be specified without the /replication suffix");
+ }
+ this.masterUrl = masterUrl;
+
this.replicationHandler = handler;
pollIntervalStr = (String) initArgs.get(POLL_INTERVAL);
pollInterval = readInterval(pollIntervalStr);
@@ -149,7 +155,7 @@ public class SnapPuller {
String readTimeout = (String) initArgs.get(HttpClientUtil.PROP_SO_TIMEOUT);
String httpBasicAuthUser = (String) initArgs.get(HttpClientUtil.PROP_BASIC_AUTH_USER);
String httpBasicAuthPassword = (String) initArgs.get(HttpClientUtil.PROP_BASIC_AUTH_PASS);
- myHttpClient = createHttpClient(connTimeout, readTimeout, httpBasicAuthUser, httpBasicAuthPassword);
+ myHttpClient = createHttpClient(connTimeout, readTimeout, httpBasicAuthUser, httpBasicAuthPassword, useExternal);
if (pollInterval != null && pollInterval > 0) {
startExecutorService();
} else {
@@ -183,95 +189,63 @@ public class SnapPuller {
*/
@SuppressWarnings("unchecked")
NamedList getLatestVersion() throws IOException {
- HttpPost post = new HttpPost(masterUrl);
- List<BasicNameValuePair> formparams = new ArrayList<BasicNameValuePair>();
- formparams.add(new BasicNameValuePair("wt", "javabin"));
- formparams.add(new BasicNameValuePair(COMMAND, CMD_INDEX_VERSION));
- UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formparams, "UTF-8");
- post.setEntity(entity);
- return getNamedListResponse(post);
- }
-
- NamedList getCommandResponse(NamedList<String> commands) throws IOException {
-
- HttpPost post = new HttpPost(masterUrl);
-
- List<BasicNameValuePair> formparams = new ArrayList<BasicNameValuePair>();
- formparams.add(new BasicNameValuePair("wt", "javabin"));
-
- for (Map.Entry<String, String> c : commands) {
- formparams.add(new BasicNameValuePair(c.getKey(), c.getValue()));
- }
- UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formparams, "UTF-8");
- post.setEntity(entity);
- return getNamedListResponse(post);
- }
-
- private NamedList<?> getNamedListResponse(HttpPost method) throws IOException {
- InputStream input = null;
- NamedList<?> result = null;
+ ModifiableSolrParams params = new ModifiableSolrParams();
+ params.set(COMMAND, CMD_INDEX_VERSION);
+ params.set(CommonParams.WT, "javabin");
+ params.set(CommonParams.QT, "/replication");
+ QueryRequest req = new QueryRequest(params);
+ SolrServer server = new HttpSolrServer(masterUrl, myHttpClient); //XXX modify to use shardhandler
try {
- HttpResponse response = myHttpClient.execute(method);
- int status = response.getStatusLine().getStatusCode();
- if (status != HttpStatus.SC_OK) {
- throw new SolrException(SolrException.ErrorCode.SERVICE_UNAVAILABLE,
- "Request failed for the url " + method);
- }
- input = response.getEntity().getContent();
- result = (NamedList<?>)new JavaBinCodec().unmarshal(input);
- } finally {
- try {
- if (input != null) {
- input.close();
- }
- } catch (Exception e) {
- }
+ return server.request(req);
+ } catch (SolrServerException e) {
+ throw new IOException(e);
}
- return result;
}
/**
- * Fetches the list of files in a given index commit point
+ * Fetches the list of files in a given index commit point and updates internal list of files to download.
*/
- void fetchFileList(long gen) throws IOException {
- HttpPost post = new HttpPost(masterUrl);
+ private void fetchFileList(long gen) throws IOException {
+ ModifiableSolrParams params = new ModifiableSolrParams();
+ params.set(COMMAND, CMD_GET_FILE_LIST);
+ params.set(GENERATION, String.valueOf(gen));
+ params.set(CommonParams.WT, "javabin");
+ params.set(CommonParams.QT, "/replication");
+ QueryRequest req = new QueryRequest(params);
+ SolrServer server = new HttpSolrServer(masterUrl, myHttpClient); //XXX modify to use shardhandler
+
+ try {
+ NamedList response = server.request(req);
- List<BasicNameValuePair> formparams = new ArrayList<BasicNameValuePair>();
- formparams.add(new BasicNameValuePair("wt", "javabin"));
- formparams.add(new BasicNameValuePair(COMMAND, CMD_GET_FILE_LIST));
- formparams.add(new BasicNameValuePair(GENERATION, String.valueOf(gen)));
-
- UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formparams, "UTF-8");
- post.setEntity(entity);
-
- @SuppressWarnings("unchecked")
- NamedList<List<Map<String, Object>>> nl
- = (NamedList<List<Map<String, Object>>>) getNamedListResponse(post);
-
- List<Map<String, Object>> f = nl.get(CMD_GET_FILE_LIST);
- if (f != null)
- filesToDownload = Collections.synchronizedList(f);
- else {
- filesToDownload = Collections.emptyList();
- LOG.error("No files to download for index generation: "+ gen);
- }
-
- f = nl.get(CONF_FILES);
- if (f != null)
- confFilesToDownload = Collections.synchronizedList(f);
+ List<Map<String, Object>> files = (List<Map<String,Object>>) response.get(CMD_GET_FILE_LIST);
+ if (files != null)
+ filesToDownload = Collections.synchronizedList(files);
+ else {
+ filesToDownload = Collections.emptyList();
+ LOG.error("No files to download for index generation: "+ gen);
+ }
+
+ files = (List<Map<String,Object>>) response.get(CONF_FILES);
+ if (files != null)
+ confFilesToDownload = Collections.synchronizedList(files);
+
+ } catch (SolrServerException e) {
+ throw new IOException(e);
+ }
}
+ private boolean successfulInstall = false;
+
/**
* This command downloads all the necessary files from master to install a index commit point. Only changed files are
* downloaded. It also downloads the conf files (if they are modified).
*
* @param core the SolrCore
+ * @param force force a replication in all cases
* @return true on success, false if slave is already in sync
* @throws IOException if an exception occurs
*/
@SuppressWarnings("unchecked")
- boolean successfulInstall = false;
-
boolean fetchLatestIndex(SolrCore core, boolean force) throws IOException, InterruptedException {
successfulInstall = false;
replicationStartTime = System.currentTimeMillis();
@@ -305,7 +279,12 @@ public class SnapPuller {
if (force && commit.getGeneration() != 0) {
// since we won't get the files for an empty index,
// we just clear ours and commit
- core.getUpdateHandler().getSolrCoreState().getIndexWriter(core).deleteAll();
+ RefCounted<IndexWriter> iw = core.getUpdateHandler().getSolrCoreState().getIndexWriter(core);
+ try {
+ iw.get().deleteAll();
+ } finally {
+ iw.decref();
+ }
SolrQueryRequest req = new LocalSolrQueryRequest(core,
new ModifiableSolrParams());
core.getUpdateHandler().commit(new CommitUpdateCommand(req, false));
@@ -344,9 +323,10 @@ public class SnapPuller {
LOG.info("Starting download to " + tmpIndexDir + " fullCopy=" + isFullCopyNeeded);
successfulInstall = false;
boolean deleteTmpIdxDir = true;
- File indexDir = null ;
+
+ final File indexDir = new File(core.getIndexDir());
+ Directory oldDirectory = null;
try {
- indexDir = new File(core.getIndexDir());
downloadIndexFiles(isFullCopyNeeded, tmpIndexDir, latestGeneration);
LOG.info("Total time taken for download : " + ((System.currentTimeMillis() - replicationStartTime) / 1000) + " secs");
Collection<Map<String, Object>> modifiedConfFiles = getModifiedConfFiles(confFilesToDownload);
@@ -368,14 +348,42 @@ public class SnapPuller {
if (isFullCopyNeeded) {
successfulInstall = modifyIndexProps(tmpIndexDir.getName());
deleteTmpIdxDir = false;
+ RefCounted<IndexWriter> iw = core.getUpdateHandler().getSolrCoreState().getIndexWriter(core);
+ try {
+ oldDirectory = iw.get().getDirectory();
+ } finally {
+ iw.decref();
+ }
} else {
successfulInstall = copyIndexFiles(tmpIndexDir, indexDir);
}
if (successfulInstall) {
logReplicationTimeAndConfFiles(modifiedConfFiles, successfulInstall);
- doCommit();
}
}
+
+ if (isFullCopyNeeded) {
+ // we have to do this before commit
+ core.getDirectoryFactory().addCloseListener(oldDirectory, new CloseListener(){
+
+ @Override
+ public void onClose() {
+ LOG.info("removing old index directory " + indexDir);
+ delTree(indexDir);
+ }
+
+ });
+ }
+
+ if (successfulInstall) {
+ if (isFullCopyNeeded) {
+ // let the system know we are changing dir's and the old one
+ // may be closed
+ core.getDirectoryFactory().doneWithDirectory(oldDirectory);
+ }
+ doCommit();
+ }
+
replicationStartTime = 0;
return successfulInstall;
} catch (ReplicationHandlerException e) {
@@ -391,10 +399,7 @@ public class SnapPuller {
if (deleteTmpIdxDir) {
LOG.info("removing temporary index download directory " + tmpIndexDir);
delTree(tmpIndexDir);
- } else {
- LOG.info("removing old index directory " + indexDir);
- delTree(indexDir);
- }
+ }
}
} finally {
if (!successfulInstall) {
@@ -559,7 +564,7 @@ public class SnapPuller {
* All the files are copied to a temp dir first
*/
private File createTempindexDir(SolrCore core) {
- String tmpIdxDirName = "index." + new SimpleDateFormat(SnapShooter.DATE_FMT, Locale.US).format(new Date());
+ String tmpIdxDirName = "index." + new SimpleDateFormat(SnapShooter.DATE_FMT, Locale.ROOT).format(new Date());
File tmpIdxDir = new File(core.getDataDir(), tmpIdxDirName);
tmpIdxDir.mkdirs();
return tmpIdxDir;
@@ -693,7 +698,7 @@ public class SnapPuller {
/**
* Copy all index files from the temp index dir to the actual index. The segments_N file is copied last.
*/
- private boolean copyIndexFiles(File tmpIdxDir, File indexDir) throws IOException {
+ private boolean copyIndexFiles(File tmpIdxDir, File indexDir) {
String segmentsFile = null;
List<String> copiedfiles = new ArrayList<String>();
for (Map<String, Object> f : filesDownloaded) {
@@ -720,7 +725,7 @@ public class SnapPuller {
/**
* The conf files are copied to the tmp dir to the conf dir. A backup of the old file is maintained
*/
- private void copyTmpConfFiles2Conf(File tmpconfDir) throws IOException {
+ private void copyTmpConfFiles2Conf(File tmpconfDir) {
File confDir = new File(solrCore.getResourceLoader().getConfigDir());
for (File file : tmpconfDir.listFiles()) {
File oldFile = new File(confDir, file.getName());
@@ -742,7 +747,7 @@ public class SnapPuller {
}
private String getDateAsStr(Date d) {
- return new SimpleDateFormat(SnapShooter.DATE_FMT, Locale.US).format(d);
+ return new SimpleDateFormat(SnapShooter.DATE_FMT, Locale.ROOT).format(d);
}
/**
@@ -953,8 +958,6 @@ public class SnapPuller {
private boolean isConf;
- private HttpPost post;
-
private boolean aborted = false;
private Long indexGen;
@@ -1130,79 +1133,62 @@ public class SnapPuller {
* Open a new stream using HttpClient
*/
FastInputStream getStream() throws IOException {
- post = new HttpPost(masterUrl);
- //the method is command=filecontent
-
- List<BasicNameValuePair> formparams = new ArrayList<BasicNameValuePair>();
-
- formparams.add(new BasicNameValuePair(COMMAND, CMD_GET_FILE));
+ SolrServer s = new HttpSolrServer(masterUrl, myHttpClient, null); //XXX use shardhandler
+ ModifiableSolrParams params = new ModifiableSolrParams();
+// //the method is command=filecontent
+ params.set(COMMAND, CMD_GET_FILE);
+ params.set(GENERATION, Long.toString(indexGen));
+ params.set(CommonParams.QT, "/replication");
//add the version to download. This is used to reserve the download
- formparams.add(new BasicNameValuePair(GENERATION, indexGen.toString()));
if (isConf) {
//set cf instead of file for config file
- formparams.add(new BasicNameValuePair(CONF_FILE_SHORT, fileName));
+ params.set(CONF_FILE_SHORT, fileName);
} else {
- formparams.add(new BasicNameValuePair(FILE, fileName));
+ params.set(FILE, fileName);
}
if (useInternal) {
- formparams.add(new BasicNameValuePair(COMPRESSION, "true"));
- }
- if (useExternal) {
- formparams.add(new BasicNameValuePair("Accept-Encoding", "gzip,deflate"));
+ params.set(COMPRESSION, "internal");
}
//use checksum
- if (this.includeChecksum)
- formparams.add(new BasicNameValuePair(CHECKSUM, "true"));
+ if (this.includeChecksum) {
+ params.set(CHECKSUM, true);
+ }
//wt=filestream this is a custom protocol
- formparams.add(new BasicNameValuePair("wt", FILE_STREAM));
- // This happen if there is a failure there is a retry. the offset=<sizedownloaded> ensures that
- // the server starts from the offset
+ params.set(CommonParams.WT, FILE_STREAM);
+ // This happen if there is a failure there is a retry. the offset=<sizedownloaded> ensures that
+ // the server starts from the offset
if (bytesDownloaded > 0) {
- formparams.add(new BasicNameValuePair(OFFSET, "" + bytesDownloaded));
+ params.set(OFFSET, Long.toString(bytesDownloaded));
}
- UrlEncodedFormEntity entity = new UrlEncodedFormEntity(formparams, "UTF-8");
- post.setEntity(entity);
- HttpResponse response = myHttpClient.execute(post);
- InputStream is = response.getEntity().getContent();
- //wrap it using FastInputStream
- if (useInternal) {
- is = new InflaterInputStream(is);
- } else if (useExternal) {
- is = checkCompressed(post, is);
- }
- return new FastInputStream(is);
- }
- }
-
- /*
- * This is copied from CommonsHttpSolrServer
- */
- private InputStream checkCompressed(AbstractHttpMessage method, InputStream respBody) throws IOException {
- Header contentEncodingHeader = method.getFirstHeader("Content-Encoding");
- if (contentEncodingHeader != null) {
- String contentEncoding = contentEncodingHeader.getValue();
- if (contentEncoding.contains("gzip")) {
- respBody = new GZIPInputStream(respBody);
- } else if (contentEncoding.contains("deflate")) {
- respBody = new InflaterInputStream(respBody);
- }
- } else {
- Header contentTypeHeader = method.getFirstHeader("Content-Type");
- if (contentTypeHeader != null) {
- String contentType = contentTypeHeader.getValue();
- if (contentType != null) {
- if (contentType.startsWith("application/x-gzip-compressed")) {
- respBody = new GZIPInputStream(respBody);
- } else if (contentType.startsWith("application/x-deflate")) {
- respBody = new InflaterInputStream(respBody);
- }
+ NamedList response;
+ InputStream is = null;
+ try {
+ QueryRequest req = new QueryRequest(params);
+ response = s.request(req);
+ is = (InputStream) response.get("stream");
+ if(useInternal) {
+ is = new InflaterInputStream(is);
}
+ return new FastInputStream(is);
+ } catch (Throwable t) {
+ //close stream on error
+ IOUtils.closeQuietly(is);
+ throw new IOException("Could not download file '" + fileName + "'", t);
}
}
- return respBody;
+ }
+
+ NamedList getDetails() throws IOException, SolrServerException {
+ ModifiableSolrParams params = new ModifiableSolrParams();
+ params.set(COMMAND, CMD_DETAILS);
+ params.set("slave", false);
+ params.set(CommonParams.QT, "/replication");
+ SolrServer server = new HttpSolrServer(masterUrl, myHttpClient); //XXX use shardhandler
+ QueryRequest request = new QueryRequest(params);
+ return server.request(request);
}
static Integer readInterval(String interval) {
Modified: lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/SnapShooter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/SnapShooter.java?rev=1363400&r1=1363399&r2=1363400&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/SnapShooter.java (original)
+++ lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/SnapShooter.java Thu Jul 19 15:58:54 2012
@@ -53,7 +53,7 @@ public class SnapShooter {
private SolrCore solrCore;
private SimpleFSLockFactory lockFactory;
- public SnapShooter(SolrCore core, String location) throws IOException {
+ public SnapShooter(SolrCore core, String location) {
solrCore = core;
if (location == null) snapDir = core.getDataDir();
else {
@@ -91,7 +91,7 @@ public class SnapShooter {
if(numberToKeep<Integer.MAX_VALUE) {
deleteOldBackups(numberToKeep);
}
- SimpleDateFormat fmt = new SimpleDateFormat(DATE_FMT, Locale.US);
+ SimpleDateFormat fmt = new SimpleDateFormat(DATE_FMT, Locale.ROOT);
directoryName = "snapshot." + fmt.format(new Date());
lock = lockFactory.makeLock(directoryName + ".lock");
if (lock.isLocked()) return;
@@ -151,7 +151,7 @@ public class SnapShooter {
if(m.find()) {
try {
this.dir = dir;
- this.timestamp = new SimpleDateFormat(DATE_FMT).parse(m.group(1));
+ this.timestamp = new SimpleDateFormat(DATE_FMT, Locale.ROOT).parse(m.group(1));
} catch(Exception e) {
this.dir = null;
this.timestamp = null;
Modified: lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java?rev=1363400&r1=1363399&r2=1363400&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java (original)
+++ lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java Thu Jul 19 15:58:54 2012
@@ -21,17 +21,13 @@ import java.io.File;
import java.io.IOException;
import java.util.Date;
import java.util.Iterator;
-import java.util.Map;
import java.util.Properties;
-import java.util.Set;
import org.apache.commons.io.FileUtils;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.store.Directory;
import org.apache.lucene.util.IOUtils;
-import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.cloud.CloudDescriptor;
-import org.apache.solr.cloud.ZkController;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.SolrException.ErrorCode;
import org.apache.solr.common.cloud.CloudState;
@@ -53,8 +49,6 @@ import org.apache.solr.core.SolrCore;
import org.apache.solr.handler.RequestHandlerBase;
import org.apache.solr.handler.component.ShardHandler;
import org.apache.solr.handler.component.ShardHandlerFactory;
-import org.apache.solr.handler.component.ShardRequest;
-import org.apache.solr.handler.component.ShardResponse;
import org.apache.solr.request.LocalSolrQueryRequest;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.response.SolrQueryResponse;
@@ -188,11 +182,6 @@ public class CoreAdminHandler extends Re
break;
}
- case DISTRIBURL: {
- this.handleDistribUrlAction(req, rsp);
- break;
- }
-
default: {
doPersist = this.handleCustomAction(req, rsp);
break;
@@ -461,58 +450,102 @@ public class CoreAdminHandler extends Re
* @return true if a modification has resulted that requires persistance
* of the CoreContainer configuration.
*/
- protected boolean handleUnloadAction(SolrQueryRequest req, SolrQueryResponse rsp) throws SolrException {
+ protected boolean handleUnloadAction(SolrQueryRequest req,
+ SolrQueryResponse rsp) throws SolrException {
SolrParams params = req.getParams();
String cname = params.get(CoreAdminParams.CORE);
SolrCore core = coreContainer.remove(cname);
- if(core == null){
- throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
- "No such core exists '" + cname + "'");
- } else {
- if (coreContainer.getZkController() != null) {
- log.info("Unregistering core " + cname + " from cloudstate.");
- try {
- coreContainer.getZkController().unregister(cname, core.getCoreDescriptor().getCloudDescriptor());
- } catch (InterruptedException e) {
- Thread.currentThread().interrupt();
- throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,
- "Could not unregister core " + cname + " from cloudstate: "
- + e.getMessage(), e);
- } catch (KeeperException e) {
- throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,
- "Could not unregister core " + cname + " from cloudstate: "
- + e.getMessage(), e);
+ try {
+ if (core == null) {
+ throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
+ "No such core exists '" + cname + "'");
+ } else {
+ if (coreContainer.getZkController() != null) {
+ log.info("Unregistering core " + core.getName() + " from cloudstate.");
+ try {
+ coreContainer.getZkController().unregister(cname,
+ core.getCoreDescriptor().getCloudDescriptor());
+ } catch (InterruptedException e) {
+ Thread.currentThread().interrupt();
+ throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,
+ "Could not unregister core " + cname + " from cloudstate: "
+ + e.getMessage(), e);
+ } catch (KeeperException e) {
+ throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,
+ "Could not unregister core " + cname + " from cloudstate: "
+ + e.getMessage(), e);
+ }
}
}
- }
- if (params.getBool(CoreAdminParams.DELETE_INDEX, false)) {
- core.addCloseHook(new CloseHook() {
- @Override
- public void preClose(SolrCore core) {}
-
- @Override
- public void postClose(SolrCore core) {
- File dataDir = new File(core.getIndexDir());
- File[] files = dataDir.listFiles();
- if (files != null) {
- for (File file : files) {
- if (!file.delete()) {
- log.error(file.getAbsolutePath()
- + " could not be deleted on core unload");
+ if (params.getBool(CoreAdminParams.DELETE_INDEX, false)) {
+ core.addCloseHook(new CloseHook() {
+ @Override
+ public void preClose(SolrCore core) {}
+
+ @Override
+ public void postClose(SolrCore core) {
+ File dataDir = new File(core.getIndexDir());
+ File[] files = dataDir.listFiles();
+ if (files != null) {
+ for (File file : files) {
+ if (!file.delete()) {
+ log.error(file.getAbsolutePath()
+ + " could not be deleted on core unload");
+ }
}
+ if (!dataDir.delete()) log.error(dataDir.getAbsolutePath()
+ + " could not be deleted on core unload");
+ } else {
+ log.error(dataDir.getAbsolutePath()
+ + " could not be deleted on core unload");
}
- if (!dataDir.delete()) log.error(dataDir.getAbsolutePath()
- + " could not be deleted on core unload");
- } else {
- log.error(dataDir.getAbsolutePath()
- + " could not be deleted on core unload");
}
- }
- });
+ });
+ }
+
+ if (params.getBool(CoreAdminParams.DELETE_DATA_DIR, false)) {
+ core.addCloseHook(new CloseHook() {
+ @Override
+ public void preClose(SolrCore core) {}
+
+ @Override
+ public void postClose(SolrCore core) {
+ File dataDir = new File(core.getDataDir());
+ try {
+ FileUtils.deleteDirectory(dataDir);
+ } catch (IOException e) {
+ SolrException.log(log, "Failed to delete data dir for core:"
+ + core.getName() + " dir:" + dataDir.getAbsolutePath());
+ }
+ }
+ });
+ }
+
+ if (params.getBool(CoreAdminParams.DELETE_INSTANCE_DIR, false)) {
+ core.addCloseHook(new CloseHook() {
+ @Override
+ public void preClose(SolrCore core) {}
+
+ @Override
+ public void postClose(SolrCore core) {
+ CoreDescriptor cd = core.getCoreDescriptor();
+ if (cd != null) {
+ File instanceDir = new File(cd.getInstanceDir());
+ try {
+ FileUtils.deleteDirectory(instanceDir);
+ } catch (IOException e) {
+ SolrException.log(log, "Failed to delete instance dir for core:"
+ + core.getName() + " dir:" + instanceDir.getAbsolutePath());
+ }
+ }
+ }
+ });
+ }
+ } finally {
+ if (core != null) core.close();
}
- core.close();
return coreContainer.isPersistent();
-
+
}
/**
@@ -743,64 +776,6 @@ public class CoreAdminHandler extends Re
// }
}
-
- protected void handleDistribUrlAction(SolrQueryRequest req,
- SolrQueryResponse rsp) throws IOException, InterruptedException, SolrServerException {
- // TODO: finish this and tests
- SolrParams params = req.getParams();
- final ModifiableSolrParams newParams = new ModifiableSolrParams(params);
- newParams.remove("action");
-
- SolrParams required = params.required();
- final String subAction = required.get("subAction");
-
- String collection = required.get("collection");
-
- newParams.set(CoreAdminParams.ACTION, subAction);
-
-
- SolrCore core = req.getCore();
- ZkController zkController = core.getCoreDescriptor().getCoreContainer()
- .getZkController();
-
- CloudState cloudState = zkController.getCloudState();
- Map<String,Slice> slices = cloudState.getCollectionStates().get(collection);
- for (Map.Entry<String,Slice> entry : slices.entrySet()) {
- Slice slice = entry.getValue();
- Map<String,ZkNodeProps> shards = slice.getShards();
- Set<Map.Entry<String,ZkNodeProps>> shardEntries = shards.entrySet();
- for (Map.Entry<String,ZkNodeProps> shardEntry : shardEntries) {
- final ZkNodeProps node = shardEntry.getValue();
- if (cloudState.liveNodesContain(node.get(ZkStateReader.NODE_NAME_PROP))) {
- newParams.set(CoreAdminParams.CORE, node.get(ZkStateReader.CORE_NAME_PROP));
- String replica = node.get(ZkStateReader.BASE_URL_PROP);
- ShardRequest sreq = new ShardRequest();
- newParams.set("qt", "/admin/cores");
- sreq.purpose = 1;
- // TODO: this sucks
- if (replica.startsWith("http://"))
- replica = replica.substring(7);
- sreq.shards = new String[]{replica};
- sreq.actualShards = sreq.shards;
- sreq.params = newParams;
-
- shardHandler.submit(sreq, replica, sreq.params);
- }
- }
- }
-
- ShardResponse srsp;
- do {
- srsp = shardHandler.takeCompletedOrError();
- if (srsp != null) {
- Throwable e = srsp.getException();
- if (e != null) {
- log.error("Error talking to shard: " + srsp.getShard(), e);
- }
- }
- } while(srsp != null);
-
- }
protected NamedList<Object> getCoreStatus(CoreContainer cores, String cname) throws IOException {
NamedList<Object> info = new SimpleOrderedMap<Object>();
Modified: lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java?rev=1363400&r1=1363399&r2=1363400&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java (original)
+++ lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/admin/ShowFileRequestHandler.java Thu Jul 19 15:58:54 2012
@@ -101,7 +101,7 @@ public class ShowFileRequestHandler exte
String[] hidden = invariants.getParams( HIDDEN );
if( hidden != null ) {
for( String s : hidden ) {
- hiddenFiles.add( s.toUpperCase(Locale.ENGLISH) );
+ hiddenFiles.add( s.toUpperCase(Locale.ROOT) );
}
}
}
@@ -138,7 +138,7 @@ public class ShowFileRequestHandler exte
adminFile = confPath;
} else {
fname = fname.replace('\\', '/'); // normalize slashes
- if (hiddenFiles.contains(fname.toUpperCase(Locale.ENGLISH))) {
+ if (hiddenFiles.contains(fname.toUpperCase(Locale.ROOT))) {
throw new SolrException(ErrorCode.FORBIDDEN, "Can not access: " + fname);
}
if (fname.indexOf("..") >= 0) {
@@ -159,7 +159,7 @@ public class ShowFileRequestHandler exte
NamedList<SimpleOrderedMap<Object>> files = new SimpleOrderedMap<SimpleOrderedMap<Object>>();
for (String f : children) {
- if (hiddenFiles.contains(f.toUpperCase(Locale.ENGLISH))) {
+ if (hiddenFiles.contains(f.toUpperCase(Locale.ROOT))) {
continue; // don't show 'hidden' files
}
if (f.startsWith(".")) {
@@ -195,8 +195,7 @@ public class ShowFileRequestHandler exte
rsp.setHttpCaching(false);
}
- private void showFromFileSystem(SolrQueryRequest req, SolrQueryResponse rsp)
- throws IOException {
+ private void showFromFileSystem(SolrQueryRequest req, SolrQueryResponse rsp) {
File adminFile = null;
final SolrResourceLoader loader = req.getCore().getResourceLoader();
@@ -215,7 +214,7 @@ public class ShowFileRequestHandler exte
}
else {
fname = fname.replace( '\\', '/' ); // normalize slashes
- if( hiddenFiles.contains( fname.toUpperCase(Locale.ENGLISH) ) ) {
+ if( hiddenFiles.contains( fname.toUpperCase(Locale.ROOT) ) ) {
throw new SolrException( ErrorCode.FORBIDDEN, "Can not access: "+fname );
}
if( fname.indexOf( ".." ) >= 0 ) {
@@ -242,7 +241,7 @@ public class ShowFileRequestHandler exte
for( File f : adminFile.listFiles() ) {
String path = f.getAbsolutePath().substring( basePath );
path = path.replace( '\\', '/' ); // normalize slashes
- if( hiddenFiles.contains( path.toUpperCase(Locale.ENGLISH) ) ) {
+ if( hiddenFiles.contains( path.toUpperCase(Locale.ROOT) ) ) {
continue; // don't show 'hidden' files
}
if( f.isHidden() || f.getName().startsWith( "." ) ) {
Modified: lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/admin/SolrInfoMBeanHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/admin/SolrInfoMBeanHandler.java?rev=1363400&r1=1363399&r2=1363400&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/admin/SolrInfoMBeanHandler.java (original)
+++ lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/admin/SolrInfoMBeanHandler.java Thu Jul 19 15:58:54 2012
@@ -255,9 +255,9 @@ public class SolrInfoMBeanHandler extend
.append(ref).append(", Now: ").append(now);
if(ref instanceof Number) {
- NumberFormat nf = NumberFormat.getIntegerInstance(Locale.ENGLISH);
+ NumberFormat nf = NumberFormat.getIntegerInstance(Locale.ROOT);
if((ref instanceof Double) || (ref instanceof Float)) {
- nf = NumberFormat.getInstance(Locale.ENGLISH);
+ nf = NumberFormat.getInstance(Locale.ROOT);
}
double dref = ((Number)ref).doubleValue();
double dnow = ((Number)now).doubleValue();
Modified: lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java?rev=1363400&r1=1363399&r2=1363400&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java (original)
+++ lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/admin/SystemInfoHandler.java Thu Jul 19 15:58:54 2012
@@ -19,13 +19,16 @@ package org.apache.solr.handler.admin;
import java.io.DataInputStream;
import java.io.File;
+import java.io.InputStreamReader;
import java.lang.management.ManagementFactory;
import java.lang.management.OperatingSystemMXBean;
import java.lang.management.RuntimeMXBean;
import java.lang.reflect.Method;
import java.net.InetAddress;
import java.net.UnknownHostException;
+import java.nio.charset.Charset;
import java.text.DecimalFormat;
+import java.text.DecimalFormatSymbols;
import java.util.Date;
import java.util.Locale;
@@ -81,8 +84,7 @@ public class SystemInfoHandler extends R
/**
* Get system info
*/
- private SimpleOrderedMap<Object> getCoreInfo( SolrCore core ) throws Exception
- {
+ private SimpleOrderedMap<Object> getCoreInfo( SolrCore core ) {
SimpleOrderedMap<Object> info = new SimpleOrderedMap<Object>();
IndexSchema schema = core.getSchema();
@@ -110,8 +112,7 @@ public class SystemInfoHandler extends R
/**
* Get system info
*/
- public static SimpleOrderedMap<Object> getSystemInfo() throws Exception
- {
+ public static SimpleOrderedMap<Object> getSystemInfo() {
SimpleOrderedMap<Object> info = new SimpleOrderedMap<Object>();
OperatingSystemMXBean os = ManagementFactory.getOperatingSystemMXBean();
@@ -133,7 +134,7 @@ public class SystemInfoHandler extends R
addGetterIfAvaliable( os, "maxFileDescriptorCount", info );
try {
- if( !os.getName().toLowerCase(Locale.ENGLISH).startsWith( "windows" ) ) {
+ if( !os.getName().toLowerCase(Locale.ROOT).startsWith( "windows" ) ) {
// Try some command line things
info.add( "uname", execute( "uname -a" ) );
info.add( "uptime", execute( "uptime" ) );
@@ -182,7 +183,7 @@ public class SystemInfoHandler extends R
process = Runtime.getRuntime().exec(cmd);
in = new DataInputStream( process.getInputStream() );
// use default charset from locale here, because the command invoked also uses the default locale:
- return IOUtils.toString(in);
+ return IOUtils.toString(new InputStreamReader(in, Charset.defaultCharset()));
}
catch( Exception ex ) {
// ignore - log.warn("Error executing command", ex);
@@ -210,7 +211,7 @@ public class SystemInfoHandler extends R
jvm.add( "processors", runtime.availableProcessors() );
// not thread safe, but could be thread local
- DecimalFormat df = new DecimalFormat("#.#");
+ DecimalFormat df = new DecimalFormat("#.#", DecimalFormatSymbols.getInstance(Locale.ROOT));
SimpleOrderedMap<Object> mem = new SimpleOrderedMap<Object>();
SimpleOrderedMap<Object> raw = new SimpleOrderedMap<Object>();
@@ -255,8 +256,7 @@ public class SystemInfoHandler extends R
return jvm;
}
- private static SimpleOrderedMap<Object> getLuceneInfo() throws Exception
- {
+ private static SimpleOrderedMap<Object> getLuceneInfo() {
SimpleOrderedMap<Object> info = new SimpleOrderedMap<Object>();
Package p = SolrCore.class.getPackage();
Modified: lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/admin/ThreadDumpHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/admin/ThreadDumpHandler.java?rev=1363400&r1=1363399&r2=1363400&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/admin/ThreadDumpHandler.java (original)
+++ lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/admin/ThreadDumpHandler.java Thu Jul 19 15:58:54 2012
@@ -21,6 +21,7 @@ import java.io.IOException;
import java.lang.management.ManagementFactory;
import java.lang.management.ThreadInfo;
import java.lang.management.ThreadMXBean;
+import java.util.Locale;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.SimpleOrderedMap;
@@ -79,8 +80,7 @@ public class ThreadDumpHandler extends R
//--------------------------------------------------------------------------------
//--------------------------------------------------------------------------------
- private static SimpleOrderedMap<Object> getThreadInfo( ThreadInfo ti, ThreadMXBean tmbean ) throws IOException
- {
+ private static SimpleOrderedMap<Object> getThreadInfo( ThreadInfo ti, ThreadMXBean tmbean ) {
SimpleOrderedMap<Object> info = new SimpleOrderedMap<Object>();
long tid = ti.getThreadId();
@@ -120,7 +120,7 @@ public class ThreadDumpHandler extends R
}
private static String formatNanos(long ns) {
- return String.format("%.4fms", ns / (double) 1000000);
+ return String.format(Locale.ROOT, "%.4fms", ns / (double) 1000000);
}
//////////////////////// SolrInfoMBeans methods //////////////////////
Modified: lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/component/FacetComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/component/FacetComponent.java?rev=1363400&r1=1363399&r2=1363400&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/component/FacetComponent.java (original)
+++ lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/component/FacetComponent.java Thu Jul 19 15:58:54 2012
@@ -20,9 +20,11 @@ package org.apache.solr.handler.componen
import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.lucene.util.OpenBitSet;
import org.apache.solr.common.SolrException;
+import org.apache.solr.common.SolrException.ErrorCode;
import org.apache.solr.common.params.CommonParams;
import org.apache.solr.common.params.FacetParams;
import org.apache.solr.common.params.ModifiableSolrParams;
+import org.apache.solr.common.params.ShardParams;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.SimpleOrderedMap;
@@ -291,7 +293,16 @@ public class FacetComponent extends Sear
for (ShardResponse srsp: sreq.responses) {
int shardNum = rb.getShardNum(srsp.getShard());
- NamedList facet_counts = (NamedList)srsp.getSolrResponse().getResponse().get("facet_counts");
+ NamedList facet_counts = null;
+ try {
+ facet_counts = (NamedList)srsp.getSolrResponse().getResponse().get("facet_counts");
+ }
+ catch(Exception ex) {
+ if(rb.req.getParams().getBool(ShardParams.SHARDS_TOLERANT, false)) {
+ continue; // looks like a shard did not return anything
+ }
+ throw new SolrException(ErrorCode.SERVER_ERROR, "Unable to read facet info for shard: "+srsp.getShard(), ex);
+ }
// handle facet queries
NamedList facet_queries = (NamedList)facet_counts.get("facet_queries");
@@ -439,7 +450,7 @@ public class FacetComponent extends Sear
long maxCount = sfc.count;
for (int shardNum=0; shardNum<rb.shards.length; shardNum++) {
OpenBitSet obs = dff.counted[shardNum];
- if (!obs.get(sfc.termNum)) {
+ if (obs!=null && !obs.get(sfc.termNum)) { // obs can be null if a shard request failed
// if missing from this shard, add the max it could be
maxCount += dff.maxPossible(sfc,shardNum);
}
@@ -454,7 +465,7 @@ public class FacetComponent extends Sear
// add a query for each shard missing the term that needs refinement
for (int shardNum=0; shardNum<rb.shards.length; shardNum++) {
OpenBitSet obs = dff.counted[shardNum];
- if (!obs.get(sfc.termNum) && dff.maxPossible(sfc,shardNum)>0) {
+ if(obs!=null && !obs.get(sfc.termNum) && dff.maxPossible(sfc,shardNum)>0) {
dff.needRefinements = true;
List<String> lst = dff._toRefine[shardNum];
if (lst == null) {
Modified: lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java?rev=1363400&r1=1363399&r2=1363400&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java (original)
+++ lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java Thu Jul 19 15:58:54 2012
@@ -21,6 +21,7 @@ import org.apache.lucene.document.Field;
import org.apache.lucene.document.StringField;
import org.apache.lucene.index.AtomicReaderContext;
import org.apache.lucene.index.IndexReaderContext;
+import org.apache.lucene.index.ReaderUtil;
import org.apache.lucene.index.Term;
import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.lucene.search.*;
@@ -29,7 +30,6 @@ import org.apache.lucene.search.grouping
import org.apache.lucene.search.grouping.TopGroups;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.util.CharsRef;
-import org.apache.lucene.util.ReaderUtil;
import org.apache.lucene.util.UnicodeUtil;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.common.SolrDocument;
@@ -180,7 +180,7 @@ public class QueryComponent extends Sear
try {
responseFormat = Grouping.Format.valueOf(formatStr);
} catch (IllegalArgumentException e) {
- throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, String.format("Illegal %s parameter", GroupParams.GROUP_FORMAT));
+ throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, String.format(Locale.ROOT, "Illegal %s parameter", GroupParams.GROUP_FORMAT));
}
groupingSpec.setResponseFormat(responseFormat);
@@ -386,7 +386,7 @@ public class QueryComponent extends Sear
if (grouping.isSignalCacheWarning()) {
rsp.add(
"cacheWarning",
- String.format("Cache limit of %d percent relative to maxdoc has exceeded. Please increase cache size or disable caching.", maxDocsPercentageToCache)
+ String.format(Locale.ROOT, "Cache limit of %d percent relative to maxdoc has exceeded. Please increase cache size or disable caching.", maxDocsPercentageToCache)
);
}
rb.setResult(result);
Modified: lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java?rev=1363400&r1=1363399&r2=1363400&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java (original)
+++ lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java Thu Jul 19 15:58:54 2012
@@ -480,7 +480,7 @@ public class QueryElevationComponent ext
private SentinelIntSet ordSet; //the key half of the map
private BytesRef[] termValues;//the value half of the map
- public ElevationComparatorSource(final QueryElevationComponent.ElevationObj elevations) throws IOException {
+ public ElevationComparatorSource(final QueryElevationComponent.ElevationObj elevations) {
this.elevations = elevations;
int size = elevations.ids.size();
ordSet = new SentinelIntSet(size, -1);
@@ -506,7 +506,7 @@ public class QueryElevationComponent ext
bottomVal = values[slot];
}
- private int docVal(int doc) throws IOException {
+ private int docVal(int doc) {
if (ordSet.size() > 0) {
int slot = ordSet.find(doc);
if (slot >= 0) {
@@ -519,12 +519,12 @@ public class QueryElevationComponent ext
}
@Override
- public int compareBottom(int doc) throws IOException {
+ public int compareBottom(int doc) {
return bottomVal - docVal(doc);
}
@Override
- public void copy(int slot, int doc) throws IOException {
+ public void copy(int slot, int doc) {
values[slot] = docVal(doc);
}
@@ -562,7 +562,7 @@ public class QueryElevationComponent ext
}
@Override
- public int compareDocToValue(int doc, Integer valueObj) throws IOException {
+ public int compareDocToValue(int doc, Integer valueObj) {
final int value = valueObj.intValue();
final int docValue = docVal(doc);
return docValue - value; // values will be small enough that there is no overflow concern
Modified: lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java?rev=1363400&r1=1363399&r2=1363400&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java (original)
+++ lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/component/SearchHandler.java Thu Jul 19 15:58:54 2012
@@ -17,7 +17,6 @@
package org.apache.solr.handler.component;
-import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.params.CommonParams;
import org.apache.solr.common.params.ModifiableSolrParams;
@@ -35,7 +34,10 @@ import org.apache.solr.util.plugin.SolrC
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.LinkedList;
+import java.util.List;
+
/**
*
@@ -156,7 +158,7 @@ public class SearchHandler extends Reque
@Override
- public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throws Exception, ParseException, InstantiationException, IllegalAccessException
+ public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throws Exception
{
// int sleep = req.getParams().getInt("sleep",0);
// if (sleep > 0) {log.error("SLEEPING for " + sleep); Thread.sleep(sleep);}
Modified: lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/component/StatsValuesFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/component/StatsValuesFactory.java?rev=1363400&r1=1363399&r2=1363400&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/component/StatsValuesFactory.java (original)
+++ lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/component/StatsValuesFactory.java Thu Jul 19 15:58:54 2012
@@ -429,11 +429,11 @@ class StringStatsValues extends Abstract
}
/**
- * Determines which of the given Strings is the maximum, as computed by {@link String#compareTo(Object)}
+ * Determines which of the given Strings is the maximum, as computed by {@link String#compareTo(String)}
*
* @param str1 String to compare against b
* @param str2 String compared against a
- * @return str1 if it is considered greater by {@link String#compareTo(Object)}, str2 otherwise
+ * @return str1 if it is considered greater by {@link String#compareTo(String)}, str2 otherwise
*/
private static String max(String str1, String str2) {
if (str1 == null) {
@@ -445,11 +445,11 @@ class StringStatsValues extends Abstract
}
/**
- * Determines which of the given Strings is the minimum, as computed by {@link String#compareTo(Object)}
+ * Determines which of the given Strings is the minimum, as computed by {@link String#compareTo(String)}
*
* @param str1 String to compare against b
* @param str2 String compared against a
- * @return str1 if it is considered less by {@link String#compareTo(Object)}, str2 otherwise
+ * @return str1 if it is considered less by {@link String#compareTo(String)}, str2 otherwise
*/
private static String min(String str1, String str2) {
if (str1 == null) {
Modified: lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/component/TermVectorComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/component/TermVectorComponent.java?rev=1363400&r1=1363399&r2=1363400&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/component/TermVectorComponent.java (original)
+++ lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/component/TermVectorComponent.java Thu Jul 19 15:58:54 2012
@@ -92,7 +92,7 @@ public class TermVectorComponent extends
* <p>
* Does simple (non-glob-supporting) parsing on the
* {@link TermVectorParams#FIELDS} param if specified, otherwise it returns
- * the concrete field values specified in {@link CommonParams.FL} --
+ * the concrete field values specified in {@link CommonParams#FL} --
* ignoring functions, transformers, or literals.
* </p>
* <p>
@@ -252,22 +252,22 @@ public class TermVectorComponent extends
// once we find it...
final StoredFieldVisitor getUniqValue = new StoredFieldVisitor() {
@Override
- public void stringField(FieldInfo fieldInfo, String value) throws IOException {
+ public void stringField(FieldInfo fieldInfo, String value) {
uniqValues.add(value);
}
@Override
- public void intField(FieldInfo fieldInfo, int value) throws IOException {
+ public void intField(FieldInfo fieldInfo, int value) {
uniqValues.add(Integer.toString(value));
}
@Override
- public void longField(FieldInfo fieldInfo, long value) throws IOException {
+ public void longField(FieldInfo fieldInfo, long value) {
uniqValues.add(Long.toString(value));
}
@Override
- public Status needsField(FieldInfo fieldInfo) throws IOException {
+ public Status needsField(FieldInfo fieldInfo) {
return (fieldInfo.name.equals(finalUniqFieldName)) ? Status.YES : Status.NO;
}
};
Modified: lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/component/TermsComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/component/TermsComponent.java?rev=1363400&r1=1363399&r2=1363400&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/component/TermsComponent.java (original)
+++ lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/component/TermsComponent.java Thu Jul 19 15:58:54 2012
@@ -242,7 +242,7 @@ public class TermsComponent extends Sear
int flags = 0;
for (String flagParam : flagParams) {
try {
- flags |= TermsParams.TermsRegexpFlag.valueOf(flagParam.toUpperCase(Locale.ENGLISH)).getValue();
+ flags |= TermsParams.TermsRegexpFlag.valueOf(flagParam.toUpperCase(Locale.ROOT)).getValue();
} catch (IllegalArgumentException iae) {
throw new SolrException(SolrException.ErrorCode.BAD_REQUEST, "Unknown terms regex flag '" + flagParam + "'");
}
Modified: lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/loader/XMLLoader.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/loader/XMLLoader.java?rev=1363400&r1=1363399&r2=1363400&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/loader/XMLLoader.java (original)
+++ lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/handler/loader/XMLLoader.java Thu Jul 19 15:58:54 2012
@@ -48,7 +48,6 @@ import javax.xml.stream.FactoryConfigura
import javax.xml.stream.XMLStreamConstants;
import javax.xml.stream.XMLInputFactory;
import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.dom.DOMResult;
import javax.xml.transform.dom.DOMSource;
@@ -190,9 +189,7 @@ public class XMLLoader extends ContentSt
* @since solr 1.2
*/
void processUpdate(SolrQueryRequest req, UpdateRequestProcessor processor, XMLStreamReader parser)
- throws XMLStreamException, IOException, FactoryConfigurationError,
- InstantiationException, IllegalAccessException,
- TransformerConfigurationException {
+ throws XMLStreamException, IOException, FactoryConfigurationError {
AddUpdateCommand addCmd = null;
SolrParams params = req.getParams();
while (true) {
Modified: lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/highlight/BreakIteratorBoundaryScanner.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/highlight/BreakIteratorBoundaryScanner.java?rev=1363400&r1=1363399&r2=1363400&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/highlight/BreakIteratorBoundaryScanner.java (original)
+++ lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/highlight/BreakIteratorBoundaryScanner.java Thu Jul 19 15:58:54 2012
@@ -40,22 +40,24 @@ public class BreakIteratorBoundaryScanne
Locale locale = null;
if(language != null){
locale = country == null ? new Locale(language) : new Locale(language, country);
+ } else {
+ locale = Locale.ROOT;
}
// construct BreakIterator
- String type = params.getFieldParam(fieldName, HighlightParams.BS_TYPE, "WORD").toLowerCase();
+ String type = params.getFieldParam(fieldName, HighlightParams.BS_TYPE, "WORD").toLowerCase(Locale.ROOT);
BreakIterator bi = null;
if(type.equals("character")){
- bi = locale == null ? BreakIterator.getCharacterInstance() : BreakIterator.getCharacterInstance(locale);
+ bi = BreakIterator.getCharacterInstance(locale);
}
else if(type.equals("word")){
- bi = locale == null ? BreakIterator.getWordInstance() : BreakIterator.getWordInstance(locale);
+ bi = BreakIterator.getWordInstance(locale);
}
else if(type.equals("line")){
- bi = locale == null ? BreakIterator.getLineInstance() : BreakIterator.getLineInstance(locale);
+ bi = BreakIterator.getLineInstance(locale);
}
else if(type.equals("sentence")){
- bi = locale == null ? BreakIterator.getSentenceInstance() : BreakIterator.getSentenceInstance(locale);
+ bi = BreakIterator.getSentenceInstance(locale);
}
else
throw new SolrException(ErrorCode.BAD_REQUEST, type + " is invalid for parameter " + HighlightParams.BS_TYPE);
Modified: lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java?rev=1363400&r1=1363399&r2=1363400&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java (original)
+++ lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/highlight/DefaultSolrHighlighter.java Thu Jul 19 15:58:54 2012
@@ -202,9 +202,8 @@ public class DefaultSolrHighlighter exte
* @param tokenStream document text CachingTokenStream
* @param fieldName The name of the field
* @param request The SolrQueryRequest
- * @throws IOException
*/
- private QueryScorer getSpanQueryScorer(Query query, String fieldName, TokenStream tokenStream, SolrQueryRequest request) throws IOException {
+ private QueryScorer getSpanQueryScorer(Query query, String fieldName, TokenStream tokenStream, SolrQueryRequest request) {
boolean reqFieldMatch = request.getParams().getFieldBool(fieldName, HighlightParams.FIELD_MATCH, false);
Boolean highlightMultiTerm = request.getParams().getBool(HighlightParams.HIGHLIGHT_MULTI_TERM, true);
if(highlightMultiTerm == null) {
Modified: lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/internal/csv/CSVParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/internal/csv/CSVParser.java?rev=1363400&r1=1363399&r2=1363400&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/internal/csv/CSVParser.java (original)
+++ lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/internal/csv/CSVParser.java Thu Jul 19 15:58:54 2012
@@ -106,16 +106,6 @@ public class CSVParser {
// ======================================================
/**
- * Default strategy for the parser follows the default {@link CSVStrategy}.
- *
- * @param input an InputStream containing "csv-formatted" stream
- * @deprecated use {@link #CSVParser(Reader)}.
- */
- public CSVParser(InputStream input) {
- this(new InputStreamReader(input));
- }
-
- /**
* CSV parser using the default {@link CSVStrategy}.
*
* @param input a Reader containing "csv-formatted" input
Modified: lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/internal/csv/writer/CSVConfigGuesser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/internal/csv/writer/CSVConfigGuesser.java?rev=1363400&r1=1363399&r2=1363400&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/internal/csv/writer/CSVConfigGuesser.java (original)
+++ lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/internal/csv/writer/CSVConfigGuesser.java Thu Jul 19 15:58:54 2012
@@ -22,6 +22,8 @@ import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
+import org.apache.lucene.util.IOUtils;
+
/**
* Tries to guess a config based on an InputStream.
*
@@ -74,7 +76,7 @@ public class CSVConfigGuesser {
public CSVConfig guess() {
try {
// tralalal
- BufferedReader bIn = new BufferedReader(new InputStreamReader((getInputStream())));
+ BufferedReader bIn = new BufferedReader(new InputStreamReader(getInputStream(), IOUtils.CHARSET_UTF_8));
String[] lines = new String[10];
String line = null;
int counter = 0;
Modified: lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/response/transform/ValueSourceAugmenter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/response/transform/ValueSourceAugmenter.java?rev=1363400&r1=1363399&r2=1363400&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/response/transform/ValueSourceAugmenter.java (original)
+++ lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/response/transform/ValueSourceAugmenter.java Thu Jul 19 15:58:54 2012
@@ -22,9 +22,9 @@ import java.util.Map;
import org.apache.lucene.index.AtomicReaderContext;
import org.apache.lucene.index.IndexReader;
+import org.apache.lucene.index.ReaderUtil;
import org.apache.lucene.queries.function.FunctionValues;
import org.apache.lucene.queries.function.ValueSource;
-import org.apache.lucene.util.ReaderUtil;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrException;
import org.apache.solr.search.QParser;
Modified: lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/BoolField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/BoolField.java?rev=1363400&r1=1363399&r2=1363400&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/BoolField.java (original)
+++ lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/BoolField.java Thu Jul 19 15:58:54 2012
@@ -71,9 +71,9 @@ public class BoolField extends Primitive
boolean done = false;
@Override
- public void reset(Reader input) throws IOException {
+ public void setReader(Reader input) throws IOException {
done = false;
- super.reset(input);
+ super.setReader(input);
}
@Override
Modified: lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/DateField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/DateField.java?rev=1363400&r1=1363399&r2=1363400&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/DateField.java (original)
+++ lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/DateField.java Thu Jul 19 15:58:54 2012
@@ -127,7 +127,7 @@ public class DateField extends Primitive
* Fixed Locale needed for parsing/formating Milliseconds in the
* canonical representation.
*/
- protected static final Locale CANONICAL_LOCALE = Locale.US;
+ protected static final Locale CANONICAL_LOCALE = Locale.ROOT;
// The XML (external) date format will sort correctly, except if
// fractions of seconds are present (because '.' is lower than 'Z').
Modified: lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/IndexSchema.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/IndexSchema.java?rev=1363400&r1=1363399&r2=1363400&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/IndexSchema.java (original)
+++ lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/IndexSchema.java Thu Jul 19 15:58:54 2012
@@ -20,14 +20,12 @@ package org.apache.solr.schema;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.AnalyzerWrapper;
import org.apache.lucene.index.IndexableField;
-import org.apache.lucene.search.similarities.DefaultSimilarity;
import org.apache.lucene.search.similarities.Similarity;
import org.apache.lucene.util.Version;
import org.apache.lucene.analysis.util.ResourceLoader;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.util.DOMUtil;
-import org.apache.solr.common.util.NamedList;
import org.apache.solr.util.SystemIdResolver;
import org.apache.solr.core.SolrConfig;
import org.apache.solr.core.Config;
@@ -39,11 +37,18 @@ import org.xml.sax.InputSource;
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
-import javax.xml.xpath.XPathExpressionException;
-import java.util.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+
/**
* <code>IndexSchema</code> contains information about the valid fields in an index
* and the types of those fields.
@@ -435,6 +440,16 @@ public final class IndexSchema {
}
if (simFactory instanceof SchemaAware) {
((SchemaAware)simFactory).inform(this);
+ } else {
+ // if the sim facotry isn't schema aware, then we are responsible for
+ // erroring if a field type is trying to specify a sim.
+ for (FieldType ft : fieldTypes.values()) {
+ if (null != ft.getSimilarity()) {
+ String msg = "FieldType '" + ft.getTypeName() + "' is configured with a similarity, but the global similarity does not support it: " + simFactory.getClass();
+ log.error(msg);
+ throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, msg);
+ }
+ }
}
similarity = simFactory.getSimilarity();
@@ -678,7 +693,7 @@ public final class IndexSchema {
return newArr;
}
- static SimilarityFactory readSimilarity(ResourceLoader loader, Node node) throws XPathExpressionException {
+ static SimilarityFactory readSimilarity(ResourceLoader loader, Node node) {
if (node==null) {
return null;
} else {
Modified: lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/JsonPreAnalyzedParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/JsonPreAnalyzedParser.java?rev=1363400&r1=1363399&r2=1363400&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/JsonPreAnalyzedParser.java (original)
+++ lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/JsonPreAnalyzedParser.java Thu Jul 19 15:58:54 2012
@@ -2,7 +2,7 @@ package org.apache.solr.schema;
import java.io.IOException;
import java.io.Reader;
-import java.util.HashMap;
+import java.util.LinkedHashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
@@ -208,7 +208,7 @@ public class JsonPreAnalyzedParser imple
@Override
public String toFormattedString(Field f) throws IOException {
- Map<String,Object> map = new HashMap<String,Object>();
+ Map<String,Object> map = new LinkedHashMap<String,Object>();
map.put(VERSION_KEY, VERSION);
if (f.fieldType().stored()) {
String stringValue = f.stringValue();
Modified: lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/LatLonType.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/LatLonType.java?rev=1363400&r1=1363399&r2=1363400&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/LatLonType.java (original)
+++ lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/LatLonType.java Thu Jul 19 15:58:54 2012
@@ -485,6 +485,11 @@ class SpatialDistanceQuery extends Exten
return (float)(dist * qWeight);
}
+ @Override
+ public float freq() throws IOException {
+ return 1;
+ }
+
public Explanation explain(int doc) throws IOException {
advance(doc);
boolean matched = this.doc == doc;
Modified: lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/OpenExchangeRatesOrgProvider.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/OpenExchangeRatesOrgProvider.java?rev=1363400&r1=1363399&r2=1363400&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/OpenExchangeRatesOrgProvider.java (original)
+++ lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/OpenExchangeRatesOrgProvider.java Thu Jul 19 15:58:54 2012
@@ -26,6 +26,7 @@ import java.util.Set;
import org.apache.noggit.JSONParser;
import org.apache.lucene.analysis.util.ResourceLoader;
+import org.apache.lucene.util.IOUtils;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.SolrException.ErrorCode;
import org.slf4j.Logger;
@@ -181,7 +182,7 @@ public class OpenExchangeRatesOrgProvide
private JSONParser parser;
public OpenExchangeRates(InputStream ratesStream) throws IOException {
- parser = new JSONParser(new InputStreamReader(ratesStream));
+ parser = new JSONParser(new InputStreamReader(ratesStream, IOUtils.CHARSET_UTF_8));
rates = new HashMap<String, Double>();
int ev;
Modified: lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/PreAnalyzedField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/PreAnalyzedField.java?rev=1363400&r1=1363399&r2=1363400&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/PreAnalyzedField.java (original)
+++ lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/PreAnalyzedField.java Thu Jul 19 15:58:54 2012
@@ -199,7 +199,7 @@ public class PreAnalyzedField extends Fi
public PreAnalyzedTokenizer(Reader reader, PreAnalyzedParser parser) throws IOException {
super(reader);
this.parser = parser;
- reset(reader);
+ setReader(reader);
}
public boolean hasTokenStream() {
@@ -214,7 +214,7 @@ public class PreAnalyzedField extends Fi
return binaryValue;
}
- public final boolean incrementToken() throws IOException {
+ public final boolean incrementToken() {
// lazy init the iterator
if (it == null) {
it = cachedStates.iterator();
@@ -234,8 +234,8 @@ public class PreAnalyzedField extends Fi
}
@Override
- public void reset(Reader input) throws IOException {
- super.reset(input);
+ public void setReader(Reader input) throws IOException {
+ super.setReader(input);
cachedStates.clear();
stringValue = null;
binaryValue = null;
Modified: lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/RandomSortField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/RandomSortField.java?rev=1363400&r1=1363399&r2=1363400&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/RandomSortField.java (original)
+++ lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/RandomSortField.java Thu Jul 19 15:58:54 2012
@@ -23,11 +23,11 @@ import java.util.Map;
import org.apache.lucene.index.IndexableField;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.AtomicReaderContext;
+import org.apache.lucene.index.ReaderUtil;
import org.apache.lucene.queries.function.FunctionValues;
import org.apache.lucene.queries.function.ValueSource;
import org.apache.lucene.queries.function.docvalues.IntDocValues;
import org.apache.lucene.search.*;
-import org.apache.lucene.util.ReaderUtil;
import org.apache.solr.response.TextResponseWriter;
import org.apache.solr.search.QParser;
@@ -102,7 +102,7 @@ public class RandomSortField extends Fie
private static FieldComparatorSource randomComparatorSource = new FieldComparatorSource() {
@Override
- public FieldComparator<Integer> newComparator(final String fieldname, final int numHits, int sortPos, boolean reversed) throws IOException {
+ public FieldComparator<Integer> newComparator(final String fieldname, final int numHits, int sortPos, boolean reversed) {
return new FieldComparator<Integer>() {
int seed;
private final int[] values = new int[numHits];
@@ -119,17 +119,17 @@ public class RandomSortField extends Fie
}
@Override
- public int compareBottom(int doc) throws IOException {
+ public int compareBottom(int doc) {
return bottomVal - hash(doc+seed);
}
@Override
- public void copy(int slot, int doc) throws IOException {
+ public void copy(int slot, int doc) {
values[slot] = hash(doc+seed);
}
@Override
- public FieldComparator setNextReader(AtomicReaderContext context) throws IOException {
+ public FieldComparator setNextReader(AtomicReaderContext context) {
seed = getSeed(fieldname, context);
return this;
}
Modified: lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/SimilarityFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/SimilarityFactory.java?rev=1363400&r1=1363399&r2=1363400&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/SimilarityFactory.java (original)
+++ lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/SimilarityFactory.java Thu Jul 19 15:58:54 2012
@@ -17,8 +17,26 @@ package org.apache.solr.schema;
*/
import org.apache.lucene.search.similarities.Similarity;
+import org.apache.solr.schema.SchemaAware; // javadocs
+import org.apache.solr.schema.FieldType; // javadocs
import org.apache.solr.common.params.SolrParams;
+
+/**
+ * A factory interface for configuring a {@link Similarity} in the Solr
+ * schema.xml.
+ *
+ * <p>
+ * Subclasses of <code>SimilarityFactory</code> which are {@link SchemaAware}
+ * must take responsibility for either consulting the similarities configured
+ * on individual field types, or generating appropriate error/warning messages
+ * if field type specific similarities exist but are being ignored. The
+ * <code>IndexSchema</code> will provide such error checking if a
+ * non-<code>SchemaAware</code> instance of <code>SimilarityFactory</code>
+ * is used.
+ *
+ * @see FieldType#getSimilarity
+ */
public abstract class SimilarityFactory {
protected SolrParams params;
Modified: lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/TextField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/TextField.java?rev=1363400&r1=1363399&r2=1363400&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/TextField.java (original)
+++ lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/TextField.java Thu Jul 19 15:58:54 2012
@@ -186,11 +186,7 @@ public class TextField extends FieldType
PositionIncrementAttribute posIncrAtt = null;
int numTokens = 0;
- try {
- buffer.reset();
- } catch (IOException e) {
- throw new RuntimeException("Unable to initialize TokenStream to analyze query text", e);
- }
+ buffer.reset();
if (buffer.hasAttribute(CharTermAttribute.class)) {
termAtt = buffer.getAttribute(CharTermAttribute.class);
Modified: lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/TrieField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/TrieField.java?rev=1363400&r1=1363399&r2=1363400&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/TrieField.java (original)
+++ lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/TrieField.java Thu Jul 19 15:58:54 2012
@@ -96,7 +96,7 @@ public class TrieField extends Primitive
if (t != null) {
try {
- type = TrieTypes.valueOf(t.toUpperCase(Locale.ENGLISH));
+ type = TrieTypes.valueOf(t.toUpperCase(Locale.ROOT));
} catch (IllegalArgumentException e) {
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,
"Invalid type specified in schema.xml for field: " + args.get("name"), e);
Modified: lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/UUIDField.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/UUIDField.java?rev=1363400&r1=1363399&r2=1363400&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/UUIDField.java (original)
+++ lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/schema/UUIDField.java Thu Jul 19 15:58:54 2012
@@ -70,7 +70,7 @@ public class UUIDField extends StrField
@Override
public String toInternal(String val) {
if (val == null || 0==val.length() || NEW.equals(val)) {
- return UUID.randomUUID().toString().toLowerCase(Locale.ENGLISH);
+ return UUID.randomUUID().toString().toLowerCase(Locale.ROOT);
} else {
// we do some basic validation if 'val' looks like an UUID
if (val.length() != 36 || val.charAt(8) != DASH || val.charAt(13) != DASH
@@ -79,12 +79,12 @@ public class UUIDField extends StrField
"Invalid UUID String: '" + val + "'");
}
- return val.toLowerCase(Locale.ENGLISH);
+ return val.toLowerCase(Locale.ROOT);
}
}
public String toInternal(UUID uuid) {
- return uuid.toString().toLowerCase(Locale.ENGLISH);
+ return uuid.toString().toLowerCase(Locale.ROOT);
}
@Override
Modified: lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/search/BitDocSet.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/search/BitDocSet.java?rev=1363400&r1=1363399&r2=1363400&view=diff
==============================================================================
--- lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/search/BitDocSet.java (original)
+++ lucene/dev/branches/pforcodec_3892/solr/core/src/java/org/apache/solr/search/BitDocSet.java Thu Jul 19 15:58:54 2012
@@ -18,7 +18,6 @@
package org.apache.solr.search;
import org.apache.lucene.index.AtomicReader;
-import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.AtomicReaderContext;
import org.apache.lucene.search.BitsFilteredDocIdSet;
import org.apache.lucene.search.DocIdSet;
@@ -28,8 +27,6 @@ import org.apache.lucene.util.OpenBitSet
import org.apache.lucene.util.OpenBitSetIterator;
import org.apache.lucene.search.DocIdSetIterator;
-import java.io.IOException;
-
/**
* <code>BitDocSet</code> represents an unordered set of Lucene Document Ids
* using a BitSet. A set bit represents inclusion in the set for that document.
@@ -249,7 +246,7 @@ public class BitDocSet extends DocSetBas
return new Filter() {
@Override
- public DocIdSet getDocIdSet(final AtomicReaderContext context, final Bits acceptDocs) throws IOException {
+ public DocIdSet getDocIdSet(final AtomicReaderContext context, final Bits acceptDocs) {
AtomicReader reader = context.reader();
// all Solr DocSets that are used as filters only include live docs
final Bits acceptDocs2 = acceptDocs == null ? null : (reader.getLiveDocs() == acceptDocs ? null : acceptDocs);
@@ -264,7 +261,7 @@ public class BitDocSet extends DocSetBas
return BitsFilteredDocIdSet.wrap(new DocIdSet() {
@Override
- public DocIdSetIterator iterator() throws IOException {
+ public DocIdSetIterator iterator() {
return new DocIdSetIterator() {
int pos=base-1;
int adjustedDoc=-1;
@@ -275,13 +272,13 @@ public class BitDocSet extends DocSetBas
}
@Override
- public int nextDoc() throws IOException {
+ public int nextDoc() {
pos = bs.nextSetBit(pos+1);
return adjustedDoc = (pos>=0 && pos<max) ? pos-base : NO_MORE_DOCS;
}
@Override
- public int advance(int target) throws IOException {
+ public int advance(int target) {
if (target==NO_MORE_DOCS) return adjustedDoc=NO_MORE_DOCS;
pos = bs.nextSetBit(target+base);
return adjustedDoc = (pos>=0 && pos<max) ? pos-base : NO_MORE_DOCS;
@@ -295,7 +292,7 @@ public class BitDocSet extends DocSetBas
}
@Override
- public Bits bits() throws IOException {
+ public Bits bits() {
return new Bits() {
@Override
public boolean get(int index) {