You are viewing a plain text version of this content. The canonical link for it is here.
Posted to oak-commits@jackrabbit.apache.org by to...@apache.org on 2015/04/28 16:11:23 UTC

svn commit: r1676539 - in /jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr: configuration/nodestate/ osgi/ server/

Author: tommaso
Date: Tue Apr 28 14:11:23 2015
New Revision: 1676539

URL: http://svn.apache.org/r1676539
Log:
OAK-2820 - SSP service using OakSolrServer

Modified:
    jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/nodestate/NodeStateSolrServersObserver.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/server/OakSolrServer.java
    jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/SolrServerRegistry.java

Modified: jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/nodestate/NodeStateSolrServersObserver.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/NodeStateSolrServersObserver.java?rev=1676539&r1=1676538&r2=1676539&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/nodestate/NodeStateSolrServersObserver.java (original)
+++ jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/configuration/nodestate/NodeStateSolrServersObserver.java Tue Apr 28 14:11:23 2015
@@ -46,20 +46,20 @@ public class NodeStateSolrServersObserve
     }
 
     private void shutdownRegisteredSolrServers(NodeState nodeState) {
-        log.debug("shutting down servers at {}", nodeState);
+        log.info("shutting down servers at {}", nodeState);
         NodeStateSolrServerConfigurationProvider nodeStateSolrServerConfigurationProvider = new NodeStateSolrServerConfigurationProvider(nodeState);
         SolrServerConfiguration<SolrServerProvider> solrServerConfiguration = nodeStateSolrServerConfigurationProvider.getSolrServerConfiguration();
         SolrServer searchingSolrServer = SolrServerRegistry.get(solrServerConfiguration, SolrServerRegistry.Strategy.SEARCHING);
         if (searchingSolrServer != null) {
             searchingSolrServer.shutdown();
-            log.debug("searching SolrServer shut down");
+            log.info("searching SolrServer shut down");
             SolrServerRegistry.unregister(solrServerConfiguration, SolrServerRegistry.Strategy.SEARCHING);
         }
 
         SolrServer indexingSolrServer = SolrServerRegistry.get(solrServerConfiguration, SolrServerRegistry.Strategy.INDEXING);
         if (indexingSolrServer != null) {
             indexingSolrServer.shutdown();
-            log.debug("indexing SolrServer shut down");
+            log.info("indexing SolrServer shut down");
             SolrServerRegistry.unregister(solrServerConfiguration, SolrServerRegistry.Strategy.INDEXING);
         }
     }

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=1676539&r1=1676538&r2=1676539&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 Tue Apr 28 14:11:23 2015
@@ -33,6 +33,7 @@ import org.apache.felix.scr.annotations.
 import org.apache.felix.scr.annotations.Service;
 import org.apache.jackrabbit.oak.plugins.index.solr.configuration.SolrServerConfiguration;
 import org.apache.jackrabbit.oak.plugins.index.solr.configuration.SolrServerConfigurationProvider;
+import org.apache.jackrabbit.oak.plugins.index.solr.server.OakSolrServer;
 import org.apache.jackrabbit.oak.plugins.index.solr.server.SolrServerProvider;
 import org.apache.solr.client.solrj.SolrServer;
 import org.osgi.service.component.ComponentContext;
@@ -102,24 +103,6 @@ public class SolrServerProviderService i
                 cachedSolrServer = null;
             }
         }
-        if (cachedIndexingSolrServer != null) {
-            try {
-                cachedIndexingSolrServer.shutdown();
-            } catch (Exception e) {
-                log.error("could not correctly shutdown Solr {} server {}", serverType, cachedIndexingSolrServer);
-            } finally {
-                cachedIndexingSolrServer = null;
-            }
-        }
-        if (cachedSearchingSolrServer != null) {
-            try {
-                cachedSearchingSolrServer.shutdown();
-            } catch (Exception e) {
-                log.error("could not correctly shutdown Solr {} server {}", serverType, cachedSearchingSolrServer);
-            } finally {
-                cachedSearchingSolrServer = null;
-            }
-        }
     }
 
     protected void bindSolrServerConfigurationProvider(final SolrServerConfigurationProvider solrServerConfigurationProvider, Map<String, Object> properties) {
@@ -172,23 +155,13 @@ public class SolrServerProviderService i
     @CheckForNull
     @Override
     public SolrServer getIndexingSolrServer() throws Exception {
-        synchronized (solrServerConfigurationProviders) {
-            if (cachedIndexingSolrServer == null) {
-                cachedIndexingSolrServer = getServer();
-            }
-            return cachedIndexingSolrServer;
-        }
+        return getSolrServer();
     }
 
     @CheckForNull
     @Override
     public SolrServer getSearchingSolrServer() throws Exception {
-        synchronized (solrServerConfigurationProviders) {
-            if (cachedSearchingSolrServer == null) {
-                cachedSearchingSolrServer = getServer();
-            }
-            return cachedSearchingSolrServer;
-        }
+        return getSolrServer();
     }
 
     private SolrServer getServer() {
@@ -197,9 +170,7 @@ public class SolrServerProviderService i
             SolrServerConfigurationProvider solrServerConfigurationProvider = solrServerConfigurationProviders.get(serverType);
             if (solrServerConfigurationProvider != null) {
                 try {
-                    SolrServerConfiguration solrServerConfiguration = solrServerConfigurationProvider.getSolrServerConfiguration();
-                    SolrServerProvider solrServerProvider = solrServerConfiguration.getProvider();
-                    solrServer = solrServerProvider.getSolrServer();
+                    solrServer = new OakSolrServer(solrServerConfigurationProvider);
                     log.info("created new SolrServer {}", solrServer);
                 } catch (Exception e) {
                     log.error("could not get a SolrServerProvider of type {}", serverType, e);

Modified: jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/OakSolrServer.java
URL: http://svn.apache.org/viewvc/jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/OakSolrServer.java?rev=1676539&r1=1676538&r2=1676539&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/OakSolrServer.java (original)
+++ jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/OakSolrServer.java Tue Apr 28 14:11:23 2015
@@ -19,6 +19,7 @@ package org.apache.jackrabbit.oak.plugin
 import java.io.IOException;
 import javax.annotation.Nonnull;
 
+import org.apache.jackrabbit.oak.plugins.index.solr.configuration.EmbeddedSolrServerConfiguration;
 import org.apache.jackrabbit.oak.plugins.index.solr.configuration.SolrServerConfiguration;
 import org.apache.jackrabbit.oak.plugins.index.solr.configuration.SolrServerConfigurationProvider;
 import org.apache.solr.client.solrj.SolrRequest;
@@ -61,8 +62,15 @@ public class OakSolrServer extends SolrS
         SolrServerRegistry.Strategy strategy = isIndex ? SolrServerRegistry.Strategy.INDEXING : SolrServerRegistry.Strategy.SEARCHING;
         SolrServer solrServer = SolrServerRegistry.get(solrServerConfiguration, strategy);
         if (solrServer == null) {
-            solrServer = isIndex ? solrServerProvider.getIndexingSolrServer() : solrServerProvider.getSearchingSolrServer();
-            SolrServerRegistry.register(solrServerConfiguration, solrServer, strategy);
+            if (solrServerConfiguration instanceof EmbeddedSolrServerConfiguration) {
+                solrServer = solrServerProvider.getSolrServer();
+                // the same Solr server has to be used for both
+                SolrServerRegistry.register(solrServerConfiguration, solrServer, SolrServerRegistry.Strategy.INDEXING);
+                SolrServerRegistry.register(solrServerConfiguration, solrServer, SolrServerRegistry.Strategy.SEARCHING);
+            } else {
+                solrServer = isIndex ? solrServerProvider.getIndexingSolrServer() : solrServerProvider.getSearchingSolrServer();
+                SolrServerRegistry.register(solrServerConfiguration, solrServer, strategy);
+            }
         }
         return solrServer;
     }
@@ -71,6 +79,8 @@ public class OakSolrServer extends SolrS
     public void shutdown() {
         try {
             solrServerProvider.close();
+            SolrServerRegistry.unregister(solrServerConfiguration, SolrServerRegistry.Strategy.INDEXING);
+            SolrServerRegistry.unregister(solrServerConfiguration, SolrServerRegistry.Strategy.SEARCHING);
         } catch (IOException e) {
             // do nothing
         }

Modified: 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=1676539&r1=1676538&r2=1676539&view=diff
==============================================================================
--- jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/SolrServerRegistry.java (original)
+++ jackrabbit/oak/trunk/oak-solr-core/src/main/java/org/apache/jackrabbit/oak/plugins/index/solr/server/SolrServerRegistry.java Tue Apr 28 14:11:23 2015
@@ -63,7 +63,7 @@ public class SolrServerRegistry {
         return null;
     }
 
-    public static void unregister(SolrServerConfiguration<SolrServerProvider> configuration, @Nonnull Strategy strategy) {
+    public static void unregister(SolrServerConfiguration configuration, @Nonnull Strategy strategy) {
         switch (strategy) {
             case INDEXING:
                 synchronized (indexingServerRegistry) {