Junker der Provinz and GitHub
f710b6003a
s3api: retry a transient failure when listing multipart uploads/parts (RFC on layering) ( #10886 )
...
s3api: retry a transient failure when listing multipart uploads/parts
A blip on the way to the filer failed the whole ListMultipartUploads or
ListParts request. Both reported failure points sit inside one streaming
listing: the ListEntries call that opens the stream, and the stream.Recv
calls that drain it. Neither retried, so a single Unavailable answer from
a filer that was restarting turned into a 500 for the S3 client.
Replay the listing instead, bounded to three attempts with a 100ms
backoff that doubles. Only a transient failure is replayed. A not-found
answer stays authoritative so the empty-list branch still works, and
every other error still reaches the client on the first attempt.
This is scoped to (*S3ApiServer).list rather than added inside
DoSeaweedListWithSnapshot, which mount, the shell and the other object
listings share, and where a retry after a partial stream would
re-deliver entries the callback had already seen. Within one call to
list, a replay is safe: it collects into a fresh slice each time, so it
can neither duplicate nor drop entries.
That guarantee does not extend past this function. withFilerClientFailover
already re-runs its callback against the next filer on any non-NotFound
error without resetting the caller's accumulator, so on a multi-filer
gateway a mid-listing failover can itself produce a duplicated result
with err == nil, independent of this change and not fixed by it. Noted
in the PR rather than silently left for someone to rediscover.
Fixes #7221
References #7235
2026-08-22 23:00:50 -07:00
..
2026-01-28 14:34:07 -08:00
2026-08-19 22:59:56 -07:00
2026-08-19 22:59:56 -07:00
2026-08-21 23:42:26 -07:00
2026-04-20 12:04:41 -07:00
2026-08-06 16:07:59 -07:00
2026-08-22 12:33:08 -07:00
2026-03-07 09:19:40 -08:00
2026-05-31 11:15:05 -07:00
2026-08-18 16:03:08 -07:00
2026-08-21 23:42:26 -07:00
2026-08-19 22:59:56 -07:00
2026-07-02 21:11:41 -07:00
2026-08-03 12:45:42 -07:00
2026-07-31 19:51:03 -07:00
2026-05-18 21:35:53 -07:00
2026-07-29 10:30:30 -07:00
2026-07-29 10:30:30 -07:00
2026-07-29 10:30:30 -07:00
2026-08-21 22:32:47 -07:00
2026-02-20 18:40:47 -08:00
2026-07-27 14:06:04 -07:00
2026-08-21 22:32:47 -07:00
2026-05-28 18:10:24 -07:00
2026-07-10 12:17:35 -07:00
2026-07-09 02:34:13 -07:00
2026-07-02 09:14:54 -07:00
2026-05-28 17:00:41 -07:00
2026-06-20 08:28:40 -07:00
2026-06-20 08:28:40 -07:00
2026-06-14 13:55:11 -07:00
2026-07-09 02:34:13 -07:00
2026-04-17 12:20:28 -07:00
2026-07-09 02:34:13 -07:00
2026-02-16 13:59:13 -08:00
2026-04-17 12:23:21 -07:00
2026-08-17 14:46:25 -07:00
2026-07-22 14:38:06 -07:00
2026-08-05 13:15:28 -07:00
2026-08-04 16:00:04 -07:00
2026-08-19 22:59:56 -07:00
2026-08-09 00:00:19 -07:00
2026-08-09 00:00:19 -07:00
2026-06-10 00:30:43 -07:00
2026-06-10 00:30:43 -07:00
2026-06-11 21:56:16 -07:00
2026-07-05 20:19:20 -07:00
2026-07-05 20:19:20 -07:00
2026-05-01 01:14:15 -07:00
2026-07-27 17:48:20 -07:00
2026-07-05 20:19:20 -07:00
2026-07-23 17:44:02 -07:00
2026-07-23 17:44:02 -07:00
2026-08-22 23:00:50 -07:00
2026-03-23 13:35:16 -07:00
2026-08-22 23:00:50 -07:00
2026-08-22 23:00:50 -07:00
2026-08-08 21:24:30 -07:00
2026-02-18 18:20:03 -08:00
2026-06-02 14:45:45 -07:00
2026-05-19 13:03:30 -07:00
2026-02-19 22:52:05 -08:00
2026-06-09 00:48:38 -07:00
2026-08-05 17:08:21 -07:00
2026-08-05 17:08:21 -07:00
2026-04-03 16:04:27 -07:00
2026-07-07 12:36:47 -07:00
2026-05-19 13:03:30 -07:00
2026-08-12 23:00:10 -07:00
2026-07-10 12:14:18 -07:00
2026-07-08 01:53:37 -07:00
2026-07-27 17:48:20 -07:00
2026-04-17 12:23:21 -07:00
2026-04-03 16:04:27 -07:00
2026-05-04 19:14:41 -07:00
2026-07-27 17:48:20 -07:00
2026-04-29 10:06:51 -07:00
2026-04-26 16:31:42 -07:00
2026-05-04 19:21:41 -07:00
2026-07-23 17:44:02 -07:00
2026-05-04 19:14:41 -07:00
2026-05-04 19:14:41 -07:00
2026-08-04 16:00:04 -07:00
2026-06-14 13:54:49 -07:00
2026-07-02 21:11:34 -07:00
2026-05-19 17:34:51 -07:00
2026-07-02 21:11:34 -07:00
2026-08-05 13:15:28 -07:00
2026-07-27 16:42:01 -07:00
2026-08-14 10:58:45 -07:00
2026-08-19 20:09:23 -07:00
2026-02-07 13:27:47 -08:00
2026-08-21 23:42:26 -07:00
2026-08-21 23:42:26 -07:00
2026-07-02 21:11:34 -07:00
2026-07-02 21:11:41 -07:00
2026-07-02 21:27:58 -07:00
2026-02-12 23:11:41 -08:00
2026-07-26 00:52:22 -07:00
2026-03-27 23:15:01 -07:00
2026-03-16 12:58:26 -07:00
2026-08-19 20:09:23 -07:00
2026-07-21 08:59:40 -07:00
2026-07-21 08:59:40 -07:00
2026-06-16 16:29:30 -07:00
2026-06-16 16:29:30 -07:00
2026-04-03 16:04:27 -07:00
2026-07-14 11:53:53 -07:00
2026-06-22 22:19:24 -07:00
2026-08-05 00:24:54 -07:00
2026-08-05 17:08:21 -07:00
2026-07-23 17:44:02 -07:00
2026-07-02 09:14:54 -07:00
2026-05-19 17:35:44 -07:00
2026-08-05 17:08:21 -07:00
2026-02-03 11:55:12 -08:00
2026-06-03 00:28:56 -07:00
2026-05-05 11:26:08 -07:00
2026-08-16 12:57:12 -07:00
2026-08-16 12:57:12 -07:00
2026-02-07 13:27:47 -08:00
2026-05-19 16:03:45 -07:00
2026-05-10 09:39:05 -07:00
2026-05-13 10:48:58 -07:00
2026-08-21 11:47:53 -07:00
2026-06-11 21:56:16 -07:00
2026-04-26 16:31:42 -07:00
2026-07-15 02:31:51 -07:00
2026-07-15 02:31:51 -07:00
2026-07-21 00:08:05 -07:00
2026-05-10 12:08:06 -07:00
2026-05-10 14:55:59 -07:00
2026-06-14 00:16:14 -07:00
2026-05-10 13:34:25 -07:00
2026-08-19 20:07:57 -07:00
2026-06-05 12:41:18 -07:00
2026-06-22 22:19:24 -07:00
2026-08-19 20:07:57 -07:00
2026-08-05 20:29:28 -07:00
2026-07-22 14:38:06 -07:00
2026-08-05 20:29:28 -07:00
2026-08-19 20:07:57 -07:00
2026-06-11 21:56:16 -07:00
2026-08-08 21:24:30 -07:00
2026-07-04 00:41:57 -07:00
2026-08-10 11:04:06 -07:00
2026-08-05 00:24:54 -07:00
2026-07-09 00:22:34 -07:00
2026-08-08 20:24:44 -07:00
2026-07-30 12:57:31 -07:00
2026-08-10 11:04:06 -07:00
2026-08-19 20:07:57 -07:00
2026-07-02 21:11:34 -07:00
2026-08-19 20:07:57 -07:00
2026-04-14 21:52:49 -07:00
2026-07-25 11:30:02 -07:00
2026-07-31 19:43:45 -07:00
2026-08-19 20:07:57 -07:00
2026-08-08 21:24:30 -07:00
2026-08-08 21:24:30 -07:00
2026-07-15 02:31:51 -07:00
2026-08-21 11:47:53 -07:00
2026-07-02 21:11:34 -07:00
2026-05-08 21:35:27 -07:00
2026-07-02 21:11:34 -07:00
2026-07-02 21:11:34 -07:00
2026-06-22 07:52:01 -07:00
2026-06-09 00:48:38 -07:00
2026-03-28 13:24:11 -07:00
2026-06-03 00:12:28 -07:00
2026-08-05 11:49:36 -07:00
2026-07-07 12:42:46 -07:00
2026-08-21 23:42:26 -07:00
2026-08-10 11:04:06 -07:00
2026-06-01 20:01:30 -07:00
2026-08-10 11:04:06 -07:00
2026-07-21 00:08:05 -07:00
2026-06-11 21:56:16 -07:00
2026-06-11 21:56:16 -07:00
2026-03-28 13:24:11 -07:00
2026-02-16 13:59:13 -08:00
2026-08-21 11:47:53 -07:00
2026-07-29 10:30:46 -07:00
2026-03-09 11:54:32 -07:00
2026-05-18 19:44:19 -07:00
2026-08-18 16:03:08 -07:00
2026-08-09 21:59:42 -07:00
2026-04-25 23:06:37 -07:00
2026-03-30 12:11:30 -07:00
2026-07-31 19:50:59 -07:00
2026-07-29 10:30:30 -07:00
2026-06-24 21:38:21 -07:00
2026-05-05 19:14:44 -07:00
2026-05-05 19:14:44 -07:00
2026-02-23 22:59:53 -08:00
2026-07-31 23:56:04 -07:00
2026-07-31 23:56:04 -07:00
2026-04-02 15:59:09 -07:00
2026-04-02 17:37:05 -07:00
2026-07-31 23:56:04 -07:00
2026-07-31 19:51:03 -07:00
2026-08-16 10:36:59 -07:00
2026-06-24 16:24:45 -07:00
2026-05-19 14:24:25 -07:00
2026-08-16 10:36:59 -07:00
2026-06-11 21:56:16 -07:00
2026-06-11 21:56:16 -07:00
2026-05-13 10:48:58 -07:00
2026-05-13 10:48:58 -07:00
2026-05-13 10:48:58 -07:00
2026-07-02 21:11:41 -07:00
2026-07-23 17:44:02 -07:00
2026-05-13 09:24:59 -07:00
2026-05-20 10:13:33 -07:00
2026-05-04 22:10:49 -07:00
2026-03-06 15:22:39 -08:00
2026-05-04 22:10:49 -07:00
2026-06-23 01:25:32 -07:00
2026-06-23 01:25:32 -07:00