Uptime monitor fails assertion for 301; will pass assertion when set to expect 200
Open
Nobody has claimed this yet.
Bug
Product Area: Alerts
Waiting for: Product Owner
- Dominant language
- Python
- Stars
- 44.8k
- Forks
- 4.9k
- Avg merge
- 21h 23m
- Merged PRs (30d)
- 607
Description
Environment
SaaS (https://sentry.io/)
Steps to Reproduce
- Set up a new uptime monitor
- Method: GET
- URL: https://acorninfluence.com/terms-of-service/
- Verification: Status Code = 301
- Click 'Test Monitor' button
Expected Result
Assertion passes so that I can enable the monitor
Confirmed from CURL that the response is 301
% curl -v -X GET \
-H "User-Agent: SentryUptimeBot/1.0 (+http://docs.sentry.io/product/alerts/uptime-monitoring/)" \
-H "Sentry-Trace: cf485626a37a42b3af5c83e2d91825e6-8c0e4f6ff3fc6768-0" \
"https://acorninfluence.com/terms-of-service/"
Note: Unnecessary use of -X or --request, GET is already inferred.
* Host acorninfluence.com:443 was resolved.
* IPv6: (none)
* IPv4: 18.188.43.254, 3.151.222.80
* Trying 18.188.43.254:443...
* Connected to acorninfluence.com (18.188.43.254) port 443
* ALPN: curl offers h2,http/1.1
* (304) (OUT), TLS handshake, Client hello (1):
* CAfile: /etc/ssl/cert.pem
* CApath: none
* (304) (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256 / [blank] / UNDEF
* ALPN: server accepted h2
* Server certificate:
* subject: CN=acorninfluence.com
* start date: May 27 00:00:00 2026 GMT
* expire date: Dec 10 23:59:59 2026 GMT
* subjectAltName: host "acorninfluence.com" matched cert's "acorninfluence.com"
* issuer: C=US; O=Amazon; CN=Amazon RSA 2048 M01
* SSL certificate verify ok.
* using HTTP/2
* [HTTP/2] [1] OPENED stream for https://acorninfluence.com/terms-of-service/
* [HTTP/2] [1] [:method: GET]
* [HTTP/2] [1] [:scheme: https]
* [HTTP/2] [1] [:authority: acorninfluence.com]
* [HTTP/2] [1] [:path: /terms-of-service/]
* [HTTP/2] [1] [accept: */*]
* [HTTP/2] [1] [user-agent: SentryUptimeBot/1.0 (+http://docs.sentry.io/product/alerts/uptime-monitoring/)]
* [HTTP/2] [1] [sentry-trace: cf485626a37a42b3af5c83e2d91825e6-8c0e4f6ff3fc6768-0]
> GET /terms-of-service/ HTTP/2
> Host: acorninfluence.com
> Accept: */*
> User-Agent: SentryUptimeBot/1.0 (+http://docs.sentry.io/product/alerts/uptime-monitoring/)
> Sentry-Trace: cf485626a37a42b3af5c83e2d91825e6-8c0e4f6ff3fc6768-0
>
* Request completely sent off
< HTTP/2 301
< date: Mon, 01 Jun 2026 21:59:34 GMT
< content-type: text/html
< content-length: 162
< location: https://newengen.com/terms-of-use-for-creators/
< server: nginx
<
<html>
<head><title>301 Moved Permanently</title></head>
<body>
<center><h1>301 Moved Permanently</h1></center>
<hr><center>nginx</center>
</body>
</html>
Actual Result
Assertion fails (see bottom right)
Product Area
Alerts
Link
https://acorn-influence.sentry.io/monitors/7455387/edit/
DSN
No response
Version
No response
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Reproduce the failure through the Uptime Monitor’s Test Monitor button using the reported GET request and an expected status of 301. Trace the status-code assertion path behind that action and compare it with the observed 301 response. Done means a monitor configured to expect 301 passes validation and can be enabled, while existing 200 checks continue to work.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- observability-sre
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100