1. Replace keys with scan when get routeDefinitions.
2. Fix null pointer exception when filters are null.
This commit is contained in:
@@ -24,10 +24,12 @@ import reactor.core.publisher.Mono;
|
||||
import org.springframework.cloud.gateway.support.NotFoundException;
|
||||
import org.springframework.data.redis.core.ReactiveRedisTemplate;
|
||||
import org.springframework.data.redis.core.ReactiveValueOperations;
|
||||
import org.springframework.data.redis.core.ScanOptions;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
/**
|
||||
* @author Dennis Menge
|
||||
* @author lzhpo
|
||||
*/
|
||||
@Repository
|
||||
public class RedisRouteDefinitionRepository implements RouteDefinitionRepository {
|
||||
@@ -50,7 +52,8 @@ public class RedisRouteDefinitionRepository implements RouteDefinitionRepository
|
||||
|
||||
@Override
|
||||
public Flux<RouteDefinition> getRouteDefinitions() {
|
||||
return reactiveRedisTemplate.keys(createKey("*")).flatMap(key -> reactiveRedisTemplate.opsForValue().get(key))
|
||||
return reactiveRedisTemplate.scan(ScanOptions.scanOptions().match(createKey("*")).build())
|
||||
.flatMap(key -> reactiveRedisTemplate.opsForValue().get(key))
|
||||
.onErrorContinue((throwable, routeDefinition) -> {
|
||||
if (log.isErrorEnabled()) {
|
||||
log.error("get routes from redis error cause : {}", throwable.toString(), throwable);
|
||||
|
||||
@@ -40,6 +40,7 @@ import org.springframework.cloud.gateway.support.ConfigurationService;
|
||||
import org.springframework.cloud.gateway.support.HasRouteId;
|
||||
import org.springframework.core.Ordered;
|
||||
import org.springframework.core.annotation.AnnotationAwareOrderComparator;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.web.server.ServerWebExchange;
|
||||
|
||||
/**
|
||||
@@ -172,8 +173,9 @@ public class RouteDefinitionRouteLocator implements RouteLocator {
|
||||
new ArrayList<>(this.gatewayProperties.getDefaultFilters())));
|
||||
}
|
||||
|
||||
if (!routeDefinition.getFilters().isEmpty()) {
|
||||
filters.addAll(loadGatewayFilters(routeDefinition.getId(), new ArrayList<>(routeDefinition.getFilters())));
|
||||
final List<FilterDefinition> definitionFilters = routeDefinition.getFilters();
|
||||
if (!CollectionUtils.isEmpty(definitionFilters)) {
|
||||
filters.addAll(loadGatewayFilters(routeDefinition.getId(), definitionFilters));
|
||||
}
|
||||
|
||||
AnnotationAwareOrderComparator.sort(filters);
|
||||
|
||||
Reference in New Issue
Block a user