From 9374666c0c238356c12e324086528e37cf1a2e62 Mon Sep 17 00:00:00 2001 From: kssenii Date: Sat, 15 Apr 2023 12:20:35 +0200 Subject: [PATCH] Deprecetae local object storage on fake metadata storage --- src/Disks/DiskLocal.cpp | 31 ------------------- src/Disks/DiskLocal.h | 4 --- src/Disks/IDisk.cpp | 3 -- src/Disks/IDisk.h | 8 ++++- .../Cached/registerDiskCache.cpp | 3 ++ .../Local/LocalObjectStorage.cpp | 1 - tests/config/config.d/storage_conf.xml | 6 ++-- 7 files changed, 13 insertions(+), 43 deletions(-) diff --git a/src/Disks/DiskLocal.cpp b/src/Disks/DiskLocal.cpp index 473420cc0a86..5305057a6066 100644 --- a/src/Disks/DiskLocal.cpp +++ b/src/Disks/DiskLocal.cpp @@ -9,10 +9,6 @@ #include #include #include -#include -#include -#include -#include #include #include @@ -38,7 +34,6 @@ namespace DB namespace ErrorCodes { extern const int UNKNOWN_ELEMENT_IN_CONFIG; - extern const int EXCESSIVE_ELEMENT_IN_CONFIG; extern const int PATH_ACCESS_DENIED; extern const int LOGICAL_ERROR; extern const int CANNOT_TRUNCATE_FILE; @@ -555,25 +550,6 @@ catch (...) return false; } -DiskObjectStoragePtr DiskLocal::createDiskObjectStorage() -{ - auto object_storage = std::make_shared(); - auto metadata_storage = std::make_shared( - /* metadata_storage */std::static_pointer_cast(shared_from_this()), - object_storage, - /* object_storage_root_path */getPath()); - - return std::make_shared( - getName(), - disk_path, - "Local", - metadata_storage, - object_storage, - false, - /* threadpool_size */16 - ); -} - void DiskLocal::checkAccessImpl(const String & path) { try @@ -701,13 +677,6 @@ void DiskLocal::chmod(const String & path, mode_t mode) DB::throwFromErrnoWithPath("Cannot chmod file: " + path, path, DB::ErrorCodes::PATH_ACCESS_DENIED); } -MetadataStoragePtr DiskLocal::getMetadataStorage() -{ - auto object_storage = std::make_shared(); - return std::make_shared( - std::static_pointer_cast(shared_from_this()), object_storage, getPath()); -} - void registerDiskLocal(DiskFactory & factory, bool global_skip_access_check) { auto creator = [global_skip_access_check]( diff --git a/src/Disks/DiskLocal.h b/src/Disks/DiskLocal.h index d6182463ebf5..c1f77e5359d3 100644 --- a/src/Disks/DiskLocal.h +++ b/src/Disks/DiskLocal.h @@ -121,16 +121,12 @@ class DiskLocal : public IDisk bool canRead() const noexcept; bool canWrite() const noexcept; - DiskObjectStoragePtr createDiskObjectStorage() override; - bool supportsStat() const override { return true; } struct stat stat(const String & path) const override; bool supportsChmod() const override { return true; } void chmod(const String & path, mode_t mode) override; - MetadataStoragePtr getMetadataStorage() override; - protected: void checkAccessImpl(const String & path) override; diff --git a/src/Disks/IDisk.cpp b/src/Disks/IDisk.cpp index c18e99bd58e7..22197760d882 100644 --- a/src/Disks/IDisk.cpp +++ b/src/Disks/IDisk.cpp @@ -7,9 +7,6 @@ #include #include #include -#include -#include -#include #include namespace DB diff --git a/src/Disks/IDisk.h b/src/Disks/IDisk.h index 797235b5fb80..bc56a5dc6150 100644 --- a/src/Disks/IDisk.h +++ b/src/Disks/IDisk.h @@ -367,7 +367,13 @@ class IDisk : public Space /// Actually it's a part of IDiskRemote implementation but we have so /// complex hierarchy of disks (with decorators), so we cannot even /// dynamic_cast some pointer to IDisk to pointer to IDiskRemote. - virtual MetadataStoragePtr getMetadataStorage() = 0; + virtual MetadataStoragePtr getMetadataStorage() + { + throw Exception( + ErrorCodes::NOT_IMPLEMENTED, + "Method getMetadataStorage() is not implemented for disk type: {}", + toString(getDataSourceDescription().type)); + } /// Very similar case as for getMetadataDiskIfExistsOrSelf(). If disk has "metadata" /// it will return mapping for each required path: path -> metadata as string. diff --git a/src/Disks/ObjectStorages/Cached/registerDiskCache.cpp b/src/Disks/ObjectStorages/Cached/registerDiskCache.cpp index d8c4a9d42fd7..ff987f1d5eee 100644 --- a/src/Disks/ObjectStorages/Cached/registerDiskCache.cpp +++ b/src/Disks/ObjectStorages/Cached/registerDiskCache.cpp @@ -47,6 +47,9 @@ void registerDiskCache(DiskFactory & factory, bool /* global_skip_access_check * auto disk = disk_it->second; auto cache = FileCacheFactory::instance().getOrCreate(cache_base_path, file_cache_settings, name); + if (!dynamic_cast(disk.get())) + throw Exception(ErrorCodes::BAD_ARGUMENTS, "Cached disk is allowed only on top of object storage"); + auto disk_object_storage = disk->createDiskObjectStorage(); disk_object_storage->wrapWithCache(cache, file_cache_settings, name); diff --git a/src/Disks/ObjectStorages/Local/LocalObjectStorage.cpp b/src/Disks/ObjectStorages/Local/LocalObjectStorage.cpp index 0da1207cbca7..7f7052647213 100644 --- a/src/Disks/ObjectStorages/Local/LocalObjectStorage.cpp +++ b/src/Disks/ObjectStorages/Local/LocalObjectStorage.cpp @@ -20,7 +20,6 @@ namespace DB namespace ErrorCodes { - extern const int LOGICAL_ERROR; extern const int NOT_IMPLEMENTED; } diff --git a/tests/config/config.d/storage_conf.xml b/tests/config/config.d/storage_conf.xml index bc9269e6ec1c..39345bdf253b 100644 --- a/tests/config/config.d/storage_conf.xml +++ b/tests/config/config.d/storage_conf.xml @@ -120,15 +120,15 @@ - local + local_blob_storage local_disk/ - local + local_blob_storage local_disk_2/ - local + local_blob_storage local_disk_3/