Skip to content

Commit dc341ed

Browse files
philwebbwilkinsona
andcommitted
Add config prop to enabled/disable Elasticsearch sniffer
Closes gh-47301 Co-Authored-By: Andy Wilkinson <[email protected]>
1 parent 3a9ab15 commit dc341ed

File tree

4 files changed

+23
-0
lines changed

4 files changed

+23
-0
lines changed

documentation/spring-boot-docs/src/docs/antora/modules/reference/pages/data/nosql.adoc

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -350,6 +350,8 @@ spring:
350350
delay-after-failure: "30s"
351351
----
352352

353+
To disable auto-configuration of the Sniffer, set configprop:spring.elasticsearch.restclient.sniffer.enabled[] to `false`.
354+
353355

354356

355357
[[data.nosql.elasticsearch.connecting-using-rest.javaapiclient]]

module/spring-boot-elasticsearch/src/main/java/org/springframework/boot/elasticsearch/autoconfigure/ElasticsearchProperties.java

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,11 @@ public Ssl getSsl() {
160160

161161
public static class Sniffer {
162162

163+
/**
164+
* Whether the sniffer is enabled.
165+
*/
166+
private boolean enabled = true;
167+
163168
/**
164169
* Interval between consecutive ordinary sniff executions.
165170
*/
@@ -170,6 +175,14 @@ public static class Sniffer {
170175
*/
171176
private Duration delayAfterFailure = Duration.ofMinutes(1);
172177

178+
public boolean isEnabled() {
179+
return this.enabled;
180+
}
181+
182+
public void setEnabled(boolean enabled) {
183+
this.enabled = enabled;
184+
}
185+
173186
public Duration getInterval() {
174187
return this.interval;
175188
}

module/spring-boot-elasticsearch/src/main/java/org/springframework/boot/elasticsearch/autoconfigure/ElasticsearchRestClientConfigurations.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
import org.springframework.beans.factory.ObjectProvider;
4848
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
4949
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
50+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
5051
import org.springframework.boot.autoconfigure.condition.ConditionalOnSingleCandidate;
5152
import org.springframework.boot.context.properties.PropertyMapper;
5253
import org.springframework.boot.elasticsearch.autoconfigure.ElasticsearchConnectionDetails.Node;
@@ -138,6 +139,7 @@ Rest5Client elasticsearchRestClient(Rest5ClientBuilder restClientBuilder) {
138139
@Configuration(proxyBeanMethods = false)
139140
@ConditionalOnClass(Sniffer.class)
140141
@ConditionalOnSingleCandidate(Rest5Client.class)
142+
@ConditionalOnProperty(name = "spring.elasticsearch.restclient.sniffer.enabled", matchIfMissing = true)
141143
static class RestClientSnifferConfiguration {
142144

143145
@Bean

module/spring-boot-elasticsearch/src/test/java/org/springframework/boot/elasticsearch/autoconfigure/ElasticsearchRestClientAutoConfigurationTests.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,6 +295,12 @@ void configureWhenCustomSnifferShouldBackOff() {
295295
});
296296
}
297297

298+
@Test
299+
void configureWithSnifferDisabled() {
300+
this.contextRunner.withPropertyValues("spring.elasticsearch.restclient.sniffer.enabled=false")
301+
.run((context) -> assertThat(context).doesNotHaveBean(Sniffer.class));
302+
}
303+
298304
@Test
299305
void definesPropertiesBasedConnectionDetailsByDefault() {
300306
this.contextRunner

0 commit comments

Comments
 (0)