Skip to content

Commit fc12db3

Browse files
express-http-proxy ^1.6.0 compatibility
1 parent 6abcd04 commit fc12db3

File tree

4 files changed

+39
-41
lines changed

4 files changed

+39
-41
lines changed

packages/zipkin-instrumentation-express/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
"zipkin": "^0.19.2"
1818
},
1919
"devDependencies": {
20-
"express-http-proxy": "^0.11.0",
20+
"express-http-proxy": "^1.6.0",
2121
"node-fetch": "^2.6.0"
2222
}
2323
}

packages/zipkin-instrumentation-express/src/wrapExpressHttpProxy.js

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -50,33 +50,33 @@ class ExpressHttpProxyInstrumentation {
5050

5151
function wrapProxy(proxy, {tracer, serviceName, remoteServiceName}) {
5252
return function zipkinProxy(host, options = {}) {
53-
function wrapDecorateRequest(instrumentation, decorateRequest) {
53+
function wrapProxyReqOptDecorator(instrumentation, proxyReqOptDecorator) {
5454
return (proxyReq, serverReq) => {
5555
const serverTraceId = serverReq._trace_id;
5656
let wrappedProxyReq = proxyReq;
57-
if (typeof decorateRequest === 'function') {
57+
if (typeof proxyReqOptDecorator === 'function') {
5858
tracer.letId(serverTraceId, () => {
59-
wrappedProxyReq = decorateRequest(proxyReq, serverReq);
59+
wrappedProxyReq = proxyReqOptDecorator(proxyReq, serverReq);
6060
});
6161
}
6262

6363
return instrumentation.decorateAndRecordRequest(serverReq, wrappedProxyReq, serverTraceId);
6464
};
6565
}
6666

67-
function wrapIntercept(instrumentation, intercept) {
68-
return (rsp, data, serverReq, res, callback) => {
69-
const instrumentedCallback = (err, rspd, sent) => {
70-
instrumentation.recordResponse(rsp, serverReq._trace_id_proxy);
71-
return callback(err, rspd, sent);
72-
};
73-
67+
function wrapUserResDecorator(instrumentation, userResDecorator) {
68+
return (rsp, data, serverReq, res) => {
7469
const serverTraceId = serverReq._trace_id;
75-
if (typeof intercept === 'function') {
76-
tracer.letId(serverTraceId,
77-
() => intercept(rsp, data, serverReq, res, instrumentedCallback));
70+
if (typeof userResDecorator === 'function') {
71+
let decoratedResponse;
72+
tracer.letId(serverTraceId, () => {
73+
decoratedResponse = userResDecorator(rsp, data, serverReq, res);
74+
instrumentation.recordResponse(rsp, serverReq._trace_id_proxy);
75+
});
76+
return decoratedResponse;
7877
} else {
79-
instrumentedCallback(null, data);
78+
instrumentation.recordResponse(rsp, serverReq._trace_id_proxy);
79+
return data;
8080
}
8181
};
8282
}
@@ -87,11 +87,13 @@ function wrapProxy(proxy, {tracer, serviceName, remoteServiceName}) {
8787

8888
const wrappedOptions = options;
8989

90-
const {decorateRequest} = wrappedOptions;
91-
wrappedOptions.decorateRequest = wrapDecorateRequest(instrumentation, decorateRequest);
90+
const {proxyReqOptDecorator} = wrappedOptions;
91+
wrappedOptions.proxyReqOptDecorator = wrapProxyReqOptDecorator(
92+
instrumentation, proxyReqOptDecorator
93+
);
9294

93-
const {intercept} = wrappedOptions;
94-
wrappedOptions.intercept = wrapIntercept(instrumentation, intercept);
95+
const {userResDecorator} = wrappedOptions;
96+
wrappedOptions.userResDecorator = wrapUserResDecorator(instrumentation, userResDecorator);
9597

9698
return proxy(host, wrappedOptions);
9799
};

packages/zipkin-instrumentation-express/test/wrapExpressHttpProxyIntegrationTest.js

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,13 @@ describe('express proxy instrumentation - integration test', () => {
3131
const zipkinProxy = wrapProxy(proxy, {tracer: tracer.tracer(), remoteServiceName});
3232
frontendApp.use(middleware({tracer: tracer.tracer()}));
3333
frontendApp.use(zipkinProxy(`127.0.0.1:${backend.address().port}`, {
34-
decorateRequest: (proxyReq) => {
35-
tracer.tracer().recordBinary('decorateRequest', '');
34+
proxyReqOptDecorator: (proxyReq) => {
35+
tracer.tracer().recordBinary('proxyReqOptDecorator', '');
3636
return proxyReq;
3737
},
38-
intercept: (rsp, data, serverReq, res, callback) => {
39-
tracer.tracer().recordBinary('intercept', '');
40-
callback(null, data);
38+
userResDecorator: (rsp, data, serverReq, res) => {
39+
tracer.tracer().recordBinary('userResDecorator', '');
40+
return data;
4141
}
4242
}));
4343

@@ -61,8 +61,8 @@ describe('express proxy instrumentation - integration test', () => {
6161
tags: {
6262
'http.path': path,
6363
'http.status_code': '200',
64-
intercept: '',
65-
decorateRequest: ''
64+
userResDecorator: '',
65+
proxyReqOptDecorator: ''
6666
}
6767
});
6868
}
@@ -154,7 +154,7 @@ describe('express proxy instrumentation - integration test', () => {
154154
'http.path': path,
155155
'http.status_code': '500',
156156
error: '500', // TODO: better error message
157-
decorateRequest: ''
157+
proxyReqOptDecorator: ''
158158
}
159159
}));
160160
});

yarn.lock

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -3771,7 +3771,7 @@ debug@3.1.0, debug@=3.1.0, debug@~3.1.0:
37713771
dependencies:
37723772
ms "2.0.0"
37733773

3774-
debug@^3.0.0, debug@^3.1.0, debug@^3.1.1, debug@^3.2.6:
3774+
debug@^3.0.0, debug@^3.0.1, debug@^3.1.0, debug@^3.1.1, debug@^3.2.6:
37753775
version "3.2.6"
37763776
resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b"
37773777
integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==
@@ -4282,12 +4282,7 @@ es-to-primitive@^1.2.1:
42824282
is-date-object "^1.0.1"
42834283
is-symbol "^1.0.2"
42844284

4285-
es6-promise@^3.2.1:
4286-
version "3.3.1"
4287-
resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-3.3.1.tgz#a08cdde84ccdbf34d027a1451bc91d4bcd28a613"
4288-
integrity sha1-oIzd6EzNvzTQJ6FFG8kdS80ophM=
4289-
4290-
es6-promise@^4.0.3:
4285+
es6-promise@^4.0.3, es6-promise@^4.1.1:
42914286
version "4.2.8"
42924287
resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a"
42934288
integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==
@@ -4590,13 +4585,14 @@ expand-template@^2.0.3:
45904585
resolved "https://registry.yarnpkg.com/expand-template/-/expand-template-2.0.3.tgz#6e14b3fcee0f3a6340ecb57d2e8918692052a47c"
45914586
integrity sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==
45924587

4593-
express-http-proxy@^0.11.0:
4594-
version "0.11.0"
4595-
resolved "https://registry.yarnpkg.com/express-http-proxy/-/express-http-proxy-0.11.0.tgz#f2e6ba2e9e8677b1ba335375c3cae670d5a1bb0a"
4596-
integrity sha1-8ua6Lp6Gd7G6M1N1w8rmcNWhuwo=
4588+
express-http-proxy@^1.6.0:
4589+
version "1.6.0"
4590+
resolved "https://registry.yarnpkg.com/express-http-proxy/-/express-http-proxy-1.6.0.tgz#8672b1093cc96b8a93e8e3da948dd111a668ef22"
4591+
integrity sha512-7Re6Lepg96NA2wiv7DC5csChAScn4K76/UgYnC71XiITCT1cgGTJUGK6GS0pIixudg3Fbx3Q6mmEW3mZv5tHFQ==
45974592
dependencies:
4598-
es6-promise "^3.2.1"
4599-
raw-body "^2.1.7"
4593+
debug "^3.0.1"
4594+
es6-promise "^4.1.1"
4595+
raw-body "^2.3.0"
46004596

46014597
express@^4.17.0:
46024598
version "4.17.1"
@@ -8616,7 +8612,7 @@ raw-body@2.4.0:
86168612
iconv-lite "0.4.24"
86178613
unpipe "1.0.0"
86188614

8619-
raw-body@^2.1.7:
8615+
raw-body@^2.3.0:
86208616
version "2.4.1"
86218617
resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.1.tgz#30ac82f98bb5ae8c152e67149dac8d55153b168c"
86228618
integrity sha512-9WmIKF6mkvA0SLmA2Knm9+qj89e+j1zqgyn8aXGd7+nAduPoqgI9lO57SAZNn/Byzo5P7JhXTyg9PzaJbH73bA==

0 commit comments

Comments
 (0)