getsentry / self-hosted

Sentry, feature-complete and packaged up for low-volume deployments and proofs-of-concept
https://develop.sentry.dev/self-hosted/
Other
7.87k stars 1.77k forks source link

Debug files being deleted if SENTRY_EVENT_RETENTION_DAYS is lower than 30 days #3287

Open scharli opened 2 months ago

scharli commented 2 months ago

Environment

self-hosted (https://develop.sentry.dev/self-hosted/)

Steps to Reproduce

  1. Set SENTRY_EVENT_RETENTION_DAYS lower than 30 days (example is 1 day)
  2. Upload a debug file in an project
  3. Send events that need this debug file
  4. Wait 2 days
  5. Send events that need this debug file, date_accessed will not be updated
  6. Execute a cleanup setting 1 day
  7. Debug file will be removed

Expected Result

Debug file shouldn't be removed because was used the same day as the cleanup was executed

Actual Result

Debug file is removed because AVAILABLE_FOR_RENEWAL_DAYS is set to 30 days so date_accessed will not be updated inside maybe_renew_debug_files method because this field is updated if 30 days has passed

AVAILABLE_FOR_RENEWAL_DAYS should set to 1 day (or maybe less than 24 hours) so any value of SENTRY_EVENT_RETENTION_DAYS greater than 1 (or 0 if is managed in hours) will work the expected way

Product Area

Processing

Link

No response

DSN

No response

Version

24.8.0

getsantry[bot] commented 2 months ago

Assigning to @getsentry/support for routing ⏲️

scharli commented 1 month ago

For now the workaround is just skip this model particulary and apply the rest, so the command in docker-compose look like this:

command: '"0 0 * * * gosu sentry sentry cleanup --days $SENTRY_EVENT_RETENTION_DAYS -m ApiGrant -m ApiToken -m ArtifactBundle -m EventAttachment -m ExportedData -m FileBlob -m Group -m GroupEmailThread -m GroupRuleStatus -m LostPasswordHash -m MonitorCheckIn -m NotificationMessage -m OrganizationMember -m ReplayRecordingSegment -m RuleFireHistory -m UserReport"'

aldy505 commented 1 month ago

@hubertdeng123 I don't know if this is something that most users will encounter as I don't use debug files myself. Should we just put this on the docs? But if there's a model name changes, we'd need to update the docs more often than we'd need to?

ref: https://github.com/getsentry/sentry/blob/a49edf8ae43666338ccb0d9992fd4e7148c8fb13/src/sentry/runner/commands/cleanup.py#L104-L143

scharli commented 54 minutes ago

@aldy505 Maybe one posible solution is to add a --excludemodel option that is easier to handle to write down all possible models just to exclude one. Good be great and easy to mantain (will be in the same file) in the help a of all models executed In my research to find a workaround to the problem sentry cleanup --days 90 --model xxx to be able to list all models within the >> Skipping MODELNAME

Thanks for your time