Author: tommaso
Date: Wed Feb 18 17:12:00 2015
New Revision: 1660682
URL: http://svn.apache.org/r1660682
Log:
OAK-2526 - adding capabilities to use persisted solr config, SolrServers get
cached by SolrServerProviders
Added:
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/SolrServerRegistry.java
(with props)
Modified:
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/EmbeddedSolrServerConfiguration.java
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/RemoteSolrServerConfiguration.java
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/nodestate/NodeStateSolrServerProvider.java
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexEditorProvider.java
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/SolrQueryIndexProviderService.java
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/SolrServerProviderService.java
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndexProvider.java
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/DefaultSolrServerProvider.java
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/EmbeddedSolrServerProvider.java
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/RemoteSolrServerProvider.java
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/SolrServerProvider.java
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/util/SolrIndexInitializer.java
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/jcr/SolrOakRepositoryStub.java
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/SolrBaseTest.java
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/TestUtils.java
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/DefaultAnalyzersConfigurationTest.java
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexEditorTest.java
Modified:
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/EmbeddedSolrServerConfiguration.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/EmbeddedSolrServerConfiguration.java?rev=1660682&r1=1660681&r2=1660682&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/EmbeddedSolrServerConfiguration.java
(original)
+++
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/EmbeddedSolrServerConfiguration.java
Wed Feb 18 17:12:00 2015
@@ -83,7 +83,22 @@ public class EmbeddedSolrServerConfigura
public Integer getHttpPort() {
return httpPort;
}
- }
+ @Override
+ public String toString() {
+ return "HttpConfiguration{" +
+ "context='" + context + '\'' +
+ ", httpPort=" + httpPort +
+ '}';
+ }
+ }
+ @Override
+ public String toString() {
+ return "EmbeddedSolrServerConfiguration{" +
+ "solrHomePath='" + solrHomePath + '\'' +
+ ", coreName='" + coreName + '\'' +
+ ", httpConfiguration=" + httpConfiguration +
+ '}';
+ }
}
Modified:
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/RemoteSolrServerConfiguration.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/RemoteSolrServerConfiguration.java?rev=1660682&r1=1660681&r2=1660682&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/RemoteSolrServerConfiguration.java
(original)
+++
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/RemoteSolrServerConfiguration.java
Wed Feb 18 17:12:00 2015
@@ -16,6 +16,8 @@
*/
package org.apache.jackrabbit.oak.plugins.index.solr.configuration;
+import java.util.Arrays;
+
import
org.apache.jackrabbit.oak.plugins.index.solr.server.RemoteSolrServerProvider;
/**
@@ -63,4 +65,16 @@ public class RemoteSolrServerConfigurati
public String getSolrConfDir() {
return solrConfDir;
}
+
+ @Override
+ public String toString() {
+ return "RemoteSolrServerConfiguration{" +
+ "solrConfDir='" + solrConfDir + '\'' +
+ ", solrHttpUrls=" + Arrays.toString(solrHttpUrls) +
+ ", solrZkHost='" + solrZkHost + '\'' +
+ ", solrCollection='" + solrCollection + '\'' +
+ ", solrShardsNo=" + solrShardsNo +
+ ", solrReplicationFactor=" + solrReplicationFactor +
+ '}';
+ }
}
Modified:
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/nodestate/NodeStateSolrServerProvider.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/nodestate/NodeStateSolrServerProvider.java?rev=1660682&r1=1660681&r2=1660682&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/nodestate/NodeStateSolrServerProvider.java
(original)
+++
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/nodestate/NodeStateSolrServerProvider.java
Wed Feb 18 17:12:00 2015
@@ -145,6 +145,23 @@ public class NodeStateSolrServerProvider
}
@Override
+ public void close() throws IOException {
+ try {
+ getSolrServer().shutdown();
+ } catch (Exception e) {
+ // do nothing
+ } try {
+ getIndexingSolrServer().shutdown();
+ } catch (Exception e) {
+ // do nothing
+ } try {
+ getSearchingSolrServer().shutdown();
+ } catch (Exception e) {
+ // do nothing
+ }
+ }
+
+ @Override
public String toString() {
return "NodeStateSolrServerProvider{" +
"nodeStateChildren=" +
Iterables.toString(nodeState.getChildNodeNames()) +
Modified:
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexEditorProvider.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexEditorProvider.java?rev=1660682&r1=1660681&r2=1660682&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexEditorProvider.java
(original)
+++
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexEditorProvider.java
Wed Feb 18 17:12:00 2015
@@ -21,7 +21,10 @@ import javax.annotation.Nonnull;
import org.apache.jackrabbit.oak.api.CommitFailedException;
import org.apache.jackrabbit.oak.plugins.index.IndexEditorProvider;
import org.apache.jackrabbit.oak.plugins.index.IndexUpdateCallback;
+import
org.apache.jackrabbit.oak.plugins.index.solr.configuration.OakSolrConfiguration;
import
org.apache.jackrabbit.oak.plugins.index.solr.configuration.OakSolrConfigurationProvider;
+import
org.apache.jackrabbit.oak.plugins.index.solr.configuration.nodestate.NodeStateSolrServerProvider;
+import
org.apache.jackrabbit.oak.plugins.index.solr.configuration.nodestate.OakSolrNodeStateConfiguration;
import org.apache.jackrabbit.oak.plugins.index.solr.query.SolrQueryIndex;
import org.apache.jackrabbit.oak.plugins.index.solr.server.SolrServerProvider;
import org.apache.jackrabbit.oak.spi.commit.Editor;
@@ -45,8 +48,8 @@ public class SolrIndexEditorProvider imp
private final OakSolrConfigurationProvider oakSolrConfigurationProvider;
public SolrIndexEditorProvider(
- SolrServerProvider solrServerProvider,
- OakSolrConfigurationProvider oakSolrConfigurationProvider) {
+ @Nonnull SolrServerProvider solrServerProvider,
+ @Nonnull OakSolrConfigurationProvider
oakSolrConfigurationProvider) {
this.solrServerProvider = solrServerProvider;
this.oakSolrConfigurationProvider = oakSolrConfigurationProvider;
}
@@ -55,31 +58,46 @@ public class SolrIndexEditorProvider imp
public Editor getIndexEditor(
@Nonnull String type, @Nonnull NodeBuilder definition, @Nonnull
NodeState root, @Nonnull IndexUpdateCallback callback)
throws CommitFailedException {
+ SolrIndexEditor editor = null;
+ if (SolrQueryIndex.TYPE.equals(type)) {
+ // if index definition contains a persisted configuration, use that
+ if (isPersistedConfiguration(definition)) {
+ NodeState nodeState = definition.getNodeState();
+ OakSolrConfiguration configuration = new
OakSolrNodeStateConfiguration(nodeState);
+ SolrServerProvider serverProvider = new
NodeStateSolrServerProvider(nodeState.getChildNode("server"));
+ editor = getEditor(configuration, serverProvider, callback,
definition);
+ } else { // otherwise use the default configuration providers
(e.g. defined via code or OSGi)
+ OakSolrConfiguration configuration =
oakSolrConfigurationProvider.getConfiguration();
+ editor = getEditor(configuration, solrServerProvider,
callback, definition);
+ }
+ }
+ return editor;
+ }
+
+ private boolean isPersistedConfiguration(NodeBuilder definition) {
+ return definition.hasChildNode("server");
+ }
- if (SolrQueryIndex.TYPE.equals(type)
- && isConfigurationOk()) {
- try {
- SolrServer solrServer =
solrServerProvider.getIndexingSolrServer();
- if (solrServer != null) {
- return new SolrIndexEditor(
+ private SolrIndexEditor getEditor(OakSolrConfiguration configuration,
SolrServerProvider solrServerProvider,
+ IndexUpdateCallback callback,
NodeBuilder definition) {
+ SolrIndexEditor editor = null;
+ try {
+ SolrServer solrServer = solrServerProvider.getIndexingSolrServer();
+ if (solrServer != null) {
+ editor = new SolrIndexEditor(
solrServer,
- oakSolrConfigurationProvider.getConfiguration(),
callback);
- } else {
- if (log.isWarnEnabled()) {
- log.warn("null SolrServer provided, cannot index {}",
definition);
- }
- }
- } catch (Exception e) {
- if (log.isErrorEnabled()) {
- log.error("unable to create SolrIndexEditor", e);
+ configuration, callback);
+ } else {
+ if (log.isWarnEnabled()) {
+ log.warn("null SolrServer provided, cannot index {}",
definition);
}
}
+ } catch (Exception e) {
+ if (log.isErrorEnabled()) {
+ log.error("unable to create SolrIndexEditor", e);
+ }
}
- return null;
- }
-
- private boolean isConfigurationOk() {
- return solrServerProvider != null && oakSolrConfigurationProvider !=
null;
+ return editor;
}
}
Modified:
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/SolrQueryIndexProviderService.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/SolrQueryIndexProviderService.java?rev=1660682&r1=1660681&r2=1660682&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/SolrQueryIndexProviderService.java
(original)
+++
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/SolrQueryIndexProviderService.java
Wed Feb 18 17:12:00 2015
@@ -16,27 +16,27 @@
*/
package org.apache.jackrabbit.oak.plugins.index.solr.osgi;
-import java.util.ArrayList;
import java.util.List;
-import javax.annotation.Nonnull;
+import com.google.common.collect.Lists;
import org.apache.felix.scr.annotations.Activate;
import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Deactivate;
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.ReferenceCardinality;
import org.apache.felix.scr.annotations.ReferencePolicy;
import org.apache.felix.scr.annotations.ReferencePolicyOption;
-import org.apache.felix.scr.annotations.Service;
import org.apache.jackrabbit.oak.commons.PropertiesUtil;
import
org.apache.jackrabbit.oak.plugins.index.aggregate.AggregateIndexProvider;
import org.apache.jackrabbit.oak.plugins.index.aggregate.NodeAggregator;
import
org.apache.jackrabbit.oak.plugins.index.solr.configuration.OakSolrConfigurationProvider;
+import
org.apache.jackrabbit.oak.plugins.index.solr.configuration.SolrIndexTracker;
import
org.apache.jackrabbit.oak.plugins.index.solr.query.SolrQueryIndexProvider;
import org.apache.jackrabbit.oak.plugins.index.solr.server.SolrServerProvider;
-import org.apache.jackrabbit.oak.spi.query.QueryIndex;
+import org.apache.jackrabbit.oak.spi.commit.Observer;
import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;
-import org.apache.jackrabbit.oak.spi.state.NodeState;
+import org.osgi.framework.ServiceRegistration;
import org.osgi.service.component.ComponentContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -48,13 +48,14 @@ import org.slf4j.LoggerFactory;
* @see QueryIndexProvider
*/
@Component(metatype = true, immediate = true, label = "Oak Solr Query index
provider configuration")
-@Service(value = QueryIndexProvider.class)
-public class SolrQueryIndexProviderService implements QueryIndexProvider {
+public class SolrQueryIndexProviderService {
private static final boolean QUERY_TIME_AGGREGATION_DEFAULT = false;
private final Logger log = LoggerFactory.getLogger(getClass());
+ private final List<ServiceRegistration> regs = Lists.newArrayList();
+
@Reference
private SolrServerProvider solrServerProvider;
@@ -71,25 +72,28 @@ public class SolrQueryIndexProviderServi
description = "enable query time aggregation for Solr index")
private static final String QUERY_TIME_AGGREGATION = "query.aggregation";
- private boolean queryTimeAggregation;
-
@Activate
protected void activate(ComponentContext componentContext) {
Object value =
componentContext.getProperties().get(QUERY_TIME_AGGREGATION);
- queryTimeAggregation = PropertiesUtil.toBoolean(value,
QUERY_TIME_AGGREGATION_DEFAULT);
- }
-
- @Override
- @Nonnull
- public List<? extends QueryIndex> getQueryIndexes(NodeState nodeState) {
+ boolean queryTimeAggregation = PropertiesUtil.toBoolean(value,
QUERY_TIME_AGGREGATION_DEFAULT);
if (solrServerProvider != null && oakSolrConfigurationProvider !=
null) {
- SolrQueryIndexProvider solrQueryIndexProvider = new
SolrQueryIndexProvider(solrServerProvider,
+ QueryIndexProvider solrQueryIndexProvider = new
SolrQueryIndexProvider(solrServerProvider,
oakSolrConfigurationProvider, nodeAggregator);
log.debug("creating Solr query index provider {} query time
aggregation", queryTimeAggregation ? "with" : "without");
- return queryTimeAggregation ?
AggregateIndexProvider.wrap(solrQueryIndexProvider).getQueryIndexes(nodeState) :
- solrQueryIndexProvider.getQueryIndexes(nodeState);
- } else {
- return new ArrayList<QueryIndex>();
+ if (queryTimeAggregation) {
+ solrQueryIndexProvider =
AggregateIndexProvider.wrap(solrQueryIndexProvider);
+ }
+
+
regs.add(componentContext.getBundleContext().registerService(QueryIndexProvider.class.getName(),
solrQueryIndexProvider, null));
+
regs.add(componentContext.getBundleContext().registerService(Observer.class.getName(),
solrQueryIndexProvider, null));
+ }
+ }
+
+ @Deactivate
+ protected void deactivate() {
+
+ for (ServiceRegistration registration : regs) {
+ registration.unregister();
}
}
Modified:
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/SolrServerProviderService.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/SolrServerProviderService.java?rev=1660682&r1=1660681&r2=1660682&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/SolrServerProviderService.java
(original)
+++
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/osgi/SolrServerProviderService.java
Wed Feb 18 17:12:00 2015
@@ -16,6 +16,7 @@
*/
package org.apache.jackrabbit.oak.plugins.index.solr.osgi;
+import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
import javax.annotation.CheckForNull;
@@ -87,10 +88,11 @@ public class SolrServerProviderService i
@Deactivate
protected void deactivate() throws Exception {
solrServerConfigurationProviders.clear();
- shutdownSolrServers();
+ close();
}
- private void shutdownSolrServers() {
+ @Override
+ public void close() throws IOException {
if (cachedSolrServer != null) {
try {
cachedSolrServer.shutdown();
@@ -124,7 +126,11 @@ public class SolrServerProviderService i
synchronized (solrServerConfigurationProviders) {
String name = String.valueOf(properties.get("name"));
solrServerConfigurationProviders.put(name,
solrServerConfigurationProvider);
- shutdownSolrServers();
+ try {
+ close();
+ } catch (IOException e) {
+ // do nothing
+ }
}
}
@@ -132,7 +138,11 @@ public class SolrServerProviderService i
synchronized (solrServerConfigurationProviders) {
String name = String.valueOf(properties.get("name"));
solrServerConfigurationProviders.remove(name);
- shutdownSolrServers();
+ try {
+ close();
+ } catch (IOException e) {
+ // do nothing
+ }
}
}
@@ -140,7 +150,11 @@ public class SolrServerProviderService i
synchronized (solrServerConfigurationProviders) {
String name = String.valueOf(properties.get("name"));
solrServerConfigurationProviders.put(name,
solrServerConfigurationProvider);
- shutdownSolrServers();
+ try {
+ close();
+ } catch (IOException e) {
+ // do nothing
+ }
}
}
Modified:
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndexProvider.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndexProvider.java?rev=1660682&r1=1660681&r2=1660682&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndexProvider.java
(original)
+++
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/query/SolrQueryIndexProvider.java
Wed Feb 18 17:12:00 2015
@@ -19,11 +19,18 @@ package org.apache.jackrabbit.oak.plugin
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
+
import org.apache.jackrabbit.oak.api.PropertyState;
import org.apache.jackrabbit.oak.api.Type;
import org.apache.jackrabbit.oak.plugins.index.aggregate.NodeAggregator;
+import
org.apache.jackrabbit.oak.plugins.index.solr.configuration.OakSolrConfiguration;
import
org.apache.jackrabbit.oak.plugins.index.solr.configuration.OakSolrConfigurationProvider;
+import
org.apache.jackrabbit.oak.plugins.index.solr.configuration.nodestate.NodeStateSolrServerProvider;
+import
org.apache.jackrabbit.oak.plugins.index.solr.configuration.nodestate.OakSolrNodeStateConfiguration;
import org.apache.jackrabbit.oak.plugins.index.solr.server.SolrServerProvider;
+import org.apache.jackrabbit.oak.spi.commit.CommitInfo;
+import org.apache.jackrabbit.oak.spi.commit.Observer;
import org.apache.jackrabbit.oak.spi.query.QueryIndex;
import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;
import org.apache.jackrabbit.oak.spi.state.ChildNodeEntry;
@@ -38,9 +45,9 @@ import static org.apache.jackrabbit.oak.
/**
* {@link QueryIndexProvider} for {@link SolrQueryIndex}
*/
-public class SolrQueryIndexProvider implements QueryIndexProvider {
+public class SolrQueryIndexProvider implements QueryIndexProvider, Observer {
- private final Logger log =
LoggerFactory.getLogger(SolrQueryIndexProvider.class);
+ private final Logger log = LoggerFactory.getLogger(getClass());
private final SolrServerProvider solrServerProvider;
@@ -48,14 +55,14 @@ public class SolrQueryIndexProvider impl
private final NodeAggregator aggregator;
- public SolrQueryIndexProvider(SolrServerProvider solrServerProvider,
OakSolrConfigurationProvider oakSolrConfigurationProvider,
- NodeAggregator nodeAggregator) {
+ public SolrQueryIndexProvider(@Nonnull SolrServerProvider
solrServerProvider, @Nonnull OakSolrConfigurationProvider
oakSolrConfigurationProvider,
+ @Nullable NodeAggregator nodeAggregator) {
this.oakSolrConfigurationProvider = oakSolrConfigurationProvider;
this.solrServerProvider = solrServerProvider;
this.aggregator = nodeAggregator;
}
- public SolrQueryIndexProvider(SolrServerProvider solrServerProvider,
OakSolrConfigurationProvider oakSolrConfigurationProvider) {
+ public SolrQueryIndexProvider(@Nonnull SolrServerProvider
solrServerProvider, @Nonnull OakSolrConfigurationProvider
oakSolrConfigurationProvider) {
this(solrServerProvider, oakSolrConfigurationProvider, null);
}
@@ -64,39 +71,60 @@ public class SolrQueryIndexProvider impl
public List<? extends QueryIndex> getQueryIndexes(NodeState nodeState) {
List<QueryIndex> tempIndexes = new ArrayList<QueryIndex>();
- if (solrServerProvider == null || oakSolrConfigurationProvider ==
null) {
- return tempIndexes;
- }
NodeState definitions = nodeState.getChildNode(INDEX_DEFINITIONS_NAME);
for (ChildNodeEntry entry : definitions.getChildNodeEntries()) {
NodeState definition = entry.getNodeState();
+ String name = entry.getName();
PropertyState type = definition.getProperty(TYPE_PROPERTY_NAME);
- if (type != null
- && SolrQueryIndex.TYPE.equals(type.getValue(Type.STRING)))
{
+ if (type != null &&
SolrQueryIndex.TYPE.equals(type.getValue(Type.STRING))) {
try {
- SolrServer solrServer =
solrServerProvider.getSearchingSolrServer();
- // the query engine should be returned only if the server
is alive, otherwise other indexes should be used
- if (solrServer != null && 0 ==
solrServer.ping().getStatus()) {
- tempIndexes.add(new AdvancedSolrQueryIndex(
- entry.getName(),
- solrServer,
-
oakSolrConfigurationProvider.getConfiguration(),
- aggregator));
- }
- else {
- if (log.isWarnEnabled()) {
- log.warn("cannot create Solr query index as
SolrServer {}Â is unreachable", solrServer);
- }
+ if (isPersistedConfiguration(definition)) {
+ OakSolrConfiguration configuration = new
OakSolrNodeStateConfiguration(definition);
+ SolrServerProvider serverProvider = new
NodeStateSolrServerProvider(definition.getChildNode("server"));
+ // if it does not already exist I need to register an
observer that updates / closes this SolrServerProvider when the node is
updated/removed
+ addQueryIndex(tempIndexes, name, serverProvider,
configuration);
+ } else { // otherwise use the default configuration
providers
+ OakSolrConfiguration configuration =
oakSolrConfigurationProvider.getConfiguration();
+ addQueryIndex(tempIndexes, name, solrServerProvider,
configuration);
}
} catch (Exception e) {
- if (log.isErrorEnabled()) {
- log.error("unable to create Solr query index at " +
entry.getName(), e);
- }
+ log.warn("could not get Solr query index from node {}",
name);
}
-
+ // TODO : need to add index tracking capabilities in order to
shutdown SolrServer in case the server node gets deleted
}
}
return tempIndexes;
}
+ private boolean isPersistedConfiguration(NodeState definition) {
+ return definition.hasChildNode("server");
+ }
+
+ private void addQueryIndex(List<QueryIndex> tempIndexes, String name,
SolrServerProvider solrServerProvider, OakSolrConfiguration configuration) {
+ try {
+ SolrServer solrServer =
solrServerProvider.getSearchingSolrServer();
+ // the query engine should be returned only if the server is
alive, otherwise other indexes should be used
+ if (solrServer != null && 0 == solrServer.ping().getStatus()) {
+ tempIndexes.add(new AdvancedSolrQueryIndex(
+ name,
+ solrServer,
+ configuration,
+ aggregator));
+ } else {
+ if (log.isWarnEnabled()) {
+ log.warn("cannot create Solr query index as SolrServer {}Â
is unreachable", solrServer);
+ }
+ }
+ } catch (Exception e) {
+ if (log.isErrorEnabled()) {
+ log.error("unable to create Solr query index at " + name, e);
+ }
+ }
+ }
+
+ @Override
+ public void contentChanged(@Nonnull NodeState root, @Nullable CommitInfo
info) {
+ // TODO : check if any change has been done on a persisted SSP
+ }
+
}
Modified:
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/DefaultSolrServerProvider.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/DefaultSolrServerProvider.java?rev=1660682&r1=1660681&r2=1660682&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/DefaultSolrServerProvider.java
(original)
+++
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/DefaultSolrServerProvider.java
Wed Feb 18 17:12:00 2015
@@ -16,6 +16,7 @@
*/
package org.apache.jackrabbit.oak.plugins.index.solr.server;
+import java.io.IOException;
import javax.annotation.CheckForNull;
import
org.apache.jackrabbit.oak.plugins.index.solr.configuration.SolrServerConfigurationDefaults;
@@ -57,4 +58,21 @@ public class DefaultSolrServerProvider i
SolrServerConfigurationDefaults.HTTP_PORT +
SolrServerConfigurationDefaults.CONTEXT +
'/' + SolrServerConfigurationDefaults.CORE_NAME;
}
+
+ @Override
+ public void close() throws IOException {
+ try {
+ getSolrServer().shutdown();
+ } catch (Exception e) {
+ // do nothing
+ } try {
+ getIndexingSolrServer().shutdown();
+ } catch (Exception e) {
+ // do nothing
+ } try {
+ getSearchingSolrServer().shutdown();
+ } catch (Exception e) {
+ // do nothing
+ }
+ }
}
Modified:
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/EmbeddedSolrServerProvider.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/EmbeddedSolrServerProvider.java?rev=1660682&r1=1660681&r2=1660682&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/EmbeddedSolrServerProvider.java
(original)
+++
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/EmbeddedSolrServerProvider.java
Wed Feb 18 17:12:00 2015
@@ -52,6 +52,18 @@ public class EmbeddedSolrServerProvider
private SolrServer createSolrServer() throws Exception {
+ SolrServer cachedEntry =
SolrServerRegistry.get(solrServerConfiguration,
SolrServerRegistry.Strategy.SEARCHING);
+
+ try {
+ if (cachedEntry != null && 0 == cachedEntry.ping().getStatus()) {
+ return cachedEntry;
+ }
+ } catch (Exception e) {
+ log.warn("cached entry is shut down, creating new one");
+ }
+
+ log.warn("creating new embedded solr server with config: {}",
solrServerConfiguration);
+
String solrHomePath = solrServerConfiguration.getSolrHomePath();
String coreName = solrServerConfiguration.getCoreName();
EmbeddedSolrServerConfiguration.HttpConfiguration httpConfiguration =
solrServerConfiguration.getHttpConfiguration();
@@ -113,6 +125,7 @@ public class EmbeddedSolrServerProvider
EmbeddedSolrServer server = new
EmbeddedSolrServer(coreContainer, coreName);
if (server.ping().getStatus() == 0) {
+ SolrServerRegistry.register(solrServerConfiguration,
server, SolrServerRegistry.Strategy.SEARCHING);
return server;
} else {
throw new IOException("the embedded Solr server is not
alive");
@@ -124,9 +137,11 @@ public class EmbeddedSolrServerProvider
}
private void checkSolrConfiguration(String solrHomePath, String coreName)
throws IOException {
+ File solrHomePathFile = new File(solrHomePath);
+
+ log.info("checking configuration at {}",
solrHomePathFile.getAbsolutePath());
// check if solrHomePath exists
- File solrHomePathFile = new File(solrHomePath);
if (!solrHomePathFile.exists()) {
if (!solrHomePathFile.mkdirs()) {
throw new IOException("could not create solrHomePath
directory");
@@ -134,30 +149,41 @@ public class EmbeddedSolrServerProvider
// copy all the needed files to the just created directory
copy("/solr/solr.xml", solrHomePath);
copy("/solr/zoo.cfg", solrHomePath);
- if (!new File(solrHomePath + "/" + coreName +
"/conf").mkdirs()) {
- throw new IOException("could not create nested core
directory in solrHomePath");
- }
- String solrCoreDir = solrHomePath + "/" + coreName;
- copy("/solr/oak/core.properties", solrCoreDir);
- String coreConfDir = solrCoreDir + "/conf/";
- copy("/solr/oak/conf/currency.xml", coreConfDir);
- copy("/solr/oak/conf/schema.xml", coreConfDir);
- copy("/solr/oak/conf/solrconfig.xml", coreConfDir);
+
}
} else if (!solrHomePathFile.isDirectory()) {
throw new IOException("a non directory file with the specified
name already exists for the given solrHomePath '" + solrHomePath);
}
+ File solrCorePathFile = new File(solrHomePathFile, coreName);
+ if (!solrCorePathFile.exists()) {
+ if (!new File(solrCorePathFile, "conf").mkdirs()) {
+ throw new IOException("could not create nested core directory
in solrHomePath/solrCoreName/conf");
+ }
+ String solrCoreDir = solrCorePathFile.getAbsolutePath();
+// copy("/solr/oak/core.properties", solrCoreDir);
+ File coreProperties = new File(new File(solrCoreDir),
"core.properties");
+ assert coreProperties.createNewFile();
+ FileOutputStream out = new FileOutputStream(coreProperties);
+ IOUtils.writeBytes(out, ("name=" + coreName).getBytes());
+ out.flush();
+ out.close();
+
+ String coreConfDir = solrCoreDir + "/conf/";
+ copy("/solr/oak/conf/currency.xml", coreConfDir);
+ copy("/solr/oak/conf/schema.xml", coreConfDir);
+ copy("/solr/oak/conf/solrconfig.xml", coreConfDir);
+ } else if (!solrCorePathFile.isDirectory()) {
+ throw new IOException("a non directory file with the specified
name already exists for the given Solr core path'" +
solrCorePathFile.getAbsolutePath());
+ }
+
// check if the a core with the given coreName exists
- // TODO : improve this check
- String[] files = new File(solrHomePath).list();
+ String[] files = solrHomePathFile.list();
Arrays.sort(files);
if (Arrays.binarySearch(files, coreName) < 0) {
throw new IOException("could not find a directory with the
coreName '" + coreName
+ "' in the solrHomePath '" + solrHomePath + "'");
}
-
-
}
private void copy(String resource, String dir) throws IOException {
@@ -235,4 +261,21 @@ public class EmbeddedSolrServerProvider
}
}
}
+
+ @Override
+ public void close() throws IOException {
+ try {
+ getSolrServer().shutdown();
+ } catch (Exception e) {
+ // do nothing
+ } try {
+ getIndexingSolrServer().shutdown();
+ } catch (Exception e) {
+ // do nothing
+ } try {
+ getSearchingSolrServer().shutdown();
+ } catch (Exception e) {
+ // do nothing
+ }
+ }
}
Modified:
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/RemoteSolrServerProvider.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/RemoteSolrServerProvider.java?rev=1660682&r1=1660681&r2=1660682&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/RemoteSolrServerProvider.java
(original)
+++
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/RemoteSolrServerProvider.java
Wed Feb 18 17:12:00 2015
@@ -52,6 +52,17 @@ public class RemoteSolrServerProvider im
@CheckForNull
@Override
public SolrServer getSolrServer() throws Exception {
+
+ SolrServer cachedEntry =
SolrServerRegistry.get(remoteSolrServerConfiguration,
SolrServerRegistry.Strategy.SEARCHING);
+
+ try {
+ if (cachedEntry != null && 0 == cachedEntry.ping().getStatus()) {
+ return cachedEntry;
+ }
+ } catch (Exception e) {
+ log.warn("cached entry is shut down, creating new one");
+ }
+
if (solrServer == null &&
remoteSolrServerConfiguration.getSolrZkHost() != null &&
remoteSolrServerConfiguration.getSolrZkHost().length() > 0) {
try {
solrServer = initializeWithCloudSolrServer();
@@ -69,6 +80,8 @@ public class RemoteSolrServerProvider im
}
if (solrServer == null) {
throw new IOException("could not connect to any remote Solr
server");
+ } else {
+ SolrServerRegistry.register(remoteSolrServerConfiguration,
solrServer, SolrServerRegistry.Strategy.SEARCHING);
}
return solrServer;
}
@@ -76,11 +89,23 @@ public class RemoteSolrServerProvider im
@CheckForNull
@Override
public SolrServer getIndexingSolrServer() throws Exception {
+
+ SolrServer cachedEntry =
SolrServerRegistry.get(remoteSolrServerConfiguration,
SolrServerRegistry.Strategy.INDEXING);
+
+ try {
+ if (cachedEntry != null && 0 == cachedEntry.ping().getStatus()) {
+ return cachedEntry;
+ }
+ } catch (Exception e) {
+ log.warn("cached entry is shut down, creating new one");
+ }
+
SolrServer server = getSolrServer();
if (server instanceof HttpSolrServer) {
String url = ((HttpSolrServer) server).getBaseURL();
server = new ConcurrentUpdateSolrServer(url, 1000, 4);
+ SolrServerRegistry.register(remoteSolrServerConfiguration,
solrServer, SolrServerRegistry.Strategy.INDEXING);
}
return server;
@@ -198,4 +223,21 @@ public class RemoteSolrServerProvider im
throw new SolrServerException(e);
}
}
+
+ @Override
+ public void close() throws IOException {
+ try {
+ getSolrServer().shutdown();
+ } catch (Exception e) {
+ // do nothing
+ } try {
+ getIndexingSolrServer().shutdown();
+ } catch (Exception e) {
+ // do nothing
+ } try {
+ getSearchingSolrServer().shutdown();
+ } catch (Exception e) {
+ // do nothing
+ }
+ }
}
Modified:
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/SolrServerProvider.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/SolrServerProvider.java?rev=1660682&r1=1660681&r2=1660682&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/SolrServerProvider.java
(original)
+++
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/SolrServerProvider.java
Wed Feb 18 17:12:00 2015
@@ -16,6 +16,7 @@
*/
package org.apache.jackrabbit.oak.plugins.index.solr.server;
+import java.io.Closeable;
import javax.annotation.CheckForNull;
import org.apache.solr.client.solrj.SolrServer;
@@ -23,7 +24,7 @@ import org.apache.solr.client.solrj.Solr
/**
* Provider of {@link org.apache.solr.client.solrj.SolrServer}s instances
*/
-public interface SolrServerProvider {
+public interface SolrServerProvider extends Closeable {
/**
* provides an already initialized {@link
org.apache.solr.client.solrj.SolrServer} to be used for either searching or
Added:
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/SolrServerRegistry.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/SolrServerRegistry.java?rev=1660682&view=auto
==============================================================================
---
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/SolrServerRegistry.java
(added)
+++
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/SolrServerRegistry.java
Wed Feb 18 17:12:00 2015
@@ -0,0 +1,71 @@
+/*
+ * 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.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.oak.plugins.index.solr.server;
+
+import java.util.HashMap;
+import java.util.Map;
+import javax.annotation.CheckForNull;
+import javax.annotation.Nonnull;
+
+import
org.apache.jackrabbit.oak.plugins.index.solr.configuration.SolrServerConfiguration;
+import org.apache.solr.client.solrj.SolrServer;
+
+/**
+ * A registry for {@link org.apache.solr.client.solrj.SolrServer}s
+ */
+public class SolrServerRegistry {
+
+ private static final Map<String, SolrServer> searchingServerRegistry = new
HashMap<String, SolrServer>();
+ private static final Map<String, SolrServer> indexingServerRegistry = new
HashMap<String, SolrServer>();
+
+ public static void register(@Nonnull SolrServerConfiguration
configuration, @Nonnull SolrServer solrServer,
+ @Nonnull Strategy strategy) {
+ switch (strategy) {
+ case INDEXING:
+ synchronized (indexingServerRegistry) {
+ indexingServerRegistry.put(configuration.toString(),
solrServer);
+ }
+ break;
+ case SEARCHING:
+ synchronized (searchingServerRegistry) {
+ searchingServerRegistry.put(configuration.toString(),
solrServer);
+ }
+ break;
+ }
+ }
+
+ @CheckForNull
+ public static SolrServer get(@Nonnull SolrServerConfiguration
configuration, @Nonnull Strategy strategy) {
+ switch (strategy) {
+ case INDEXING:
+ synchronized (indexingServerRegistry) {
+ return
indexingServerRegistry.get(configuration.toString());
+ }
+ case SEARCHING:
+ synchronized (searchingServerRegistry) {
+ return
searchingServerRegistry.get(configuration.toString());
+ }
+ }
+ return null;
+ }
+
+ enum Strategy {
+ INDEXING,
+ SEARCHING
+ }
+
+}
Propchange:
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/SolrServerRegistry.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/util/SolrIndexInitializer.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/util/SolrIndexInitializer.java?rev=1660682&r1=1660681&r2=1660682&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/util/SolrIndexInitializer.java
(original)
+++
jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/util/SolrIndexInitializer.java
Wed Feb 18 17:12:00 2015
@@ -21,8 +21,12 @@ import javax.annotation.Nonnull;
import org.apache.jackrabbit.JcrConstants;
import org.apache.jackrabbit.oak.api.Type;
import org.apache.jackrabbit.oak.plugins.index.IndexConstants;
+import org.apache.jackrabbit.oak.plugins.index.solr.query.SolrQueryIndex;
import org.apache.jackrabbit.oak.spi.lifecycle.RepositoryInitializer;
import org.apache.jackrabbit.oak.spi.state.NodeBuilder;
+import org.apache.jackrabbit.oak.spi.state.NodeState;
+
+import static
org.apache.jackrabbit.oak.plugins.index.IndexConstants.TYPE_PROPERTY_NAME;
/**
* A {@link org.apache.jackrabbit.oak.spi.lifecycle.RepositoryInitializer} for
Solr index
@@ -99,4 +103,8 @@ public class SolrIndexInitializer implem
}
}
+
+ public static boolean isSolrIndexNode(NodeState node) {
+ return SolrQueryIndex.TYPE.equals(node.getString(TYPE_PROPERTY_NAME));
+ }
}
Modified:
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/jcr/SolrOakRepositoryStub.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/jcr/SolrOakRepositoryStub.java?rev=1660682&r1=1660681&r2=1660682&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/jcr/SolrOakRepositoryStub.java
(original)
+++
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/jcr/SolrOakRepositoryStub.java
Wed Feb 18 17:12:00 2015
@@ -17,6 +17,7 @@
package org.apache.jackrabbit.oak.jcr;
import java.io.File;
+import java.io.IOException;
import java.util.Properties;
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
@@ -53,6 +54,11 @@ public class SolrOakRepositoryStub exten
throw new RuntimeException();
}
SolrServerProvider solrServerProvider = new SolrServerProvider() {
+ @Override
+ public void close() throws IOException {
+
+ }
+
@CheckForNull
@Override
public SolrServer getSolrServer() throws Exception {
Modified:
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/SolrBaseTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/SolrBaseTest.java?rev=1660682&r1=1660681&r2=1660682&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/SolrBaseTest.java
(original)
+++
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/SolrBaseTest.java
Wed Feb 18 17:12:00 2015
@@ -30,6 +30,8 @@ import org.apache.jackrabbit.oak.plugins
import org.apache.jackrabbit.oak.plugins.nodetype.write.InitialContent;
import org.apache.jackrabbit.oak.plugins.segment.SegmentNodeStore;
import org.apache.jackrabbit.oak.spi.commit.EditorHook;
+import org.apache.jackrabbit.oak.spi.commit.Observer;
+import org.apache.jackrabbit.oak.spi.query.QueryIndexProvider;
import org.apache.jackrabbit.oak.spi.security.OpenSecurityProvider;
import org.apache.jackrabbit.oak.spi.state.NodeStore;
import org.apache.solr.client.solrj.SolrServer;
@@ -59,7 +61,8 @@ public abstract class SolrBaseTest {
Oak oak = new Oak().with(new InitialContent())
.with(new OpenSecurityProvider())
.with(new SolrIndexInitializer(false)) // synchronous
- .with(new SolrQueryIndexProvider(provider, provider))
+ .with((QueryIndexProvider) new
SolrQueryIndexProvider(provider, provider))
+ .with((Observer) new SolrQueryIndexProvider(provider,
provider))
.with(new SolrIndexEditorProvider(provider, provider));
repository = oak
.createContentRepository();
Modified:
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/TestUtils.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/TestUtils.java?rev=1660682&r1=1660681&r2=1660682&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/TestUtils.java
(original)
+++
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/TestUtils.java
Wed Feb 18 17:12:00 2015
@@ -17,6 +17,7 @@
package org.apache.jackrabbit.oak.plugins.index.solr;
import java.io.File;
+import java.io.IOException;
import javax.annotation.CheckForNull;
import javax.annotation.Nonnull;
@@ -25,12 +26,9 @@ import org.apache.jackrabbit.oak.plugins
import
org.apache.jackrabbit.oak.plugins.index.solr.configuration.EmbeddedSolrServerConfiguration;
import
org.apache.jackrabbit.oak.plugins.index.solr.configuration.OakSolrConfiguration;
import
org.apache.jackrabbit.oak.plugins.index.solr.configuration.OakSolrConfigurationProvider;
-import
org.apache.jackrabbit.oak.plugins.index.solr.configuration.SolrServerConfiguration;
import
org.apache.jackrabbit.oak.plugins.index.solr.server.EmbeddedSolrServerProvider;
import org.apache.jackrabbit.oak.plugins.index.solr.server.SolrServerProvider;
import org.apache.solr.client.solrj.SolrServer;
-import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer;
-import org.apache.solr.core.CoreContainer;
import static org.junit.Assert.assertTrue;
@@ -114,4 +112,8 @@ public class TestUtils
return configuration;
}
+ @Override
+ public void close() throws IOException {
+
+ }
}
Modified:
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/DefaultAnalyzersConfigurationTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/DefaultAnalyzersConfigurationTest.java?rev=1660682&r1=1660681&r2=1660682&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/DefaultAnalyzersConfigurationTest.java
(original)
+++
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/DefaultAnalyzersConfigurationTest.java
Wed Feb 18 17:12:00 2015
@@ -19,6 +19,7 @@ package org.apache.jackrabbit.oak.plugin
import java.io.Reader;
import java.io.StringReader;
import java.util.regex.Pattern;
+
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.BaseTokenStreamTestCase;
import org.apache.lucene.analysis.TokenStream;
Modified:
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexEditorTest.java
URL:
http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexEditorTest.java?rev=1660682&r1=1660681&r2=1660682&view=diff
==============================================================================
---
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexEditorTest.java
(original)
+++
jackrabbit/oak/trunk/oak-solr-core/src/test/java/org/apache/jackrabbit/oak/plugins/index/solr/index/SolrIndexEditorTest.java
Wed Feb 18 17:12:00 2015
@@ -46,7 +46,6 @@ public class SolrIndexEditorTest {
@Test
public void testIndexedProperties() throws Exception {
- NodeBuilder builder = mock(NodeBuilder.class);
SolrServer solrServer = TestUtils.createSolrServer();
OakSolrConfiguration configuration = TestUtils.getTestConfiguration();
IndexUpdateCallback callback = mock(IndexUpdateCallback.class);