Skip to content

Commit 0ade35d

Browse files
authored
Merge pull request #22 from SpringCloud/A
A
2 parents ac5c57e + 7e01888 commit 0ade35d

File tree

73 files changed

+1502
-1123
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

73 files changed

+1502
-1123
lines changed

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
<groupId>cn.springcloud.gray</groupId>
1313
<artifactId>spring-cloud-gray</artifactId>
1414
<packaging>pom</packaging>
15-
<version>A.1.0.8</version>
15+
<version>A.1.0.10</version>
1616
<url>https://github.com/SpringCloud/spring-cloud-gray</url>
1717
<organization>
1818
<name>Spring Cloud中国社区</name>

spring-cloud-gray-client-netflix/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
<parent>
66
<artifactId>spring-cloud-gray</artifactId>
77
<groupId>cn.springcloud.gray</groupId>
8-
<version>A.1.0.8</version>
8+
<version>A.1.0.10</version>
99
</parent>
1010
<modelVersion>4.0.0</modelVersion>
1111

spring-cloud-gray-client-netflix/src/main/java/cn/springcloud/gray/client/netflix/connectionpoint/DefaultHystrixRibbonConnectionPoint.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
@Deprecated
88
public class DefaultHystrixRibbonConnectionPoint extends DefaultRibbonConnectionPoint {
99

10-
private ThreadLocal<Boolean> hystrixRequestContextInitialized = new ThreadLocal<>();
10+
private static final ThreadLocal<Boolean> hystrixRequestContextInitialized = new ThreadLocal<>();
1111

1212
public DefaultHystrixRibbonConnectionPoint(
1313
GrayManager grayManager,
@@ -32,8 +32,12 @@ public void shutdownconnectPoint(ConnectPointContext connectPointContext) {
3232
super.shutdownconnectPoint(connectPointContext);
3333
} finally {
3434
// Boolean hystrixReqCxtInited = hystrixRequestContextInitialized.get();
35-
// if (hystrixReqCxtInited != null && hystrixReqCxtInited && HystrixRequestContext.isCurrentThreadInitialized()) {
36-
// HystrixRequestContext.getContextForCurrentThread().shutdown();
35+
// if (hystrixReqCxtInited != null) {
36+
// hystrixRequestContextInitialized.remove();
37+
// if (hystrixReqCxtInited && HystrixRequestContext.isCurrentThreadInitialized()) {
38+
// hystrixRequestContextInitialized.remove();
39+
// HystrixRequestContext.getContextForCurrentThread().shutdown();
40+
// }
3741
// }
3842
}
3943
}
Lines changed: 67 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,15 @@
11
package cn.springcloud.gray.client.netflix.feign;
22

33
import cn.springcloud.gray.request.GrayHttpTrackInfo;
4-
import cn.springcloud.gray.request.GrayTrackInfo;
4+
import cn.springcloud.gray.request.HttpGrayTrackRecordDevice;
5+
import cn.springcloud.gray.request.HttpGrayTrackRecordHelper;
56
import cn.springcloud.gray.request.RequestLocalStorage;
67
import feign.RequestInterceptor;
78
import feign.RequestTemplate;
8-
import org.apache.commons.collections.MapUtils;
9-
import org.apache.commons.lang3.StringUtils;
109
import org.slf4j.Logger;
1110
import org.slf4j.LoggerFactory;
1211

13-
import java.util.Map;
12+
import java.util.List;
1413

1514

1615
public class GrayTrackFeignRequestInterceptor implements RequestInterceptor {
@@ -26,55 +25,80 @@ public GrayTrackFeignRequestInterceptor(RequestLocalStorage requestLocalStorage)
2625

2726
@Override
2827
public void apply(RequestTemplate template) {
29-
GrayHttpTrackInfo grayTrack = getGrayHttpTrackInfo();
30-
if (grayTrack != null) {
31-
if (StringUtils.isNotEmpty(grayTrack.getUri())) {
32-
template.header(GrayHttpTrackInfo.GRAY_TRACK_URI, grayTrack.getUri());
33-
}
34-
if (StringUtils.isNotEmpty(grayTrack.getTraceIp())) {
35-
template.header(GrayHttpTrackInfo.GRAY_TRACK_TRACE_IP, grayTrack.getTraceIp());
36-
}
37-
if (StringUtils.isNotEmpty(grayTrack.getMethod())) {
38-
template.header(GrayHttpTrackInfo.GRAY_TRACK_METHOD, grayTrack.getMethod());
39-
}
40-
if (grayTrack.getParameters() != null && !grayTrack.getParameters().isEmpty()) {
41-
grayTrack.getParameters().entrySet().forEach(entry -> {
42-
String name = new StringBuilder().append(GrayHttpTrackInfo.GRAY_TRACK_PARAMETER_PREFIX)
43-
.append(GrayTrackInfo.GRAY_TRACK_SEPARATE)
44-
.append(entry.getKey()).toString();
45-
template.header(name, entry.getValue());
46-
});
47-
}
48-
if (grayTrack.getHeaders() != null && !grayTrack.getHeaders().isEmpty()) {
49-
grayTrack.getHeaders().entrySet().forEach(entry -> {
50-
String name = new StringBuilder().append(GrayHttpTrackInfo.GRAY_TRACK_HEADER_PREFIX)
51-
.append(GrayTrackInfo.GRAY_TRACK_SEPARATE)
52-
.append(entry.getKey()).toString();
53-
template.header(name, entry.getValue());
54-
});
55-
}
56-
57-
appendGrayTrackInfoToHeader(GrayTrackInfo.GRAY_TRACK_ATTRIBUTE_PREFIX, grayTrack.getAttributes(), template);
28+
GrayHttpTrackInfo grayTrack = getGrayHttpTrackInfo(template);
29+
if (grayTrack == null) {
30+
return;
5831
}
32+
HttpGrayTrackRecordHelper.record(new FeignHttpGrayTrackRecordDevice(template), grayTrack);
33+
// if (StringUtils.isNotEmpty(grayTrack.getUri())) {
34+
// template.header(GrayHttpTrackInfo.GRAY_TRACK_URI, grayTrack.getUri());
35+
// }
36+
// if (StringUtils.isNotEmpty(grayTrack.getTraceIp())) {
37+
// template.header(GrayHttpTrackInfo.GRAY_TRACK_TRACE_IP, grayTrack.getTraceIp());
38+
// }
39+
// if (StringUtils.isNotEmpty(grayTrack.getMethod())) {
40+
// template.header(GrayHttpTrackInfo.GRAY_TRACK_METHOD, grayTrack.getMethod());
41+
// }
42+
// if (MapUtils.isNotEmpty(grayTrack.getParameters())) {
43+
// appendGrayTrackInfosToHeader(GrayHttpTrackInfo.GRAY_TRACK_PARAMETER_PREFIX, grayTrack.getParameters(), template);
44+
//// String prefix = GrayHttpTrackInfo.GRAY_TRACK_PARAMETER_PREFIX + GrayTrackInfo.GRAY_TRACK_SEPARATE;
45+
//// grayTrack.getParameters().entrySet().forEach(entry -> {
46+
//// template.header(prefix + entry.getKey(), entry.getValue());
47+
//// });
48+
// }
49+
// if (MapUtils.isNotEmpty(grayTrack.getHeaders())) {
50+
// appendGrayTrackInfosToHeader(GrayHttpTrackInfo.GRAY_TRACK_HEADER_PREFIX, grayTrack.getHeaders(), template);
51+
//// String prefix = GrayHttpTrackInfo.GRAY_TRACK_HEADER_PREFIX + GrayTrackInfo.GRAY_TRACK_SEPARATE;
52+
//// grayTrack.getHeaders().entrySet().forEach(entry -> {
53+
//// template.header(prefix + entry.getKey(), entry.getValue());
54+
//// });
55+
// }
56+
// appendGrayTrackInfoToHeader(GrayTrackInfo.GRAY_TRACK_ATTRIBUTE_PREFIX, grayTrack.getAttributes(), template);
5957
}
6058

61-
private GrayHttpTrackInfo getGrayHttpTrackInfo() {
59+
private GrayHttpTrackInfo getGrayHttpTrackInfo(RequestTemplate template) {
6260
try {
6361
return (GrayHttpTrackInfo) requestLocalStorage.getGrayTrackInfo();
6462
} catch (Exception e) {
65-
log.error("从requestLocalStorage中获取GrayTrackInfo对象失败.", e);
63+
log.warn("从requestLocalStorage中获取GrayTrackInfo对象失败, url:{}", template.url(), e);
6664
return null;
6765
}
6866
}
6967

70-
private void appendGrayTrackInfoToHeader(String grayPrefix, Map<String, String> infos, RequestTemplate template) {
71-
if (MapUtils.isNotEmpty(infos)) {
72-
infos.entrySet().forEach(entry -> {
73-
String name = new StringBuilder().append(grayPrefix)
74-
.append(GrayTrackInfo.GRAY_TRACK_SEPARATE)
75-
.append(entry.getKey()).toString();
76-
template.header(name, entry.getValue());
77-
});
68+
69+
public static class FeignHttpGrayTrackRecordDevice implements HttpGrayTrackRecordDevice {
70+
71+
private RequestTemplate template;
72+
73+
public FeignHttpGrayTrackRecordDevice(RequestTemplate template) {
74+
this.template = template;
75+
}
76+
77+
@Override
78+
public void record(String name, String value) {
79+
template.header(name, value);
80+
}
81+
82+
@Override
83+
public void record(String name, List<String> values) {
84+
template.header(name, values);
7885
}
7986
}
87+
88+
//
89+
// private void appendGrayTrackInfoToHeader(String grayPrefix, Map<String, String> infos, RequestTemplate template) {
90+
// String prefix = grayPrefix + GrayTrackInfo.GRAY_TRACK_SEPARATE;
91+
// if (MapUtils.isNotEmpty(infos)) {
92+
// infos.entrySet().forEach(entry -> {
93+
// template.header(prefix + entry.getKey(), entry.getValue());
94+
// });
95+
// }
96+
// }
97+
//
98+
// private void appendGrayTrackInfosToHeader(String grayPrefix, Map<String, List<String>> infos, RequestTemplate template) {
99+
// String prefix = grayPrefix + GrayTrackInfo.GRAY_TRACK_SEPARATE;
100+
// infos.entrySet().forEach(entry -> {
101+
// template.header(prefix + entry.getKey(), entry.getValue());
102+
// });
103+
// }
80104
}

spring-cloud-gray-client-netflix/src/main/java/cn/springcloud/gray/client/netflix/hystrix/HystrixLocalStorageCycle.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,12 @@ public void initContext() {
2020
@Override
2121
public void closeContext() {
2222
Boolean hystrixReqCxtInited = hystrixRequestContextInitialized.get();
23-
if (hystrixReqCxtInited != null && hystrixReqCxtInited && HystrixRequestContext.isCurrentThreadInitialized()) {
24-
HystrixRequestContext.getContextForCurrentThread().shutdown();
23+
if (hystrixReqCxtInited != null) {
24+
hystrixRequestContextInitialized.remove();
25+
if (hystrixReqCxtInited && HystrixRequestContext.isCurrentThreadInitialized()) {
26+
HystrixRequestContext.getContextForCurrentThread().shutdown();
27+
}
28+
2529
}
2630
}
2731
}

spring-cloud-gray-client-netflix/src/main/java/cn/springcloud/gray/client/netflix/hystrix/HystrixRequestLocalStorage.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ public class HystrixRequestLocalStorage implements RequestLocalStorage {
99

1010

1111
private static final HystrixRequestVariableDefault<GrayTrackInfo> grayTrackInfoLocal = new HystrixRequestVariableDefault<GrayTrackInfo>();
12-
private static final HystrixRequestVariableDefault<GrayRequest> rrayRequestLocal = new HystrixRequestVariableDefault<GrayRequest>();
12+
private static final HystrixRequestVariableDefault<GrayRequest> grayRequestLocal = new HystrixRequestVariableDefault<GrayRequest>();
1313

1414

1515
@Override
@@ -29,17 +29,17 @@ public GrayTrackInfo getGrayTrackInfo() {
2929

3030
@Override
3131
public void setGrayRequest(GrayRequest grayRequest) {
32-
rrayRequestLocal.set(grayRequest);
32+
grayRequestLocal.set(grayRequest);
3333
}
3434

3535
@Override
3636
public void removeGrayRequest() {
37-
rrayRequestLocal.remove();
37+
grayRequestLocal.remove();
3838
}
3939

4040
@Override
4141
public GrayRequest getGrayRequest() {
42-
return rrayRequestLocal.get();
42+
return grayRequestLocal.get();
4343
}
4444

4545
}

spring-cloud-gray-client-netflix/src/main/java/cn/springcloud/gray/client/netflix/resttemplate/RestTemplateRequestInterceptor.java

Lines changed: 59 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,12 @@
44
import cn.springcloud.gray.client.netflix.constants.GrayNetflixClientConstants;
55
import cn.springcloud.gray.request.GrayHttpTrackInfo;
66
import cn.springcloud.gray.request.GrayRequest;
7-
import cn.springcloud.gray.request.GrayTrackInfo;
8-
import org.apache.commons.collections.MapUtils;
9-
import org.apache.commons.lang3.StringUtils;
7+
import cn.springcloud.gray.request.HttpGrayTrackRecordDevice;
8+
import cn.springcloud.gray.request.HttpGrayTrackRecordHelper;
109
import org.springframework.http.HttpHeaders;
1110
import org.springframework.http.HttpRequest;
1211

13-
import java.util.Map;
12+
import java.util.List;
1413

1514
public class RestTemplateRequestInterceptor implements RequestInterceptor {
1615
@Override
@@ -30,45 +29,67 @@ public boolean pre(GrayRequest request) {
3029
HttpRequest httpRequest = (HttpRequest) request.getAttribute(
3130
GrayClientHttpRequestIntercptor.GRAY_REQUEST_ATTRIBUTE_RESTTEMPLATE_REQUEST);
3231
HttpHeaders httpHeaders = httpRequest.getHeaders();
33-
if (StringUtils.isNotEmpty(grayTrack.getUri())) {
34-
httpHeaders.add(GrayHttpTrackInfo.GRAY_TRACK_URI, grayTrack.getUri());
35-
}
36-
if (StringUtils.isNotEmpty(grayTrack.getTraceIp())) {
37-
httpHeaders.add(GrayHttpTrackInfo.GRAY_TRACK_TRACE_IP, grayTrack.getTraceIp());
38-
}
39-
if (StringUtils.isNotEmpty(grayTrack.getMethod())) {
40-
httpHeaders.add(GrayHttpTrackInfo.GRAY_TRACK_METHOD, grayTrack.getMethod());
41-
}
42-
if (grayTrack.getParameters() != null && !grayTrack.getParameters().isEmpty()) {
43-
grayTrack.getParameters().entrySet().forEach(entry -> {
44-
String name = new StringBuilder().append(GrayHttpTrackInfo.GRAY_TRACK_PARAMETER_PREFIX)
45-
.append(GrayTrackInfo.GRAY_TRACK_SEPARATE)
46-
.append(entry.getKey()).toString();
47-
httpHeaders.put(name, entry.getValue());
48-
});
49-
}
50-
if (grayTrack.getHeaders() != null && !grayTrack.getHeaders().isEmpty()) {
51-
grayTrack.getHeaders().entrySet().forEach(entry -> {
52-
String name = new StringBuilder().append(GrayHttpTrackInfo.GRAY_TRACK_HEADER_PREFIX)
53-
.append(GrayTrackInfo.GRAY_TRACK_SEPARATE)
54-
.append(entry.getKey()).toString();
55-
httpHeaders.put(name, entry.getValue());
56-
});
57-
}
32+
HttpGrayTrackRecordHelper.record(new RestTemplateHttpGrayTrackRecordDevice(httpHeaders), grayTrack);
5833

59-
Map<String, String> grayAttributes = grayTrack.getAttributes();
60-
if (MapUtils.isNotEmpty(grayAttributes)) {
61-
grayAttributes.entrySet().forEach(entry -> {
62-
String name = new StringBuilder().append(GrayTrackInfo.GRAY_TRACK_ATTRIBUTE_PREFIX)
63-
.append(GrayTrackInfo.GRAY_TRACK_SEPARATE)
64-
.append(entry.getKey()).toString();
65-
httpHeaders.add(name, entry.getValue());
66-
});
67-
}
34+
// if (StringUtils.isNotEmpty(grayTrack.getUri())) {
35+
// httpHeaders.add(GrayHttpTrackInfo.GRAY_TRACK_URI, grayTrack.getUri());
36+
// }
37+
// if (StringUtils.isNotEmpty(grayTrack.getTraceIp())) {
38+
// httpHeaders.add(GrayHttpTrackInfo.GRAY_TRACK_TRACE_IP, grayTrack.getTraceIp());
39+
// }
40+
// if (StringUtils.isNotEmpty(grayTrack.getMethod())) {
41+
// httpHeaders.add(GrayHttpTrackInfo.GRAY_TRACK_METHOD, grayTrack.getMethod());
42+
// }
43+
// if (grayTrack.getParameters() != null && !grayTrack.getParameters().isEmpty()) {
44+
// grayTrack.getParameters().entrySet().forEach(entry -> {
45+
// String name = new StringBuilder().append(GrayHttpTrackInfo.GRAY_TRACK_PARAMETER_PREFIX)
46+
// .append(GrayTrackInfo.GRAY_TRACK_SEPARATE)
47+
// .append(entry.getKey()).toString();
48+
// httpHeaders.put(name, entry.getValue());
49+
// });
50+
// }
51+
// if (grayTrack.getHeaders() != null && !grayTrack.getHeaders().isEmpty()) {
52+
// grayTrack.getHeaders().entrySet().forEach(entry -> {
53+
// String name = new StringBuilder().append(GrayHttpTrackInfo.GRAY_TRACK_HEADER_PREFIX)
54+
// .append(GrayTrackInfo.GRAY_TRACK_SEPARATE)
55+
// .append(entry.getKey()).toString();
56+
// httpHeaders.put(name, entry.getValue());
57+
// });
58+
// }
59+
//
60+
// Map<String, String> grayAttributes = grayTrack.getAttributes();
61+
// if (MapUtils.isNotEmpty(grayAttributes)) {
62+
// grayAttributes.entrySet().forEach(entry -> {
63+
// String name = new StringBuilder().append(GrayTrackInfo.GRAY_TRACK_ATTRIBUTE_PREFIX)
64+
// .append(GrayTrackInfo.GRAY_TRACK_SEPARATE)
65+
// .append(entry.getKey()).toString();
66+
// httpHeaders.add(name, entry.getValue());
67+
// });
68+
// }
6869
}
6970
return true;
7071
}
7172

73+
74+
public static class RestTemplateHttpGrayTrackRecordDevice implements HttpGrayTrackRecordDevice {
75+
76+
private HttpHeaders httpHeaders;
77+
78+
public RestTemplateHttpGrayTrackRecordDevice(HttpHeaders httpHeaders) {
79+
this.httpHeaders = httpHeaders;
80+
}
81+
82+
@Override
83+
public void record(String name, String value) {
84+
httpHeaders.set(name, value);
85+
}
86+
87+
@Override
88+
public void record(String name, List<String> values) {
89+
httpHeaders.put(name, values);
90+
}
91+
}
92+
7293
@Override
7394
public boolean after(GrayRequest request) {
7495
return true;

0 commit comments

Comments
 (0)