diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/endpoint/SentinelHealthIndicator.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/endpoint/SentinelHealthIndicator.java
index b08ff908..ea8aacd0 100644
--- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/endpoint/SentinelHealthIndicator.java
+++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/endpoint/SentinelHealthIndicator.java
@@ -147,7 +147,7 @@ public class SentinelHealthIndicator extends AbstractHealthIndicator {
withDetails(builder.up(), detailMap);
}
else {
- withDetails(builder.down(), detailMap);
+ withDetails(builder.unknown(), detailMap);
}
}
diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/feign/SentinelFeign.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/feign/SentinelFeign.java
index 5b2f89d8..6445e776 100644
--- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/feign/SentinelFeign.java
+++ b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/main/java/com/alibaba/cloud/sentinel/feign/SentinelFeign.java
@@ -137,12 +137,14 @@ public final class SentinelFeign {
private Object getFieldValue(Object instance, String fieldName) {
Field field = ReflectionUtils.findField(instance.getClass(), fieldName);
- field.setAccessible(true);
- try {
- return field.get(instance);
- }
- catch (IllegalAccessException e) {
- // ignore
+ if (field != null) {
+ field.setAccessible(true);
+ try {
+ return field.get(instance);
+ }
+ catch (IllegalAccessException e) {
+ // ignore
+ }
}
return null;
}
diff --git a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/test/java/com/alibaba/cloud/sentinel/ContextIdSentinelFeignTests.java b/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/test/java/com/alibaba/cloud/sentinel/ContextIdSentinelFeignTests.java
deleted file mode 100644
index 57344716..00000000
--- a/spring-cloud-alibaba-starters/spring-cloud-starter-alibaba-sentinel/src/test/java/com/alibaba/cloud/sentinel/ContextIdSentinelFeignTests.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright 2013-2018 the original author or authors.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.alibaba.cloud.sentinel;
-
-import com.alibaba.cloud.sentinel.feign.SentinelFeignAutoConfiguration;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
-import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
-import org.springframework.boot.test.context.SpringBootTest;
-import org.springframework.cloud.openfeign.EnableFeignClients;
-import org.springframework.cloud.openfeign.FeignClient;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.test.context.junit4.SpringRunner;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-
-import static org.assertj.core.api.Assertions.assertThat;
-
-/**
- * Add this unit test to verify https://github.com/alibaba/spring-cloud-alibaba/pull/838.
- *
- * @author Jim
- */
-@RunWith(SpringRunner.class)
-@SpringBootTest(classes = { ContextIdSentinelFeignTests.TestConfig.class }, properties = {
- "feign.sentinel.enabled=true" })
-public class ContextIdSentinelFeignTests {
-
- @Autowired
- private EchoService echoService;
-
- @Autowired
- private FooService fooService;
-
- @Test
- public void testFeignClient() {
- assertThat(echoService.echo("test")).isEqualTo("echo fallback");
- assertThat(fooService.echo("test")).isEqualTo("foo fallback");
- assertThat(fooService.toString()).isNotEqualTo(echoService.toString());
- assertThat(fooService.hashCode()).isNotEqualTo(echoService.hashCode());
- assertThat(echoService.equals(fooService)).isEqualTo(Boolean.FALSE);
- }
-
- @FeignClient(contextId = "echoService", name = "service-provider", fallback = EchoServiceFallback.class, configuration = FeignConfiguration.class)
- public interface EchoService {
-
- @GetMapping("/echo/{str}")
- String echo(@PathVariable("str") String str);
-
- }
-
- @FeignClient(contextId = "fooService", value = "foo-service", fallbackFactory = CustomFallbackFactory.class, configuration = FeignConfiguration.class)
- public interface FooService {
-
- @RequestMapping(path = "echo/{str}")
- String echo(@RequestParam("str") String param);
-
- }
-
- @Configuration
- @EnableAutoConfiguration
- @ImportAutoConfiguration({ SentinelFeignAutoConfiguration.class })
- @EnableFeignClients
- public static class TestConfig {
-
- }
-
- public static class FeignConfiguration {
-
- @Bean
- public EchoServiceFallback echoServiceFallback() {
- return new EchoServiceFallback();
- }
-
- @Bean
- public CustomFallbackFactory customFallbackFactory() {
- return new CustomFallbackFactory();
- }
-
- }
-
- public static class EchoServiceFallback implements EchoService {
-
- @Override
- public String echo(@RequestParam("str") String param) {
- return "echo fallback";
- }
-
- }
-
- public static class FooServiceFallback implements FooService {
-
- @Override
- public String echo(@RequestParam("str") String param) {
- return "foo fallback";
- }
-
- }
-
- public static class CustomFallbackFactory
- implements feign.hystrix.FallbackFactory {
-
- private FooService fooService = new FooServiceFallback();
-
- @Override
- public FooService create(Throwable throwable) {
- return fooService;
- }
-
- }
-
-}