Hello Elastic team,
In the context of a web extension, we are using the Elastic RUM agent. We created an agent in both the "FE" of the web extension and in the service worker of the web extension and we would now like to relate the transaction from both processes.
In order to do this, I'm passing the parent id and trace id of the span that I wish to correlate my new transaction with in the service worker. in more concrete details, I'm doing the following:
chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
...
transaction.parentId = message.parentId;
transaction.traceId = message.traceId;
...
}
This didn't work out of the box, and I found that it was due to the truncation happening in the performance-monitoring.js file discarding the parent ids, causing them to not be passed onto the APM Server.
To allow for my scenario I added, the parentId mapping, in the file, as such:
id: transaction.id,
trace_id: transaction.traceId,
session: transaction.session,
name: transaction.name,
type: transaction.type,
duration: transaction.duration(),
spans: spans,
context: transaction.context,
marks: transaction.marks,
breakdown: transaction.breakdownTimings,
span_count: {
started: spans.length
},
sampled: transaction.sampled,
sample_rate: transaction.sampleRate,
experience: transaction.experience,
outcome: transaction.outcome,
**parent_id: transaction.parentId** <- added this line
I believe this to be a welcome change and after testing my use case is solved, but I would like some clarification if this was not done for a particular reason or if there is any limitation that you can see. I see that for other agents this seems to be allowed in conjunction with the traceparent.
Thank you in advance