You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@metron.apache.org by rm...@apache.org on 2019/04/08 17:25:14 UTC
[metron] branch master updated: METRON-2022 Metron rest creates
large number of connections to ZK which causes subsequent connection to zk
fail (merrimanr) closes apache/metron#1367
This is an automated email from the ASF dual-hosted git repository.
rmerriman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/metron.git
The following commit(s) were added to refs/heads/master by this push:
new a1c257c METRON-2022 Metron rest creates large number of connections to ZK which causes subsequent connection to zk fail (merrimanr) closes apache/metron#1367
a1c257c is described below
commit a1c257c6a583ba705d5e551fb5e7f5c9862097ac
Author: merrimanr <me...@gmail.com>
AuthorDate: Mon Apr 8 12:25:00 2019 -0500
METRON-2022 Metron rest creates large number of connections to ZK which causes subsequent connection to zk fail (merrimanr) closes apache/metron#1367
---
.../metron/solr/client/SolrClientFactory.java | 84 ++++++++++++++++++++++
.../java/org/apache/metron/solr/dao/SolrDao.java | 33 +--------
.../apache/metron/solr/dao/SolrMetaAlertDao.java | 6 +-
.../solr/dao/SolrMetaAlertRetrieveLatestDao.java | 8 ++-
.../metron/solr/dao/SolrMetaAlertUpdateDao.java | 5 +-
.../metron/solr/client/SolrClientFactoryTest.java | 57 +++++++++++++++
.../org/apache/metron/solr/dao/SolrDaoTest.java | 50 ++-----------
.../metron/solr/dao/SolrMetaAlertDaoTest.java | 20 ++++++
.../integration/SolrMetaAlertIntegrationTest.java | 11 +--
.../SolrRetrieveLatestIntegrationTest.java | 2 +
.../integration/SolrSearchIntegrationTest.java | 2 +
.../integration/SolrUpdateIntegrationTest.java | 2 +
12 files changed, 194 insertions(+), 86 deletions(-)
diff --git a/metron-platform/metron-solr/src/main/java/org/apache/metron/solr/client/SolrClientFactory.java b/metron-platform/metron-solr/src/main/java/org/apache/metron/solr/client/SolrClientFactory.java
new file mode 100644
index 0000000..4c704d9
--- /dev/null
+++ b/metron-platform/metron-solr/src/main/java/org/apache/metron/solr/client/SolrClientFactory.java
@@ -0,0 +1,84 @@
+/*
+ * 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.metron.solr.client;
+
+import com.google.common.base.Splitter;
+import org.apache.solr.client.solrj.SolrClient;
+import org.apache.solr.client.solrj.impl.CloudSolrClient;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.io.IOException;
+import java.lang.invoke.MethodHandles;
+import java.util.List;
+import java.util.Map;
+
+import static org.apache.metron.solr.SolrConstants.SOLR_ZOOKEEPER;
+
+/**
+ * Factory for creating a SolrClient. The default implementation of SolrClient is CloudSolrClient.
+ */
+public class SolrClientFactory {
+
+ private static final Logger LOG = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+ private static SolrClient solrClient;
+
+ /**
+ * Creates a SolrClient.
+ * @param globalConfig Global config
+ * @return SolrClient
+ */
+ public static SolrClient create(Map<String, Object> globalConfig) {
+ if (solrClient == null) {
+ synchronized (SolrClientFactory.class) {
+ if (solrClient == null) {
+ solrClient = new CloudSolrClient.Builder().withZkHost(getZkHosts(globalConfig)).build();
+ }
+ }
+ }
+ return solrClient;
+ }
+
+ /**
+ * Closes the SolrClient connection and releases the reference.
+ */
+ public static void close() {
+ synchronized (SolrClientFactory.class) {
+ if (solrClient != null) {
+ try {
+ solrClient.close();
+ } catch (IOException e) {
+ LOG.error(e.getMessage(), e);
+ } finally {
+ solrClient = null;
+ }
+ }
+ }
+ }
+
+ /**
+ * Retrieves zookeeper hosts from the global config and formats them for CloudSolrClient instantiation.
+ * @param globalConfig Global config
+ * @return A list of properly formatted zookeeper servers
+ */
+ protected static List<String> getZkHosts(Map<String, Object> globalConfig) {
+ return Splitter.on(',').trimResults()
+ .splitToList((String) globalConfig.getOrDefault(SOLR_ZOOKEEPER, ""));
+ }
+}
diff --git a/metron-platform/metron-solr/src/main/java/org/apache/metron/solr/dao/SolrDao.java b/metron-platform/metron-solr/src/main/java/org/apache/metron/solr/dao/SolrDao.java
index e6906f3..4a58808 100644
--- a/metron-platform/metron-solr/src/main/java/org/apache/metron/solr/dao/SolrDao.java
+++ b/metron-platform/metron-solr/src/main/java/org/apache/metron/solr/dao/SolrDao.java
@@ -17,9 +17,6 @@
*/
package org.apache.metron.solr.dao;
-import static org.apache.metron.solr.SolrConstants.SOLR_ZOOKEEPER;
-
-import com.google.common.base.Splitter;
import java.io.IOException;
import java.lang.invoke.MethodHandles;
import java.util.List;
@@ -40,8 +37,8 @@ import org.apache.metron.indexing.dao.update.CommentAddRemoveRequest;
import org.apache.metron.indexing.dao.update.Document;
import org.apache.metron.indexing.dao.update.OriginalNotFoundException;
import org.apache.metron.indexing.dao.update.PatchRequest;
+import org.apache.metron.solr.client.SolrClientFactory;
import org.apache.solr.client.solrj.SolrClient;
-import org.apache.solr.client.solrj.impl.CloudSolrClient;
import org.apache.solr.client.solrj.impl.HttpClientUtil;
import org.apache.solr.client.solrj.impl.Krb5HttpClientConfigurer;
import org.slf4j.Logger;
@@ -86,7 +83,7 @@ public class SolrDao implements IndexDao {
}
if (this.client == null) {
this.accessConfig = config;
- this.client = getSolrClient(getZkHosts());
+ this.client = SolrClientFactory.create(config.getGlobalConfigSupplier().get());
this.solrSearchDao = new SolrSearchDao(this.client, this.accessConfig);
this.solrRetrieveLatestDao = new SolrRetrieveLatestDao(this.client, this.accessConfig);
this.solrUpdateDao = new SolrUpdateDao(this.client, this.solrRetrieveLatestDao, this.accessConfig);
@@ -167,32 +164,6 @@ public class SolrDao implements IndexDao {
return this.solrUpdateDao.removeCommentFromAlert(request, latest);
}
- /**
- * Builds a Solr client using the ZK hosts from the global config.
- * @return SolrClient
- */
- public SolrClient getSolrClient() {
- return new CloudSolrClient.Builder().withZkHost(getZkHosts()).build();
- }
-
- /**
- * Builds a Solr client using the ZK hosts specified.
- * @return SolrClient
- */
- public SolrClient getSolrClient(List<String> zkHosts) {
- return new CloudSolrClient.Builder().withZkHost(zkHosts).build();
- }
-
- /**
- * Get ZK hosts from the global config.
- * @return List of ZkHosts
- */
- public List<String> getZkHosts() {
- Map<String, Object> globalConfig = accessConfig.getGlobalConfigSupplier().get();
- return Splitter.on(',').trimResults()
- .splitToList((String) globalConfig.getOrDefault(SOLR_ZOOKEEPER, ""));
- }
-
void enableKerberos() {
HttpClientUtil.addConfigurer(new Krb5HttpClientConfigurer());
}
diff --git a/metron-platform/metron-solr/src/main/java/org/apache/metron/solr/dao/SolrMetaAlertDao.java b/metron-platform/metron-solr/src/main/java/org/apache/metron/solr/dao/SolrMetaAlertDao.java
index 8ef9484..26dc25d 100644
--- a/metron-platform/metron-solr/src/main/java/org/apache/metron/solr/dao/SolrMetaAlertDao.java
+++ b/metron-platform/metron-solr/src/main/java/org/apache/metron/solr/dao/SolrMetaAlertDao.java
@@ -47,6 +47,7 @@ import org.apache.metron.indexing.dao.update.CommentAddRemoveRequest;
import org.apache.metron.indexing.dao.update.Document;
import org.apache.metron.indexing.dao.update.OriginalNotFoundException;
import org.apache.metron.indexing.dao.update.PatchRequest;
+import org.apache.metron.solr.client.SolrClientFactory;
import org.apache.solr.client.solrj.SolrClient;
public class SolrMetaAlertDao implements MetaAlertDao {
@@ -144,10 +145,11 @@ public class SolrMetaAlertDao implements MetaAlertDao {
}
};
- SolrClient solrClient = solrDao.getSolrClient(solrDao.getZkHosts());
+ SolrClient solrClient = SolrClientFactory.create(globalConfigSupplier.get());
this.metaAlertSearchDao = new SolrMetaAlertSearchDao(solrClient, solrDao.getSolrSearchDao(), config);
- this.metaAlertRetrieveLatestDao = new SolrMetaAlertRetrieveLatestDao(solrDao);
+ this.metaAlertRetrieveLatestDao = new SolrMetaAlertRetrieveLatestDao(solrClient, solrDao);
this.metaAlertUpdateDao = new SolrMetaAlertUpdateDao(
+ solrClient,
solrDao,
metaAlertSearchDao,
metaAlertRetrieveLatestDao,
diff --git a/metron-platform/metron-solr/src/main/java/org/apache/metron/solr/dao/SolrMetaAlertRetrieveLatestDao.java b/metron-platform/metron-solr/src/main/java/org/apache/metron/solr/dao/SolrMetaAlertRetrieveLatestDao.java
index 2797df2..e679d9f 100644
--- a/metron-platform/metron-solr/src/main/java/org/apache/metron/solr/dao/SolrMetaAlertRetrieveLatestDao.java
+++ b/metron-platform/metron-solr/src/main/java/org/apache/metron/solr/dao/SolrMetaAlertRetrieveLatestDao.java
@@ -27,6 +27,7 @@ import org.apache.metron.indexing.dao.metaalert.MetaAlertConstants;
import org.apache.metron.indexing.dao.metaalert.MetaAlertRetrieveLatestDao;
import org.apache.metron.indexing.dao.search.GetRequest;
import org.apache.metron.indexing.dao.update.Document;
+import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.response.QueryResponse;
@@ -36,8 +37,10 @@ public class SolrMetaAlertRetrieveLatestDao implements
MetaAlertRetrieveLatestDao {
private SolrDao solrDao;
+ private SolrClient solrClient;
- public SolrMetaAlertRetrieveLatestDao(SolrDao solrDao) {
+ public SolrMetaAlertRetrieveLatestDao(SolrClient client, SolrDao solrDao) {
+ this.solrClient = client;
this.solrDao = solrDao;
}
@@ -52,8 +55,7 @@ public class SolrMetaAlertRetrieveLatestDao implements
.setFields("*", "[child parentFilter=" + guidClause + " limit=999]");
try {
- QueryResponse response = solrDao.getSolrClient(solrDao.getZkHosts())
- .query(METAALERTS_COLLECTION, query);
+ QueryResponse response = solrClient.query(METAALERTS_COLLECTION, query);
// GUID is unique, so it's definitely the first result
if (response.getResults().size() == 1) {
SolrDocument result = response.getResults().get(0);
diff --git a/metron-platform/metron-solr/src/main/java/org/apache/metron/solr/dao/SolrMetaAlertUpdateDao.java b/metron-platform/metron-solr/src/main/java/org/apache/metron/solr/dao/SolrMetaAlertUpdateDao.java
index 124d4be..9072f6a 100644
--- a/metron-platform/metron-solr/src/main/java/org/apache/metron/solr/dao/SolrMetaAlertUpdateDao.java
+++ b/metron-platform/metron-solr/src/main/java/org/apache/metron/solr/dao/SolrMetaAlertUpdateDao.java
@@ -59,12 +59,13 @@ public class SolrMetaAlertUpdateDao extends AbstractLuceneMetaAlertUpdateDao imp
* @param retrieveLatestDao A RetrieveLatestDao for getting the current state of items being
* mutated.
*/
- public SolrMetaAlertUpdateDao(SolrDao solrDao,
+ public SolrMetaAlertUpdateDao(SolrClient solrClient,
+ SolrDao solrDao,
SolrMetaAlertSearchDao metaAlertSearchDao,
SolrMetaAlertRetrieveLatestDao retrieveLatestDao,
MetaAlertConfig config) {
super(solrDao, retrieveLatestDao, config);
- this.solrClient = solrDao.getSolrClient(solrDao.getZkHosts());
+ this.solrClient = solrClient;
this.metaAlertSearchDao = metaAlertSearchDao;
}
diff --git a/metron-platform/metron-solr/src/test/java/org/apache/metron/solr/client/SolrClientFactoryTest.java b/metron-platform/metron-solr/src/test/java/org/apache/metron/solr/client/SolrClientFactoryTest.java
new file mode 100644
index 0000000..12fdcc7
--- /dev/null
+++ b/metron-platform/metron-solr/src/test/java/org/apache/metron/solr/client/SolrClientFactoryTest.java
@@ -0,0 +1,57 @@
+/*
+ * 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.metron.solr.client;
+
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import static org.apache.metron.solr.SolrConstants.SOLR_ZOOKEEPER;
+import static org.junit.Assert.assertEquals;
+
+public class SolrClientFactoryTest {
+
+ @Test
+ public void testGetZkHostsSingle() {
+ Map<String, Object> globalConfig = new HashMap<String, Object>() {{
+ put(SOLR_ZOOKEEPER, " zookeeper:2181 ");
+ }};
+
+ List<String> actual = SolrClientFactory.getZkHosts(globalConfig);
+ List<String> expected = new ArrayList<>();
+ expected.add("zookeeper:2181");
+ assertEquals(expected, actual);
+ }
+
+ @Test
+ public void testGetZkHostsMultiple() {
+ Map<String, Object> globalConfig = new HashMap<String, Object>() {{
+ put(SOLR_ZOOKEEPER, " zookeeper:2181 , zookeeper2:2181 ");
+ }};
+
+ List<String> actual = SolrClientFactory.getZkHosts(globalConfig);
+ List<String> expected = new ArrayList<>();
+ expected.add("zookeeper:2181");
+ expected.add("zookeeper2:2181");
+ assertEquals(expected, actual);
+ }
+}
diff --git a/metron-platform/metron-solr/src/test/java/org/apache/metron/solr/dao/SolrDaoTest.java b/metron-platform/metron-solr/src/test/java/org/apache/metron/solr/dao/SolrDaoTest.java
index 9d84669..df7845f 100644
--- a/metron-platform/metron-solr/src/test/java/org/apache/metron/solr/dao/SolrDaoTest.java
+++ b/metron-platform/metron-solr/src/test/java/org/apache/metron/solr/dao/SolrDaoTest.java
@@ -18,20 +18,17 @@
package org.apache.metron.solr.dao;
import static org.apache.metron.solr.SolrConstants.SOLR_ZOOKEEPER;
-import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.verify;
import static org.mockito.internal.verification.VerificationModeFactory.times;
import static org.powermock.api.mockito.PowerMockito.doNothing;
-import static org.powermock.api.mockito.PowerMockito.doReturn;
import static org.powermock.api.mockito.PowerMockito.mock;
+import static org.powermock.api.mockito.PowerMockito.mockStatic;
import static org.powermock.api.mockito.PowerMockito.spy;
+import static org.powermock.api.mockito.PowerMockito.when;
import static org.powermock.api.mockito.PowerMockito.whenNew;
-import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Collections;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
import java.util.Optional;
import org.apache.metron.indexing.dao.AccessConfig;
@@ -39,6 +36,7 @@ import org.apache.metron.indexing.dao.search.GetRequest;
import org.apache.metron.indexing.dao.search.GroupRequest;
import org.apache.metron.indexing.dao.search.SearchRequest;
import org.apache.metron.indexing.dao.update.Document;
+import org.apache.metron.solr.client.SolrClientFactory;
import org.apache.solr.client.solrj.SolrClient;
import org.junit.Before;
import org.junit.Rule;
@@ -49,7 +47,7 @@ import org.powermock.core.classloader.annotations.PrepareForTest;
import org.powermock.modules.junit4.PowerMockRunner;
@RunWith(PowerMockRunner.class)
-@PrepareForTest({SolrDao.class})
+@PrepareForTest({SolrDao.class, SolrClientFactory.class})
public class SolrDaoTest {
@Rule
@@ -70,6 +68,7 @@ public class SolrDaoTest {
solrUpdateDao = mock(SolrUpdateDao.class);
solrRetrieveLatestDao = mock(SolrRetrieveLatestDao.class);
solrColumnMetadataDao = mock(SolrColumnMetadataDao.class);
+ mockStatic(SolrClientFactory.class);
}
@Test
@@ -105,7 +104,7 @@ public class SolrDaoTest {
);
solrDao = spy(new SolrDao());
- doReturn(client).when(solrDao).getSolrClient(Collections.singletonList("zookeeper:2181"));
+ when(SolrClientFactory.create(accessConfig.getGlobalConfigSupplier().get())).thenReturn(client);
whenNew(SolrSearchDao.class).withArguments(client, accessConfig).thenReturn(solrSearchDao);
whenNew(SolrRetrieveLatestDao.class).withArguments(client, accessConfig)
.thenReturn(solrRetrieveLatestDao);
@@ -145,41 +144,4 @@ public class SolrDaoTest {
solrDao.getColumnMetadata(Arrays.asList("bro", "snort"));
verify(solrColumnMetadataDao).getColumnMetadata(Arrays.asList("bro", "snort"));
}
-
- @Test
- public void testGetZkHostsSingle() {
- AccessConfig accessConfig = new AccessConfig();
- accessConfig.setGlobalConfigSupplier(() ->
- new HashMap<String, Object>() {{
- put(SOLR_ZOOKEEPER, " zookeeper:2181 ");
- }}
- );
-
- SolrDao solrDao = new SolrDao();
- solrDao.init(accessConfig);
-
- List<String> actual = solrDao.getZkHosts();
- List<String> expected = new ArrayList<>();
- expected.add("zookeeper:2181");
- assertEquals(expected, actual);
- }
-
- @Test
- public void testGetZkHostsMultiple() {
- AccessConfig accessConfig = new AccessConfig();
- accessConfig.setGlobalConfigSupplier(() ->
- new HashMap<String, Object>() {{
- put(SOLR_ZOOKEEPER, " zookeeper:2181 , zookeeper2:2181 ");
- }}
- );
-
- SolrDao solrDao = new SolrDao();
- solrDao.init(accessConfig);
-
- List<String> actual = solrDao.getZkHosts();
- List<String> expected = new ArrayList<>();
- expected.add("zookeeper:2181");
- expected.add("zookeeper2:2181");
- assertEquals(expected, actual);
- }
}
diff --git a/metron-platform/metron-solr/src/test/java/org/apache/metron/solr/dao/SolrMetaAlertDaoTest.java b/metron-platform/metron-solr/src/test/java/org/apache/metron/solr/dao/SolrMetaAlertDaoTest.java
index 8920d5a..6817299 100644
--- a/metron-platform/metron-solr/src/test/java/org/apache/metron/solr/dao/SolrMetaAlertDaoTest.java
+++ b/metron-platform/metron-solr/src/test/java/org/apache/metron/solr/dao/SolrMetaAlertDaoTest.java
@@ -19,6 +19,9 @@
package org.apache.metron.solr.dao;
import static org.apache.metron.solr.SolrConstants.SOLR_ZOOKEEPER;
+import static org.powermock.api.mockito.PowerMockito.mock;
+import static org.powermock.api.mockito.PowerMockito.mockStatic;
+import static org.powermock.api.mockito.PowerMockito.when;
import java.io.IOException;
import java.util.Collections;
@@ -42,11 +45,20 @@ import org.apache.metron.indexing.dao.search.SearchResponse;
import org.apache.metron.indexing.dao.update.CommentAddRemoveRequest;
import org.apache.metron.indexing.dao.update.Document;
import org.apache.metron.indexing.dao.update.PatchRequest;
+import org.apache.metron.solr.client.SolrClientFactory;
+import org.apache.solr.client.solrj.SolrClient;
+import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.powermock.core.classloader.annotations.PrepareForTest;
+import org.powermock.modules.junit4.PowerMockRunner;
+@RunWith(PowerMockRunner.class)
+@PrepareForTest({SolrMetaAlertDao.class, SolrClientFactory.class})
public class SolrMetaAlertDaoTest {
private static AccessConfig accessConfig = new AccessConfig();
+ private SolrClient client;
@BeforeClass
public static void setupBefore() {
@@ -57,6 +69,14 @@ public class SolrMetaAlertDaoTest {
);
}
+ @SuppressWarnings("unchecked")
+ @Before
+ public void setUp() {
+ client = mock(SolrClient.class);
+ mockStatic(SolrClientFactory.class);
+ when(SolrClientFactory.create(accessConfig.getGlobalConfigSupplier().get())).thenReturn(client);
+ }
+
@Test(expected = IllegalArgumentException.class)
public void testInvalidInit() {
IndexDao dao = new IndexDao() {
diff --git a/metron-platform/metron-solr/src/test/java/org/apache/metron/solr/integration/SolrMetaAlertIntegrationTest.java b/metron-platform/metron-solr/src/test/java/org/apache/metron/solr/integration/SolrMetaAlertIntegrationTest.java
index 6687e9a..0e4b71f 100644
--- a/metron-platform/metron-solr/src/test/java/org/apache/metron/solr/integration/SolrMetaAlertIntegrationTest.java
+++ b/metron-platform/metron-solr/src/test/java/org/apache/metron/solr/integration/SolrMetaAlertIntegrationTest.java
@@ -45,12 +45,14 @@ import org.apache.metron.indexing.dao.search.GetRequest;
import org.apache.metron.indexing.dao.search.SearchRequest;
import org.apache.metron.indexing.dao.search.SearchResponse;
import org.apache.metron.indexing.dao.search.SortField;
+import org.apache.metron.solr.client.SolrClientFactory;
import org.apache.metron.solr.dao.SolrDao;
import org.apache.metron.solr.dao.SolrMetaAlertDao;
import org.apache.metron.solr.dao.SolrMetaAlertRetrieveLatestDao;
import org.apache.metron.solr.dao.SolrMetaAlertSearchDao;
import org.apache.metron.solr.dao.SolrMetaAlertUpdateDao;
import org.apache.metron.solr.integration.components.SolrComponent;
+import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.zookeeper.KeeperException;
import org.junit.After;
@@ -113,12 +115,12 @@ public class SolrMetaAlertIntegrationTest extends MetaAlertIntegrationTest {
}
};
-
+ SolrClient solrClient = SolrClientFactory.create(globalConfig);
SolrMetaAlertSearchDao searchDao = new SolrMetaAlertSearchDao(
- solrDao.getSolrClient(solrDao.getZkHosts()),
+ solrClient,
solrDao.getSolrSearchDao(), config);
- SolrMetaAlertRetrieveLatestDao retrieveLatestDao = new SolrMetaAlertRetrieveLatestDao(solrDao);
- SolrMetaAlertUpdateDao updateDao = new SolrMetaAlertUpdateDao(solrDao, searchDao,
+ SolrMetaAlertRetrieveLatestDao retrieveLatestDao = new SolrMetaAlertRetrieveLatestDao(solrClient, solrDao);
+ SolrMetaAlertUpdateDao updateDao = new SolrMetaAlertUpdateDao(solrClient, solrDao, searchDao,
retrieveLatestDao, config);
metaDao = new SolrMetaAlertDao(solrDao, searchDao, updateDao, retrieveLatestDao);
}
@@ -133,6 +135,7 @@ public class SolrMetaAlertIntegrationTest extends MetaAlertIntegrationTest {
@AfterClass
public static void teardown() {
+ SolrClientFactory.close();
if (solr != null) {
solr.stop();
}
diff --git a/metron-platform/metron-solr/src/test/java/org/apache/metron/solr/integration/SolrRetrieveLatestIntegrationTest.java b/metron-platform/metron-solr/src/test/java/org/apache/metron/solr/integration/SolrRetrieveLatestIntegrationTest.java
index f7c2e86..3978052 100644
--- a/metron-platform/metron-solr/src/test/java/org/apache/metron/solr/integration/SolrRetrieveLatestIntegrationTest.java
+++ b/metron-platform/metron-solr/src/test/java/org/apache/metron/solr/integration/SolrRetrieveLatestIntegrationTest.java
@@ -34,6 +34,7 @@ import org.apache.metron.indexing.dao.AccessConfig;
import org.apache.metron.indexing.dao.IndexDao;
import org.apache.metron.indexing.dao.search.GetRequest;
import org.apache.metron.indexing.dao.update.Document;
+import org.apache.metron.solr.client.SolrClientFactory;
import org.apache.metron.solr.dao.SolrDao;
import org.apache.metron.solr.integration.components.SolrComponent;
import org.apache.solr.client.solrj.SolrServerException;
@@ -85,6 +86,7 @@ public class SolrRetrieveLatestIntegrationTest {
@AfterClass
public static void teardown() {
+ SolrClientFactory.close();
solrComponent.stop();
}
diff --git a/metron-platform/metron-solr/src/test/java/org/apache/metron/solr/integration/SolrSearchIntegrationTest.java b/metron-platform/metron-solr/src/test/java/org/apache/metron/solr/integration/SolrSearchIntegrationTest.java
index 84f2222..081aa87 100644
--- a/metron-platform/metron-solr/src/test/java/org/apache/metron/solr/integration/SolrSearchIntegrationTest.java
+++ b/metron-platform/metron-solr/src/test/java/org/apache/metron/solr/integration/SolrSearchIntegrationTest.java
@@ -34,6 +34,7 @@ import org.apache.metron.indexing.dao.search.InvalidSearchException;
import org.apache.metron.indexing.dao.search.SearchRequest;
import org.apache.metron.indexing.dao.search.SearchResponse;
import org.apache.metron.integration.InMemoryComponent;
+import org.apache.metron.solr.client.SolrClientFactory;
import org.apache.metron.solr.dao.SolrDao;
import org.apache.metron.solr.integration.components.SolrComponent;
import org.apache.solr.client.solrj.SolrServerException;
@@ -64,6 +65,7 @@ public class SolrSearchIntegrationTest extends SearchIntegrationTest {
@AfterClass
public static void teardown() {
+ SolrClientFactory.close();
if (solrComponent != null) {
solrComponent.stop();
}
diff --git a/metron-platform/metron-solr/src/test/java/org/apache/metron/solr/integration/SolrUpdateIntegrationTest.java b/metron-platform/metron-solr/src/test/java/org/apache/metron/solr/integration/SolrUpdateIntegrationTest.java
index 5b96559..b2017ea 100644
--- a/metron-platform/metron-solr/src/test/java/org/apache/metron/solr/integration/SolrUpdateIntegrationTest.java
+++ b/metron-platform/metron-solr/src/test/java/org/apache/metron/solr/integration/SolrUpdateIntegrationTest.java
@@ -40,6 +40,7 @@ import org.apache.metron.indexing.dao.MultiIndexDao;
import org.apache.metron.indexing.dao.UpdateIntegrationTest;
import org.apache.metron.indexing.dao.update.Document;
import org.apache.metron.indexing.util.IndexingCacheUtil;
+import org.apache.metron.solr.client.SolrClientFactory;
import org.apache.metron.solr.dao.SolrDao;
import org.apache.metron.solr.integration.components.SolrComponent;
import org.junit.After;
@@ -106,6 +107,7 @@ public class SolrUpdateIntegrationTest extends UpdateIntegrationTest {
@AfterClass
public static void teardown() {
+ SolrClientFactory.close();
solrComponent.stop();
}