Skip to content

Commit b7ee02e

Browse files
committed
Merge remote-tracking branch 'remotes/origin/master' into A
2 parents 845b0fe + 5de0150 commit b7ee02e

File tree

9 files changed

+85
-55
lines changed

9 files changed

+85
-55
lines changed

spring-cloud-gray-client-netflix/src/main/java/cn/springcloud/gray/client/netflix/configuration/HystrixGrayAutoConfiguration.java

Lines changed: 22 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -5,26 +5,18 @@
55
import cn.springcloud.gray.client.netflix.connectionpoint.RibbonConnectionPoint;
66
import cn.springcloud.gray.client.netflix.hystrix.HystrixRequestLocalStorage;
77
import cn.springcloud.gray.request.RequestLocalStorage;
8-
import cn.springcloud.gray.request.track.GrayTrackHolder;
9-
import cn.springcloud.gray.web.GrayTrackFilter;
108
import com.netflix.hystrix.HystrixCommand;
11-
import com.netflix.hystrix.strategy.concurrency.HystrixRequestContext;
129
import feign.hystrix.HystrixFeign;
1310
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
1411
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
1512
import org.springframework.context.annotation.Bean;
1613
import org.springframework.context.annotation.Configuration;
17-
18-
import javax.servlet.FilterChain;
19-
import javax.servlet.ServletException;
20-
import javax.servlet.ServletRequest;
21-
import javax.servlet.ServletResponse;
22-
import java.io.IOException;
14+
import org.springframework.context.annotation.Import;
2315

2416
@Configuration
2517
@ConditionalOnBean(GrayManager.class)
2618
@ConditionalOnClass({HystrixCommand.class, HystrixFeign.class})
27-
//@Import(HystrixGrayTrackWebConfiguration.class)
19+
@Import(HystrixGrayTrackWebConfiguration.class)
2820
public class HystrixGrayAutoConfiguration {
2921

3022

@@ -46,24 +38,24 @@ public RibbonConnectionPoint hystrixRibbonConnectionPoint(
4638
}
4739

4840

49-
@Bean
50-
public GrayTrackFilter grayTrackFilter(
51-
GrayTrackHolder grayTrackHolder,
52-
RequestLocalStorage requestLocalStorage) {
53-
return new GrayTrackFilter(grayTrackHolder, requestLocalStorage) {
54-
@Override
55-
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
56-
if (!HystrixRequestContext.isCurrentThreadInitialized()) {
57-
HystrixRequestContext.initializeContext();
58-
}
59-
try {
60-
super.doFilter(request, response, chain);
61-
} finally {
62-
if (HystrixRequestContext.isCurrentThreadInitialized()) {
63-
HystrixRequestContext.getContextForCurrentThread().shutdown();
64-
}
65-
}
66-
}
67-
};
68-
}
41+
// @Bean
42+
// public GrayTrackFilter grayTrackFilter(
43+
// GrayTrackHolder grayTrackHolder,
44+
// RequestLocalStorage requestLocalStorage) {
45+
// return new GrayTrackFilter(grayTrackHolder, requestLocalStorage) {
46+
// @Override
47+
// public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
48+
// if (!HystrixRequestContext.isCurrentThreadInitialized()) {
49+
// HystrixRequestContext.initializeContext();
50+
// }
51+
// try {
52+
// super.doFilter(request, response, chain);
53+
// } finally {
54+
// if (HystrixRequestContext.isCurrentThreadInitialized()) {
55+
// HystrixRequestContext.getContextForCurrentThread().shutdown();
56+
// }
57+
// }
58+
// }
59+
// };
60+
// }
6961
}
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
package cn.springcloud.gray.client.netflix.configuration;
2+
3+
import cn.springcloud.gray.request.RequestLocalStorage;
4+
import cn.springcloud.gray.request.track.GrayTrackHolder;
5+
import cn.springcloud.gray.web.GrayTrackFilter;
6+
import com.netflix.hystrix.strategy.concurrency.HystrixRequestContext;
7+
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
8+
import org.springframework.context.annotation.Bean;
9+
import org.springframework.context.annotation.Configuration;
10+
11+
import javax.servlet.FilterChain;
12+
import javax.servlet.ServletException;
13+
import javax.servlet.ServletRequest;
14+
import javax.servlet.ServletResponse;
15+
import java.io.IOException;
16+
17+
@Configuration
18+
@ConditionalOnProperty(value = "gray.request.track.enabled", matchIfMissing = true)
19+
public class HystrixGrayTrackWebConfiguration {
20+
21+
22+
@Bean
23+
@ConditionalOnProperty(value = "gray.client.runenv", havingValue = "web", matchIfMissing = true)
24+
public GrayTrackFilter grayTrackFilter(
25+
GrayTrackHolder grayTrackHolder,
26+
RequestLocalStorage requestLocalStorage) {
27+
return new GrayTrackFilter(grayTrackHolder, requestLocalStorage) {
28+
@Override
29+
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
30+
if (!HystrixRequestContext.isCurrentThreadInitialized()) {
31+
HystrixRequestContext.initializeContext();
32+
}
33+
try {
34+
super.doFilter(request, response, chain);
35+
} finally {
36+
if (HystrixRequestContext.isCurrentThreadInitialized()) {
37+
HystrixRequestContext.getContextForCurrentThread().shutdown();
38+
}
39+
}
40+
}
41+
};
42+
}
43+
}

spring-cloud-gray-client-netflix/src/main/java/cn/springcloud/gray/client/netflix/configuration/NetflixGrayAutoConfiguration.java

Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import cn.springcloud.gray.client.netflix.connectionpoint.RibbonConnectionPoint;
66
import cn.springcloud.gray.client.netflix.ribbon.configuration.GrayRibbonClientsConfiguration;
77
import cn.springcloud.gray.request.RequestLocalStorage;
8-
import org.springframework.beans.factory.annotation.Autowired;
98
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
109
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
1110
import org.springframework.cloud.netflix.ribbon.RibbonClients;
@@ -18,15 +17,10 @@
1817
public class NetflixGrayAutoConfiguration {
1918

2019

21-
@Autowired
22-
private GrayManager grayManager;
23-
@Autowired
24-
private RequestLocalStorage requestLocalStorage;
25-
26-
2720
@Bean
2821
@ConditionalOnMissingBean
29-
public RibbonConnectionPoint ribbonConnectionPoint() {
22+
public RibbonConnectionPoint ribbonConnectionPoint(
23+
GrayManager grayManager, RequestLocalStorage requestLocalStorage) {
3024
return new DefaultRibbonConnectionPoint(grayManager, requestLocalStorage);
3125
}
3226

spring-cloud-gray-client-netflix/src/main/java/cn/springcloud/gray/client/netflix/zuul/ZuulRequestInterceptor.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -26,23 +26,23 @@ public boolean pre(GrayRequest request) {
2626
RequestContext context = (RequestContext) request.getAttribute(
2727
GrayPreZuulFilter.GRAY_REQUEST_ATTRIBUTE_NAME_ZUUL_REQUEST_CONTEXT);
2828
if (StringUtils.isNotEmpty(grayTrack.getUri())) {
29-
context.addOriginResponseHeader(GrayHttpTrackInfo.GRAY_TRACK_URI, grayTrack.getUri());
29+
context.addZuulRequestHeader(GrayHttpTrackInfo.GRAY_TRACK_URI, grayTrack.getUri());
3030
}
3131
if (StringUtils.isNotEmpty(grayTrack.getTraceIp())) {
32-
context.addOriginResponseHeader(GrayHttpTrackInfo.GRAY_TRACK_TRACE_IP, grayTrack.getTraceIp());
32+
context.addZuulRequestHeader(GrayHttpTrackInfo.GRAY_TRACK_TRACE_IP, grayTrack.getTraceIp());
3333
}
3434
if (StringUtils.isNotEmpty(grayTrack.getMethod())) {
35-
context.addOriginResponseHeader(GrayHttpTrackInfo.GRAY_TRACK_METHOD, grayTrack.getMethod());
35+
context.addZuulRequestHeader(GrayHttpTrackInfo.GRAY_TRACK_METHOD, grayTrack.getMethod());
3636
}
3737
if (grayTrack.getParameters() != null && !grayTrack.getParameters().isEmpty()) {
3838
grayTrack.getParameters().entrySet().forEach(entry -> {
3939
String name = new StringBuilder().append(GrayHttpTrackInfo.GRAY_TRACK_PARAMETER_PREFIX)
4040
.append(GrayTrackInfo.GRAY_TRACK_SEPARATE)
4141
.append(entry.getKey()).toString();
42-
context.addOriginResponseHeader(GrayHttpTrackInfo.GRAY_TRACK_METHOD, grayTrack.getMethod());
42+
context.addZuulRequestHeader(GrayHttpTrackInfo.GRAY_TRACK_METHOD, grayTrack.getMethod());
4343

4444
entry.getValue().forEach(v -> {
45-
context.addOriginResponseHeader(name, v);
45+
context.addZuulRequestHeader(name, v);
4646
});
4747
});
4848
}
@@ -52,7 +52,7 @@ public boolean pre(GrayRequest request) {
5252
.append(GrayTrackInfo.GRAY_TRACK_SEPARATE)
5353
.append(entry.getKey()).toString();
5454
entry.getValue().forEach(v -> {
55-
context.addOriginResponseHeader(name, v);
55+
context.addZuulRequestHeader(name, v);
5656
});
5757
});
5858
}

spring-cloud-gray-client-netflix/src/main/java/cn/springcloud/gray/client/netflix/zuul/configuration/GrayZuulAutoConfiguration.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,22 +16,22 @@
1616
import org.springframework.context.annotation.Configuration;
1717

1818
@Configuration
19-
@ConditionalOnBean(GrayManager.class)
19+
@ConditionalOnBean(
20+
value = {GrayManager.class},
21+
name = {"zuulServlet"})
2022
@ConditionalOnClass(value = ZuulServlet.class)
2123
public class GrayZuulAutoConfiguration {
2224

2325
@Autowired
2426
private GrayRequestProperties grayRequestProperties;
25-
@Autowired
26-
private RibbonConnectionPoint ribbonConnectionPoint;
2727

2828
@Bean
29-
public GrayPreZuulFilter grayPreZuulFilter() {
29+
public GrayPreZuulFilter grayPreZuulFilter(RibbonConnectionPoint ribbonConnectionPoint) {
3030
return new GrayPreZuulFilter(grayRequestProperties, ribbonConnectionPoint);
3131
}
3232

3333
@Bean
34-
public GrayPostZuulFilter grayPostZuulFilter() {
34+
public GrayPostZuulFilter grayPostZuulFilter(RibbonConnectionPoint ribbonConnectionPoint) {
3535
return new GrayPostZuulFilter(ribbonConnectionPoint);
3636
}
3737

spring-cloud-gray-client/src/main/java/cn/springcloud/gray/client/config/GrayClientAutoConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public GrayManager grayManager(
4343
@Autowired(required = false) GrayLoadProperties grayLoadProperties,
4444
GrayDecisionFactoryKeeper grayDecisionFactoryKeeper,
4545
@Autowired(required = false) List<RequestInterceptor> requestInterceptors,
46-
InformationClient informationClient) {
46+
@Autowired(required = false) InformationClient informationClient) {
4747
return new DefaultGrayManager(
4848
grayClientProperties, grayLoadProperties, grayDecisionFactoryKeeper,
4949
requestInterceptors, informationClient);

spring-cloud-gray-client/src/main/java/cn/springcloud/gray/client/config/properties/GrayTrackProperties.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public class GrayTrackProperties {
1717
private String trackType = "web";
1818
private Web web = new Web();
1919

20-
private int definitionsUpdateIntervalTimerInMs = 0;
20+
private int definitionsUpdateIntervalTimerInMs = 60000;
2121

2222
@Setter
2323
@Getter

spring-cloud-gray-client/src/main/java/cn/springcloud/gray/web/GrayTrackRequestInterceptor.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import cn.springcloud.gray.request.GrayHttpTrackInfo;
66
import cn.springcloud.gray.request.GrayRequest;
77
import cn.springcloud.gray.request.GrayTrackInfo;
8+
import org.apache.commons.collections.MapUtils;
89
import org.apache.commons.lang3.StringUtils;
910

1011
import java.util.ArrayList;
@@ -74,15 +75,15 @@ private void initHandlers() {
7475

7576
handlers.add(request -> {
7677
GrayHttpTrackInfo grayHttpTrackInfo = (GrayHttpTrackInfo) request.getGrayTrackInfo();
77-
if (StringUtils.isNotEmpty(grayHttpTrackInfo.getUri())) {
78+
if (StringUtils.isNotEmpty(grayHttpTrackInfo.getMethod())) {
7879
Map<String, List<String>> h = (Map<String, List<String>>) request.getHeaders();
7980
h.put(GrayHttpTrackInfo.GRAY_TRACK_METHOD, Arrays.asList(grayHttpTrackInfo.getMethod()));
8081
}
8182
});
8283

8384
handlers.add(request -> {
8485
GrayHttpTrackInfo grayHttpTrackInfo = (GrayHttpTrackInfo) request.getGrayTrackInfo();
85-
if (StringUtils.isNotEmpty(grayHttpTrackInfo.getUri())) {
86+
if (MapUtils.isNotEmpty(grayHttpTrackInfo.getHeaders())) {
8687
Map<String, List<String>> h = (Map<String, List<String>>) request.getHeaders();
8788
grayHttpTrackInfo.getHeaders().entrySet().forEach(entry -> {
8889
String name = new StringBuilder().append(GrayHttpTrackInfo.GRAY_TRACK_HEADER_PREFIX)
@@ -95,7 +96,7 @@ private void initHandlers() {
9596

9697
handlers.add(request -> {
9798
GrayHttpTrackInfo grayHttpTrackInfo = (GrayHttpTrackInfo) request.getGrayTrackInfo();
98-
if (StringUtils.isNotEmpty(grayHttpTrackInfo.getUri())) {
99+
if (MapUtils.isNotEmpty(grayHttpTrackInfo.getParameters())) {
99100
Map<String, List<String>> h = (Map<String, List<String>>) request.getHeaders();
100101
grayHttpTrackInfo.getParameters().entrySet().forEach(entry -> {
101102
String name = new StringBuilder().append(GrayHttpTrackInfo.GRAY_TRACK_PARAMETER_PREFIX)

spring-cloud-gray-client/src/main/java/cn/springcloud/gray/web/tracker/HttpReceiveGrayInfoTracker.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public HttpReceiveGrayInfoTracker() {
2525

2626
public void call(GrayHttpTrackInfo trackInfo, HttpServletRequest request) {
2727
Enumeration<String> headerNames = request.getHeaderNames();
28-
if (headerNames.hasMoreElements()) {
28+
while (headerNames.hasMoreElements()) {
2929
String headerName = headerNames.nextElement();
3030
if (headerName.startsWith(GrayTrackInfo.GRAY_TRACK_PREFIX)) {
3131
String[] names = headerName.split(GrayTrackInfo.GRAY_TRACK_SEPARATE);

0 commit comments

Comments
 (0)