Commit Graph

211 Commits

Author SHA1 Message Date
Catherine 23b516cf15 Observe timings even for 304 Not Modified responses to manifest loads. 2025-10-21 00:29:42 +00:00
Catherine 99b87226a1 Move update error observation to a single place. NFC 2025-10-18 21:49:54 +00:00
miyuko fcc6245ce8 Respond to webhook deliveries in under 3 seconds. 2025-10-18 04:38:06 +01:00
miyuko 2ac2aee14a Use ETags when refreshing cached manifests. 2025-10-17 21:13:58 +01:00
Catherine d54976e756 Report update errors or timeouts.
Looking through Sentry history, `update <domain> err:` is an extremely
high SNR signal of something going wrong; from configuration errors on
our side, to people pushing too-large git repositories and it failing.
Either way we should know.
2025-10-17 10:33:41 +00:00
Catherine ff6fff2133 Add git_pages_http_request_count metric. 2025-10-17 02:13:06 +00:00
miyuko e709634906 Add classic buckets to git_pages_s3_get_object_duration_seconds. 2025-10-17 03:07:14 +01:00
miyuko 93b7ad3af8 Add classic buckets to git_pages_http_request_duration_seconds. 2025-10-17 02:33:53 +01:00
miyuko cfeb2d0dbe Observe s3:GetObject latency. 2025-10-16 03:23:38 +01:00
miyuko 6fe029238a Update flake.nix. 2025-10-16 00:50:12 +01:00
miyuko 32109d0db8 Monitor how long it takes us to respond to HTTP requests. 2025-10-16 00:41:23 +01:00
miyuko eda3e8a791 Add stale-while-revalidate support to the cache. 2025-10-15 23:53:12 +01:00
miyuko 8bb6d0ff28 Unconditionally sample HTTP requests for tracing that take too long. 2025-10-15 18:26:33 +01:00
miyuko 87262e82f0 Swallow DNS allowlist parsing errors if at least one record is valid. 2025-10-15 02:36:14 +01:00
Catherine afae6e42f3 S3: log blob sizes in human readable form. 2025-10-13 02:39:17 +00:00
miyuko 443e929dea Respond within 10 seconds when receiving GitHub webhooks. 2025-10-13 00:52:07 +01:00
Catherine 188c66c434 Use an ad-hoc type to deserialize JSON webhook payload.
This is both better structured, and avoids crashes on invalid payloads
that would occur before this commit due to a lack of checking for nil
in the maps.
2025-10-09 14:53:01 +00:00
Catherine 5b8cb4ba11 Clean up Caddyfile, removing Fly.io-isms.
The grebedoc.dev infrastructure is no longer directly tied to
the container built from this repository, so we don't have to
pollute the configuration with Fly.io-isms.
2025-10-09 14:43:41 +00:00
Catherine d887ae1602 Allow metadata retrieval with Codeberg Pages v2 authorization method. 2025-10-09 13:48:46 +00:00
Catherine e0b659f668 Add [limits].allowed-repository-url-prefixes configuration option.
This is useful to limit updates to a specific Git forge.
Naturally, enabling this option disables updates from archive.
2025-10-09 13:48:15 +00:00
miyuko 2d603db810 Use the upstream certmagic-s3 Caddy plugin.
Merged PR: https://github.com/ss098/certmagic-s3/pull/25
2025-10-08 01:24:12 +01:00
Catherine 15107298b2 Allow a trailing dot in Codeberg Pages v2 DNS TXT authentication method. 2025-10-07 19:00:46 +00:00
miyuko a85905bd31 Fix time-based cache expiration practically never working.
config.MaxAge is now a nanosecond value, and multiplying it by
time.Second (number of nanoseconds in a second) will make it too large
for the cache expiry algorithm to have any effect.
2025-10-05 15:06:33 +01:00
Catherine 0eede0792d Add hostname and (if present) $PAGES_REGION to Server:.
Indispensable when debugging anycast configurations.
2025-10-05 08:11:52 +00:00
Catherine a14f9e1e6c Use int64, not uint32, for sizes in the manifest.
This change eliminates a number of rather sketchy casts.

This conversion is a no-op for the wire format, explicitly per
Protobuf documentation.
2025-10-03 06:02:21 +00:00
Catherine 1e01a12958 Implement force redirects. 2025-10-02 16:41:23 +00:00
Catherine 157ceb8342 Add an HTTP status code workaround for GitHub. 2025-10-02 12:41:15 +00:00
Catherine a7c47a798f Allow running without a configuration TOML file.
This is useful if it's more convenient to configure the server via
environment variables only.
2025-10-02 11:33:21 +00:00
miyuko d5a4ac4098 Fix URL argument validation when using the -update-site CLI option. 2025-09-30 21:59:41 +01:00
Catherine f0805c9ff5 Revert "Remove redundant bounds check from ExtractTar. NFCI"
This reverts commit 485cd4b9b1.

It wasn't redundant.
2025-09-30 05:20:02 +00:00
Catherine 485cd4b9b1 Remove redundant bounds check from ExtractTar. NFCI 2025-09-30 05:19:07 +00:00
Catherine 277b329e2d Merge backend_observer.go into observe.go. NFC 2025-09-30 04:40:30 +00:00
Catherine 50e32fedb0 Add logo. 2025-09-30 04:35:06 +00:00
Catherine 9f24d665bc Remove Fly.io configuration.
This configuration is now managed separately at:

    https://codeberg.org/whitequark/grebedoc.dev
2025-09-30 04:17:12 +00:00
Catherine b1ef57d32a Only cache NotFound errors from S3 backend, rather than any errors.
We need to cache NotFound responses to avoid hitting the backend
whenever there's a flurry of requests for the same invalid domain.
But caching any kind of error, including context cancellation, results
in poisoning the cache with that error, e.g. if the domain exists but
the client that requested it first did not wait for the response.
2025-09-30 03:44:24 +00:00
Catherine 764b4cd9f5 Observe blob size in GetBlob as well. 2025-09-30 02:54:53 +00:00
Catherine 396cabd43b Exclude metrics endpoint from observability.
Who watches the watchers? Nobody should!
2025-09-30 02:26:20 +00:00
Catherine 5f3ec8464f Fix Sentry sample rate calculation. 2025-09-30 02:09:38 +00:00
Catherine f63940b459 Submit server region and machine ID to tracing. 2025-09-30 02:09:38 +00:00
bin 161696427b Cleanup Nix flake. 2025-09-29 21:26:46 -04:00
Catherine 73df468bbb Update Nix flake. 2025-09-30 01:02:43 +00:00
Catherine 5f0a9ad360 Remove Honeybadger integration. 2025-09-30 00:59:14 +00:00
Catherine 1a0e594624 Add span based timings measurement and Sentry integration. 2025-09-30 00:56:58 +00:00
Catherine b1c50c10de Thread context argument through the backend interface. NFC 2025-09-29 23:10:33 +00:00
Catherine f533d84de9 Simplify. NFC 2025-09-29 22:16:23 +00:00
Catherine 217f3a9320 Switch log handling to slog.
This currently doesn't add any structure to the logs, changing just
the handler and output format. It does also add Sentry logging support.

The `log-format` configuration value now accepts values `none`, `text`,
and `json`.
2025-09-29 22:10:41 +00:00
Catherine c3575a09ca Add Sentry support. 2025-09-29 21:11:10 +00:00
Catherine dcabcac106 Rename feature h2c to serve-h2c. 2025-09-29 01:47:13 +00:00
Catherine be389329f2 Gate compression behind compress feature flag.
Compression increases memory use during updates and can cause OOMs.
2025-09-29 01:45:20 +00:00
Catherine 25b1720940 Compress files with Zstandard.
This can save as much as 30% of storage space while adding negligible
CPU overhead.
2025-09-29 01:17:25 +00:00