-
Notifications
You must be signed in to change notification settings - Fork 19
The number of traces and spans are shown incorrectly in Zipkin #43
Comments
Thanks for reporting this. Do you have a the same code for Service A and Service B anywhere (to save time creating a test)? |
Service-A code.... 'use strict';
const appzip = require('appmetrics-zipkin')({
host: 'localhost',
port: 9411,
serviceName:'service-a',
sampleRate: 1.0
});
const request = require('request');
const express = require('express');
const app = express();
app.get('/hello', (req, res) => {
setTimeout(()=> {//simulate a DB operation with high latency via setTimeout
request('http://localhost:3001/world', (error, response, body) => {
if (error) {
res.send(error);
} else {
res.send(body);
}
});
},10000);
});
app.listen(3000, () => console.log('service-a listening on port 3000')); Service-B code... 'use strict';
const appzip = require('appmetrics-zipkin')({
host: 'localhost',
port: 9411,
serviceName:'service-b',
sampleRate: 1.0
});
const express = require('express');
const app = express();
app.get('/world', (req, res) => {
res.send('Hello World!');
});
app.listen(3001, () => console.log('service-b listening on port 3001')); Use curl to invoke Service-A. Invoke it 5 times consecutively Check Zipkin and you will see 1 trace with 6 spans. |
FYI, work has been happening on this. It looks like the issue is in the way that we propagate the async context - the use of This means that |
@gdams is working on improving the async context propagation for this. |
Tried this library, unfortunately does not give the right results under high concurrency scenarios.
Ex:
Client—> Service-A —> Service-B
In my case Service-A and Service-B are microservices built using node.js. To simulate the high concurrency scenario, do the following :
-In Service-A, after a request is received from the client, add a setTimeout() of about 10 seconds, after which Service-A calls Service-B
-Have the Client send 5 requests one after the other within 10 seconds.
-Service-A will receive all 5 requests, before it is forwarded to Service-B
Under the above scenario, the expectation is to see 5 different traces with 2 spans in each trace. Instead I see a single trace with 6 spans in it.
The text was updated successfully, but these errors were encountered: