Files
scylladb/utils
Pavel Emelyanov 0e6381f14d lister: Fix race between readdir and stat
Sometimes file::list_directory() returns entries without type set. In
thase case lister calls file_type() on the entry name to get it. In case
the call returns disengated type, the code assumes that some error
occurred and resolves into exception.

That's not correct. The file_type() method returns disengated type only
if the file being inspected is missing (i.e. on ENOENT errno). But this
can validly happen if a file is removed bettween readdir and stat. In
that case it's not "some error happened", but a enry should be just
skipped. In "some error happened", then file_type() would resolve into
exceptional future on its own.

Signed-off-by: Pavel Emelyanov <xemul@scylladb.com>

Closes scylladb/scylladb#26595

(cherry picked from commit d9bfbeda9a)

Closes scylladb/scylladb#26764
2025-10-29 11:34:47 +02:00
..
2025-01-14 07:56:39 -05:00
2025-10-22 15:24:06 +03:00
2025-01-14 07:56:39 -05:00
2025-01-14 07:56:39 -05:00
2025-04-01 00:07:28 +02:00
2025-04-01 00:07:28 +02:00
2025-01-14 07:56:39 -05:00
2025-04-01 00:07:28 +02:00
2025-01-26 15:54:06 +02:00
2025-01-14 07:56:39 -05:00
2025-01-14 07:56:39 -05:00