More consts for disks

This commit is contained in:
alesapin 2022-06-13 21:07:10 +02:00
parent cf47b1c96e
commit 267dd28e11
18 changed files with 55 additions and 54 deletions

View File

@ -83,7 +83,7 @@ void DiskDecorator::moveDirectory(const String & from_path, const String & to_pa
delegate->moveDirectory(from_path, to_path); delegate->moveDirectory(from_path, to_path);
} }
DirectoryIteratorPtr DiskDecorator::iterateDirectory(const String & path) DirectoryIteratorPtr DiskDecorator::iterateDirectory(const String & path) const
{ {
return delegate->iterateDirectory(path); return delegate->iterateDirectory(path);
} }
@ -113,7 +113,7 @@ void DiskDecorator::copyDirectoryContent(const String & from_dir, const std::sha
delegate->copyDirectoryContent(from_dir, to_disk, to_dir); delegate->copyDirectoryContent(from_dir, to_disk, to_dir);
} }
void DiskDecorator::listFiles(const String & path, std::vector<String> & file_names) void DiskDecorator::listFiles(const String & path, std::vector<String> & file_names) const
{ {
delegate->listFiles(path, file_names); delegate->listFiles(path, file_names);
} }
@ -171,7 +171,7 @@ void DiskDecorator::setLastModified(const String & path, const Poco::Timestamp &
delegate->setLastModified(path, timestamp); delegate->setLastModified(path, timestamp);
} }
Poco::Timestamp DiskDecorator::getLastModified(const String & path) Poco::Timestamp DiskDecorator::getLastModified(const String & path) const
{ {
return delegate->getLastModified(path); return delegate->getLastModified(path);
} }

View File

@ -28,13 +28,13 @@ public:
void createDirectories(const String & path) override; void createDirectories(const String & path) override;
void clearDirectory(const String & path) override; void clearDirectory(const String & path) override;
void moveDirectory(const String & from_path, const String & to_path) override; void moveDirectory(const String & from_path, const String & to_path) override;
DirectoryIteratorPtr iterateDirectory(const String & path) override; DirectoryIteratorPtr iterateDirectory(const String & path) const override;
void createFile(const String & path) override; void createFile(const String & path) override;
void moveFile(const String & from_path, const String & to_path) override; void moveFile(const String & from_path, const String & to_path) override;
void replaceFile(const String & from_path, const String & to_path) override; void replaceFile(const String & from_path, const String & to_path) override;
void copy(const String & from_path, const std::shared_ptr<IDisk> & to_disk, const String & to_path) override; void copy(const String & from_path, const std::shared_ptr<IDisk> & to_disk, const String & to_path) override;
void copyDirectoryContent(const String & from_dir, const std::shared_ptr<IDisk> & to_disk, const String & to_dir) override; void copyDirectoryContent(const String & from_dir, const std::shared_ptr<IDisk> & to_disk, const String & to_dir) override;
void listFiles(const String & path, std::vector<String> & file_names) override; void listFiles(const String & path, std::vector<String> & file_names) const override;
std::unique_ptr<ReadBufferFromFileBase> readFile( std::unique_ptr<ReadBufferFromFileBase> readFile(
const String & path, const String & path,
@ -56,7 +56,7 @@ public:
void removeSharedRecursive(const String & path, bool keep_all_batch_data, const NameSet & file_names_remove_metadata_only) override; void removeSharedRecursive(const String & path, bool keep_all_batch_data, const NameSet & file_names_remove_metadata_only) override;
void removeSharedFiles(const RemoveBatchRequest & files, bool keep_all_batch_data, const NameSet & file_names_remove_metadata_only) override; void removeSharedFiles(const RemoveBatchRequest & files, bool keep_all_batch_data, const NameSet & file_names_remove_metadata_only) override;
void setLastModified(const String & path, const Poco::Timestamp & timestamp) override; void setLastModified(const String & path, const Poco::Timestamp & timestamp) override;
Poco::Timestamp getLastModified(const String & path) override; Poco::Timestamp getLastModified(const String & path) const override;
void setReadOnly(const String & path) override; void setReadOnly(const String & path) override;
void createHardLink(const String & src_path, const String & dst_path) override; void createHardLink(const String & src_path, const String & dst_path) override;
void truncateFile(const String & path, size_t size) override; void truncateFile(const String & path, size_t size) override;

View File

@ -83,7 +83,7 @@ public:
delegate->moveDirectory(wrapped_from_path, wrapped_to_path); delegate->moveDirectory(wrapped_from_path, wrapped_to_path);
} }
DirectoryIteratorPtr iterateDirectory(const String & path) override DirectoryIteratorPtr iterateDirectory(const String & path) const override
{ {
auto wrapped_path = wrappedPath(path); auto wrapped_path = wrappedPath(path);
return delegate->iterateDirectory(wrapped_path); return delegate->iterateDirectory(wrapped_path);
@ -109,7 +109,7 @@ public:
delegate->replaceFile(wrapped_from_path, wrapped_to_path); delegate->replaceFile(wrapped_from_path, wrapped_to_path);
} }
void listFiles(const String & path, std::vector<String> & file_names) override void listFiles(const String & path, std::vector<String> & file_names) const override
{ {
auto wrapped_path = wrappedPath(path); auto wrapped_path = wrappedPath(path);
delegate->listFiles(wrapped_path, file_names); delegate->listFiles(wrapped_path, file_names);
@ -192,7 +192,7 @@ public:
delegate->setLastModified(wrapped_path, timestamp); delegate->setLastModified(wrapped_path, timestamp);
} }
Poco::Timestamp getLastModified(const String & path) override Poco::Timestamp getLastModified(const String & path) const override
{ {
auto wrapped_path = wrappedPath(path); auto wrapped_path = wrappedPath(path);
return delegate->getLastModified(wrapped_path); return delegate->getLastModified(wrapped_path);

View File

@ -325,7 +325,7 @@ void DiskLocal::moveDirectory(const String & from_path, const String & to_path)
fs::rename(fs::path(disk_path) / from_path, fs::path(disk_path) / to_path); fs::rename(fs::path(disk_path) / from_path, fs::path(disk_path) / to_path);
} }
DirectoryIteratorPtr DiskLocal::iterateDirectory(const String & path) DirectoryIteratorPtr DiskLocal::iterateDirectory(const String & path) const
{ {
fs::path meta_path = fs::path(disk_path) / path; fs::path meta_path = fs::path(disk_path) / path;
if (!broken && fs::exists(meta_path) && fs::is_directory(meta_path)) if (!broken && fs::exists(meta_path) && fs::is_directory(meta_path))
@ -387,7 +387,7 @@ void DiskLocal::removeRecursive(const String & path)
fs::remove_all(fs::path(disk_path) / path); fs::remove_all(fs::path(disk_path) / path);
} }
void DiskLocal::listFiles(const String & path, std::vector<String> & file_names) void DiskLocal::listFiles(const String & path, std::vector<String> & file_names) const
{ {
file_names.clear(); file_names.clear();
for (const auto & entry : fs::directory_iterator(fs::path(disk_path) / path)) for (const auto & entry : fs::directory_iterator(fs::path(disk_path) / path))
@ -399,7 +399,7 @@ void DiskLocal::setLastModified(const String & path, const Poco::Timestamp & tim
FS::setModificationTime(fs::path(disk_path) / path, timestamp.epochTime()); FS::setModificationTime(fs::path(disk_path) / path, timestamp.epochTime());
} }
Poco::Timestamp DiskLocal::getLastModified(const String & path) Poco::Timestamp DiskLocal::getLastModified(const String & path) const
{ {
return FS::getModificationTimestamp(fs::path(disk_path) / path); return FS::getModificationTimestamp(fs::path(disk_path) / path);
} }

View File

@ -58,7 +58,7 @@ public:
void moveDirectory(const String & from_path, const String & to_path) override; void moveDirectory(const String & from_path, const String & to_path) override;
DirectoryIteratorPtr iterateDirectory(const String & path) override; DirectoryIteratorPtr iterateDirectory(const String & path) const override;
void createFile(const String & path) override; void createFile(const String & path) override;
@ -70,7 +70,7 @@ public:
void copyDirectoryContent(const String & from_dir, const std::shared_ptr<IDisk> & to_disk, const String & to_dir) override; void copyDirectoryContent(const String & from_dir, const std::shared_ptr<IDisk> & to_disk, const String & to_dir) override;
void listFiles(const String & path, std::vector<String> & file_names) override; void listFiles(const String & path, std::vector<String> & file_names) const override;
std::unique_ptr<ReadBufferFromFileBase> readFile( std::unique_ptr<ReadBufferFromFileBase> readFile(
const String & path, const String & path,
@ -91,7 +91,7 @@ public:
void setLastModified(const String & path, const Poco::Timestamp & timestamp) override; void setLastModified(const String & path, const Poco::Timestamp & timestamp) override;
Poco::Timestamp getLastModified(const String & path) override; Poco::Timestamp getLastModified(const String & path) const override;
void setReadOnly(const String & path) override; void setReadOnly(const String & path) override;

View File

@ -262,7 +262,7 @@ void DiskMemory::moveDirectory(const String & /*from_path*/, const String & /*to
throw Exception("Method moveDirectory is not implemented for memory disks", ErrorCodes::NOT_IMPLEMENTED); throw Exception("Method moveDirectory is not implemented for memory disks", ErrorCodes::NOT_IMPLEMENTED);
} }
DirectoryIteratorPtr DiskMemory::iterateDirectory(const String & path) DirectoryIteratorPtr DiskMemory::iterateDirectory(const String & path) const
{ {
std::lock_guard lock(mutex); std::lock_guard lock(mutex);
@ -409,7 +409,7 @@ void DiskMemory::removeRecursive(const String & path)
} }
} }
void DiskMemory::listFiles(const String & path, std::vector<String> & file_names) void DiskMemory::listFiles(const String & path, std::vector<String> & file_names) const
{ {
std::lock_guard lock(mutex); std::lock_guard lock(mutex);

View File

@ -52,7 +52,7 @@ public:
void moveDirectory(const String & from_path, const String & to_path) override; void moveDirectory(const String & from_path, const String & to_path) override;
DirectoryIteratorPtr iterateDirectory(const String & path) override; DirectoryIteratorPtr iterateDirectory(const String & path) const override;
void createFile(const String & path) override; void createFile(const String & path) override;
@ -60,7 +60,7 @@ public:
void replaceFile(const String & from_path, const String & to_path) override; void replaceFile(const String & from_path, const String & to_path) override;
void listFiles(const String & path, std::vector<String> & file_names) override; void listFiles(const String & path, std::vector<String> & file_names) const override;
std::unique_ptr<ReadBufferFromFileBase> readFile( std::unique_ptr<ReadBufferFromFileBase> readFile(
const String & path, const String & path,
@ -81,7 +81,7 @@ public:
void setLastModified(const String &, const Poco::Timestamp &) override {} void setLastModified(const String &, const Poco::Timestamp &) override {}
Poco::Timestamp getLastModified(const String &) override { return Poco::Timestamp(); } Poco::Timestamp getLastModified(const String &) const override { return Poco::Timestamp(); }
void setReadOnly(const String & path) override; void setReadOnly(const String & path) override;

View File

@ -171,7 +171,7 @@ void DiskRestartProxy::moveDirectory(const String & from_path, const String & to
DiskDecorator::moveDirectory(from_path, to_path); DiskDecorator::moveDirectory(from_path, to_path);
} }
DirectoryIteratorPtr DiskRestartProxy::iterateDirectory(const String & path) DirectoryIteratorPtr DiskRestartProxy::iterateDirectory(const String & path) const
{ {
ReadLock lock (mutex); ReadLock lock (mutex);
return DiskDecorator::iterateDirectory(path); return DiskDecorator::iterateDirectory(path);
@ -207,7 +207,7 @@ void DiskRestartProxy::copyDirectoryContent(const String & from_dir, const std::
DiskDecorator::copyDirectoryContent(from_dir, to_disk, to_dir); DiskDecorator::copyDirectoryContent(from_dir, to_disk, to_dir);
} }
void DiskRestartProxy::listFiles(const String & path, std::vector<String> & file_names) void DiskRestartProxy::listFiles(const String & path, std::vector<String> & file_names) const
{ {
ReadLock lock (mutex); ReadLock lock (mutex);
DiskDecorator::listFiles(path, file_names); DiskDecorator::listFiles(path, file_names);
@ -276,7 +276,7 @@ void DiskRestartProxy::setLastModified(const String & path, const Poco::Timestam
DiskDecorator::setLastModified(path, timestamp); DiskDecorator::setLastModified(path, timestamp);
} }
Poco::Timestamp DiskRestartProxy::getLastModified(const String & path) Poco::Timestamp DiskRestartProxy::getLastModified(const String & path) const
{ {
ReadLock lock (mutex); ReadLock lock (mutex);
return DiskDecorator::getLastModified(path); return DiskDecorator::getLastModified(path);

View File

@ -37,13 +37,13 @@ public:
void createDirectories(const String & path) override; void createDirectories(const String & path) override;
void clearDirectory(const String & path) override; void clearDirectory(const String & path) override;
void moveDirectory(const String & from_path, const String & to_path) override; void moveDirectory(const String & from_path, const String & to_path) override;
DirectoryIteratorPtr iterateDirectory(const String & path) override; DirectoryIteratorPtr iterateDirectory(const String & path) const override;
void createFile(const String & path) override; void createFile(const String & path) override;
void moveFile(const String & from_path, const String & to_path) override; void moveFile(const String & from_path, const String & to_path) override;
void replaceFile(const String & from_path, const String & to_path) override; void replaceFile(const String & from_path, const String & to_path) override;
void copy(const String & from_path, const DiskPtr & to_disk, const String & to_path) override; void copy(const String & from_path, const DiskPtr & to_disk, const String & to_path) override;
void copyDirectoryContent(const String & from_dir, const std::shared_ptr<IDisk> & to_disk, const String & to_dir) override; void copyDirectoryContent(const String & from_dir, const std::shared_ptr<IDisk> & to_disk, const String & to_dir) override;
void listFiles(const String & path, std::vector<String> & file_names) override; void listFiles(const String & path, std::vector<String> & file_names) const override;
std::unique_ptr<ReadBufferFromFileBase> readFile( std::unique_ptr<ReadBufferFromFileBase> readFile(
const String & path, const String & path,
const ReadSettings & settings, const ReadSettings & settings,
@ -58,7 +58,7 @@ public:
void removeSharedFiles(const RemoveBatchRequest & files, bool keep_all_batch_data, const NameSet & file_names_remove_metadata_only) override; void removeSharedFiles(const RemoveBatchRequest & files, bool keep_all_batch_data, const NameSet & file_names_remove_metadata_only) override;
void removeSharedRecursive(const String & path, bool keep_all_batch_data, const NameSet & file_names_remove_metadata_only) override; void removeSharedRecursive(const String & path, bool keep_all_batch_data, const NameSet & file_names_remove_metadata_only) override;
void setLastModified(const String & path, const Poco::Timestamp & timestamp) override; void setLastModified(const String & path, const Poco::Timestamp & timestamp) override;
Poco::Timestamp getLastModified(const String & path) override; Poco::Timestamp getLastModified(const String & path) const override;
void setReadOnly(const String & path) override; void setReadOnly(const String & path) override;
void createHardLink(const String & src_path, const String & dst_path) override; void createHardLink(const String & src_path, const String & dst_path) override;
void truncateFile(const String & path, size_t size) override; void truncateFile(const String & path, size_t size) override;

View File

@ -188,7 +188,7 @@ std::unique_ptr<ReadBufferFromFileBase> DiskWebServer::readFile(const String & p
} }
DirectoryIteratorPtr DiskWebServer::iterateDirectory(const String & path) DirectoryIteratorPtr DiskWebServer::iterateDirectory(const String & path) const
{ {
std::vector<fs::path> dir_file_paths; std::vector<fs::path> dir_file_paths;
if (files.find(path) == files.end()) if (files.find(path) == files.end())

View File

@ -90,15 +90,15 @@ public:
size_t getFileSize(const String & path) const override; size_t getFileSize(const String & path) const override;
void listFiles(const String & /* path */, std::vector<String> & /* file_names */) override { } void listFiles(const String & /* path */, std::vector<String> & /* file_names */) const override { }
void setReadOnly(const String & /* path */) override {} void setReadOnly(const String & /* path */) override {}
bool isDirectory(const String & path) const override; bool isDirectory(const String & path) const override;
DirectoryIteratorPtr iterateDirectory(const String & /* path */) override; DirectoryIteratorPtr iterateDirectory(const String & /* path */) const override;
Poco::Timestamp getLastModified(const String &) override { return Poco::Timestamp{}; } Poco::Timestamp getLastModified(const String &) const override { return Poco::Timestamp{}; }
/// Write and modification part /// Write and modification part

View File

@ -16,7 +16,7 @@ namespace ErrorCodes
extern const int NOT_IMPLEMENTED; extern const int NOT_IMPLEMENTED;
} }
bool IDisk::isDirectoryEmpty(const String & path) bool IDisk::isDirectoryEmpty(const String & path) const
{ {
return !iterateDirectory(path)->isValid(); return !iterateDirectory(path)->isValid();
} }

View File

@ -138,10 +138,10 @@ public:
virtual void moveDirectory(const String & from_path, const String & to_path) = 0; virtual void moveDirectory(const String & from_path, const String & to_path) = 0;
/// Return iterator to the contents of the specified directory. /// Return iterator to the contents of the specified directory.
virtual DirectoryIteratorPtr iterateDirectory(const String & path) = 0; virtual DirectoryIteratorPtr iterateDirectory(const String & path) const = 0;
/// Return `true` if the specified directory is empty. /// Return `true` if the specified directory is empty.
bool isDirectoryEmpty(const String & path); bool isDirectoryEmpty(const String & path) const;
/// Create empty file at `path`. /// Create empty file at `path`.
virtual void createFile(const String & path) = 0; virtual void createFile(const String & path) = 0;
@ -164,7 +164,7 @@ public:
virtual void copyFile(const String & from_file_path, IDisk & to_disk, const String & to_file_path); virtual void copyFile(const String & from_file_path, IDisk & to_disk, const String & to_file_path);
/// List files at `path` and add their names to `file_names` /// List files at `path` and add their names to `file_names`
virtual void listFiles(const String & path, std::vector<String> & file_names) = 0; virtual void listFiles(const String & path, std::vector<String> & file_names) const = 0;
/// Open the file for read and return ReadBufferFromFileBase object. /// Open the file for read and return ReadBufferFromFileBase object.
virtual std::unique_ptr<ReadBufferFromFileBase> readFile( /// NOLINT virtual std::unique_ptr<ReadBufferFromFileBase> readFile( /// NOLINT
@ -259,7 +259,7 @@ public:
virtual void setLastModified(const String & path, const Poco::Timestamp & timestamp) = 0; virtual void setLastModified(const String & path, const Poco::Timestamp & timestamp) = 0;
/// Get last modified time of file or directory at `path`. /// Get last modified time of file or directory at `path`.
virtual Poco::Timestamp getLastModified(const String & path) = 0; virtual Poco::Timestamp getLastModified(const String & path) const = 0;
/// Set file at `path` as read-only. /// Set file at `path` as read-only.
virtual void setReadOnly(const String & path) = 0; virtual void setReadOnly(const String & path) = 0;

View File

@ -350,13 +350,13 @@ void DiskObjectStorage::removeDirectory(const String & path)
} }
DirectoryIteratorPtr DiskObjectStorage::iterateDirectory(const String & path) DirectoryIteratorPtr DiskObjectStorage::iterateDirectory(const String & path) const
{ {
return metadata_storage->iterateDirectory(path); return metadata_storage->iterateDirectory(path);
} }
void DiskObjectStorage::listFiles(const String & path, std::vector<String> & file_names) void DiskObjectStorage::listFiles(const String & path, std::vector<String> & file_names) const
{ {
for (auto it = iterateDirectory(path); it->isValid(); it->next()) for (auto it = iterateDirectory(path); it->isValid(); it->next())
file_names.push_back(it->name()); file_names.push_back(it->name());
@ -371,7 +371,7 @@ void DiskObjectStorage::setLastModified(const String & path, const Poco::Timesta
} }
Poco::Timestamp DiskObjectStorage::getLastModified(const String & path) Poco::Timestamp DiskObjectStorage::getLastModified(const String & path) const
{ {
return metadata_storage->getLastModified(path); return metadata_storage->getLastModified(path);
} }

View File

@ -108,7 +108,7 @@ public:
void createHardLink(const String & src_path, const String & dst_path) override; void createHardLink(const String & src_path, const String & dst_path) override;
void createHardLink(const String & src_path, const String & dst_path, bool should_send_metadata); void createHardLink(const String & src_path, const String & dst_path, bool should_send_metadata);
void listFiles(const String & path, std::vector<String> & file_names) override; void listFiles(const String & path, std::vector<String> & file_names) const override;
void setReadOnly(const String & path) override; void setReadOnly(const String & path) override;
@ -124,11 +124,11 @@ public:
void removeDirectory(const String & path) override; void removeDirectory(const String & path) override;
DirectoryIteratorPtr iterateDirectory(const String & path) override; DirectoryIteratorPtr iterateDirectory(const String & path) const override;
void setLastModified(const String & path, const Poco::Timestamp & timestamp) override; void setLastModified(const String & path, const Poco::Timestamp & timestamp) override;
Poco::Timestamp getLastModified(const String & path) override; Poco::Timestamp getLastModified(const String & path) const override;
bool isRemote() const override { return true; } bool isRemote() const override { return true; }

View File

@ -15,16 +15,6 @@
namespace DB namespace DB
{ {
struct IMetadataOperation
{
virtual void execute() = 0;
virtual void undo() = 0;
virtual void finalize() {}
virtual ~IMetadataOperation() = default;
};
using MetadataOperationPtr = std::unique_ptr<IMetadataOperation>;
class IMetadataStorage; class IMetadataStorage;
/// Tries to provide some "transactions" interface, which allow /// Tries to provide some "transactions" interface, which allow
@ -113,7 +103,7 @@ public:
virtual std::vector<std::string> listDirectory(const std::string & path) const = 0; virtual std::vector<std::string> listDirectory(const std::string & path) const = 0;
virtual DirectoryIteratorPtr iterateDirectory(const std::string & path) = 0; virtual DirectoryIteratorPtr iterateDirectory(const std::string & path) const = 0;
virtual uint32_t getHardlinkCount(const std::string & path) const = 0; virtual uint32_t getHardlinkCount(const std::string & path) const = 0;

View File

@ -484,7 +484,7 @@ std::vector<std::string> MetadataStorageFromDisk::listDirectory(const std::strin
return result_files; return result_files;
} }
DirectoryIteratorPtr MetadataStorageFromDisk::iterateDirectory(const std::string & path) DirectoryIteratorPtr MetadataStorageFromDisk::iterateDirectory(const std::string & path) const
{ {
return disk->iterateDirectory(path); return disk->iterateDirectory(path);
} }

View File

@ -8,6 +8,17 @@
namespace DB namespace DB
{ {
struct IMetadataOperation
{
virtual void execute() = 0;
virtual void undo() = 0;
virtual void finalize() {}
virtual ~IMetadataOperation() = default;
};
using MetadataOperationPtr = std::unique_ptr<IMetadataOperation>;
enum class MetadataFromDiskTransactionState enum class MetadataFromDiskTransactionState
{ {
PREPARING, PREPARING,
@ -50,7 +61,7 @@ public:
std::vector<std::string> listDirectory(const std::string & path) const override; std::vector<std::string> listDirectory(const std::string & path) const override;
DirectoryIteratorPtr iterateDirectory(const std::string & path) override; DirectoryIteratorPtr iterateDirectory(const std::string & path) const override;
std::string readFileToString(const std::string & path) const override; std::string readFileToString(const std::string & path) const override;