Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Issue archiving beta #6980

Merged
merged 40 commits into from
Aug 31, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
4370c5e
archiving beta
lizokm May 17, 2023
95e3773
style(lint): Auto commit lint changes
getsantry[bot] May 17, 2023
3402cc8
Update src/docs/product/issues/states-triage/index.mdx
lizokm May 17, 2023
f66ae85
Update src/docs/product/issues/states-triage/index.mdx
lizokm May 17, 2023
cba8fe7
Update src/docs/product/issues/states-triage/index.mdx
lizokm May 17, 2023
4b8723e
Update src/docs/product/issues/states-triage/index.mdx
lizokm May 17, 2023
a800ffc
Update src/docs/product/issues/states-triage/index.mdx
lizokm May 17, 2023
69d17b4
Update src/docs/product/issues/states-triage/index.mdx
lizokm May 17, 2023
a9b013d
Update src/docs/product/issues/states-triage/index.mdx
lizokm May 17, 2023
96690de
Update src/docs/product/issues/states-triage/index.mdx
lizokm May 17, 2023
0f55806
Update src/docs/product/issues/states-triage/index.mdx
lizokm May 17, 2023
e93ed2f
style(lint): Auto commit lint changes
getsantry[bot] May 17, 2023
6e6c2e0
style(lint): Auto commit lint changes
getsantry[bot] May 17, 2023
1a13950
style(lint): Auto commit lint changes
getsantry[bot] May 17, 2023
5423fdf
style(lint): Auto commit lint changes
getsantry[bot] May 17, 2023
2ccdb58
style(lint): Auto commit lint changes
getsantry[bot] May 17, 2023
3d2685e
style(lint): Auto commit lint changes
getsantry[bot] May 17, 2023
7f843cb
style(lint): Auto commit lint changes
getsantry[bot] May 17, 2023
05f1c3a
Update src/docs/product/issues/states-triage/index.mdx
lizokm May 17, 2023
2e4edae
Update src/docs/product/issues/states-triage/index.mdx
lizokm May 17, 2023
0276f5c
Update src/docs/product/issues/states-triage/index.mdx
lizokm May 23, 2023
315d3a1
Update src/docs/product/issues/states-triage/index.mdx
lizokm Jun 12, 2023
e9232fd
add escalating issues algorithm doc
vivianyentran Jun 28, 2023
7fed42e
style(lint): Auto commit lint changes
getsantry[bot] Jun 28, 2023
e75d3c4
style(lint): Auto commit lint changes
getsantry[bot] Jun 28, 2023
7e2fdcd
update image and conditions for new/ongoing issues
vivianyentran Jun 30, 2023
a37f7b9
style(lint): Auto commit lint changes
getsantry[bot] Jun 30, 2023
4f24444
update issue tabs
vivianyentran Jul 6, 2023
0e2df37
feat: Add escalating workflow notification
jangjodi Jul 11, 2023
c0ad419
Update src/docs/product/issues/states-triage/index.mdx
vivianyentran Jul 13, 2023
3970c95
ref: Add forecast calculation for issues < 7 days old
jangjodi Jul 18, 2023
eebcf38
ref(escalating): Add merge/unmerge limitation (#7502)
jangjodi Aug 1, 2023
4085011
style(lint): Auto commit lint changes
getsantry[bot] Aug 1, 2023
74aa0e1
Add archive forever description
vivianyentran Aug 1, 2023
24ff730
Apply suggestions from code review
vivianyentran Aug 31, 2023
0d62564
style(lint): Auto commit lint changes
getsantry[bot] Aug 31, 2023
e38a80d
Update src/docs/product/issues/states-triage/index.mdx
vivianyentran Aug 31, 2023
f184da5
style(lint): Auto commit lint changes
getsantry[bot] Aug 31, 2023
a51db2c
Apply suggestions from code review
vivianyentran Aug 31, 2023
0824155
Update src/includes/merge-escalating-note.mdx
vivianyentran Aug 31, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/docs/product/alerts/notifications/index.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ You can manage these notifications in **User Settings > Notifications**.
Sentry sends workflow notifications to let you know about [issue state](/product/issues/states-triage/) changes. Workflow relates to actions that help you manage your issues, such as changing an issue’s state or commenting on it. By default, Sentry sends these notifications by email to members who are subscribed to the issue (see below for how subscription is determined). Workflow notifications are sent for:

- **Issue Resolved**: When a new issue is spotted in your code, it's in the Unresolved state. The issue state changes to Resolved when a project team member resolves it, either by manually changing its state in [sentry.io](https://sentry.io)) or by submitting a fix, or because of the project’s auto-resolve feature (if configured).
- **Issue Escalating**: When the number of events an issue has is significantly higher than the previous week, based on the [escalating limit calculation](/product/issues/states-triage/escalating-issues/#escalating-limit-calculation).
- **Regressions**: A regression happens when the state of an issue changes from Resolved back to Unresolved. An email is sent to all project team members.
- **Comments**: When a team member adds a new comment in the “Activity” tab of the detail page for the issue.
- **Assignment**: When an issue is assigned or unassigned.
Expand All @@ -39,6 +40,7 @@ You receive workflow notifications when you’re subscribed to an issue, and you
- Commenting on or bookmarking the issue
- Mention of you or your team in the issue
- You or your team being assigned to the issue
- Archiving an issue until it escalates

These notifications may have some overlap with alerts that are configured for a project.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ description: "Learn about merging similar issues that aren't automatically group
---

<Include name="only-error-issues-note.mdx" />
<Include name="merge-escalating-note.mdx" />

If you have similar-looking issues that have not been grouped together automatically and you want to reduce noise, you can do so by merging them.

Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
50 changes: 50 additions & 0 deletions src/docs/product/issues/states-triage/escalating-issues/index.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
---
title: Escalating Issues Algorithm
sidebar_order: 40
description: "Learn how the escalating issues algorithm works."
---
vivianyentran marked this conversation as resolved.
Show resolved Hide resolved

<Include name="merge-escalating-note.mdx" />

Sentry defines an issue as `Escalating` when the number of events is significantly higher than the previous week.

The escalating issues algorithm uses historical data from the previous week to calculate thresholds for the next week on a per-issue basis. If an issue exceeds its predetermined threshold, it gets tagged as `Escalating`, unless it was "[Archived Forever](/product/issues/states-triage/#archive)". An escalating issue is automatically surfaced in the "Unresolved" and "Escalating" tabs.

## Escalating Limit Calculation

### Escalating Limit Calculation: Issue Age >= 7 Days

If the issue is over 7 days old, the escalating limit is calculated on a daily basis as the max of either a baseline spike limit or a bursty limit:

limit<sub>escalating</sub> = max(limit<sub>spike</sub> , limit<sub>bursty</sub>)

In most cases, the spike limit is applied to issues with a relatively stable event volume, while the bursty limit is applied to issues with regular bursts in volume (such as cron or Airflow jobs and task runners).

#### Spike Limit Calculation

The spike limit calculation establishes a baseline for what’s considered a significant increase in volume for an issue. It takes the average hourly volume (weighted by day-of-week) and variance over the previous week to calculate the limit:

limit<sub>spike</sub> = avg<sub>weighted</sub> + (min(max((avg + (5 \* std))/avg, 5),8) \* avg)

**Example**

![Spike limit example](spike_limit.png)

The chart above shows the event volumes for an actual Sentry issue that was escalating. The orange line shows the volume from the past week, which is then used to generate the spike threshold for the next week, represented by the green line. The blue line shows the next week’s volume, which crosses the threshold around hour 148 (day 7). At this point, the issue is flagged as escalating.

#### Bursty Limit Calculation

Some issues, such as cron jobs, purposefully have a high volume of events in a short period of time. If we used the spike limit calculation, it could incorrectly flag these types of issues as escalating. To account for this, the algorithm uses a bursty limit calculation, which is based on the maximum hourly volume and the coefficient of variation (ratio of standard deviation over the average) for the previous week:

limit<sub>bursty</sub> = max<sub>timeseries</sub> \* min(max(2, 5e<sup>-0.65cv</sup>), 5)

**Example**
![Bursty limit example](bursty_limit.png)

This chart shows an example of a bursty Sentry issue. The spike limit, represented by the orange line, would have incorrectly flagged the issue as escalating. The algorithm accounts for this behavior with the new bursty limit, represented by the green line.

### Escalating Limit Calculation: Issue Age < 7 Days

If the issue is less than 7 days old and does not have historical data from the previous week, then the spike limit is calculated by taking the maximum hourly volume and multiplying it by 10:

limit<sub>escalating</sub> = max<sub>timeseries</sub> \* 10
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
89 changes: 38 additions & 51 deletions src/docs/product/issues/states-triage/index.mdx
Original file line number Diff line number Diff line change
@@ -1,80 +1,67 @@
---
title: Issue States and Triage
title: Issue Status
sidebar_order: 30
description: "Learn more about issue states and how to triage issues."
description: "Learn how issue status works and and how to triage issues."
redirect_from:
- /product/accounts/early-adopter-features/issue-archiving
---
vivianyentran marked this conversation as resolved.
Show resolved Hide resolved

To help organize issues for you and your team, you can take actions such as assigning, resolving, or ignoring issues. These actions are referred to as _triaging_.
Use the status tags attached to issues on the [**Issues** page](https://sentry.io/issues/) in Sentry to help you triage and prioritize problems with your application that are important to you. Keep in mind that an issue can only have **one status at a time.**

An issue can be in one of three states:
Here's a list of all statuses, how they're assigned to an issue, and their custom search term:

- Unresolved: The default state for all new issues.
- Ignored: The issue is ignored permanently or until a condition is met, at which point it becomes Unresolved again. [Issue alerts](/product/alerts-notifications/issue-alerts/) are suppressed for ignored issues.
- Resolved: The issue is marked resolved (or automatically resolved) because it was fixed or isn't expected to happen again. If the issue is seen again, its state changes to Unresolved.
| Status | Condition | Custom Search Term |
| -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------ |
| **New** | An issue that was created in the last 7 days. | is:new |
| **Ongoing** | An issue that was created more than 7 days ago or has manually been marked as reviewed. | is:ongoing |
| **Escalating** | An issue that's exceeded its forecasted event volume. For more details, see [Escalating Issues Algorithm](escalating-issues). Please note that escalating issues currently does not work for merged/unmerged issues. | is:escalating |
| **Regressed** | A resolved issue that's come up again. | is:regressed |
| **Archived** | An issue that's been marked as archived. | is:archived |
| **Resolved** | An issue that's been marked as fixed. | is:resolved |

When any of the following conditions occur for an issue, that issue is flagged _for review_, included in the **Review List**, and given a label indicating why it was flagged:
The diagram below shows how the statuses are updated automatically and manually:

- A new issue is created; it's labeled "New Issue"
- A resolved issue re-occurs; it's labeled "Regression"
- An ignored issue meets its ignore conditions; it's labeled "Unignored"
![Issue Status Diagram](issue_statuses.png)

Issues in the **Review List**, or for-review issues, are a sub-set of all unresolved issues, and you can view these issues in the "For Review" tab of the **Issues** page. By default, they are filtered to display issues relevant to you; that is, issues that are assigned to you or suggested for you.
One way to limit the issues that you see is by selecting a tab at the top of the **Issues** page. On the “Unresolved" tab, you'll find `New`, `Ongoing`, `Escalating`, and `Regressed` issues. You can also narrow down further by choosing the "For Review", "Regressed", "Escalating", or "Archived" tabs.

![For Review tab of the Issues page.](for-review-page-docs.png)
## Manually Triaging Issues

When you mark a for-review issue as reviewed, [sentry.io](https://sentry.io) removes the reason label and the issue remains in the Unresolved state.
While some issue statuses are added and updated automatically, you can manually `Archive` or `Resolve` an issue, which will also change its status.

Resolving or ignoring an issue implicitly marks the issue reviewed.
### Archive

To keep the list of issues in the **Review List** fresh, [sentry.io](https://sentry.io) automatically marks issues as reviewed if they haven't already been reviewed after seven days.
You can manually archive issues that are less pressing or not applicable to you or your team. This will change their status to `Archived` and remove them from the issues list. Sentry will automatically bring an issue back to the top of the list and change its status to `Escalating` if the events in that issue significantly increase over a short period of time. To learn more about how this works, see [Escalating Issues Algorithm](escalating-issues). There's also an option to mark an issue as `Archived` for:

The image below shows how issues move through different states with the applicable labels.
- Forever
- A set period of time
- Until it occurs a set number of times
- Until a set number of users are affected

![Worklow for triaging issues](issue-workflow.png)

## Triage Actions

Triage typically involves one or more of the following actions.
If you archive an issue "Forever", events connected with that issue will continue to be recorded, but the issue will never be labeled as escalating even if it meets escalating conditions. You can still unarchive any archived issue, including those that have been archived "Forever". All unarchived issues will then show up in the "Unresolved" tab.

### Resolve

Resolve an issue when it's fixed or you don't expect it to happen again. You can do this manually or by [including the issue ID in a commit](/product/releases/associate-commits/#resolve-issues-by-commit). In addition, you can resolve issues by setting the auto-resolve value.

The "Auto Resolve" feature allows you to specify an interval after the last occurrence of an issue when it should be automatically resolved. To check if this has been defined for a project, go to **[Project] > Settings > General Settings** and check the "Event Settings" section.

### Ignore
You can manually mark an issue as `Resolved` when it’s been fixed. You can also specify further by resolving it in:

Ignore an issue **permanently** (the default action when you press the button) if it's just noise and you'll likely never care about it. Or ignore it until a condition is met, at which point it becomes Unresolved. You can also ignore an issue if you're working on it and want to silence alerts in the meantime.
- Your next release
- A current release
- Another release

<Note>

Metric alerts can be triggered by ignored issues.

</Note>
or

### Mark Reviewed
- By [including the issue ID in a commit](/product/releases/associate-commits/?original_referrer=https%3A%2F%2Fdocs.sentry.io%2Fproduct%2Fissues%2Fstates-triage%2F#resolve-issues-by-commit)

Mark an issue as reviewed when you want to acknowledge that you've seen the issue but don't want to ignore it; that is, you intend to fix it at some point in the future. Marking an issue reviewed removes the reason label and removes it from the **Review List** in the "For Review" tab. The "Mark Reviewed" action is only available on issues flagged for review.

While you can work to have zero unresolved issues ("Inbox Zero") by resolving or ignoring all issues, this usually isn't feasible for any non-trivial production application. However, it is feasible to have zero for-review issues by triaging the issues in the **Review List**.
**We recommend triaging these issues once a day to keep your issues manageable.**

### Assign

Assign issues to teams or individuals to route them to the right people and help you and your team see only relevant issues. Typically, assigning an issue to a team indicates that the team owns the issue and that they're responsible for triaging it further. In some cases, you can assign issues manually or automatically using [ownership rules and code owners](/product/issues/ownership-rules/). For error issues, on the issue list, you might also see a list of suggested assignees including the owners of suspect commits.

### Link Issues

Create an issue in an external project management tool like Jira that tracks the Sentry issue, or link an existing one. [Two-way sync](/product/accounts/getting-started/#33-issue-tracking) is available for some tools. Issues linked using [public integrations](/product/integrations/integration-platform/public-integration) or [internal integrations](/product/integrations/integration-platform/internal-integration) are searchable using the terms `is:linked` and `is:unlinked`. You can also set up Sentry issues to be automatically linked to tickets (or issues) in certain integrations using [alert actions](/product/alerts-notifications/issue-alerts/).
If the same issue comes back, its status will automatically change to `Regressed`.

### Delete

Delete an issue to remove it from [sentry.io](https://sentry.io). A new issue is created if a new instance of the issue (that is, a new event) occurs.
You can remove an issue from the issue list by deleting it, but it will reappear as a new issue if it recurs.

<Include name="only-error-issues-note.mdx" />
There's also an option to `Delete and Discard Forever`, which will make it so that the issue is never seen again, even if it recurs. Any future events tied to the permanently deleted issue will be discarded automatically and won't count towards [your quota](/product/accounts/quotas/).

### Delete and Discard
<Note>

Delete and discard an issue to remove it from [sentry.io](https://sentry.io). A new issue is not created even if a new instance of the issue (that is, a new event) occurs.
You can only delete [Error Issues](/product/issues/issue-details/error-issues/?original_referrer=https%3A%2F%2Fdocs.sentry.io%2Fproduct%2Fissues%2Fstates-triage%2F). Other issue categories, such as [Performance Issues](/product/issues/issue-details/performance-issues/?original_referrer=https%3A%2F%2Fdocs.sentry.io%2Fproduct%2Fissues%2Fstates-triage%2F), don't support this feature.

<Include name="only-error-issues-note.mdx" />
</Note>
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
5 changes: 5 additions & 0 deletions src/includes/merge-escalating-note.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<Note>

Escalating issues currently does not work for merged/unmerged issues, but we're working on fixing this.

</Note>
Loading