mirror of
https://github.com/spring-projects/spring-boot.git
synced 2024-08-29 03:06:45 +08:00
Merge branch '2.2.x' into 2.3.x
This commit is contained in:
commit
217b2eff89
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2019 the original author or authors.
|
* Copyright 2012-2020 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2019 the original author or authors.
|
* Copyright 2012-2020 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2020 the original author or authors.
|
* Copyright 2020-2020 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2019 the original author or authors.
|
* Copyright 2012-2020 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2019 the original author or authors.
|
* Copyright 2012-2020 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2019 the original author or authors.
|
* Copyright 2012-2020 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2019 the original author or authors.
|
* Copyright 2012-2020 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2019 the original author or authors.
|
* Copyright 2012-2020 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2019 the original author or authors.
|
* Copyright 2012-2020 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2019 the original author or authors.
|
* Copyright 2012-2020 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2019 the original author or authors.
|
* Copyright 2012-2020 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2019 the original author or authors.
|
* Copyright 2012-2020 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2019 the original author or authors.
|
* Copyright 2012-2020 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -16,8 +16,6 @@
|
|||||||
|
|
||||||
package org.springframework.boot.actuate.redis;
|
package org.springframework.boot.actuate.redis;
|
||||||
|
|
||||||
import java.util.Properties;
|
|
||||||
|
|
||||||
import org.springframework.boot.actuate.health.AbstractHealthIndicator;
|
import org.springframework.boot.actuate.health.AbstractHealthIndicator;
|
||||||
import org.springframework.boot.actuate.health.Health;
|
import org.springframework.boot.actuate.health.Health;
|
||||||
import org.springframework.boot.actuate.health.HealthIndicator;
|
import org.springframework.boot.actuate.health.HealthIndicator;
|
||||||
@ -38,9 +36,7 @@ import org.springframework.util.Assert;
|
|||||||
*/
|
*/
|
||||||
public class RedisHealthIndicator extends AbstractHealthIndicator {
|
public class RedisHealthIndicator extends AbstractHealthIndicator {
|
||||||
|
|
||||||
static final String VERSION = "version";
|
private static final String REDIS_VERSION_PROPERTY = "redis_version";
|
||||||
|
|
||||||
static final String REDIS_VERSION = "redis_version";
|
|
||||||
|
|
||||||
private final RedisConnectionFactory redisConnectionFactory;
|
private final RedisConnectionFactory redisConnectionFactory;
|
||||||
|
|
||||||
@ -54,20 +50,24 @@ public class RedisHealthIndicator extends AbstractHealthIndicator {
|
|||||||
protected void doHealthCheck(Health.Builder builder) throws Exception {
|
protected void doHealthCheck(Health.Builder builder) throws Exception {
|
||||||
RedisConnection connection = RedisConnectionUtils.getConnection(this.redisConnectionFactory);
|
RedisConnection connection = RedisConnectionUtils.getConnection(this.redisConnectionFactory);
|
||||||
try {
|
try {
|
||||||
if (connection instanceof RedisClusterConnection) {
|
doHealthCheck(builder, connection);
|
||||||
ClusterInfo clusterInfo = ((RedisClusterConnection) connection).clusterGetClusterInfo();
|
|
||||||
builder.up().withDetail("cluster_size", clusterInfo.getClusterSize())
|
|
||||||
.withDetail("slots_up", clusterInfo.getSlotsOk())
|
|
||||||
.withDetail("slots_fail", clusterInfo.getSlotsFail());
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
Properties info = connection.info();
|
|
||||||
builder.up().withDetail(VERSION, info.getProperty(REDIS_VERSION));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
finally {
|
finally {
|
||||||
RedisConnectionUtils.releaseConnection(connection, this.redisConnectionFactory, false);
|
RedisConnectionUtils.releaseConnection(connection, this.redisConnectionFactory, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void doHealthCheck(Health.Builder builder, RedisConnection connection) {
|
||||||
|
if (connection instanceof RedisClusterConnection) {
|
||||||
|
ClusterInfo clusterInfo = ((RedisClusterConnection) connection).clusterGetClusterInfo();
|
||||||
|
builder.up().withDetail("cluster_size", clusterInfo.getClusterSize())
|
||||||
|
.withDetail("slots_up", clusterInfo.getSlotsOk())
|
||||||
|
.withDetail("slots_fail", clusterInfo.getSlotsFail());
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
String version = connection.info().getProperty(REDIS_VERSION_PROPERTY);
|
||||||
|
builder.up().withDetail("version", version);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2019 the original author or authors.
|
* Copyright 2012-2020 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@ -39,6 +39,8 @@ import org.springframework.data.redis.connection.ReactiveRedisConnectionFactory;
|
|||||||
*/
|
*/
|
||||||
public class RedisReactiveHealthIndicator extends AbstractReactiveHealthIndicator {
|
public class RedisReactiveHealthIndicator extends AbstractReactiveHealthIndicator {
|
||||||
|
|
||||||
|
private static final String REDIS_VERSION_PROPERTY = "redis_version";
|
||||||
|
|
||||||
private final ReactiveRedisConnectionFactory connectionFactory;
|
private final ReactiveRedisConnectionFactory connectionFactory;
|
||||||
|
|
||||||
public RedisReactiveHealthIndicator(ReactiveRedisConnectionFactory connectionFactory) {
|
public RedisReactiveHealthIndicator(ReactiveRedisConnectionFactory connectionFactory) {
|
||||||
@ -52,8 +54,8 @@ public class RedisReactiveHealthIndicator extends AbstractReactiveHealthIndicato
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Mono<Health> doHealthCheck(Health.Builder builder, ReactiveRedisConnection connection) {
|
private Mono<Health> doHealthCheck(Health.Builder builder, ReactiveRedisConnection connection) {
|
||||||
return connection.serverCommands().info()
|
boolean isClusterConnection = connection instanceof ReactiveRedisClusterConnection;
|
||||||
.map((info) -> up(builder, info, (connection instanceof ReactiveRedisClusterConnection)))
|
return connection.serverCommands().info().map((info) -> up(builder, info, isClusterConnection))
|
||||||
.onErrorResume((ex) -> Mono.just(down(builder, ex)))
|
.onErrorResume((ex) -> Mono.just(down(builder, ex)))
|
||||||
.flatMap((health) -> connection.closeLater().thenReturn(health));
|
.flatMap((health) -> connection.closeLater().thenReturn(health));
|
||||||
}
|
}
|
||||||
@ -64,24 +66,22 @@ public class RedisReactiveHealthIndicator extends AbstractReactiveHealthIndicato
|
|||||||
}
|
}
|
||||||
|
|
||||||
private Health up(Health.Builder builder, Properties info, boolean isClusterConnection) {
|
private Health up(Health.Builder builder, Properties info, boolean isClusterConnection) {
|
||||||
if (isClusterConnection) {
|
String version = isClusterConnection ? getClusterVersionProperty(info)
|
||||||
return builder.up().withDetail(RedisHealthIndicator.VERSION, getClusterVersionProperty(info)).build();
|
: info.getProperty(REDIS_VERSION_PROPERTY);
|
||||||
}
|
return builder.up().withDetail("version", version).build();
|
||||||
else {
|
|
||||||
return builder.up()
|
|
||||||
.withDetail(RedisHealthIndicator.VERSION, info.getProperty(RedisHealthIndicator.REDIS_VERSION))
|
|
||||||
.build();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private Object getClusterVersionProperty(Properties info) {
|
|
||||||
return info.keySet().stream().map(String.class::cast)
|
|
||||||
.filter((key) -> key.endsWith(RedisHealthIndicator.REDIS_VERSION)).findFirst().map(info::get)
|
|
||||||
.orElse("");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private Health down(Health.Builder builder, Throwable cause) {
|
private Health down(Health.Builder builder, Throwable cause) {
|
||||||
return builder.down(cause).build();
|
return builder.down(cause).build();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String getClusterVersionProperty(Properties info) {
|
||||||
|
for (String propertyName : info.stringPropertyNames()) {
|
||||||
|
if (propertyName.endsWith(REDIS_VERSION_PROPERTY)) {
|
||||||
|
return info.getProperty(propertyName);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2019 the original author or authors.
|
* Copyright 2012-2020 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2019 the original author or authors.
|
* Copyright 2012-2020 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2019 the original author or authors.
|
* Copyright 2012-2020 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
|
Loading…
Reference in New Issue
Block a user