Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,22 @@ public InstanceIdGenerator instanceIdGenerator() {
@ConditionalOnMissingBean
public StatusUpdater statusUpdater(InstanceRepository instanceRepository,
InstanceWebClient.Builder instanceWebClientBuilder) {
return new StatusUpdater(instanceRepository, instanceWebClientBuilder.build(), new ApiMediaTypeHandler());

StatusUpdater updater = new StatusUpdater(instanceRepository, instanceWebClientBuilder.build(),
new ApiMediaTypeHandler());

AdminServerProperties.MonitorProperties monitorProperties = this.adminServerProperties.getMonitor();

Duration timeout = monitorProperties.getDefaultTimeout();
Duration interval = monitorProperties.getStatusInterval();

if (timeout.compareTo(interval) > 0) {
timeout = interval;
}

updater.timeout(timeout);

return updater;
}

@Bean(initMethod = "start", destroyMethod = "stop")
Expand All @@ -117,8 +132,8 @@ public StatusUpdateTrigger statusUpdateTrigger(StatusUpdater statusUpdater, Publ
defaultTimeout, statusInterval);
}

return new StatusUpdateTrigger(statusUpdater, events, monitorProperties.getStatusInterval(),
monitorProperties.getStatusLifetime(), monitorProperties.getStatusMaxBackoff());
return new StatusUpdateTrigger(statusUpdater, events, statusInterval, monitorProperties.getStatusLifetime(),
monitorProperties.getStatusMaxBackoff());
}

@Bean
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,8 @@

package de.codecentric.boot.admin.server.config;

import java.time.Duration;

import com.hazelcast.config.Config;
import org.junit.jupiter.api.Test;
import org.springframework.boot.autoconfigure.AutoConfigurations;
Expand All @@ -36,6 +38,7 @@
import de.codecentric.boot.admin.server.notify.MailNotifier;
import de.codecentric.boot.admin.server.notify.NotificationTrigger;
import de.codecentric.boot.admin.server.notify.Notifier;
import de.codecentric.boot.admin.server.services.StatusUpdater;

import static org.assertj.core.api.Assertions.assertThat;

Expand Down Expand Up @@ -64,6 +67,28 @@ void hazelcastConfig() {
});
}

@Test
void shouldApplyConfiguredTimeoutFromProperties() {
this.contextRunner
.withPropertyValues("spring.boot.admin.monitor.default-timeout=5s",
"spring.boot.admin.monitor.status-interval=10s")
.run((context) -> {
StatusUpdater updater = context.getBean(StatusUpdater.class);
assertThat(updater).extracting("timeout").isEqualTo(Duration.ofSeconds(5));
});
}

@Test
void shouldClampTimeoutToInterval() {
this.contextRunner
.withPropertyValues("spring.boot.admin.monitor.default-timeout=20s",
"spring.boot.admin.monitor.status-interval=10s")
.run((context) -> {
StatusUpdater updater = context.getBean(StatusUpdater.class);
assertThat(updater).extracting("timeout").isEqualTo(Duration.ofSeconds(10));
});
}

public static class TestHazelcastConfig {

@Bean
Expand Down