Skip to content

Commit 4f48fc3

Browse files
authored
refactor: Updated shim.recordConsume to use shim.record and added ability to invoke an after hook with callback args (#2207)
1 parent 330cc4b commit 4f48fc3

File tree

21 files changed

+292
-332
lines changed

21 files changed

+292
-332
lines changed

lib/instrumentation/amqplib/amqplib.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -266,18 +266,20 @@ function wrapModel(shim, Model, promiseMode) {
266266
destinationName: shim.FIRST,
267267
callback: setCallback(shim, promiseMode),
268268
promise: promiseMode,
269-
messageHandler: function handleConsumedMessage(shim, fn, name, message) {
269+
after: function handleConsumedMessage({ shim, result, args, segment }) {
270+
if (!shim.agent.config.message_tracer.segment_parameters.enabled) {
271+
shim.logger.trace('Not capturing segment parameters')
272+
return
273+
}
274+
270275
// the message is the param when using the promised based model
271-
message = promiseMode ? message : message[1]
276+
const message = promiseMode ? result : args?.[1]
272277
if (!message) {
273278
shim.logger.trace('No results from consume.')
274279
return null
275280
}
276281
const parameters = getParametersFromMessage(message)
277-
278-
const headers = message?.properties?.headers
279-
280-
return { parameters, headers }
282+
shim.copySegmentParameters(segment, parameters)
281283
}
282284
})
283285
)
@@ -312,12 +314,10 @@ function wrapModel(shim, Model, promiseMode) {
312314
* Extracts the appropriate messageHandler parameters for the consume method.
313315
*
314316
* @param {Shim} shim instance of shim
315-
* @param {object} _consumer not used
316-
* @param {string} _name not used
317317
* @param {Array} args arguments passed to the consume method
318318
* @returns {object} message params
319319
*/
320-
function describeMessage(shim, _consumer, _name, args) {
320+
function describeMessage(shim, args) {
321321
const [message] = args
322322

323323
if (!message?.properties) {

lib/instrumentation/aws-sdk/v3/bedrock.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -197,8 +197,7 @@ function getBedrockSpec({ commandName }, shim, _original, _name, args) {
197197
return new RecorderSpec({
198198
promise: true,
199199
name: `Llm/${modelType}/Bedrock/${commandName}`,
200-
// eslint-disable-next-line max-params
201-
after: (shim, _fn, _fnName, err, response, segment) => {
200+
after: ({ shim, error: err, result: response, segment }) => {
202201
const passThroughParams = {
203202
shim,
204203
err,

lib/instrumentation/core/inspector.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ function initialize(agent, inspector, name, shim) {
1616
shim.wrap(sessionProto, 'post', function wrapPost(shim, fn) {
1717
return function wrappedPost() {
1818
const args = shim.argsToArray.apply(shim, arguments)
19-
shim.bindCallbackSegment(args, shim.LAST)
19+
shim.bindCallbackSegment(null, args, shim.LAST)
2020
return fn.apply(this, args)
2121
}
2222
})

lib/instrumentation/langchain/runnable.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,7 @@ function instrumentInvokeChain({ langchain, shim }) {
6161
return new RecorderSpec({
6262
name: `${LANGCHAIN.CHAIN}/${fnName}`,
6363
promise: true,
64-
// eslint-disable-next-line max-params
65-
after(_shim, _fn, _name, err, output, segment) {
64+
after({ error: err, result: output, segment }) {
6665
recordChatCompletionEvents({
6766
segment,
6867
messages: [output],
@@ -97,8 +96,7 @@ function instrumentStream({ langchain, shim }) {
9796
return new RecorderSpec({
9897
name: `${LANGCHAIN.CHAIN}/${fnName}`,
9998
promise: true,
100-
// eslint-disable-next-line max-params
101-
after(_shim, _fn, _name, err, output, segment) {
99+
after({ error: err, result: output, segment }) {
102100
// Input error occurred which means a stream was not created.
103101
// Skip instrumenting streaming and create Llm Events from
104102
// the data we have

lib/instrumentation/langchain/tools.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,7 @@ module.exports = function initialize(shim, tools) {
3131
return new RecorderSpec({
3232
name: `${LANGCHAIN.TOOL}/${name}`,
3333
promise: true,
34-
// eslint-disable-next-line max-params
35-
after(_shim, _fn, _name, err, output, segment) {
34+
after({ error: err, result: output, segment }) {
3635
const metadata = mergeMetadata(instanceMeta, paramsMeta)
3736
const tags = mergeTags(instanceTags, paramsTags)
3837
segment.end()

lib/instrumentation/langchain/vectorstore.js

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,7 @@ module.exports = function initialize(shim, vectorstores) {
8989
return new RecorderSpec({
9090
name: `${LANGCHAIN.VECTORSTORE}/${fnName}`,
9191
promise: true,
92-
// eslint-disable-next-line max-params
93-
after(_shim, _fn, _name, err, output, segment) {
92+
after({ error: err, result: output, segment }) {
9493
if (!output) {
9594
// If we get an error, it is possible that `output = null`.
9695
// In that case, we define it to be an empty array.

lib/instrumentation/memcached.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ module.exports = function initialize(agent, memcached, moduleName, shim) {
7676
return new OperationSpec({
7777
name: metacall.type || 'Unknown',
7878
callback: function wrapCallback(shim, fn, fnName, opSegment) {
79-
shim.bindCallbackSegment(metacall, 'callback', opSegment)
79+
shim.bindCallbackSegment(null, metacall, 'callback', opSegment)
8080
},
8181
parameters
8282
})

lib/instrumentation/openai.js

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -262,8 +262,7 @@ module.exports = function initialize(agent, openai, moduleName, shim) {
262262
return new RecorderSpec({
263263
name: OPENAI.COMPLETION,
264264
promise: true,
265-
// eslint-disable-next-line max-params
266-
after(_shim, _fn, _name, err, response, segment) {
265+
after({ error: err, result: response, segment }) {
267266
if (request.stream) {
268267
instrumentStream({ agent, shim, request, response, segment })
269268
} else {
@@ -294,8 +293,7 @@ module.exports = function initialize(agent, openai, moduleName, shim) {
294293
return new RecorderSpec({
295294
name: OPENAI.EMBEDDING,
296295
promise: true,
297-
// eslint-disable-next-line max-params
298-
after(_shim, _fn, _name, err, response, segment) {
296+
after({ error: err, result: response, segment }) {
299297
addLlmMeta({ agent, segment })
300298

301299
if (!response) {

lib/instrumentation/redis.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ function registerInternalSendCommand(shim, proto) {
4949
parameters,
5050
callback: function bindCallback(shim, _f, _n, segment) {
5151
if (shim.isFunction(commandObject.callback)) {
52-
shim.bindCallbackSegment(commandObject, 'callback', segment)
52+
shim.bindCallbackSegment(null, commandObject, 'callback', segment)
5353
} else {
5454
const self = this
5555
commandObject.callback = shim.bindSegment(
@@ -87,9 +87,9 @@ function registerSendCommand(shim, proto) {
8787
callback: function bindCallback(shim, _f, _n, segment) {
8888
const last = args[args.length - 1]
8989
if (shim.isFunction(last)) {
90-
shim.bindCallbackSegment(args, shim.LAST, segment)
90+
shim.bindCallbackSegment(null, args, shim.LAST, segment)
9191
} else if (shim.isArray(last) && shim.isFunction(last[last.length - 1])) {
92-
shim.bindCallbackSegment(last, shim.LAST, segment)
92+
shim.bindCallbackSegment(null, last, shim.LAST, segment)
9393
}
9494
}
9595
})

lib/instrumentation/superagent.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ function wrapCallback(shim, callback) {
5050
return function wrappedCallback() {
5151
const segment = shim.getSegment(this)
5252
if (segment && segment.transaction.isActive()) {
53-
shim.bindCallbackSegment(this, '_callback', segment)
53+
shim.bindCallbackSegment(null, this, '_callback', segment)
5454
}
5555
return callback.apply(this, arguments)
5656
}

0 commit comments

Comments
 (0)