Skip to content

Support for transaction parentIds in Elastic Rum agent #1520

@pedrogranja

Description

@pedrogranja

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

From your support, I see that there was a discussion around this subject in this issue: #1267 and at the time, you didn't consider this change due to a lack of use cases. I believe that my use case is valid and from my experience it is possible to use your agent in the service workers using some polyfills. Could this change be considered now?

Thank you!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions