Eliah Rusin and Claude Opus 5.5
164c3db606
s3: return 403, not 500, when an over-quota bucket refuses a write ( #11552 )
...
* s3: return 403, not 500, when an over-quota bucket refuses a write
Filer AssignVolume flattened ErrReadOnly into the free-text
AssignVolumeResponse.Error string, so S3 PutObject / PutObjectPart via
UploadReaderInChunks could not match it with errors.Is and fell through
to 500 InternalError: retryable, and it hides the quota.
Add FilerError READ_ONLY and AssignVolumeResponse.error_code, set it
alongside the unchanged error text, and rebuild the sentinel with
filer_pb.AssignVolumeResponseError. weed_server.ErrReadOnly now aliases
filer_pb.ErrReadOnly so errors.Is matches on both sides, and
mapChunkedUploadErrorToS3Error maps it to ErrAccessDenied. There is no
"read only" substring matching, so a volume server's "volume N is read
only" stays retryable.
Carrying the verdict as a response code rather than a gRPC status keeps
clients from treating it as a transport failure: the S3 gateway does not
fail over across filers and the Java client does not retry it.
Wrap per-chunk copy errors with %w so CopyObject keeps the sentinel, and
map UploadPartCopy chunk errors through mapCopyErrorToS3Error instead of
always returning 500.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
* ci: re-run integration tests (PyPI download timeout)
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
---------
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
2026-10-01 22:21:03 +08:00
..
2025-11-04 13:02:22 -08:00
2026-05-06 19:14:36 -07:00
2026-03-18 13:20:55 -07:00
2026-06-24 20:05:43 -07:00
2026-01-03 22:45:48 -08:00
2026-09-26 16:00:22 +08:00
2026-09-26 16:00:22 +08:00
2026-08-27 22:27:45 -07:00
2026-09-03 14:52:05 -07:00
2026-09-03 14:52:05 -07:00
2026-08-04 11:38:38 -07:00
2026-09-29 11:34:07 +08:00
2026-09-29 11:34:07 +08:00
2026-08-04 11:38:38 -07:00
2026-09-26 19:42:23 +08:00
2026-03-30 23:29:56 -07:00
2026-09-26 19:42:23 +08:00
2026-01-07 13:06:08 -08:00
2026-04-21 23:00:11 -07:00
2026-04-21 23:00:11 -07:00
2026-09-26 19:42:23 +08:00
2026-08-05 23:55:20 -07:00
2026-08-04 11:38:38 -07:00
2026-09-26 19:42:23 +08:00
2026-08-04 11:38:38 -07:00
2026-09-29 22:05:42 +08:00
2026-09-04 16:39:24 -07:00
2026-09-02 17:43:46 -07:00
2026-09-02 19:40:53 -07:00
2026-09-26 19:42:23 +08:00
2026-07-27 14:28:29 -07:00
2026-04-21 11:25:09 -07:00
2026-04-21 11:25:09 -07:00
2026-04-21 11:25:09 -07:00
2026-04-21 11:25:09 -07:00
2026-09-09 20:16:50 -07:00
2026-06-10 13:08:34 -07:00
2026-06-10 13:08:34 -07:00
2026-08-19 18:38:46 -07:00
2026-09-09 20:16:50 -07:00
2026-06-14 21:44:10 -07:00
2026-10-01 22:21:03 +08:00
2026-08-04 11:38:38 -07:00
2026-06-03 10:28:42 -07:00
2026-10-01 22:21:03 +08:00
2026-09-04 16:39:36 -07:00
2026-08-02 00:06:22 -07:00
2026-03-23 18:35:15 -07:00
2026-09-02 17:43:46 -07:00
2026-05-15 13:15:20 -07:00
2026-09-17 23:50:16 -07:00
2026-09-04 16:39:36 -07:00
2026-09-04 16:39:36 -07:00
2026-01-07 13:06:08 -08:00
2026-09-04 23:50:11 -07:00
2026-05-23 21:40:41 -07:00
2026-09-04 23:12:27 -07:00
2026-09-02 17:43:46 -07:00
2026-08-25 09:24:51 -07:00
2026-10-01 22:21:03 +08:00
2026-09-17 23:50:16 -07:00
2026-09-29 22:05:42 +08:00
2026-02-20 18:42:00 -08:00
2026-09-04 00:02:33 -07:00
2026-08-26 08:49:25 -07:00
2026-08-10 12:32:45 -07:00
2026-09-04 16:39:24 -07:00
2026-08-07 21:56:15 -07:00
2026-08-10 12:32:45 -07:00
2026-08-25 09:24:51 -07:00
2026-08-26 08:49:25 -07:00
2026-09-04 16:39:24 -07:00
2026-09-29 22:05:42 +08:00
2026-08-21 15:22:05 -07:00
2026-08-13 13:25:52 -07:00
2026-09-09 20:16:50 -07:00
2026-05-21 10:19:59 -07:00
2026-07-17 12:30:42 -07:00
2026-09-13 11:56:32 -07:00
2026-09-13 11:56:32 -07:00
2026-09-02 16:12:46 -07:00
2026-09-07 09:23:56 -07:00
2026-01-07 13:06:08 -08:00
2026-08-28 16:32:30 -07:00
2026-08-28 16:32:30 -07:00
2026-08-07 23:36:28 -07:00
2026-08-08 09:14:57 -07:00
2025-12-19 00:15:39 -08:00
2026-08-21 15:22:22 -07:00
2026-08-26 00:12:56 -07:00
2026-08-23 11:36:00 -07:00
2026-09-02 16:12:46 -07:00
2026-09-03 14:52:05 -07:00
2026-09-27 07:05:22 +08:00
2026-09-07 09:23:56 -07:00
2026-09-27 07:05:22 +08:00
2026-09-07 09:23:56 -07:00
2025-11-26 08:01:19 -08:00
2026-09-07 09:23:56 -07:00
2026-09-28 18:40:11 +08:00
2026-09-28 18:40:11 +08:00
2026-03-18 23:28:07 -07:00
2026-08-21 15:22:22 -07:00
2026-08-23 11:10:20 -07:00
2026-08-21 15:22:22 -07:00
2026-08-23 11:10:20 -07:00
2026-07-25 23:53:29 -07:00
2026-09-20 13:30:02 -07:00
2026-09-26 15:53:39 +08:00
2026-09-01 10:37:25 -07:00
2026-05-11 13:50:48 -07:00
2026-09-01 10:37:25 -07:00
2026-06-26 14:22:57 -07:00
2026-08-07 23:36:28 -07:00
2026-09-09 02:18:18 -07:00
2026-09-24 06:57:44 +08:00
2026-08-08 09:25:57 -07:00
2026-09-18 12:55:47 -07:00
2026-05-31 23:42:33 -07:00
2026-09-26 15:53:39 +08:00
2026-09-28 21:55:25 +08:00
2026-07-10 22:06:36 -07:00
2026-08-28 20:46:59 -07:00
2026-08-28 20:46:59 -07:00
2026-06-25 10:38:14 -07:00
2026-07-10 22:06:36 -07:00
2026-09-28 21:55:25 +08:00
2026-09-03 18:39:45 -07:00
2026-07-15 23:24:04 -07:00
2026-09-24 06:57:44 +08:00
2026-04-22 11:22:21 -07:00
2026-09-13 14:43:55 -07:00
2026-09-18 12:55:47 -07:00
2026-09-12 14:19:18 -07:00
2026-09-08 19:12:30 -07:00
2026-09-12 14:19:18 -07:00
2026-07-25 23:53:29 -07:00
2026-09-24 06:57:44 +08:00
2026-09-14 22:09:08 -07:00
2026-09-14 22:09:08 -07:00
2026-09-14 22:09:08 -07:00
2026-09-14 22:09:08 -07:00
2026-09-30 17:32:41 +08:00
2026-09-08 21:42:56 -07:00
2026-08-23 08:20:25 -07:00
2026-08-23 11:13:36 -07:00
2026-04-27 12:22:42 -07:00
2026-08-09 12:43:31 -07:00
2026-09-01 10:37:25 -07:00
2026-06-04 22:26:08 -07:00
2026-07-15 23:24:04 -07:00
2026-06-04 22:26:08 -07:00
2026-07-30 11:58:14 -07:00
2026-07-30 11:58:14 -07:00
2026-09-13 18:34:09 -07:00
2026-09-28 22:37:04 +08:00
2026-06-11 21:56:16 -07:00
2026-08-27 16:21:14 -07:00