From 8f7cec5866ac948c98b6442600984e04f0c0afc0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20T=C3=A1rraga=20Gim=C3=A9nez?= Date: Tue, 24 Sep 2024 17:17:44 +0200 Subject: [PATCH 1/5] storage: add Solr write timeout in the storage configuration file, #TASK-6981 --- .../core/config/SearchConfiguration.java | 59 ++++++++++--------- .../executors/VariantCommandExecutor.java | 12 ++-- .../main/resources/storage-configuration.yml | 1 + pom.xml | 1 + 4 files changed, 38 insertions(+), 35 deletions(-) diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/config/SearchConfiguration.java b/opencga-core/src/main/java/org/opencb/opencga/core/config/SearchConfiguration.java index 24badabfdb0..102df2e223c 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/config/SearchConfiguration.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/config/SearchConfiguration.java @@ -36,20 +36,29 @@ public class SearchConfiguration { private String manager; private boolean active; private int timeout; + private int writeTimeout; private int insertBatchSize; private static final String DEFAULT_MODE = "cloud"; private static final boolean DEFAULT_ACTIVE = true; private static final int DEFAULT_TIMEOUT = 30000; + private static final int DEFAULT_WRITE_TIMEOUT = 120000; private static final int DEFAULT_INSERT_BATCH_SIZE = 10000; public SearchConfiguration() { - this(Collections.emptyList(), "", DEFAULT_MODE, "", "", "", DEFAULT_ACTIVE, DEFAULT_TIMEOUT, DEFAULT_INSERT_BATCH_SIZE); + this(Collections.emptyList(), "", DEFAULT_MODE, "", "", "", DEFAULT_ACTIVE, DEFAULT_TIMEOUT, DEFAULT_WRITE_TIMEOUT, + DEFAULT_INSERT_BATCH_SIZE); } + @Deprecated public SearchConfiguration(List hosts, String configSet, String mode, String user, String password, String manager, boolean active, int timeout, int insertBatchSize) { + this(hosts, configSet, mode, user, password, manager, active, timeout, DEFAULT_WRITE_TIMEOUT, insertBatchSize); + } + + public SearchConfiguration(List hosts, String configSet, String mode, String user, String password, String manager, + boolean active, int timeout, int writeTimeout, int insertBatchSize) { this.hosts = hosts; this.configSet = configSet; this.mode = mode; @@ -58,32 +67,25 @@ public SearchConfiguration(List hosts, String configSet, String mode, St this.manager = manager; this.active = active; this.timeout = timeout; + this.writeTimeout = writeTimeout; this.insertBatchSize = insertBatchSize; } @Override public String toString() { - return "SearchConfiguration{" + - "hosts=" + hosts + - ", configSet='" + configSet + '\'' + - ", mode='" + mode + '\'' + - ", user='" + user + '\'' + - ", password='" + password + '\'' + - ", manager='" + manager + '\'' + - ", active=" + active + - ", timeout=" + timeout + - ", insertBatchSize=" + insertBatchSize + - '}'; - } - - @Deprecated - public String getHost() { - return String.join(",", getHosts()); - } - - @Deprecated - public SearchConfiguration setHost(String host) { - return setHosts(StringUtils.isEmpty(host) ? Collections.emptyList() : Arrays.asList(host.split(","))); + final StringBuilder sb = new StringBuilder("SearchConfiguration{"); + sb.append("hosts=").append(hosts); + sb.append(", configSet='").append(configSet).append('\''); + sb.append(", mode='").append(mode).append('\''); + sb.append(", user='").append(user).append('\''); + sb.append(", password='").append(password).append('\''); + sb.append(", manager='").append(manager).append('\''); + sb.append(", active=").append(active); + sb.append(", timeout=").append(timeout); + sb.append(", writeTimeout=").append(writeTimeout); + sb.append(", insertBatchSize=").append(insertBatchSize); + sb.append('}'); + return sb.toString(); } public List getHosts() { @@ -99,8 +101,9 @@ public String getConfigSet() { return configSet; } - public void setConfigSet(String configSet) { + public SearchConfiguration setConfigSet(String configSet) { this.configSet = configSet; + return this; } public String getMode() { @@ -157,14 +160,12 @@ public SearchConfiguration setTimeout(int timeout) { return this; } - @Deprecated - public int getRows() { - return insertBatchSize; + public int getWriteTimeout() { + return writeTimeout; } - @Deprecated - public SearchConfiguration setRows(int rows) { - this.insertBatchSize = rows; + public SearchConfiguration setWriteTimeout(int writeTimeout) { + this.writeTimeout = writeTimeout; return this; } diff --git a/opencga-storage/opencga-storage-app/src/main/java/org/opencb/opencga/storage/app/cli/client/executors/VariantCommandExecutor.java b/opencga-storage/opencga-storage-app/src/main/java/org/opencb/opencga/storage/app/cli/client/executors/VariantCommandExecutor.java index e564ae55f5c..b49538ab9d6 100644 --- a/opencga-storage/opencga-storage-app/src/main/java/org/opencb/opencga/storage/app/cli/client/executors/VariantCommandExecutor.java +++ b/opencga-storage/opencga-storage-app/src/main/java/org/opencb/opencga/storage/app/cli/client/executors/VariantCommandExecutor.java @@ -36,28 +36,28 @@ import org.opencb.commons.utils.FileUtils; import org.opencb.opencga.core.common.TimeUtils; import org.opencb.opencga.core.common.UriUtils; +import org.opencb.opencga.core.config.storage.StorageEngineConfiguration; +import org.opencb.opencga.core.models.common.mixins.GenericRecordAvroJsonMixin; import org.opencb.opencga.core.models.operations.variant.VariantAggregateFamilyParams; import org.opencb.opencga.core.models.operations.variant.VariantAggregateParams; import org.opencb.opencga.storage.app.cli.CommandExecutor; import org.opencb.opencga.storage.app.cli.GeneralCliOptions; import org.opencb.opencga.storage.app.cli.client.options.StorageVariantCommandOptions; import org.opencb.opencga.storage.core.StorageEngineFactory; -import org.opencb.opencga.core.config.storage.StorageEngineConfiguration; import org.opencb.opencga.storage.core.exceptions.StorageEngineException; import org.opencb.opencga.storage.core.metadata.models.ProjectMetadata; import org.opencb.opencga.storage.core.variant.VariantStorageEngine; import org.opencb.opencga.storage.core.variant.VariantStorageOptions; import org.opencb.opencga.storage.core.variant.VariantStoragePipeline; import org.opencb.opencga.storage.core.variant.adaptors.VariantQueryParam; -import org.opencb.opencga.storage.core.variant.query.VariantQueryUtils; import org.opencb.opencga.storage.core.variant.adaptors.iterators.VariantDBIterator; import org.opencb.opencga.storage.core.variant.annotation.DefaultVariantAnnotationManager; import org.opencb.opencga.storage.core.variant.annotation.VariantAnnotationManager; import org.opencb.opencga.storage.core.variant.annotation.VariantAnnotatorException; import org.opencb.opencga.storage.core.variant.io.VariantWriterFactory; -import org.opencb.opencga.core.models.common.mixins.GenericRecordAvroJsonMixin; -import org.opencb.opencga.storage.core.variant.search.solr.VariantSearchManager; +import org.opencb.opencga.storage.core.variant.query.VariantQueryUtils; import org.opencb.opencga.storage.core.variant.search.solr.SolrVariantDBIterator; +import org.opencb.opencga.storage.core.variant.search.solr.VariantSearchManager; import org.opencb.opencga.storage.core.variant.stats.DefaultVariantStatisticsManager; import java.io.*; @@ -68,8 +68,8 @@ import java.util.*; import java.util.function.Function; -import static org.opencb.opencga.storage.app.cli.client.options.StorageVariantCommandOptions.AggregateFamilyCommandOptions.AGGREGATE_FAMILY_COMMAND; import static org.opencb.opencga.storage.app.cli.client.options.StorageVariantCommandOptions.AggregateCommandOptions.AGGREGATE_COMMAND; +import static org.opencb.opencga.storage.app.cli.client.options.StorageVariantCommandOptions.AggregateFamilyCommandOptions.AGGREGATE_FAMILY_COMMAND; import static org.opencb.opencga.storage.app.cli.client.options.StorageVariantCommandOptions.GenericAnnotationDeleteCommandOptions.ANNOTATION_DELETE_COMMAND; import static org.opencb.opencga.storage.app.cli.client.options.StorageVariantCommandOptions.GenericAnnotationMetadataCommandOptions.ANNOTATION_METADATA_COMMAND; import static org.opencb.opencga.storage.app.cli.client.options.StorageVariantCommandOptions.GenericAnnotationQueryCommandOptions.ANNOTATION_QUERY_COMMAND; @@ -732,7 +732,7 @@ private void search() throws Exception { String solrUrl = (searchOptions.solrUrl == null ? "http://localhost:8983/solr/" : searchOptions.solrUrl); String dbName = (searchOptions.dbName == null ? "variants" : searchOptions.dbName); - variantStorageEngine.getConfiguration().getSearch().setHost(solrUrl); + variantStorageEngine.getConfiguration().getSearch().setHosts(Collections.singletonList(solrUrl)); // VariantSearchManager variantSearchManager = new VariantSearchManager(solrUrl, dbName); // VariantSearchManager variantSearchManager = new VariantSearchManager(variantStorageEngine.getStudyConfigurationManager(), diff --git a/opencga-storage/opencga-storage-core/src/main/resources/storage-configuration.yml b/opencga-storage/opencga-storage-core/src/main/resources/storage-configuration.yml index b9970d18eaf..2fc1a1c9d38 100644 --- a/opencga-storage/opencga-storage-core/src/main/resources/storage-configuration.yml +++ b/opencga-storage/opencga-storage-core/src/main/resources/storage-configuration.yml @@ -31,6 +31,7 @@ search: configSet: "${OPENCGA.STORAGE.SEARCH.CONFIG_SET}" mode: "cloud" timeout: ${OPENCGA.STORAGE.SEARCH.TIMEOUT} + writeTimeout: ${OPENCGA.STORAGE.SEARCH.WRITE.TIMEOUT} insertBatchSize: 5000 ## Clinical database for indexing the pathogenic variants reported. diff --git a/pom.xml b/pom.xml index e073746344d..f53b97b44d3 100644 --- a/pom.xml +++ b/pom.xml @@ -1397,6 +1397,7 @@ opencga-variant-configset-${project.parent.version} 30000 + 120000 http://localhost:8983/solr/ "" 30000 From 275719732f07fa6ecf5f5bea0f26277f78c70cc9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20T=C3=A1rraga=20Gim=C3=A9nez?= Date: Fri, 27 Sep 2024 12:54:39 +0200 Subject: [PATCH 2/5] storage: the variant storage engine uses a Solr client with extended timeout for write operations, #TASK-6981 --- .../core/variant/VariantStorageEngine.java | 4 ++-- .../solr/SolrInputDocumentDataWriter.java | 19 +++++++++++++++++++ .../solr/VariantSolrExternalResource.java | 3 +-- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStorageEngine.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStorageEngine.java index 77327d9d76a..bb30234f10f 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStorageEngine.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStorageEngine.java @@ -34,7 +34,6 @@ import org.opencb.opencga.core.models.operations.variant.VariantAggregateFamilyParams; import org.opencb.opencga.core.models.operations.variant.VariantAggregateParams; import org.opencb.opencga.core.models.variant.VariantSetupParams; -import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.storage.core.StorageEngine; import org.opencb.opencga.storage.core.StoragePipelineResult; import org.opencb.opencga.storage.core.exceptions.StorageEngineException; @@ -60,6 +59,7 @@ import org.opencb.opencga.storage.core.variant.io.VariantWriterFactory.VariantOutputFormat; import org.opencb.opencga.storage.core.variant.query.ParsedVariantQuery; import org.opencb.opencga.storage.core.variant.query.VariantQueryParser; +import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.storage.core.variant.query.VariantQueryUtils; import org.opencb.opencga.storage.core.variant.query.executors.*; import org.opencb.opencga.storage.core.variant.score.VariantScoreFormatDescriptor; @@ -794,7 +794,7 @@ protected void searchIndexLoadedFiles(List inputFiles, ObjectMap options) t protected SolrInputDocumentDataWriter newVariantSearchDataWriter(String collection) throws StorageEngineException { return new SolrInputDocumentDataWriter(collection, - getVariantSearchManager().getSolrClient(), + getVariantSearchManager().getSolrManager().newSolrClient(configuration.getSearch().getWriteTimeout()), true, getVariantSearchManager().getInsertBatchSize()); } diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/solr/SolrInputDocumentDataWriter.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/solr/SolrInputDocumentDataWriter.java index 5673652e052..6dc3b605f36 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/solr/SolrInputDocumentDataWriter.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/solr/SolrInputDocumentDataWriter.java @@ -9,12 +9,14 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import java.io.IOException; import java.util.List; public class SolrInputDocumentDataWriter implements DataWriter { private final String collection; private final SolrClient solrClient; + private boolean closeSolrClient; private final int insertBatchSize; private int serverBufferSize = 0; private int insertedDocuments = 0; @@ -23,8 +25,13 @@ public class SolrInputDocumentDataWriter implements DataWriter batch) throws Exception { UpdateResponse response = solrClient.add(collection, batch); addTimeMs += response.getElapsedTime(); diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/solr/VariantSolrExternalResource.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/solr/VariantSolrExternalResource.java index dc5a019baa1..0ccbfb3c5e3 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/solr/VariantSolrExternalResource.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/solr/VariantSolrExternalResource.java @@ -116,8 +116,7 @@ public VariantSearchManager configure(VariantStorageEngine variantStorageEngine) variantStorageEngine.getConfiguration().getSearch().setMode("core"); variantStorageEngine.getConfiguration().getSearch().setActive(true); VariantSearchManager variantSearchManager = variantStorageEngine.getVariantSearchManager(); - variantSearchManager.setSolrManager(new SolrManager(solrClient, "localhost", "core", - variantStorageEngine.getConfiguration().getSearch().getTimeout())); + variantSearchManager.setSolrManager(new SolrManager(solrClient, "localhost", "core")); variantSearchManager.setSolrClient(solrClient); return variantSearchManager; } From c8a00b04b60c34c67976ef3b36d01a429d3c80f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20T=C3=A1rraga=20Gim=C3=A9nez?= Date: Mon, 30 Sep 2024 10:57:47 +0200 Subject: [PATCH 3/5] search: update according to java-common-libs changes, and recover the deleled methods to mark them as deprecated for backward-compatibility, #TASK-6981 --- .../core/config/SearchConfiguration.java | 23 +++++++++++++++++++ .../search/solr/VariantSearchManager.java | 5 ---- .../VariantStorageSearchIntersectTest.java | 3 ++- .../solr/VariantSolrExternalResource.java | 2 +- 4 files changed, 26 insertions(+), 7 deletions(-) diff --git a/opencga-core/src/main/java/org/opencb/opencga/core/config/SearchConfiguration.java b/opencga-core/src/main/java/org/opencb/opencga/core/config/SearchConfiguration.java index 102df2e223c..728c524c9d3 100644 --- a/opencga-core/src/main/java/org/opencb/opencga/core/config/SearchConfiguration.java +++ b/opencga-core/src/main/java/org/opencb/opencga/core/config/SearchConfiguration.java @@ -23,6 +23,8 @@ import java.util.Collections; import java.util.List; +import static org.opencb.opencga.core.config.Configuration.reportUnusedField; + /** * Created by wasim on 09/11/16. */ @@ -88,6 +90,17 @@ public String toString() { return sb.toString(); } + @Deprecated + public String getHost() { + return null; + } + + @Deprecated + public SearchConfiguration setHost(String host) { + reportUnusedField("search.configuration#host", host); + return this; + } + public List getHosts() { return hosts; } @@ -169,6 +182,16 @@ public SearchConfiguration setWriteTimeout(int writeTimeout) { return this; } + @Deprecated + public int getRows() { + return 0; + } + + @Deprecated + public SearchConfiguration setRows(int rows) { + reportUnusedField("search.configuration#rows", rows); + return this; + } public int getInsertBatchSize() { return insertBatchSize; } diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/solr/VariantSearchManager.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/solr/VariantSearchManager.java index 374f5f9ffd6..6aaffcbec55 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/solr/VariantSearchManager.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/search/solr/VariantSearchManager.java @@ -693,11 +693,6 @@ public SolrClient getSolrClient() { return solrManager.getSolrClient(); } - public VariantSearchManager setSolrClient(SolrClient solrClient) { - this.solrManager.setSolrClient(solrClient); - return this; - } - public SolrQueryParser getSolrQueryParser() { return solrQueryParser; } diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageSearchIntersectTest.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageSearchIntersectTest.java index 28b7d0921ab..f50cabee188 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageSearchIntersectTest.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/VariantStorageSearchIntersectTest.java @@ -31,6 +31,7 @@ import org.opencb.commons.datastore.core.ObjectMap; import org.opencb.commons.datastore.core.Query; import org.opencb.commons.datastore.core.QueryOptions; +import org.opencb.commons.datastore.solr.SolrManager; import org.opencb.opencga.core.api.ParamConstants; import org.opencb.opencga.storage.core.variant.query.VariantQueryResult; import org.opencb.opencga.storage.core.StoragePipelineResult; @@ -92,8 +93,8 @@ public void before() throws Exception { // new Exception().printStackTrace(); // return invocation.callRealMethod(); // }).when(solrClient).query(anyString(), any()); + // Configure variant storage engine by using the current solrClient solr.configure(this.variantStorageEngine); - variantStorageEngine.getVariantSearchManager().setSolrClient(solrClient); for (VariantQueryExecutor variantQueryExecutor : variantStorageEngine.getVariantQueryExecutors()) { if (variantQueryExecutor instanceof SearchIndexVariantQueryExecutor) { this.variantQueryExecutor = ((SearchIndexVariantQueryExecutor) variantQueryExecutor); diff --git a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/solr/VariantSolrExternalResource.java b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/solr/VariantSolrExternalResource.java index 0ccbfb3c5e3..8a4469fff96 100644 --- a/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/solr/VariantSolrExternalResource.java +++ b/opencga-storage/opencga-storage-core/src/test/java/org/opencb/opencga/storage/core/variant/solr/VariantSolrExternalResource.java @@ -116,8 +116,8 @@ public VariantSearchManager configure(VariantStorageEngine variantStorageEngine) variantStorageEngine.getConfiguration().getSearch().setMode("core"); variantStorageEngine.getConfiguration().getSearch().setActive(true); VariantSearchManager variantSearchManager = variantStorageEngine.getVariantSearchManager(); + // Configure variant search manger by using the current solrClient variantSearchManager.setSolrManager(new SolrManager(solrClient, "localhost", "core")); - variantSearchManager.setSolrClient(solrClient); return variantSearchManager; } From e2ab75e810401cea6d014098ad4fae69bdad3e8c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20T=C3=A1rraga=20Gim=C3=A9nez?= Date: Mon, 7 Oct 2024 13:08:35 +0200 Subject: [PATCH 4/5] storage: add timeout comments in the storage configuration file, #TASK-6981 --- .../src/main/resources/storage-configuration.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/opencga-storage/opencga-storage-core/src/main/resources/storage-configuration.yml b/opencga-storage/opencga-storage-core/src/main/resources/storage-configuration.yml index 2fc1a1c9d38..faaba26d5fc 100644 --- a/opencga-storage/opencga-storage-core/src/main/resources/storage-configuration.yml +++ b/opencga-storage/opencga-storage-core/src/main/resources/storage-configuration.yml @@ -30,8 +30,8 @@ search: - ${OPENCGA.STORAGE.SEARCH.HOST} configSet: "${OPENCGA.STORAGE.SEARCH.CONFIG_SET}" mode: "cloud" - timeout: ${OPENCGA.STORAGE.SEARCH.TIMEOUT} - writeTimeout: ${OPENCGA.STORAGE.SEARCH.WRITE.TIMEOUT} + timeout: ${OPENCGA.STORAGE.SEARCH.TIMEOUT} # Timeout (in milliseconds) for read operations + writeTimeout: ${OPENCGA.STORAGE.SEARCH.WRITE.TIMEOUT} # Timeout (in milliseconds) for write operations insertBatchSize: 5000 ## Clinical database for indexing the pathogenic variants reported. From abf04bdbad1d446440c55dbd06d664209102b076 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Joaqu=C3=ADn=20T=C3=A1rraga=20Gim=C3=A9nez?= Date: Thu, 10 Oct 2024 08:45:06 +0200 Subject: [PATCH 5/5] storage: add log message, #TASK-6981 --- .../opencga/storage/core/variant/VariantStorageEngine.java | 1 + 1 file changed, 1 insertion(+) diff --git a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStorageEngine.java b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStorageEngine.java index bb30234f10f..44cb8a12635 100644 --- a/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStorageEngine.java +++ b/opencga-storage/opencga-storage-core/src/main/java/org/opencb/opencga/storage/core/variant/VariantStorageEngine.java @@ -793,6 +793,7 @@ protected void searchIndexLoadedFiles(List inputFiles, ObjectMap options) t } protected SolrInputDocumentDataWriter newVariantSearchDataWriter(String collection) throws StorageEngineException { + logger.info("Using SolrClient with a write timeout of {} ms", configuration.getSearch().getWriteTimeout()); return new SolrInputDocumentDataWriter(collection, getVariantSearchManager().getSolrManager().newSolrClient(configuration.getSearch().getWriteTimeout()), true, getVariantSearchManager().getInsertBatchSize());