Create 0110-client-user-session.md - #110

Draft
smeubank wants to merge 2 commits into
mainfrom
smeubank-user-sessions
Draft

Create 0110-client-user-session.md#110
smeubank wants to merge 2 commits into
mainfrom
smeubank-user-sessions

Conversation

@smeubank

@smeubanksmeubank commented Aug 15, 2023

Copy link
Copy Markdown

Feature RFC to define and decide on a user session concept for Sentry SDKs. This is focused on client side SDKs, and aims to solve the ability for SDKs to uniquely link all events associated with a unique user sessions. Which would allow to create a link between all events generated by the SDK during the session, to group them in the Sentry UI, and allow the ID to be considered during client and server side sampling to ensure the completeness of user session in sentry.

Rendered RFC

@smeubanksmeubank changed the title Create 0109-client-user-session.mdCreate 0110-client-user-session.mdAug 15, 2023
Comment on lines +36 to +44
> save us a lot of time if we were able to identify evens from that user
>

Would the default `userId` work in this case?

> If you don't provide an `id` the SDK falls back to `installationId`, which the SDK randomly generates once during an app's installation.
>

https://docs.sentry.io/platforms/android/enriching-events/identify-user/

@kahestkahestAug 16, 2023

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

as mentioned below in the cons, installationId persists until the app is re-installed. this means it stays the same for all sessions of the user throughout one installation, which of course can be thousands across multiple weeks/months/years, and would therefore likely also contain multiple app starts

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another con: The default userId can be overwritten once Sentry.setUser() is called, thus loosing the connection before/after a user logged into an app.
I see we have Context->Device->Id on Android, but I'm not sure if this is provided by other platforms.

2. Longer term solution:
1. react-native SDK
1. SDK provides a way for users to generate a sessionID
1. could simple be a version of the initializationID

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
1. could simple be a version of the initializationID
1. could simply be a version of the `installationId`

5. existing APIs around session may lead to confusion
6. client side sampling: SDK should ensure that if an event as part of a session included then all other events within
that session are included as well
1. identifying a unique session default experience, identifying by a particular user requires the user to decide with

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't fully understand this - is this referring to the default experience when looking up sessions on the product?


2. Longer term solution:
1. react-native SDK
1. SDK provides a way for users to generate a sessionID

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SDK should auto-generate sessions in a meaningful way to works for most apps (e.g. generate unique id on setUser and app start) and ideally provide an API to override this.

Comment on lines +63 to +65
4. consider a sampling option,
1. similar to SR that states if there is an error to have a higher sample rate for those user sessions
2. potentially long txn times as a decider in client for deciding

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

to clarify: does that mean that as soon as there is an error or a long txn (tbd how to determine this), the SDK starts to sample everything for that session? which also means that previous events are not available

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 on this question
the problem is that error often happens later, and we have already made sampling decisions for the given trace/session on the server at that point

@marandaneto

Copy link
Copy Markdown
Contributor

Can we actually somehow reuse the release health feature for that? each session already has an ID, that ID should be set in the event, and maybe propagate this ID as well similarly to connected errors and distributed tracing.
Would that be a viable option?

1. SDK provides a way for users to generate a sessionID
1. could simple be a version of the initializationID
2. could be experimental flag for now
3. automatically propagated this in DSC

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dynamic sampling could use this to ensure that either all transactions in this session or no transactions in this session are sampled. Nowadays we do the same thing but based on trace id.

Comment on lines +63 to +65
4. consider a sampling option,
1. similar to SR that states if there is an error to have a higher sample rate for those user sessions
2. potentially long txn times as a decider in client for deciding

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 on this question
the problem is that error often happens later, and we have already made sampling decisions for the given trace/session on the server at that point

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@smeubank@marandaneto@markushi@kahest@matejminar
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Create 0110-client-user-session.md - #110

Draft
smeubank wants to merge 2 commits into
mainfrom
smeubank-user-sessions
Draft

Create 0110-client-user-session.md#110
smeubank wants to merge 2 commits into
mainfrom
smeubank-user-sessions

Conversation

@smeubank

@smeubanksmeubank commented Aug 15, 2023

Copy link
Copy Markdown

Feature RFC to define and decide on a user session concept for Sentry SDKs. This is focused on client side SDKs, and aims to solve the ability for SDKs to uniquely link all events associated with a unique user sessions. Which would allow to create a link between all events generated by the SDK during the session, to group them in the Sentry UI, and allow the ID to be considered during client and server side sampling to ensure the completeness of user session in sentry.

Rendered RFC

@smeubanksmeubank changed the title Create 0109-client-user-session.mdCreate 0110-client-user-session.mdAug 15, 2023
Comment on lines +36 to +44
> save us a lot of time if we were able to identify evens from that user
>

Would the default `userId` work in this case?

> If you don't provide an `id` the SDK falls back to `installationId`, which the SDK randomly generates once during an app's installation.
>

https://docs.sentry.io/platforms/android/enriching-events/identify-user/

@kahestkahestAug 16, 2023

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

as mentioned below in the cons, installationId persists until the app is re-installed. this means it stays the same for all sessions of the user throughout one installation, which of course can be thousands across multiple weeks/months/years, and would therefore likely also contain multiple app starts

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another con: The default userId can be overwritten once Sentry.setUser() is called, thus loosing the connection before/after a user logged into an app.
I see we have Context->Device->Id on Android, but I'm not sure if this is provided by other platforms.

2. Longer term solution:
1. react-native SDK
1. SDK provides a way for users to generate a sessionID
1. could simple be a version of the initializationID

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
1. could simple be a version of the initializationID
1. could simply be a version of the `installationId`

5. existing APIs around session may lead to confusion
6. client side sampling: SDK should ensure that if an event as part of a session included then all other events within
that session are included as well
1. identifying a unique session default experience, identifying by a particular user requires the user to decide with

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't fully understand this - is this referring to the default experience when looking up sessions on the product?


2. Longer term solution:
1. react-native SDK
1. SDK provides a way for users to generate a sessionID

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SDK should auto-generate sessions in a meaningful way to works for most apps (e.g. generate unique id on setUser and app start) and ideally provide an API to override this.

Comment on lines +63 to +65
4. consider a sampling option,
1. similar to SR that states if there is an error to have a higher sample rate for those user sessions
2. potentially long txn times as a decider in client for deciding

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

to clarify: does that mean that as soon as there is an error or a long txn (tbd how to determine this), the SDK starts to sample everything for that session? which also means that previous events are not available

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 on this question
the problem is that error often happens later, and we have already made sampling decisions for the given trace/session on the server at that point

@marandaneto

Copy link
Copy Markdown
Contributor

Can we actually somehow reuse the release health feature for that? each session already has an ID, that ID should be set in the event, and maybe propagate this ID as well similarly to connected errors and distributed tracing.
Would that be a viable option?

1. SDK provides a way for users to generate a sessionID
1. could simple be a version of the initializationID
2. could be experimental flag for now
3. automatically propagated this in DSC

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dynamic sampling could use this to ensure that either all transactions in this session or no transactions in this session are sampled. Nowadays we do the same thing but based on trace id.

Comment on lines +63 to +65
4. consider a sampling option,
1. similar to SR that states if there is an error to have a higher sample rate for those user sessions
2. potentially long txn times as a decider in client for deciding

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 on this question
the problem is that error often happens later, and we have already made sampling decisions for the given trace/session on the server at that point

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@smeubank@marandaneto@markushi@kahest@matejminar
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Create 0110-client-user-session.md - #110

Draft
smeubank wants to merge 2 commits into
mainfrom
smeubank-user-sessions
Draft

Create 0110-client-user-session.md#110
smeubank wants to merge 2 commits into
mainfrom
smeubank-user-sessions

Conversation

@smeubank

@smeubanksmeubank commented Aug 15, 2023

Copy link
Copy Markdown

Feature RFC to define and decide on a user session concept for Sentry SDKs. This is focused on client side SDKs, and aims to solve the ability for SDKs to uniquely link all events associated with a unique user sessions. Which would allow to create a link between all events generated by the SDK during the session, to group them in the Sentry UI, and allow the ID to be considered during client and server side sampling to ensure the completeness of user session in sentry.

Rendered RFC

@smeubanksmeubank changed the title Create 0109-client-user-session.mdCreate 0110-client-user-session.mdAug 15, 2023
Comment on lines +36 to +44
> save us a lot of time if we were able to identify evens from that user
>

Would the default `userId` work in this case?

> If you don't provide an `id` the SDK falls back to `installationId`, which the SDK randomly generates once during an app's installation.
>

https://docs.sentry.io/platforms/android/enriching-events/identify-user/

@kahestkahestAug 16, 2023

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

as mentioned below in the cons, installationId persists until the app is re-installed. this means it stays the same for all sessions of the user throughout one installation, which of course can be thousands across multiple weeks/months/years, and would therefore likely also contain multiple app starts

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another con: The default userId can be overwritten once Sentry.setUser() is called, thus loosing the connection before/after a user logged into an app.
I see we have Context->Device->Id on Android, but I'm not sure if this is provided by other platforms.

2. Longer term solution:
1. react-native SDK
1. SDK provides a way for users to generate a sessionID
1. could simple be a version of the initializationID

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
1. could simple be a version of the initializationID
1. could simply be a version of the `installationId`

5. existing APIs around session may lead to confusion
6. client side sampling: SDK should ensure that if an event as part of a session included then all other events within
that session are included as well
1. identifying a unique session default experience, identifying by a particular user requires the user to decide with

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't fully understand this - is this referring to the default experience when looking up sessions on the product?


2. Longer term solution:
1. react-native SDK
1. SDK provides a way for users to generate a sessionID

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SDK should auto-generate sessions in a meaningful way to works for most apps (e.g. generate unique id on setUser and app start) and ideally provide an API to override this.

Comment on lines +63 to +65
4. consider a sampling option,
1. similar to SR that states if there is an error to have a higher sample rate for those user sessions
2. potentially long txn times as a decider in client for deciding

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

to clarify: does that mean that as soon as there is an error or a long txn (tbd how to determine this), the SDK starts to sample everything for that session? which also means that previous events are not available

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 on this question
the problem is that error often happens later, and we have already made sampling decisions for the given trace/session on the server at that point

@marandaneto

Copy link
Copy Markdown
Contributor

Can we actually somehow reuse the release health feature for that? each session already has an ID, that ID should be set in the event, and maybe propagate this ID as well similarly to connected errors and distributed tracing.
Would that be a viable option?

1. SDK provides a way for users to generate a sessionID
1. could simple be a version of the initializationID
2. could be experimental flag for now
3. automatically propagated this in DSC

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dynamic sampling could use this to ensure that either all transactions in this session or no transactions in this session are sampled. Nowadays we do the same thing but based on trace id.

Comment on lines +63 to +65
4. consider a sampling option,
1. similar to SR that states if there is an error to have a higher sample rate for those user sessions
2. potentially long txn times as a decider in client for deciding

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 on this question
the problem is that error often happens later, and we have already made sampling decisions for the given trace/session on the server at that point

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@smeubank@marandaneto@markushi@kahest@matejminar
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Create 0110-client-user-session.md - #110

Draft
smeubank wants to merge 2 commits into
mainfrom
smeubank-user-sessions
Draft

Create 0110-client-user-session.md#110
smeubank wants to merge 2 commits into
mainfrom
smeubank-user-sessions

Conversation

@smeubank

@smeubanksmeubank commented Aug 15, 2023

Copy link
Copy Markdown

Feature RFC to define and decide on a user session concept for Sentry SDKs. This is focused on client side SDKs, and aims to solve the ability for SDKs to uniquely link all events associated with a unique user sessions. Which would allow to create a link between all events generated by the SDK during the session, to group them in the Sentry UI, and allow the ID to be considered during client and server side sampling to ensure the completeness of user session in sentry.

Rendered RFC

@smeubanksmeubank changed the title Create 0109-client-user-session.mdCreate 0110-client-user-session.mdAug 15, 2023
Comment on lines +36 to +44
> save us a lot of time if we were able to identify evens from that user
>

Would the default `userId` work in this case?

> If you don't provide an `id` the SDK falls back to `installationId`, which the SDK randomly generates once during an app's installation.
>

https://docs.sentry.io/platforms/android/enriching-events/identify-user/

@kahestkahestAug 16, 2023

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

as mentioned below in the cons, installationId persists until the app is re-installed. this means it stays the same for all sessions of the user throughout one installation, which of course can be thousands across multiple weeks/months/years, and would therefore likely also contain multiple app starts

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another con: The default userId can be overwritten once Sentry.setUser() is called, thus loosing the connection before/after a user logged into an app.
I see we have Context->Device->Id on Android, but I'm not sure if this is provided by other platforms.

2. Longer term solution:
1. react-native SDK
1. SDK provides a way for users to generate a sessionID
1. could simple be a version of the initializationID

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
1. could simple be a version of the initializationID
1. could simply be a version of the `installationId`

5. existing APIs around session may lead to confusion
6. client side sampling: SDK should ensure that if an event as part of a session included then all other events within
that session are included as well
1. identifying a unique session default experience, identifying by a particular user requires the user to decide with

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't fully understand this - is this referring to the default experience when looking up sessions on the product?


2. Longer term solution:
1. react-native SDK
1. SDK provides a way for users to generate a sessionID

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SDK should auto-generate sessions in a meaningful way to works for most apps (e.g. generate unique id on setUser and app start) and ideally provide an API to override this.

Comment on lines +63 to +65
4. consider a sampling option,
1. similar to SR that states if there is an error to have a higher sample rate for those user sessions
2. potentially long txn times as a decider in client for deciding

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

to clarify: does that mean that as soon as there is an error or a long txn (tbd how to determine this), the SDK starts to sample everything for that session? which also means that previous events are not available

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 on this question
the problem is that error often happens later, and we have already made sampling decisions for the given trace/session on the server at that point

@marandaneto

Copy link
Copy Markdown
Contributor

Can we actually somehow reuse the release health feature for that? each session already has an ID, that ID should be set in the event, and maybe propagate this ID as well similarly to connected errors and distributed tracing.
Would that be a viable option?

1. SDK provides a way for users to generate a sessionID
1. could simple be a version of the initializationID
2. could be experimental flag for now
3. automatically propagated this in DSC

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dynamic sampling could use this to ensure that either all transactions in this session or no transactions in this session are sampled. Nowadays we do the same thing but based on trace id.

Comment on lines +63 to +65
4. consider a sampling option,
1. similar to SR that states if there is an error to have a higher sample rate for those user sessions
2. potentially long txn times as a decider in client for deciding

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 on this question
the problem is that error often happens later, and we have already made sampling decisions for the given trace/session on the server at that point

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@smeubank@marandaneto@markushi@kahest@matejminar
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Create 0110-client-user-session.md - #110

Draft
smeubank wants to merge 2 commits into
mainfrom
smeubank-user-sessions
Draft

Create 0110-client-user-session.md#110
smeubank wants to merge 2 commits into
mainfrom
smeubank-user-sessions

Conversation

@smeubank

@smeubanksmeubank commented Aug 15, 2023

Copy link
Copy Markdown

Feature RFC to define and decide on a user session concept for Sentry SDKs. This is focused on client side SDKs, and aims to solve the ability for SDKs to uniquely link all events associated with a unique user sessions. Which would allow to create a link between all events generated by the SDK during the session, to group them in the Sentry UI, and allow the ID to be considered during client and server side sampling to ensure the completeness of user session in sentry.

Rendered RFC

@smeubanksmeubank changed the title Create 0109-client-user-session.mdCreate 0110-client-user-session.mdAug 15, 2023
Comment on lines +36 to +44
> save us a lot of time if we were able to identify evens from that user
>

Would the default `userId` work in this case?

> If you don't provide an `id` the SDK falls back to `installationId`, which the SDK randomly generates once during an app's installation.
>

https://docs.sentry.io/platforms/android/enriching-events/identify-user/

@kahestkahestAug 16, 2023

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

as mentioned below in the cons, installationId persists until the app is re-installed. this means it stays the same for all sessions of the user throughout one installation, which of course can be thousands across multiple weeks/months/years, and would therefore likely also contain multiple app starts

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another con: The default userId can be overwritten once Sentry.setUser() is called, thus loosing the connection before/after a user logged into an app.
I see we have Context->Device->Id on Android, but I'm not sure if this is provided by other platforms.

2. Longer term solution:
1. react-native SDK
1. SDK provides a way for users to generate a sessionID
1. could simple be a version of the initializationID

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
1. could simple be a version of the initializationID
1. could simply be a version of the `installationId`

5. existing APIs around session may lead to confusion
6. client side sampling: SDK should ensure that if an event as part of a session included then all other events within
that session are included as well
1. identifying a unique session default experience, identifying by a particular user requires the user to decide with

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't fully understand this - is this referring to the default experience when looking up sessions on the product?


2. Longer term solution:
1. react-native SDK
1. SDK provides a way for users to generate a sessionID

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SDK should auto-generate sessions in a meaningful way to works for most apps (e.g. generate unique id on setUser and app start) and ideally provide an API to override this.

Comment on lines +63 to +65
4. consider a sampling option,
1. similar to SR that states if there is an error to have a higher sample rate for those user sessions
2. potentially long txn times as a decider in client for deciding

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

to clarify: does that mean that as soon as there is an error or a long txn (tbd how to determine this), the SDK starts to sample everything for that session? which also means that previous events are not available

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 on this question
the problem is that error often happens later, and we have already made sampling decisions for the given trace/session on the server at that point

@marandaneto

Copy link
Copy Markdown
Contributor

Can we actually somehow reuse the release health feature for that? each session already has an ID, that ID should be set in the event, and maybe propagate this ID as well similarly to connected errors and distributed tracing.
Would that be a viable option?

1. SDK provides a way for users to generate a sessionID
1. could simple be a version of the initializationID
2. could be experimental flag for now
3. automatically propagated this in DSC

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dynamic sampling could use this to ensure that either all transactions in this session or no transactions in this session are sampled. Nowadays we do the same thing but based on trace id.

Comment on lines +63 to +65
4. consider a sampling option,
1. similar to SR that states if there is an error to have a higher sample rate for those user sessions
2. potentially long txn times as a decider in client for deciding

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 on this question
the problem is that error often happens later, and we have already made sampling decisions for the given trace/session on the server at that point

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@smeubank@marandaneto@markushi@kahest@matejminar
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Create 0110-client-user-session.md - #110

Draft
smeubank wants to merge 2 commits into
mainfrom
smeubank-user-sessions
Draft

Create 0110-client-user-session.md#110
smeubank wants to merge 2 commits into
mainfrom
smeubank-user-sessions

Conversation

@smeubank

@smeubanksmeubank commented Aug 15, 2023

Copy link
Copy Markdown

Feature RFC to define and decide on a user session concept for Sentry SDKs. This is focused on client side SDKs, and aims to solve the ability for SDKs to uniquely link all events associated with a unique user sessions. Which would allow to create a link between all events generated by the SDK during the session, to group them in the Sentry UI, and allow the ID to be considered during client and server side sampling to ensure the completeness of user session in sentry.

Rendered RFC

@smeubanksmeubank changed the title Create 0109-client-user-session.mdCreate 0110-client-user-session.mdAug 15, 2023
Comment on lines +36 to +44
> save us a lot of time if we were able to identify evens from that user
>

Would the default `userId` work in this case?

> If you don't provide an `id` the SDK falls back to `installationId`, which the SDK randomly generates once during an app's installation.
>

https://docs.sentry.io/platforms/android/enriching-events/identify-user/

@kahestkahestAug 16, 2023

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

as mentioned below in the cons, installationId persists until the app is re-installed. this means it stays the same for all sessions of the user throughout one installation, which of course can be thousands across multiple weeks/months/years, and would therefore likely also contain multiple app starts

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another con: The default userId can be overwritten once Sentry.setUser() is called, thus loosing the connection before/after a user logged into an app.
I see we have Context->Device->Id on Android, but I'm not sure if this is provided by other platforms.

2. Longer term solution:
1. react-native SDK
1. SDK provides a way for users to generate a sessionID
1. could simple be a version of the initializationID

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
1. could simple be a version of the initializationID
1. could simply be a version of the `installationId`

5. existing APIs around session may lead to confusion
6. client side sampling: SDK should ensure that if an event as part of a session included then all other events within
that session are included as well
1. identifying a unique session default experience, identifying by a particular user requires the user to decide with

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't fully understand this - is this referring to the default experience when looking up sessions on the product?


2. Longer term solution:
1. react-native SDK
1. SDK provides a way for users to generate a sessionID

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SDK should auto-generate sessions in a meaningful way to works for most apps (e.g. generate unique id on setUser and app start) and ideally provide an API to override this.

Comment on lines +63 to +65
4. consider a sampling option,
1. similar to SR that states if there is an error to have a higher sample rate for those user sessions
2. potentially long txn times as a decider in client for deciding

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

to clarify: does that mean that as soon as there is an error or a long txn (tbd how to determine this), the SDK starts to sample everything for that session? which also means that previous events are not available

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 on this question
the problem is that error often happens later, and we have already made sampling decisions for the given trace/session on the server at that point

@marandaneto

Copy link
Copy Markdown
Contributor

Can we actually somehow reuse the release health feature for that? each session already has an ID, that ID should be set in the event, and maybe propagate this ID as well similarly to connected errors and distributed tracing.
Would that be a viable option?

1. SDK provides a way for users to generate a sessionID
1. could simple be a version of the initializationID
2. could be experimental flag for now
3. automatically propagated this in DSC

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dynamic sampling could use this to ensure that either all transactions in this session or no transactions in this session are sampled. Nowadays we do the same thing but based on trace id.

Comment on lines +63 to +65
4. consider a sampling option,
1. similar to SR that states if there is an error to have a higher sample rate for those user sessions
2. potentially long txn times as a decider in client for deciding

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 on this question
the problem is that error often happens later, and we have already made sampling decisions for the given trace/session on the server at that point

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@smeubank@marandaneto@markushi@kahest@matejminar
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Create 0110-client-user-session.md - #110

Draft
smeubank wants to merge 2 commits into
mainfrom
smeubank-user-sessions
Draft

Create 0110-client-user-session.md#110
smeubank wants to merge 2 commits into
mainfrom
smeubank-user-sessions

Conversation

@smeubank

@smeubanksmeubank commented Aug 15, 2023

Copy link
Copy Markdown

Feature RFC to define and decide on a user session concept for Sentry SDKs. This is focused on client side SDKs, and aims to solve the ability for SDKs to uniquely link all events associated with a unique user sessions. Which would allow to create a link between all events generated by the SDK during the session, to group them in the Sentry UI, and allow the ID to be considered during client and server side sampling to ensure the completeness of user session in sentry.

Rendered RFC

@smeubanksmeubank changed the title Create 0109-client-user-session.mdCreate 0110-client-user-session.mdAug 15, 2023
Comment on lines +36 to +44
> save us a lot of time if we were able to identify evens from that user
>

Would the default `userId` work in this case?

> If you don't provide an `id` the SDK falls back to `installationId`, which the SDK randomly generates once during an app's installation.
>

https://docs.sentry.io/platforms/android/enriching-events/identify-user/

@kahestkahestAug 16, 2023

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

as mentioned below in the cons, installationId persists until the app is re-installed. this means it stays the same for all sessions of the user throughout one installation, which of course can be thousands across multiple weeks/months/years, and would therefore likely also contain multiple app starts

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another con: The default userId can be overwritten once Sentry.setUser() is called, thus loosing the connection before/after a user logged into an app.
I see we have Context->Device->Id on Android, but I'm not sure if this is provided by other platforms.

2. Longer term solution:
1. react-native SDK
1. SDK provides a way for users to generate a sessionID
1. could simple be a version of the initializationID

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
1. could simple be a version of the initializationID
1. could simply be a version of the `installationId`

5. existing APIs around session may lead to confusion
6. client side sampling: SDK should ensure that if an event as part of a session included then all other events within
that session are included as well
1. identifying a unique session default experience, identifying by a particular user requires the user to decide with

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't fully understand this - is this referring to the default experience when looking up sessions on the product?


2. Longer term solution:
1. react-native SDK
1. SDK provides a way for users to generate a sessionID

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SDK should auto-generate sessions in a meaningful way to works for most apps (e.g. generate unique id on setUser and app start) and ideally provide an API to override this.

Comment on lines +63 to +65
4. consider a sampling option,
1. similar to SR that states if there is an error to have a higher sample rate for those user sessions
2. potentially long txn times as a decider in client for deciding

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

to clarify: does that mean that as soon as there is an error or a long txn (tbd how to determine this), the SDK starts to sample everything for that session? which also means that previous events are not available

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 on this question
the problem is that error often happens later, and we have already made sampling decisions for the given trace/session on the server at that point

@marandaneto

Copy link
Copy Markdown
Contributor

Can we actually somehow reuse the release health feature for that? each session already has an ID, that ID should be set in the event, and maybe propagate this ID as well similarly to connected errors and distributed tracing.
Would that be a viable option?

1. SDK provides a way for users to generate a sessionID
1. could simple be a version of the initializationID
2. could be experimental flag for now
3. automatically propagated this in DSC

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dynamic sampling could use this to ensure that either all transactions in this session or no transactions in this session are sampled. Nowadays we do the same thing but based on trace id.

Comment on lines +63 to +65
4. consider a sampling option,
1. similar to SR that states if there is an error to have a higher sample rate for those user sessions
2. potentially long txn times as a decider in client for deciding

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 on this question
the problem is that error often happens later, and we have already made sampling decisions for the given trace/session on the server at that point

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@smeubank@marandaneto@markushi@kahest@matejminar
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Create 0110-client-user-session.md - #110

Draft
smeubank wants to merge 2 commits into
mainfrom
smeubank-user-sessions
Draft

Create 0110-client-user-session.md#110
smeubank wants to merge 2 commits into
mainfrom
smeubank-user-sessions

Conversation

@smeubank

@smeubanksmeubank commented Aug 15, 2023

Copy link
Copy Markdown

Feature RFC to define and decide on a user session concept for Sentry SDKs. This is focused on client side SDKs, and aims to solve the ability for SDKs to uniquely link all events associated with a unique user sessions. Which would allow to create a link between all events generated by the SDK during the session, to group them in the Sentry UI, and allow the ID to be considered during client and server side sampling to ensure the completeness of user session in sentry.

Rendered RFC

@smeubanksmeubank changed the title Create 0109-client-user-session.mdCreate 0110-client-user-session.mdAug 15, 2023
Comment on lines +36 to +44
> save us a lot of time if we were able to identify evens from that user
>

Would the default `userId` work in this case?

> If you don't provide an `id` the SDK falls back to `installationId`, which the SDK randomly generates once during an app's installation.
>

https://docs.sentry.io/platforms/android/enriching-events/identify-user/

@kahestkahestAug 16, 2023

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

as mentioned below in the cons, installationId persists until the app is re-installed. this means it stays the same for all sessions of the user throughout one installation, which of course can be thousands across multiple weeks/months/years, and would therefore likely also contain multiple app starts

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Another con: The default userId can be overwritten once Sentry.setUser() is called, thus loosing the connection before/after a user logged into an app.
I see we have Context->Device->Id on Android, but I'm not sure if this is provided by other platforms.

2. Longer term solution:
1. react-native SDK
1. SDK provides a way for users to generate a sessionID
1. could simple be a version of the initializationID

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
1. could simple be a version of the initializationID
1. could simply be a version of the `installationId`

5. existing APIs around session may lead to confusion
6. client side sampling: SDK should ensure that if an event as part of a session included then all other events within
that session are included as well
1. identifying a unique session default experience, identifying by a particular user requires the user to decide with

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't fully understand this - is this referring to the default experience when looking up sessions on the product?


2. Longer term solution:
1. react-native SDK
1. SDK provides a way for users to generate a sessionID

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SDK should auto-generate sessions in a meaningful way to works for most apps (e.g. generate unique id on setUser and app start) and ideally provide an API to override this.

Comment on lines +63 to +65
4. consider a sampling option,
1. similar to SR that states if there is an error to have a higher sample rate for those user sessions
2. potentially long txn times as a decider in client for deciding

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

to clarify: does that mean that as soon as there is an error or a long txn (tbd how to determine this), the SDK starts to sample everything for that session? which also means that previous events are not available

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 on this question
the problem is that error often happens later, and we have already made sampling decisions for the given trace/session on the server at that point

@marandaneto

Copy link
Copy Markdown
Contributor

Can we actually somehow reuse the release health feature for that? each session already has an ID, that ID should be set in the event, and maybe propagate this ID as well similarly to connected errors and distributed tracing.
Would that be a viable option?

1. SDK provides a way for users to generate a sessionID
1. could simple be a version of the initializationID
2. could be experimental flag for now
3. automatically propagated this in DSC

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dynamic sampling could use this to ensure that either all transactions in this session or no transactions in this session are sampled. Nowadays we do the same thing but based on trace id.

Comment on lines +63 to +65
4. consider a sampling option,
1. similar to SR that states if there is an error to have a higher sample rate for those user sessions
2. potentially long txn times as a decider in client for deciding

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 on this question
the problem is that error often happens later, and we have already made sampling decisions for the given trace/session on the server at that point

Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@smeubank@marandaneto@markushi@kahest@matejminar