const handleError = err => { this.emit('error', request, err); const { message, stack } = err; span.setTag(Tags.ERROR, true); span.log({ message, stack }); if (shouldWriteHead) { shouldWriteHead = false; let statusCode = 500; if (err.code === TEMPLATE_NOT_FOUND) { statusCode = 404; } span.setTag(Tags.HTTP_STATUS_CODE, statusCode); response.writeHead(statusCode, responseHeaders); // To render with custom error template if (typeof err.presentable === 'string') { response.end(`${err.presentable}`); } else { response.end(INTERNAL_SERVER_ERROR); } span.finish(); } else { contentLengthStream.end(); } }
span.setTag(Tags.ERROR, true); span.log({ message: err.message }); contentLengthStream.end();
this.emit('error', request, err); span.addTags({ [Tags.ERROR]: true, [Tags.HTTP_STATUS_CODE]: 500 });
hemera.ext('onError', (hemera, payload, error, next) => { const span = hemera[jaegerContextKey] span.setTag(Opentracing.Tags.ERROR, true) span.log({ event: 'error', 'error.object': error, message: error.message, stack: error.stack }) next() })
it('should flag wrong status codes as error', () => { nock('http://risingstack.com') .get('/') .reply(400) return request('http://risingstack.com') .catch(() => { expect(mockChildSpan.setTag).to.be.calledWith(Tags.ERROR, true) }) })
it('must support setting error to false', () => { const span = new Span(tracerInstance, 'rpc'); span.setTag(opentracing.Tags.ERROR, false); expect(span.span.ec).to.equal(0); expect(span.span.error).to.not.exist; });
/* GET readiness probe response. */ router.get('/ready', async function(req, res, next) { const span = tracer.startSpan('redis_ping') try { let pingval = await db.ping() if (pingval) { res.send('yes'); span.setTag("RedisPing", true) span.finish() } else { span.setTag("RedisPing", false) span.finish() res.status(500).json({ error: "redis.ping was false" }) } } catch (error) { span.setTag(Tags.ERROR, error.toString()) span.finish() res.status(500).json({ error: error.toString() }) } });
function wrapCallback (tracers, spans, operationName, done) { const fn = function (err, res) { if (err) { spans.forEach((span) => span.log({ event: 'error', 'error.object': err, message: err.message, stack: err.stack })) spans.forEach((span) => span.setTag(Tags.ERROR, true)) debug(`Operation error captured ${operationName}`, { reason: 'Error event', errorMessage: err.message }) } spans.forEach((span) => span.finish()) debug(`Operation finished ${operationName}`) if (done) { done(err, res) } } return fn }
const tags = {}; tags[opentracing.Tags.SPAN_KIND] = opentracing.Tags.SPAN_KIND_RPC_CLIENT; tags[opentracing.Tags.ERROR] = true; tags.foo = 'bar';
await db.raw(query) } catch (err) { expect(mockChildSpan.setTag).to.be.calledWith(Tags.ERROR, true) expect(mockChildSpan.log).to.be.calledWith({ event: 'error',
value: error.toString(), }); span.setTag(Tags.ERROR, true) span.finish(); reject(error);
it('should flag error', () => { nock('http://risingstack.com') .get('/') .replyWithError('My Error') return request('http://risingstack.com') .catch((err) => { expect(mockChildSpan.setTag).to.be.calledWith(Tags.ERROR, true) expect(mockChildSpan.log).to.be.calledWith({ event: 'error', 'error.object': err.cause, message: err.cause.message, stack: err.cause.stack }) expect(mockChildSpan.finish).to.have.callCount(1) }) })
hemera.ext('onError', (hemera, payload, error, next) => { const span = hemera[jaegerContextKey] span.setTag(Opentracing.Tags.ERROR, true) span.log({ event: 'error', 'error.object': error, message: error.message, stack: error.stack }) next() })
it('must handle error tag differently', () => { const span = new Span(tracerInstance, 'rpc'); span.setTag(opentracing.Tags.ERROR, true); expect(span.span.ec).to.equal(1); expect(span.span.error).to.not.exist; });