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 2015/09/02 15:06:22 UTC
svn commit: r1700800 [11/24] - in /lucene/dev/branches/lucene6699: ./
dev-tools/ dev-tools/eclipse/ dev-tools/idea/.idea/ dev-tools/scripts/
lucene/ lucene/analysis/ lucene/analysis/common/
lucene/analysis/common/src/java/org/apache/lucene/analysis/ar/...
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/core/NodeConfig.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/core/NodeConfig.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/core/NodeConfig.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/core/NodeConfig.java Wed Sep 2 13:06:13 2015
@@ -44,6 +44,8 @@ public class NodeConfig {
private final String infoHandlerClass;
+ private final String configSetsHandlerClass;
+
private final LogWatcherConfig logWatcherConfig;
private final CloudConfig cloudConfig;
@@ -58,7 +60,8 @@ public class NodeConfig {
private NodeConfig(String nodeName, String coreRootDirectory, String configSetBaseDirectory, String sharedLibDirectory,
PluginInfo shardHandlerFactoryConfig, UpdateShardHandlerConfig updateShardHandlerConfig,
- String coreAdminHandlerClass, String collectionsAdminHandlerClass, String infoHandlerClass,
+ String coreAdminHandlerClass, String collectionsAdminHandlerClass,
+ String infoHandlerClass, String configSetsHandlerClass,
LogWatcherConfig logWatcherConfig, CloudConfig cloudConfig, int coreLoadThreads,
int transientCacheSize, boolean useSchemaCache, String managementPath,
SolrResourceLoader loader, Properties solrProperties) {
@@ -71,6 +74,7 @@ public class NodeConfig {
this.coreAdminHandlerClass = coreAdminHandlerClass;
this.collectionsAdminHandlerClass = collectionsAdminHandlerClass;
this.infoHandlerClass = infoHandlerClass;
+ this.configSetsHandlerClass = configSetsHandlerClass;
this.logWatcherConfig = logWatcherConfig;
this.cloudConfig = cloudConfig;
this.coreLoadThreads = coreLoadThreads;
@@ -142,6 +146,10 @@ public class NodeConfig {
return infoHandlerClass;
}
+ public String getConfigSetsHandlerClass() {
+ return configSetsHandlerClass;
+ }
+
public boolean hasSchemaCache() {
return useSchemaCache;
}
@@ -187,6 +195,7 @@ public class NodeConfig {
private String coreAdminHandlerClass = DEFAULT_ADMINHANDLERCLASS;
private String collectionsAdminHandlerClass = DEFAULT_COLLECTIONSHANDLERCLASS;
private String infoHandlerClass = DEFAULT_INFOHANDLERCLASS;
+ private String configSetsHandlerClass = DEFAULT_CONFIGSETSHANDLERCLASS;
private LogWatcherConfig logWatcherConfig = new LogWatcherConfig(true, null, null, 50);
private CloudConfig cloudConfig;
private int coreLoadThreads = DEFAULT_CORE_LOAD_THREADS;
@@ -205,6 +214,7 @@ public class NodeConfig {
private static final String DEFAULT_ADMINHANDLERCLASS = "org.apache.solr.handler.admin.CoreAdminHandler";
private static final String DEFAULT_INFOHANDLERCLASS = "org.apache.solr.handler.admin.InfoHandler";
private static final String DEFAULT_COLLECTIONSHANDLERCLASS = "org.apache.solr.handler.admin.CollectionsHandler";
+ private static final String DEFAULT_CONFIGSETSHANDLERCLASS = "org.apache.solr.handler.admin.ConfigSetsHandler";
public NodeConfigBuilder(String nodeName, SolrResourceLoader loader) {
this.nodeName = nodeName;
@@ -252,6 +262,11 @@ public class NodeConfig {
return this;
}
+ public NodeConfigBuilder setConfigSetsHandlerClass(String configSetsHandlerClass) {
+ this.configSetsHandlerClass = configSetsHandlerClass;
+ return this;
+ }
+
public NodeConfigBuilder setLogWatcherConfig(LogWatcherConfig logWatcherConfig) {
this.logWatcherConfig = logWatcherConfig;
return this;
@@ -289,7 +304,7 @@ public class NodeConfig {
public NodeConfig build() {
return new NodeConfig(nodeName, coreRootDirectory, configSetBaseDirectory, sharedLibDirectory, shardHandlerFactoryConfig,
- updateShardHandlerConfig, coreAdminHandlerClass, collectionsAdminHandlerClass, infoHandlerClass,
+ updateShardHandlerConfig, coreAdminHandlerClass, collectionsAdminHandlerClass, infoHandlerClass, configSetsHandlerClass,
logWatcherConfig, cloudConfig, coreLoadThreads, transientCacheSize, useSchemaCache, managementPath, loader, solrProperties);
}
}
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/core/QuerySenderListener.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/core/QuerySenderListener.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/core/QuerySenderListener.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/core/QuerySenderListener.java Wed Sep 2 13:06:13 2015
@@ -70,7 +70,7 @@ public class QuerySenderListener extends
for (int i=0; i<values.size(); i++) {
Object o = values.getVal(i);
if (o instanceof ResultContext) {
- o = ((ResultContext)o).docs;
+ o = ((ResultContext)o).getDocList();
}
if (o instanceof DocList) {
DocList docs = (DocList)o;
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/core/SolrConfig.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/core/SolrConfig.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/core/SolrConfig.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/core/SolrConfig.java Wed Sep 2 13:06:13 2015
@@ -216,7 +216,15 @@ public class SolrConfig extends Config i
" This config will be removed in future versions.", getNode(indexConfigPrefix + "/nrtMode", false) == null,
true
);
-
+ assertWarnOrFail("Solr no longer supports forceful unlocking via the 'unlockOnStartup' option. "+
+ "This is no longer neccessary for the default lockType except in situations where "+
+ "it would be dangerous and should not be done. For other lockTypes and/or "+
+ "directoryFactory options it may also be dangerous and users must resolve "+
+ "problematic locks manually.",
+ null == getNode(indexConfigPrefix + "/unlockOnStartup", false),
+ true // 'fail' in trunk
+ );
+
// Parse indexConfig section, using mainIndex as backup in case old config is used
indexConfig = new SolrIndexConfig(this, "indexConfig", mainIndexConfig);
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/core/SolrCore.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/core/SolrCore.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/core/SolrCore.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/core/SolrCore.java Wed Sep 2 13:06:13 2015
@@ -530,17 +530,17 @@ public final class SolrCore implements S
initIndexReaderFactory();
if (indexExists && firstTime && !reload) {
-
- Directory dir = directoryFactory.get(indexDir, DirContext.DEFAULT,
- getSolrConfig().indexConfig.lockType);
+ final String lockType = getSolrConfig().indexConfig.lockType;
+ Directory dir = directoryFactory.get(indexDir, DirContext.DEFAULT, lockType);
try {
if (IndexWriter.isLocked(dir)) {
- log.error(logid
- + "Solr index directory '{}' is locked. Throwing exception.",
- indexDir);
- throw new LockObtainFailedException(
- "Index locked for write for core '" + name +
- "'. Solr now longer supports forceful unlocking via 'unlockOnStartup'. Please verify locks manually!");
+ log.error(logid + "Solr index directory '{}' is locked (lockType={}). Throwing exception.",
+ indexDir, lockType);
+ throw new LockObtainFailedException
+ ("Index dir '" + indexDir + "' of core '" + name + "' is already locked. " +
+ "The most likely cause is another Solr server (or another solr core in this server) " +
+ "also configured to use this directory; other possible causes may be specific to lockType: " +
+ lockType);
}
} finally {
directoryFactory.release(dir);
@@ -1584,8 +1584,8 @@ public final class SolrCore implements S
// SolrCore.verbose("start reopen from",previousSearcher,"writer=",writer);
- RefCounted<IndexWriter> writer = getUpdateHandler().getSolrCoreState()
- .getIndexWriter(null);
+ RefCounted<IndexWriter> writer = getSolrCoreState().getIndexWriter(null);
+
try {
if (writer != null) {
// if in NRT mode, open from the writer
@@ -1639,7 +1639,7 @@ public final class SolrCore implements S
tmp = new SolrIndexSearcher(this, newIndexDir, getLatestSchema(),
(realtime ? "realtime":"main"), newReader, true, !realtime, true, directoryFactory);
} else {
- RefCounted<IndexWriter> writer = getUpdateHandler().getSolrCoreState().getIndexWriter(this);
+ RefCounted<IndexWriter> writer = getSolrCoreState().getIndexWriter(this);
DirectoryReader newReader = null;
try {
newReader = indexReaderFactory.newReader(writer.get(), this);
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/core/SolrXmlConfig.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/core/SolrXmlConfig.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/core/SolrXmlConfig.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/core/SolrXmlConfig.java Wed Sep 2 13:06:13 2015
@@ -234,6 +234,9 @@ public class SolrXmlConfig {
case "infoHandler":
builder.setInfoHandlerClass(value);
break;
+ case "configSetsHandler":
+ builder.setConfigSetsHandlerClass(value);
+ break;
case "coreRootDirectory":
builder.setCoreRootDirectory(value);
break;
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/core/ZkContainer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/core/ZkContainer.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/core/ZkContainer.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/core/ZkContainer.java Wed Sep 2 13:06:13 2015
@@ -247,7 +247,7 @@ public class ZkContainer {
zkServer.stop();
}
} finally {
- ExecutorUtil.shutdownNowAndAwaitTermination(coreZkRegister);
+ ExecutorUtil.shutdownAndAwaitTermination(coreZkRegister);
}
}
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/BlobHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/BlobHandler.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/BlobHandler.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/BlobHandler.java Wed Sep 2 13:06:13 2015
@@ -47,6 +47,7 @@ import org.apache.solr.core.SolrCore;
import org.apache.solr.request.LocalSolrQueryRequest;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.request.SolrRequestHandler;
+import org.apache.solr.request.SolrRequestInfo;
import org.apache.solr.response.SolrQueryResponse;
import org.apache.solr.schema.FieldType;
import org.apache.solr.search.QParser;
@@ -311,9 +312,9 @@ public class BlobHandler extends Request
// This does not work for the general case of forwarding requests. It probably currently
// works OK for real-time get (which is all that BlobHandler uses it for).
private static void forward(SolrQueryRequest req, String handler ,SolrParams params, SolrQueryResponse rsp){
- try(LocalSolrQueryRequest r = new LocalSolrQueryRequest(req.getCore(), params)) {
- req.getCore().getRequestHandler(handler).handleRequest(r, rsp);
- }
+ LocalSolrQueryRequest r = new LocalSolrQueryRequest(req.getCore(), params);
+ SolrRequestInfo.getRequestInfo().addCloseHook( r ); // Close as late as possible...
+ req.getCore().getRequestHandler(handler).handleRequest(r, rsp);
}
}
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/CdcrLeaderStateManager.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/CdcrLeaderStateManager.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/CdcrLeaderStateManager.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/CdcrLeaderStateManager.java Wed Sep 2 13:06:13 2015
@@ -98,7 +98,7 @@ class CdcrLeaderStateManager extends Cdc
private String getZnodePath() {
String myShardId = core.getCoreDescriptor().getCloudDescriptor().getShardId();
String myCollection = core.getCoreDescriptor().getCloudDescriptor().getCollectionName();
- return "/collections/" + myCollection + "/leaders/" + myShardId;
+ return "/collections/" + myCollection + "/leaders/" + myShardId + "/leader";
}
void setAmILeader(boolean amILeader) {
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/CdcrReplicatorScheduler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/CdcrReplicatorScheduler.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/CdcrReplicatorScheduler.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/CdcrReplicatorScheduler.java Wed Sep 2 13:06:13 2015
@@ -102,6 +102,8 @@ class CdcrReplicatorScheduler {
void shutdown() {
if (isStarted) {
+ // interrupts are often dangerous in Lucene / Solr code, but the
+ // test for this will leak threads without
replicatorsPool.shutdown();
try {
replicatorsPool.awaitTermination(60, TimeUnit.SECONDS);
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/CdcrUpdateLogSynchronizer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/CdcrUpdateLogSynchronizer.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/CdcrUpdateLogSynchronizer.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/CdcrUpdateLogSynchronizer.java Wed Sep 2 13:06:13 2015
@@ -1,5 +1,10 @@
package org.apache.solr.handler;
+import java.io.IOException;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
+
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -35,11 +40,6 @@ import org.apache.solr.util.DefaultSolrT
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import java.io.IOException;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
-
/**
* <p>
* Synchronize periodically the update log of non-leader nodes with their leaders.
@@ -101,6 +101,8 @@ class CdcrUpdateLogSynchronizer implemen
void shutdown() {
if (scheduler != null) {
+ // interrupts are often dangerous in Lucene / Solr code, but the
+ // test for this will leak threads without
scheduler.shutdownNow();
scheduler = null;
}
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/DumpRequestHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/DumpRequestHandler.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/DumpRequestHandler.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/DumpRequestHandler.java Wed Sep 2 13:06:13 2015
@@ -46,9 +46,12 @@ public class DumpRequestHandler extends
for (String returnParam : returnParams) {
String[] vals = req.getParams().getParams(returnParam);
if(vals != null){
- for (String val : vals) {
- params.add(returnParam,val);
+ if (vals.length == 1) {
+ params.add(returnParam, vals[0]);
+ } else {
+ params.add(returnParam, vals);
}
+
}
}
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java Wed Sep 2 13:06:13 2015
@@ -553,8 +553,7 @@ public class IndexFetcher {
markReplicationStop();
dirFileFetcher = null;
localFileFetcher = null;
- if (fsyncService != null && !fsyncService.isShutdown()) fsyncService
- .shutdownNow();
+ if (fsyncService != null && !fsyncService.isShutdown()) fsyncService.shutdown();
fsyncService = null;
stop = false;
fsyncException = null;
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java Wed Sep 2 13:06:13 2015
@@ -41,6 +41,7 @@ import java.util.concurrent.ExecutorServ
import java.util.concurrent.Executors;
import java.util.concurrent.Future;
import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ScheduledFuture;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.locks.ReentrantLock;
@@ -116,6 +117,8 @@ public class ReplicationHandler extends
private static final Logger LOG = LoggerFactory.getLogger(ReplicationHandler.class.getName());
SolrCore core;
+
+ private volatile boolean closed = false;
private static final class CommitVersionInfo {
public final long version;
@@ -1214,16 +1217,11 @@ public class ReplicationHandler extends
@Override
public void preClose(SolrCore core) {
try {
- if (executorService != null) executorService.shutdown();
+ if (executorService != null) executorService.shutdown(); // we don't wait for shutdown - this can deadlock core reload
} finally {
- try {
if (pollingIndexFetcher != null) {
pollingIndexFetcher.destroy();
}
- } finally {
- if (executorService != null) ExecutorUtil
- .shutdownNowAndAwaitTermination(executorService);
- }
}
if (currentIndexFetcher != null && currentIndexFetcher != pollingIndexFetcher) {
currentIndexFetcher.destroy();
@@ -1237,9 +1235,9 @@ public class ReplicationHandler extends
core.addCloseHook(new CloseHook() {
@Override
public void preClose(SolrCore core) {
- ExecutorUtil.shutdownNowAndAwaitTermination(restoreExecutor);
+ ExecutorUtil.shutdownAndAwaitTermination(restoreExecutor);
if (restoreFuture != null) {
- restoreFuture.cancel(true);
+ restoreFuture.cancel(false);
}
}
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/SchemaHandler.java Wed Sep 2 13:06:13 2015
@@ -41,11 +41,10 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static org.apache.solr.common.params.CommonParams.JSON;
+import static org.apache.solr.core.ConfigSetProperties.IMMUTABLE_CONFIGSET_ARG;
public class SchemaHandler extends RequestHandlerBase {
private static final Logger log = LoggerFactory.getLogger(SchemaHandler.class);
-
- public static final String IMMUTABLE_CONFIGSET_ARG = "immutable";
private boolean isImmutableConfigSet = false;
@Override
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java Wed Sep 2 13:06:13 2015
@@ -82,6 +82,7 @@ import static org.apache.solr.common.par
import static org.apache.solr.common.util.StrUtils.formatString;
import static org.apache.solr.core.ConfigOverlay.NOT_EDITABLE;
import static org.apache.solr.core.ConfigOverlay.ZNODEVER;
+import static org.apache.solr.core.ConfigSetProperties.IMMUTABLE_CONFIGSET_ARG;
import static org.apache.solr.core.SolrConfig.PluginOpts.REQUIRE_CLASS;
import static org.apache.solr.core.SolrConfig.PluginOpts.REQUIRE_NAME;
import static org.apache.solr.core.SolrConfig.PluginOpts.REQUIRE_NAME_IN_OVERLAY;
@@ -91,7 +92,6 @@ public class SolrConfigHandler extends R
public static final Logger log = LoggerFactory.getLogger(SolrConfigHandler.class);
public static final String CONFIGSET_EDITING_DISABLED_ARG = "disable.configEdit";
public static final boolean configEditing_disabled = Boolean.getBoolean(CONFIGSET_EDITING_DISABLED_ARG);
- public static final String IMMUTABLE_CONFIGSET_ARG = "immutable";
private static final Map<String, SolrConfig.SolrPluginInfo> namedPlugins;
private Lock reloadLock = new ReentrantLock(true);
private boolean isImmutableConfigSet = false;
@@ -700,7 +700,7 @@ public class SolrConfigHandler extends R
prop, expectedVersion, concurrentTasks.size(), collection));
Thread.currentThread().interrupt();
} finally {
- ExecutorUtil.shutdownNowAndAwaitTermination(parallelExecutor);
+ ExecutorUtil.shutdownAndAwaitTermination(parallelExecutor);
}
log.info("Took {}ms to set the property {} to be of version {} for collection {}",
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/admin/CollectionsHandler.java Wed Sep 2 13:06:13 2015
@@ -36,8 +36,8 @@ import org.apache.solr.client.solrj.impl
import org.apache.solr.client.solrj.request.CoreAdminRequest;
import org.apache.solr.client.solrj.request.CoreAdminRequest.RequestSyncShard;
import org.apache.solr.cloud.DistributedMap;
-import org.apache.solr.cloud.DistributedQueue;
-import org.apache.solr.cloud.DistributedQueue.QueueEvent;
+import org.apache.solr.cloud.OverseerTaskQueue;
+import org.apache.solr.cloud.OverseerTaskQueue.QueueEvent;
import org.apache.solr.cloud.Overseer;
import org.apache.solr.cloud.OverseerSolrResponse;
import org.apache.solr.cloud.overseer.SliceMutator;
@@ -246,13 +246,13 @@ public class CollectionsHandler extends
+ event.getWatchedEvent().getType() + "]");
} else {
throw new SolrException(ErrorCode.SERVER_ERROR, operation
- + " the collection unkown case");
+ + " the collection unknown case");
}
}
}
private boolean overseerCollectionQueueContains(String asyncId) throws KeeperException, InterruptedException {
- DistributedQueue collectionQueue = coreContainer.getZkController().getOverseerCollectionQueue();
+ OverseerTaskQueue collectionQueue = coreContainer.getZkController().getOverseerCollectionQueue();
return collectionQueue.containsTaskWithRequestId(ASYNC, asyncId);
}
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/admin/CoreAdminHandler.java Wed Sep 2 13:06:13 2015
@@ -308,7 +308,7 @@ public class CoreAdminHandler extends Re
if (zkController != null) {
zkController.rejoinShardLeaderElection(req.getParams());
} else {
- log.warn("zkController is null in CoreAdminHandler.handleRequestInternal:REJOINLEADERELCTIONS. No action taken.");
+ log.warn("zkController is null in CoreAdminHandler.handleRequestInternal:REJOINLEADERELECTION. No action taken.");
}
break;
case INVOKE:
@@ -883,7 +883,7 @@ public class CoreAdminHandler extends Re
throw new SolrException(ErrorCode.SERVER_ERROR, "Sync Failed");
}
} else {
- SolrException.log(log, "Cound not find core to call sync:" + cname);
+ SolrException.log(log, "Could not find core to call sync:" + cname);
}
} finally {
// no recoveryStrat close for now
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/admin/RebalanceLeaders.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/admin/RebalanceLeaders.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/admin/RebalanceLeaders.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/admin/RebalanceLeaders.java Wed Sep 2 13:06:13 2015
@@ -1,5 +1,18 @@
package org.apache.solr.handler.admin;
+import static org.apache.solr.cloud.Overseer.QUEUE_OPERATION;
+import static org.apache.solr.common.cloud.ZkStateReader.COLLECTION_PROP;
+import static org.apache.solr.common.cloud.ZkStateReader.CORE_NAME_PROP;
+import static org.apache.solr.common.cloud.ZkStateReader.CORE_NODE_NAME_PROP;
+import static org.apache.solr.common.cloud.ZkStateReader.ELECTION_NODE_PROP;
+import static org.apache.solr.common.cloud.ZkStateReader.LEADER_PROP;
+import static org.apache.solr.common.cloud.ZkStateReader.MAX_AT_ONCE_PROP;
+import static org.apache.solr.common.cloud.ZkStateReader.MAX_WAIT_SECONDS_PROP;
+import static org.apache.solr.common.cloud.ZkStateReader.REJOIN_AT_HEAD_PROP;
+import static org.apache.solr.common.cloud.ZkStateReader.SHARD_ID_PROP;
+import static org.apache.solr.common.params.CollectionParams.CollectionAction.REBALANCELEADERS;
+import static org.apache.solr.common.params.CommonAdminParams.ASYNC;
+
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -25,7 +38,7 @@ import java.util.Map;
import org.apache.commons.lang.StringUtils;
import org.apache.solr.cloud.LeaderElector;
-import org.apache.solr.cloud.OverseerProcessor;
+import org.apache.solr.cloud.OverseerTaskProcessor;
import org.apache.solr.cloud.overseer.SliceMutator;
import org.apache.solr.common.SolrException;
import org.apache.solr.common.cloud.ClusterState;
@@ -39,21 +52,12 @@ import org.apache.solr.core.CoreContaine
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.response.SolrQueryResponse;
import org.apache.zookeeper.KeeperException;
-
-import static org.apache.solr.cloud.Overseer.QUEUE_OPERATION;
-import static org.apache.solr.common.cloud.ZkStateReader.COLLECTION_PROP;
-import static org.apache.solr.common.cloud.ZkStateReader.CORE_NAME_PROP;
-import static org.apache.solr.common.cloud.ZkStateReader.ELECTION_NODE_PROP;
-import static org.apache.solr.common.cloud.ZkStateReader.LEADER_PROP;
-import static org.apache.solr.common.cloud.ZkStateReader.MAX_AT_ONCE_PROP;
-import static org.apache.solr.common.cloud.ZkStateReader.MAX_WAIT_SECONDS_PROP;
-import static org.apache.solr.common.cloud.ZkStateReader.NODE_NAME_PROP;
-import static org.apache.solr.common.cloud.ZkStateReader.REJOIN_AT_HEAD_PROP;
-import static org.apache.solr.common.cloud.ZkStateReader.SHARD_ID_PROP;
-import static org.apache.solr.common.params.CollectionParams.CollectionAction.REBALANCELEADERS;
-import static org.apache.solr.common.params.CommonAdminParams.ASYNC;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
class RebalanceLeaders {
+ private static Logger log = LoggerFactory.getLogger(RebalanceLeaders.class);
+
final SolrQueryRequest req;
final SolrQueryResponse rsp;
final CollectionsHandler collectionsHandler;
@@ -72,7 +76,7 @@ class RebalanceLeaders {
String collectionName = req.getParams().get(COLLECTION_PROP);
if (StringUtils.isBlank(collectionName)) {
throw new SolrException(SolrException.ErrorCode.BAD_REQUEST,
- String.format(Locale.ROOT, "The " + COLLECTION_PROP + " is required for the REASSIGNLEADERS command."));
+ String.format(Locale.ROOT, "The " + COLLECTION_PROP + " is required for the Rebalance Leaders command."));
}
coreContainer.getZkController().getZkStateReader().updateClusterState();
ClusterState clusterState = coreContainer.getZkController().getClusterState();
@@ -88,9 +92,9 @@ class RebalanceLeaders {
boolean keepGoing = true;
for (Slice slice : dc.getSlices()) {
- insurePreferredIsLeader(results, slice, currentRequests);
+ ensurePreferredIsLeader(results, slice, currentRequests);
if (currentRequests.size() == max) {
- CollectionsHandler.log.info("Queued " + max + " leader reassignments, waiting for some to complete.");
+ log.info("Queued " + max + " leader reassignments, waiting for some to complete.");
keepGoing = waitForLeaderChange(currentRequests, maxWaitSecs, false, results);
if (keepGoing == false) {
break; // If we've waited longer than specified, don't continue to wait!
@@ -101,15 +105,15 @@ class RebalanceLeaders {
keepGoing = waitForLeaderChange(currentRequests, maxWaitSecs, true, results);
}
if (keepGoing == true) {
- CollectionsHandler.log.info("All leader reassignments completed.");
+ log.info("All leader reassignments completed.");
} else {
- CollectionsHandler.log.warn("Exceeded specified timeout of ." + maxWaitSecs + "' all leaders may not have been reassigned");
+ log.warn("Exceeded specified timeout of ." + maxWaitSecs + "' all leaders may not have been reassigned");
}
rsp.getValues().addAll(results);
}
- private void insurePreferredIsLeader(NamedList<Object> results,
+ private void ensurePreferredIsLeader(NamedList<Object> results,
Slice slice, Map<String, String> currentRequests) throws KeeperException, InterruptedException {
final String inactivePreferreds = "inactivePreferreds";
final String alreadyLeaders = "alreadyLeaders";
@@ -160,12 +164,12 @@ class RebalanceLeaders {
ZkStateReader zkStateReader = coreContainer.getZkController().getZkStateReader();
- List<String> electionNodes = OverseerProcessor.getSortedElectionNodes(zkStateReader.getZkClient(),
+ List<String> electionNodes = OverseerTaskProcessor.getSortedElectionNodes(zkStateReader.getZkClient(),
ZkStateReader.getShardLeadersElectPath(collectionName, slice.getName()));
if (electionNodes.size() < 2) { // if there's only one node in the queue, should already be leader and we shouldn't be here anyway.
- CollectionsHandler.log.warn("Rebalancing leaders and slice " + slice.getName() + " has less than two elements in the leader " +
- "election queue, but replica " + replica.getName() + " doesn't think it's the leader. Do nothing");
+ log.info("Rebalancing leaders and slice " + slice.getName() + " has less than two elements in the leader " +
+ "election queue, but replica " + replica.getName() + " doesn't think it's the leader.");
return;
}
@@ -193,7 +197,7 @@ class RebalanceLeaders {
throws KeeperException, InterruptedException {
ZkStateReader zkStateReader = coreContainer.getZkController().getZkStateReader();
- List<String> electionNodes = OverseerProcessor.getSortedElectionNodes(zkStateReader.getZkClient(),
+ List<String> electionNodes = OverseerTaskProcessor.getSortedElectionNodes(zkStateReader.getZkClient(),
ZkStateReader.getShardLeadersElectPath(collectionName, slice.getName()));
// First, queue up the preferred leader at the head of the queue.
@@ -210,12 +214,8 @@ class RebalanceLeaders {
return; // let's not continue if we didn't get what we expect. Possibly we're offline etc..
}
- List<String> electionNodesTmp = OverseerProcessor.getSortedElectionNodes(zkStateReader.getZkClient(),
- ZkStateReader.getShardLeadersElectPath(collectionName, slice.getName()));
-
-
// Now find other nodes that have the same sequence number as this node and re-queue them at the end of the queue.
- electionNodes = OverseerProcessor.getSortedElectionNodes(zkStateReader.getZkClient(),
+ electionNodes = OverseerTaskProcessor.getSortedElectionNodes(zkStateReader.getZkClient(),
ZkStateReader.getShardLeadersElectPath(collectionName, slice.getName()));
for (String thisNode : electionNodes) {
@@ -238,7 +238,7 @@ class RebalanceLeaders {
int oldSeq = LeaderElector.getSeq(electionNode);
for (int idx = 0; idx < 600; ++idx) {
ZkStateReader zkStateReader = coreContainer.getZkController().getZkStateReader();
- List<String> electionNodes = OverseerProcessor.getSortedElectionNodes(zkStateReader.getZkClient(),
+ List<String> electionNodes = OverseerTaskProcessor.getSortedElectionNodes(zkStateReader.getZkClient(),
ZkStateReader.getShardLeadersElectPath(collectionName, slice.getName()));
for (String testNode : electionNodes) {
if (LeaderElector.getNodeName(testNode).equals(nodeName) && oldSeq != LeaderElector.getSeq(testNode)) {
@@ -250,6 +250,7 @@ class RebalanceLeaders {
}
return -1;
}
+
private void rejoinElection(String collectionName, Slice slice, String electionNode, String core,
boolean rejoinAtHead) throws KeeperException, InterruptedException {
Replica replica = slice.getReplica(LeaderElector.getNodeName(electionNode));
@@ -258,7 +259,7 @@ class RebalanceLeaders {
propMap.put(SHARD_ID_PROP, slice.getName());
propMap.put(QUEUE_OPERATION, REBALANCELEADERS.toLower());
propMap.put(CORE_NAME_PROP, core);
- propMap.put(NODE_NAME_PROP, replica.getName());
+ propMap.put(CORE_NODE_NAME_PROP, replica.getName());
propMap.put(ZkStateReader.BASE_URL_PROP, replica.getProperties().get(ZkStateReader.BASE_URL_PROP));
propMap.put(REJOIN_AT_HEAD_PROP, Boolean.toString(rejoinAtHead)); // Get ourselves to be first in line.
propMap.put(ELECTION_NODE_PROP, electionNode);
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/component/ExpandComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/component/ExpandComponent.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/component/ExpandComponent.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/component/ExpandComponent.java Wed Sep 2 13:06:13 2015
@@ -27,11 +27,11 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
-import com.carrotsearch.hppc.IntObjectOpenHashMap;
-import com.carrotsearch.hppc.IntOpenHashSet;
+import com.carrotsearch.hppc.IntHashSet;
+import com.carrotsearch.hppc.IntObjectHashMap;
+import com.carrotsearch.hppc.LongHashSet;
+import com.carrotsearch.hppc.LongObjectHashMap;
import com.carrotsearch.hppc.LongObjectMap;
-import com.carrotsearch.hppc.LongObjectOpenHashMap;
-import com.carrotsearch.hppc.LongOpenHashSet;
import com.carrotsearch.hppc.cursors.IntObjectCursor;
import com.carrotsearch.hppc.cursors.LongCursor;
import com.carrotsearch.hppc.cursors.LongObjectCursor;
@@ -247,9 +247,9 @@ public class ExpandComponent extends Sea
}
FixedBitSet groupBits = null;
- LongOpenHashSet groupSet = null;
+ LongHashSet groupSet = null;
DocList docList = rb.getResults().docList;
- IntOpenHashSet collapsedSet = new IntOpenHashSet(docList.size() * 2);
+ IntHashSet collapsedSet = new IntHashSet(docList.size() * 2);
//Gather the groups for the current page of documents
DocIterator idit = docList.iterator();
@@ -269,7 +269,7 @@ public class ExpandComponent extends Sea
int currentContext = 0;
int currentDocBase = contexts.get(currentContext).docBase;
int nextDocBase = (currentContext+1)<contexts.size() ? contexts.get(currentContext+1).docBase : Integer.MAX_VALUE;
- IntObjectOpenHashMap<BytesRef> ordBytes = null;
+ IntObjectHashMap<BytesRef> ordBytes = null;
if(values != null) {
groupBits = new FixedBitSet(values.getValueCount());
MultiDocValues.OrdinalMap ordinalMap = null;
@@ -284,7 +284,7 @@ public class ExpandComponent extends Sea
}
int count = 0;
- ordBytes = new IntObjectOpenHashMap();
+ ordBytes = new IntObjectHashMap<>();
for(int i=0; i<globalDocs.length; i++) {
int globalDoc = globalDocs[i];
@@ -329,7 +329,7 @@ public class ExpandComponent extends Sea
}
}
} else {
- groupSet = new LongOpenHashSet((int)(docList.size()*1.25));
+ groupSet = new LongHashSet(docList.size());
NumericDocValues collapseValues = contexts.get(currentContext).reader().getNumericDocValues(field);
int count = 0;
for(int i=0; i<globalDocs.length; i++) {
@@ -389,12 +389,12 @@ public class ExpandComponent extends Sea
.build();
searcher.search(q, collector);
}
- LongObjectMap groups = ((GroupCollector)groupExpandCollector).getGroups();
+ LongObjectMap<Collector> groups = ((GroupCollector) groupExpandCollector).getGroups();
NamedList outMap = new SimpleOrderedMap();
CharsRefBuilder charsRef = new CharsRefBuilder();
- for (LongObjectCursor cursor : (Iterable<LongObjectCursor>) groups) {
+ for (LongObjectCursor<Collector> cursor : groups) {
long groupValue = cursor.key;
- TopDocsCollector topDocsCollector = (TopDocsCollector) cursor.value;
+ TopDocsCollector<?> topDocsCollector = TopDocsCollector.class.cast(cursor.value);
TopDocs topDocs = topDocsCollector.topDocs();
ScoreDoc[] scoreDocs = topDocs.scoreDocs;
if (scoreDocs.length > 0) {
@@ -502,11 +502,11 @@ public class ExpandComponent extends Sea
private LongObjectMap<Collector> groups;
private FixedBitSet groupBits;
- private IntOpenHashSet collapsedSet;
+ private IntHashSet collapsedSet;
- public GroupExpandCollector(SortedDocValues docValues, FixedBitSet groupBits, IntOpenHashSet collapsedSet, int limit, Sort sort) throws IOException {
+ public GroupExpandCollector(SortedDocValues docValues, FixedBitSet groupBits, IntHashSet collapsedSet, int limit, Sort sort) throws IOException {
int numGroups = collapsedSet.size();
- groups = new LongObjectOpenHashMap<>(numGroups * 2);
+ groups = new LongObjectHashMap<>(numGroups);
DocIdSetIterator iterator = new BitSetIterator(groupBits, 0); // cost is not useful here
int group;
while ((group = iterator.nextDoc()) != DocIdSetIterator.NO_MORE_DOCS) {
@@ -536,7 +536,7 @@ public class ExpandComponent extends Sea
this.segmentOrdinalMap = ordinalMap.getGlobalOrds(context.ord);
}
- final LongObjectMap<LeafCollector> leafCollectors = new LongObjectOpenHashMap<>();
+ final LongObjectMap<LeafCollector> leafCollectors = new LongObjectHashMap<>();
for (LongObjectCursor<Collector> entry : groups) {
leafCollectors.put(entry.key, entry.value.getLeafCollector(context));
}
@@ -578,17 +578,16 @@ public class ExpandComponent extends Sea
private class NumericGroupExpandCollector implements Collector, GroupCollector {
private NumericDocValues docValues;
-
private String field;
- private LongObjectOpenHashMap<Collector> groups;
+ private LongObjectHashMap<Collector> groups;
- private IntOpenHashSet collapsedSet;
+ private IntHashSet collapsedSet;
private long nullValue;
- public NumericGroupExpandCollector(String field, long nullValue, LongOpenHashSet groupSet, IntOpenHashSet collapsedSet, int limit, Sort sort) throws IOException {
+ public NumericGroupExpandCollector(String field, long nullValue, LongHashSet groupSet, IntHashSet collapsedSet, int limit, Sort sort) throws IOException {
int numGroups = collapsedSet.size();
this.nullValue = nullValue;
- groups = new LongObjectOpenHashMap(numGroups * 2);
+ groups = new LongObjectHashMap<>(numGroups);
Iterator<LongCursor> iterator = groupSet.iterator();
while (iterator.hasNext()) {
LongCursor cursor = iterator.next();
@@ -609,7 +608,7 @@ public class ExpandComponent extends Sea
final int docBase = context.docBase;
this.docValues = context.reader().getNumericDocValues(this.field);
- final LongObjectOpenHashMap<LeafCollector> leafCollectors = new LongObjectOpenHashMap<>();
+ final LongObjectHashMap<LeafCollector> leafCollectors = new LongObjectHashMap<>();
for (LongObjectCursor<Collector> entry : groups) {
leafCollectors.put(entry.key, entry.value.getLeafCollector(context));
@@ -627,29 +626,30 @@ public class ExpandComponent extends Sea
@Override
public void collect(int docId) throws IOException {
long value = docValues.get(docId);
- if (value != nullValue && leafCollectors.containsKey(value) && !collapsedSet.contains(docId + docBase)) {
- LeafCollector c = leafCollectors.lget();
- c.collect(docId);
+ final int index;
+ if (value != nullValue &&
+ (index = leafCollectors.indexOf(value)) >= 0 &&
+ !collapsedSet.contains(docId + docBase)) {
+ leafCollectors.indexGet(index).collect(docId);
}
}
};
}
- public LongObjectOpenHashMap<Collector> getGroups() {
+ public LongObjectHashMap<Collector> getGroups() {
return groups;
}
}
private interface GroupCollector {
- public LongObjectMap getGroups();
-
+ public LongObjectMap<Collector> getGroups();
}
private Query getGroupQuery(String fname,
FieldType ft,
int size,
- LongOpenHashSet groupSet) {
+ LongHashSet groupSet) {
BytesRef[] bytesRefs = new BytesRef[size];
BytesRefBuilder term = new BytesRefBuilder();
@@ -676,8 +676,7 @@ public class ExpandComponent extends Sea
private Query getGroupQuery(String fname,
int size,
- IntObjectOpenHashMap<BytesRef> ordBytes) throws Exception {
-
+ IntObjectHashMap<BytesRef> ordBytes) throws Exception {
BytesRef[] bytesRefs = new BytesRef[size];
int index = -1;
Iterator<IntObjectCursor<BytesRef>>it = ordBytes.iterator();
@@ -728,7 +727,7 @@ public class ExpandComponent extends Sea
public FieldInfos getFieldInfos() {
Iterator<FieldInfo> it = in.getFieldInfos().iterator();
- List<FieldInfo> newInfos = new ArrayList();
+ List<FieldInfo> newInfos = new ArrayList<>();
while(it.hasNext()) {
FieldInfo fieldInfo = it.next();
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandler.java Wed Sep 2 13:06:13 2015
@@ -317,9 +317,7 @@ public class HttpShardHandler extends Sh
@Override
public void cancelAll() {
for (Future<ShardResponse> future : pending) {
- // TODO: any issues with interrupting? shouldn't be if
- // there are finally blocks to release connections.
- future.cancel(true);
+ future.cancel(false);
}
}
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandlerFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandlerFactory.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandlerFactory.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/component/HttpShardHandlerFactory.java Wed Sep 2 13:06:13 2015
@@ -219,7 +219,7 @@ public class HttpShardHandlerFactory ext
@Override
public void close() {
try {
- ExecutorUtil.shutdownNowAndAwaitTermination(commExecutor);
+ ExecutorUtil.shutdownAndAwaitTermination(commExecutor);
} finally {
try {
if (defaultClient != null) {
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java Wed Sep 2 13:06:13 2015
@@ -36,7 +36,6 @@ import org.apache.lucene.index.IndexRead
import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.index.ReaderUtil;
import org.apache.lucene.index.Term;
-import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.FieldComparator;
import org.apache.lucene.search.LeafFieldComparator;
import org.apache.lucene.search.MatchNoDocsQuery;
@@ -66,6 +65,7 @@ import org.apache.solr.common.util.Named
import org.apache.solr.common.util.SimpleOrderedMap;
import org.apache.solr.common.util.StrUtils;
import org.apache.solr.request.SolrQueryRequest;
+import org.apache.solr.response.BasicResultContext;
import org.apache.solr.response.ResultContext;
import org.apache.solr.response.SolrQueryResponse;
import org.apache.solr.schema.FieldType;
@@ -348,9 +348,7 @@ public class QueryComponent extends Sear
}
rb.setResults(res);
- ResultContext ctx = new ResultContext();
- ctx.docs = rb.getResults().docList;
- ctx.query = null; // anything?
+ ResultContext ctx = new BasicResultContext(rb);
rsp.add("response", ctx);
return;
}
@@ -503,9 +501,7 @@ public class QueryComponent extends Sear
rb.setResult(result);
if (grouping.mainResult != null) {
- ResultContext ctx = new ResultContext();
- ctx.docs = grouping.mainResult;
- ctx.query = null; // TODO? add the query?
+ ResultContext ctx = new BasicResultContext(rb, grouping.mainResult);
rsp.add("response", ctx);
rsp.getToLog().add("hits", grouping.mainResult.matches());
} else if (!grouping.getCommands().isEmpty()) { // Can never be empty since grouping.execute() checks for this.
@@ -522,9 +518,7 @@ public class QueryComponent extends Sear
searcher.search(result, cmd);
rb.setResult(result);
- ResultContext ctx = new ResultContext();
- ctx.docs = rb.getResults().docList;
- ctx.query = rb.getQuery();
+ ResultContext ctx = new BasicResultContext(rb);
rsp.add("response", ctx);
rsp.getToLog().add("hits", rb.getResults().docList.matches());
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/component/QueryElevationComponent.java Wed Sep 2 13:06:13 2015
@@ -17,8 +17,6 @@
package org.apache.solr.handler.component;
-import com.carrotsearch.hppc.IntIntOpenHashMap;
-
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
@@ -73,6 +71,8 @@ import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
+import com.carrotsearch.hppc.IntIntHashMap;
+
import javax.xml.xpath.XPath;
import javax.xml.xpath.XPathConstants;
import javax.xml.xpath.XPathExpressionException;
@@ -536,16 +536,16 @@ public class QueryElevationComponent ext
}
- public static IntIntOpenHashMap getBoostDocs(SolrIndexSearcher indexSearcher, Map<BytesRef, Integer>boosted, Map context) throws IOException {
+ public static IntIntHashMap getBoostDocs(SolrIndexSearcher indexSearcher, Map<BytesRef, Integer>boosted, Map context) throws IOException {
- IntIntOpenHashMap boostDocs = null;
+ IntIntHashMap boostDocs = null;
if(boosted != null) {
//First see if it's already in the request context. Could have been put there
//by another caller.
if(context != null) {
- boostDocs = (IntIntOpenHashMap)context.get(BOOSTED_DOCIDS);
+ boostDocs = (IntIntHashMap) context.get(BOOSTED_DOCIDS);
}
if(boostDocs != null) {
@@ -555,13 +555,13 @@ public class QueryElevationComponent ext
SchemaField idField = indexSearcher.getSchema().getUniqueKeyField();
String fieldName = idField.getName();
- HashSet<BytesRef> localBoosts = new HashSet(boosted.size()*2);
+ HashSet<BytesRef> localBoosts = new HashSet<>(boosted.size()*2);
Iterator<BytesRef> boostedIt = boosted.keySet().iterator();
while(boostedIt.hasNext()) {
localBoosts.add(boostedIt.next());
}
- boostDocs = new IntIntOpenHashMap(boosted.size()*2);
+ boostDocs = new IntIntHashMap(boosted.size());
List<LeafReaderContext>leaves = indexSearcher.getTopReaderContext().leaves();
PostingsEnum postingsEnum = null;
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/component/RealTimeGetComponent.java Wed Sep 2 13:06:13 2015
@@ -50,9 +50,10 @@ import org.apache.solr.common.util.Named
import org.apache.solr.common.util.StrUtils;
import org.apache.solr.core.SolrCore;
import org.apache.solr.request.SolrQueryRequest;
+import org.apache.solr.response.BasicResultContext;
+import org.apache.solr.response.ResultContext;
import org.apache.solr.response.SolrQueryResponse;
import org.apache.solr.response.transform.DocTransformer;
-import org.apache.solr.response.transform.TransformContext;
import org.apache.solr.schema.FieldType;
import org.apache.solr.schema.IndexSchema;
import org.apache.solr.schema.SchemaField;
@@ -153,8 +154,7 @@ public class RealTimeGetComponent extend
DocTransformer transformer = rsp.getReturnFields().getTransformer();
if (transformer != null) {
- TransformContext context = new TransformContext();
- context.req = req;
+ ResultContext context = new BasicResultContext(null, rsp.getReturnFields(), null, null, req);
transformer.setContext(context);
}
try {
@@ -174,7 +174,7 @@ public class RealTimeGetComponent extend
case UpdateLog.ADD:
SolrDocument doc = toSolrDoc((SolrInputDocument)entry.get(entry.size()-1), core.getLatestSchema());
if(transformer!=null) {
- transformer.transform(doc, -1); // unknown docID
+ transformer.transform(doc, -1, 0); // unknown docID
}
docList.add(doc);
break;
@@ -200,7 +200,7 @@ public class RealTimeGetComponent extend
StoredDocument luceneDocument = searcher.doc(docid, rsp.getReturnFields().getLuceneFieldNames());
SolrDocument doc = toSolrDoc(luceneDocument, core.getLatestSchema());
if( transformer != null ) {
- transformer.transform(doc, docid);
+ transformer.transform(doc, docid, 0);
}
docList.add(doc);
}
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/component/ResponseLogComponent.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/component/ResponseLogComponent.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/component/ResponseLogComponent.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/component/ResponseLogComponent.java Wed Sep 2 13:06:13 2015
@@ -71,11 +71,12 @@ public class ResponseLogComponent extend
if (schema.getUniqueKeyField() == null) return;
ResultContext rc = (ResultContext) rb.rsp.getValues().get("response");
-
- if (rc.docs.hasScores()) {
- processScores(rb, rc.docs, schema, searcher);
+
+ DocList docs = rc.getDocList();
+ if (docs.hasScores()) {
+ processScores(rb, docs, schema, searcher);
} else {
- processIds(rb, rc.docs, schema, searcher);
+ processIds(rb, docs, schema, searcher);
}
}
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/component/StatsValuesFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/component/StatsValuesFactory.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/component/StatsValuesFactory.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/handler/component/StatsValuesFactory.java Wed Sep 2 13:06:13 2015
@@ -20,6 +20,7 @@ package org.apache.solr.handler.componen
import java.io.IOException;
import java.util.*;
import java.nio.ByteBuffer;
+import java.nio.charset.StandardCharsets;
import org.apache.lucene.index.LeafReaderContext;
import org.apache.lucene.queries.function.FunctionValues;
@@ -823,7 +824,6 @@ class StringStatsValues extends Abstract
@Override
public long hash(String v) {
- // NOTE: renamed hashUnencodedChars starting with guava 15
return hasher.hashString(v).asLong();
}
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/parser/QueryParser.jj
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/parser/QueryParser.jj?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/parser/QueryParser.jj (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/parser/QueryParser.jj Wed Sep 2 13:06:13 2015
@@ -1,4 +1,4 @@
-/**
+/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/request/SolrQueryRequest.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/request/SolrQueryRequest.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/request/SolrQueryRequest.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/request/SolrQueryRequest.java Wed Sep 2 13:06:13 2015
@@ -33,7 +33,7 @@ import java.util.Map;
*
*
*/
-public interface SolrQueryRequest {
+public interface SolrQueryRequest extends AutoCloseable {
/** returns the current request parameters */
public SolrParams getParams();
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/BinaryResponseWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/BinaryResponseWriter.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/BinaryResponseWriter.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/BinaryResponseWriter.java Wed Sep 2 13:06:13 2015
@@ -23,11 +23,10 @@ import java.io.InputStream;
import java.io.OutputStream;
import java.io.Writer;
import java.util.ArrayList;
+import java.util.Iterator;
import java.util.List;
import org.apache.lucene.index.StorableField;
-import org.apache.lucene.index.StoredDocument;
-import org.apache.lucene.index.IndexableField;
import org.apache.solr.client.solrj.impl.BinaryResponseParser;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.params.CommonParams;
@@ -39,7 +38,6 @@ import org.apache.solr.schema.SchemaFiel
import org.apache.solr.search.DocList;
import org.apache.solr.search.ReturnFields;
import org.apache.solr.search.SolrIndexSearcher;
-import org.apache.solr.search.SolrReturnFields;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -73,7 +71,7 @@ public class BinaryResponseWriter implem
public static class Resolver implements JavaBinCodec.ObjectResolver , JavaBinCodec.WritableDocFields {
protected final SolrQueryRequest solrQueryRequest;
protected IndexSchema schema;
- protected SolrIndexSearcher searcher;
+ protected SolrIndexSearcher searcher; // TODO - this is never set? always null?
protected final ReturnFields returnFields;
public Resolver(SolrQueryRequest req, ReturnFields returnFields) {
@@ -88,8 +86,7 @@ public class BinaryResponseWriter implem
return null; // null means we completely handled it
}
if (o instanceof DocList) {
- ResultContext ctx = new ResultContext();
- ctx.docs = (DocList) o;
+ ResultContext ctx = new BasicResultContext((DocList)o, returnFields, null, null, solrQueryRequest);
writeResults(ctx, codec);
return null; // null means we completely handled it
}
@@ -118,8 +115,8 @@ public class BinaryResponseWriter implem
}
protected void writeResultsBody( ResultContext res, JavaBinCodec codec ) throws IOException {
- codec.writeTag(JavaBinCodec.ARR, res.docs.size());
- DocsStreamer docStreamer = new DocsStreamer(res.docs,res.query, solrQueryRequest, returnFields);
+ codec.writeTag(JavaBinCodec.ARR, res.getDocList().size());
+ Iterator<SolrDocument> docStreamer = res.getProcessedDocuments();
while (docStreamer.hasNext()) {
SolrDocument doc = docStreamer.next();
codec.writeSolrDocument(doc);
@@ -128,14 +125,13 @@ public class BinaryResponseWriter implem
public void writeResults(ResultContext ctx, JavaBinCodec codec) throws IOException {
codec.writeTag(JavaBinCodec.SOLRDOCLST);
- boolean wantsScores = returnFields.wantsScore() && ctx.docs.hasScores();
List l = new ArrayList(3);
- l.add((long) ctx.docs.matches());
- l.add((long) ctx.docs.offset());
+ l.add((long) ctx.getDocList().matches());
+ l.add((long) ctx.getDocList().offset());
Float maxScore = null;
- if (wantsScores) {
- maxScore = ctx.docs.maxScore();
+ if (ctx.wantsScores()) {
+ maxScore = ctx.getDocList().maxScore();
}
l.add(maxScore);
codec.writeArray(l);
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/CSVResponseWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/CSVResponseWriter.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/CSVResponseWriter.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/CSVResponseWriter.java Wed Sep 2 13:06:13 2015
@@ -340,13 +340,13 @@ class CSVWriter extends TextResponseWrit
printer.println();
}
- if (responseObj instanceof ResultContext ) {
- writeDocuments(null, (ResultContext)responseObj, returnFields );
+ if (responseObj instanceof ResultContext) {
+ writeDocuments(null, (ResultContext)responseObj );
}
else if (responseObj instanceof DocList) {
- ResultContext ctx = new ResultContext();
- ctx.docs = (DocList)responseObj;
- writeDocuments(null, ctx, returnFields );
+
+ ResultContext ctx = new BasicResultContext((DocList)responseObj, returnFields, null, null, req);
+ writeDocuments(null, ctx );
} else if (responseObj instanceof SolrDocumentList) {
writeSolrDocumentList(null, (SolrDocumentList)responseObj, returnFields );
}
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/DocsStreamer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/DocsStreamer.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/DocsStreamer.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/DocsStreamer.java Wed Sep 2 13:06:13 2015
@@ -24,17 +24,12 @@ import java.util.Iterator;
import java.util.List;
import java.util.Set;
-import org.apache.lucene.document.Document;
-import org.apache.lucene.index.IndexableField;
import org.apache.lucene.index.StorableField;
import org.apache.lucene.index.StoredDocument;
-import org.apache.lucene.search.Query;
import org.apache.lucene.util.BytesRef;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.SolrException;
-import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.response.transform.DocTransformer;
-import org.apache.solr.response.transform.TransformContext;
import org.apache.solr.schema.BinaryField;
import org.apache.solr.schema.BoolField;
import org.apache.solr.schema.FieldType;
@@ -50,8 +45,6 @@ import org.apache.solr.schema.TrieIntFie
import org.apache.solr.schema.TrieLongField;
import org.apache.solr.search.DocIterator;
import org.apache.solr.search.DocList;
-import org.apache.solr.search.ReturnFields;
-import org.apache.solr.search.SolrIndexSearcher;
import org.apache.solr.search.SolrReturnFields;
/**
@@ -59,38 +52,28 @@ import org.apache.solr.search.SolrReturn
*/
public class DocsStreamer implements Iterator<SolrDocument> {
public static final Set<Class> KNOWN_TYPES = new HashSet<>();
+
+ private org.apache.solr.response.ResultContext rctx;
private final DocList docs;
- private SolrIndexSearcher searcher;
- private final IndexSchema schema;
private DocTransformer transformer;
private DocIterator docIterator;
+
private boolean onlyPseudoFields;
private Set<String> fnames;
- private TransformContext context;
private int idx = -1;
- public DocsStreamer(DocList docList, Query query, SolrQueryRequest req, ReturnFields returnFields) {
- this.docs = docList;
- this.schema = req.getSchema();
- searcher = req.getSearcher();
- transformer = returnFields.getTransformer();
- docIterator = docList.iterator();
- context = new TransformContext();
- context.query = query;
- context.wantsScores = returnFields.wantsScore() && docList.hasScores();
- context.req = req;
- context.searcher = searcher;
- context.iterator = docIterator;
- fnames = returnFields.getLuceneFieldNames();
- onlyPseudoFields = (fnames == null && !returnFields.wantsAllFields() && !returnFields.hasPatternMatching())
+ public DocsStreamer(ResultContext rctx) {
+ this.rctx = rctx;
+ this.docs = rctx.getDocList();
+ transformer = rctx.getReturnFields().getTransformer();
+ docIterator = this.docs.iterator();
+ fnames = rctx.getReturnFields().getLuceneFieldNames();
+ onlyPseudoFields = (fnames == null && !rctx.getReturnFields().wantsAllFields() && !rctx.getReturnFields().hasPatternMatching())
|| (fnames != null && fnames.size() == 1 && SolrReturnFields.SCORE.equals(fnames.iterator().next()));
- if (transformer != null) transformer.setContext(context);
+ if (transformer != null) transformer.setContext(rctx);
}
- public boolean hasScores() {
- return context.wantsScores;
- }
public int currentIndex() {
return idx;
@@ -110,16 +93,17 @@ public class DocsStreamer implements Ite
sdoc = new SolrDocument();
} else {
try {
- StoredDocument doc = searcher.doc(id, fnames);
- sdoc = getDoc(doc, schema);
+ StoredDocument doc = rctx.getSearcher().doc(id, fnames);
+ sdoc = getDoc(doc, rctx.getSearcher().getSchema()); // make sure to use the schema from the searcher and not the request (cross-core)
} catch (IOException e) {
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Error reading document with docId " + id, e);
}
}
if (transformer != null) {
+ boolean doScore = rctx.wantsScores();
try {
- transformer.transform(sdoc, id);
+ transformer.transform(sdoc, id, doScore ? docIterator.score() : 0);
} catch (IOException e) {
throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "Error applying transformer", e);
}
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/ResultContext.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/ResultContext.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/ResultContext.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/ResultContext.java Wed Sep 2 13:06:13 2015
@@ -17,15 +17,45 @@
package org.apache.solr.response;
+import java.util.Iterator;
+
import org.apache.lucene.search.Query;
+import org.apache.solr.common.SolrDocument;
+import org.apache.solr.handler.component.ResponseBuilder;
+import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.search.DocList;
+import org.apache.solr.search.ReturnFields;
+import org.apache.solr.search.SolrIndexSearcher;
/**
* A class to hold the QueryResult and the Query
*
*
*/
-public class ResultContext {
- public Query query;
- public DocList docs;
+public abstract class ResultContext {
+
+ public abstract DocList getDocList();
+
+ public abstract ReturnFields getReturnFields();
+
+ public abstract SolrIndexSearcher getSearcher();
+
+ public abstract Query getQuery();
+
+ // TODO: any reason to allow for retrievial of any filters as well?
+
+ /** Note: do not use the request to get the searcher! A cross-core request may have a different
+ * searcher (for the other core) than the original request.
+ */
+ public abstract SolrQueryRequest getRequest();
+
+ public boolean wantsScores() {
+ return getReturnFields().wantsScore() && getDocList().hasScores();
+ }
+
+ public Iterator<SolrDocument> getProcessedDocuments() {
+ return new DocsStreamer(this);
+ }
}
+
+
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/TextResponseWriter.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/TextResponseWriter.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/TextResponseWriter.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/TextResponseWriter.java Wed Sep 2 13:06:13 2015
@@ -144,12 +144,11 @@ public abstract class TextResponseWriter
writeSolrDocument(name, (SolrDocument)val,returnFields, 0);
} else if (val instanceof ResultContext) {
// requires access to IndexReader
- writeDocuments(name, (ResultContext)val, returnFields);
+ writeDocuments(name, (ResultContext)val);
} else if (val instanceof DocList) {
// Should not happen normally
- ResultContext ctx = new ResultContext();
- ctx.docs = (DocList)val;
- writeDocuments(name, ctx, returnFields);
+ ResultContext ctx = new BasicResultContext((DocList)val, returnFields, null, null, req);
+ writeDocuments(name, ctx);
// }
// else if (val instanceof DocSet) {
// how do we know what fields to read?
@@ -216,29 +215,31 @@ public abstract class TextResponseWriter
public abstract void writeStartDocumentList(String name, long start, int size, long numFound, Float maxScore) throws IOException;
- public abstract void writeSolrDocument(String name, SolrDocument doc, ReturnFields returnFields, int idx) throws IOException;
+ public abstract void writeSolrDocument(String name, SolrDocument doc, ReturnFields fields, int idx) throws IOException;
public abstract void writeEndDocumentList() throws IOException;
// Assume each SolrDocument is already transformed
- public final void writeSolrDocumentList(String name, SolrDocumentList docs, ReturnFields returnFields) throws IOException
+ public final void writeSolrDocumentList(String name, SolrDocumentList docs, ReturnFields fields) throws IOException
{
writeStartDocumentList(name, docs.getStart(), docs.size(), docs.getNumFound(), docs.getMaxScore() );
for( int i=0; i<docs.size(); i++ ) {
- writeSolrDocument( null, docs.get(i), returnFields, i );
+ writeSolrDocument( null, docs.get(i), fields, i );
}
writeEndDocumentList();
}
- public final void writeDocuments(String name, ResultContext res, ReturnFields fields ) throws IOException {
- DocList ids = res.docs;
- DocsStreamer docsStreamer = new DocsStreamer(res.docs,res.query, req, fields);
+ public final void writeDocuments(String name, ResultContext res) throws IOException {
+ DocList ids = res.getDocList();
+ Iterator<SolrDocument> docsStreamer = res.getProcessedDocuments();
writeStartDocumentList(name, ids.offset(), ids.size(), ids.matches(),
- docsStreamer.hasScores() ? new Float(ids.maxScore()) : null);
+ res.wantsScores() ? new Float(ids.maxScore()) : null);
+ int idx = 0;
while (docsStreamer.hasNext()) {
- writeSolrDocument(null, docsStreamer.next(), returnFields, docsStreamer.currentIndex());
+ writeSolrDocument(null, docsStreamer.next(), res.getReturnFields(), idx);
+ idx++;
}
writeEndDocumentList();
}
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/BaseEditorialTransformer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/BaseEditorialTransformer.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/BaseEditorialTransformer.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/BaseEditorialTransformer.java Wed Sep 2 13:06:13 2015
@@ -47,7 +47,7 @@ public abstract class BaseEditorialTrans
}
@Override
- public void transform(SolrDocument doc, int docid) {
+ public void transform(SolrDocument doc, int docid, float score) {
//this only gets added if QueryElevationParams.MARK_EXCLUDED is true
Set<String> ids = getIdSet();
if (ids != null && ids.isEmpty() == false) {
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/ChildDocTransformerFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/ChildDocTransformerFactory.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/ChildDocTransformerFactory.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/ChildDocTransformerFactory.java Wed Sep 2 13:06:13 2015
@@ -96,7 +96,7 @@ public class ChildDocTransformerFactory
}
}
-class ChildDocTransformer extends TransformerWithContext {
+class ChildDocTransformer extends DocTransformer {
private final String name;
private final SchemaField idField;
private final IndexSchema schema;
@@ -121,7 +121,7 @@ class ChildDocTransformer extends Transf
}
@Override
- public void transform(SolrDocument doc, int docid) {
+ public void transform(SolrDocument doc, int docid, float score) {
FieldType idFt = idField.getType();
Object parentIdField = doc.getFirstValue(idField.getName());
@@ -133,12 +133,12 @@ class ChildDocTransformer extends Transf
try {
Query parentQuery = idFt.getFieldQuery(null, idField, parentIdExt);
Query query = new ToChildBlockJoinQuery(parentQuery, parentsFilter);
- DocList children = context.searcher.getDocList(query, childFilterQuery, new Sort(), 0, limit);
+ DocList children = context.getSearcher().getDocList(query, childFilterQuery, new Sort(), 0, limit);
if(children.matches() > 0) {
DocIterator i = children.iterator();
while(i.hasNext()) {
Integer childDocNum = i.next();
- StoredDocument childDoc = context.searcher.doc(childDocNum);
+ StoredDocument childDoc = context.getSearcher().doc(childDocNum);
SolrDocument solrChildDoc = DocsStreamer.getDoc(childDoc, schema);
// TODO: future enhancement...
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/DocIdAugmenterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/DocIdAugmenterFactory.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/DocIdAugmenterFactory.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/DocIdAugmenterFactory.java Wed Sep 2 13:06:13 2015
@@ -48,7 +48,7 @@ class DocIdAugmenter extends DocTransfor
}
@Override
- public void transform(SolrDocument doc, int docid) {
+ public void transform(SolrDocument doc, int docid, float score) {
if( docid >= 0 ) {
doc.setField( name, docid );
}
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/DocTransformer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/DocTransformer.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/DocTransformer.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/DocTransformer.java Wed Sep 2 13:06:13 2015
@@ -18,10 +18,10 @@
package org.apache.solr.response.transform;
import java.io.IOException;
-import java.util.Set;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.response.QueryResponseWriter;
+import org.apache.solr.response.ResultContext;
import org.apache.solr.search.SolrIndexSearcher;
/**
@@ -35,7 +35,7 @@ import org.apache.solr.search.SolrIndexS
*
*/
public abstract class DocTransformer {
- protected TransformContext context;
+ protected ResultContext context;
/**
*
* @return The name of the transformer
@@ -44,10 +44,9 @@ public abstract class DocTransformer {
/**
* This is called before transform and sets
- * @param context The {@link org.apache.solr.response.transform.TransformContext} stores information about the current state of things in Solr that may be
- * useful for doing transformations.
+ * @param context The {@link ResultContext} stores information about how the documents were produced.
*/
- public void setContext( TransformContext context ) {
+ public void setContext( ResultContext context ) {
this.context = context;
}
@@ -58,9 +57,10 @@ public abstract class DocTransformer {
*
* @param doc The document to alter
* @param docid The Lucene internal doc id
+ * @param score the score for this document
* @throws IOException If there is a low-level I/O error.
*/
- public abstract void transform(SolrDocument doc, int docid) throws IOException;
+ public abstract void transform(SolrDocument doc, int docid, float score) throws IOException;
/**
* When a transformer needs access to fields that are not automaticaly derived from the
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/DocTransformers.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/DocTransformers.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/DocTransformers.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/DocTransformers.java Wed Sep 2 13:06:13 2015
@@ -23,7 +23,7 @@ import java.util.Iterator;
import java.util.List;
import org.apache.solr.common.SolrDocument;
-import org.apache.solr.request.SolrQueryRequest;
+import org.apache.solr.response.ResultContext;
/**
* Transform a document before it gets sent out
@@ -65,16 +65,16 @@ public class DocTransformers extends Doc
}
@Override
- public void setContext( TransformContext context ) {
+ public void setContext( ResultContext context ) {
for( DocTransformer a : children ) {
a.setContext( context );
}
}
@Override
- public void transform(SolrDocument doc, int docid) throws IOException {
+ public void transform(SolrDocument doc, int docid, float score) throws IOException {
for( DocTransformer a : children ) {
- a.transform( doc, docid);
+ a.transform( doc, docid, score);
}
}
}
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/ElevatedMarkerFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/ElevatedMarkerFactory.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/ElevatedMarkerFactory.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/ElevatedMarkerFactory.java Wed Sep 2 13:06:13 2015
@@ -48,7 +48,7 @@ class MarkTransformer extends BaseEditor
@Override
protected Set<String> getIdSet() {
- return (Set<String>) context.req.getContext().get("BOOSTED");
+ return (Set<String>) context.getRequest().getContext().get("BOOSTED");
}
}
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/ExcludedMarkerFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/ExcludedMarkerFactory.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/ExcludedMarkerFactory.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/ExcludedMarkerFactory.java Wed Sep 2 13:06:13 2015
@@ -51,7 +51,7 @@ class ExcludedTransformer extends BaseEd
@Override
protected Set<String> getIdSet() {
- return (Set<String>)context.req.getContext().get(QueryElevationComponent.EXCLUDED);
+ return (Set<String>)context.getRequest().getContext().get(QueryElevationComponent.EXCLUDED);
}
}
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/ExplainAugmenterFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/ExplainAugmenterFactory.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/ExplainAugmenterFactory.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/ExplainAugmenterFactory.java Wed Sep 2 13:06:13 2015
@@ -87,7 +87,7 @@ public class ExplainAugmenterFactory ext
}
@Override
- public void transform(SolrDocument doc, int docid) {
+ public void transform(SolrDocument doc, int docid, float score) {
if( context != null && context.getQuery() != null ) {
try {
Explanation exp = context.getSearcher().explain(context.getQuery(), docid);
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/RawValueTransformerFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/RawValueTransformerFactory.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/RawValueTransformerFactory.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/RawValueTransformerFactory.java Wed Sep 2 13:06:13 2015
@@ -20,7 +20,6 @@ import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
-import org.apache.lucene.index.IndexableField;
import org.apache.lucene.index.StorableField;
import org.apache.solr.common.SolrDocument;
import org.apache.solr.common.params.CommonParams;
@@ -108,7 +107,7 @@ public class RawValueTransformerFactory
}
@Override
- public void transform(SolrDocument doc, int docid) {
+ public void transform(SolrDocument doc, int docid, float score) {
Object val = doc.remove(field);
if(val==null) {
return;
Modified: lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/RenameFieldTransformer.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/RenameFieldTransformer.java?rev=1700800&r1=1700799&r2=1700800&view=diff
==============================================================================
--- lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/RenameFieldTransformer.java (original)
+++ lucene/dev/branches/lucene6699/solr/core/src/java/org/apache/solr/response/transform/RenameFieldTransformer.java Wed Sep 2 13:06:13 2015
@@ -17,8 +17,6 @@
package org.apache.solr.response.transform;
import org.apache.solr.common.SolrDocument;
-import org.apache.solr.common.util.NamedList;
-import org.apache.solr.request.SolrQueryRequest;
/**
* Return a field with a name that is different that what is indexed
@@ -46,7 +44,7 @@ public class RenameFieldTransformer exte
}
@Override
- public void transform(SolrDocument doc, int docid) {
+ public void transform(SolrDocument doc, int docid, float score) {
Object v = (copy)?doc.get(from) : doc.remove( from );
if( v != null ) {
doc.setField(to, v);