You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@doris.apache.org by yi...@apache.org on 2022/07/17 06:10:12 UTC
[doris] branch master updated: [refactor] remove BlockManager (#10913)
This is an automated email from the ASF dual-hosted git repository.
yiguolei pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push:
new 3bc6655069 [refactor] remove BlockManager (#10913)
3bc6655069 is described below
commit 3bc66550696ac55afe63c99db1deb7bbc51ca36b
Author: plat1ko <pl...@gmail.com>
AuthorDate: Sun Jul 17 14:10:06 2022 +0800
[refactor] remove BlockManager (#10913)
* remove BlockManager
* remove deprecated field in tablet meta
---
be/CMakeLists.txt | 1 -
be/src/exec/olap_common.h | 2 +-
be/src/olap/CMakeLists.txt | 1 -
be/src/olap/base_tablet.cpp | 5 +-
be/src/olap/base_tablet.h | 4 +-
be/src/olap/data_dir.cpp | 2 -
be/src/olap/fs/CMakeLists.txt | 31 --
be/src/olap/fs/block_id.cpp | 42 --
be/src/olap/fs/block_id.h | 85 ----
be/src/olap/fs/block_manager.cpp | 52 ---
be/src/olap/fs/block_manager.h | 251 -----------
be/src/olap/fs/block_manager_metrics.cpp | 41 --
be/src/olap/fs/block_manager_metrics.h | 54 ---
be/src/olap/fs/file_block_manager.cpp | 464 ---------------------
be/src/olap/fs/file_block_manager.h | 122 ------
be/src/olap/fs/fs_util.cpp | 102 -----
be/src/olap/fs/fs_util.h | 42 --
be/src/olap/fs/remote_block_manager.cpp | 345 ---------------
be/src/olap/fs/remote_block_manager.h | 73 ----
be/src/olap/rowset/beta_rowset_writer.cpp | 1 -
.../olap/rowset/segment_v2/indexed_column_reader.h | 1 -
.../olap/rowset/segment_v2/ordinal_page_index.cpp | 1 -
be/src/olap/rowset/segment_v2/segment.cpp | 7 +-
be/src/olap/rowset/segment_v2/segment_iterator.cpp | 1 -
be/src/olap/storage_engine.cpp | 3 -
be/src/olap/storage_engine.h | 1 -
be/src/olap/tablet.cpp | 9 +-
be/src/olap/tablet.h | 3 +-
be/src/olap/tablet_manager.cpp | 26 +-
be/src/olap/tablet_manager.h | 3 -
be/src/olap/tablet_meta.cpp | 14 +-
be/src/olap/tablet_meta.h | 7 -
be/src/util/CMakeLists.txt | 2 +-
be/src/util/doris_metrics.cpp | 10 -
be/src/util/doris_metrics.h | 11 -
be/src/vec/columns/column_nullable.h | 2 +-
be/test/CMakeLists.txt | 1 -
be/test/olap/cumulative_compaction_policy_test.cpp | 114 ++---
be/test/olap/fs/file_block_manager_test.cpp | 81 ----
be/test/olap/primary_key_index_test.cpp | 1 -
.../bloom_filter_index_reader_writer_test.cpp | 2 -
.../segment_v2/column_reader_writer_test.cpp | 1 -
.../rowset/segment_v2/ordinal_page_index_test.cpp | 1 -
be/test/olap/rowset/segment_v2/segment_test.cpp | 2 -
.../olap/rowset/segment_v2/zone_map_index_test.cpp | 2 -
be/test/olap/tablet_meta_test.cpp | 3 +-
be/test/olap/tablet_test.cpp | 10 +-
be/test/olap/test_data/header_without_inc_rs.txt | 2 -
be/test/runtime/array_test.cpp | 2 -
be/test/tools/benchmark_tool.cpp | 2 -
gensrc/proto/olap_file.proto | 10 +-
gensrc/thrift/AgentService.thrift | 8 +-
52 files changed, 45 insertions(+), 2018 deletions(-)
diff --git a/be/CMakeLists.txt b/be/CMakeLists.txt
index 1791458aff..c51072802a 100644
--- a/be/CMakeLists.txt
+++ b/be/CMakeLists.txt
@@ -603,7 +603,6 @@ set(DORIS_LINK_LIBS
IO
Olap
Rowset
- OlapFs
Runtime
Service
Udf
diff --git a/be/src/exec/olap_common.h b/be/src/exec/olap_common.h
index abb856cef3..154454ff82 100644
--- a/be/src/exec/olap_common.h
+++ b/be/src/exec/olap_common.h
@@ -51,7 +51,7 @@ std::string cast_to_string(T value, int scale) {
return std::to_string(static_cast<int>(value));
} else if constexpr (primitive_type == TYPE_LARGEINT) {
std::stringstream ss;
- ss << value;
+ doris::operator<<(ss, value);
return ss.str();
} else {
return boost::lexical_cast<std::string>(value);
diff --git a/be/src/olap/CMakeLists.txt b/be/src/olap/CMakeLists.txt
index 9ca92ec9a2..82600889cc 100644
--- a/be/src/olap/CMakeLists.txt
+++ b/be/src/olap/CMakeLists.txt
@@ -22,7 +22,6 @@ set(LIBRARY_OUTPUT_PATH "${BUILD_DIR}/src/olap")
set(EXECUTABLE_OUTPUT_PATH "${BUILD_DIR}/src/olap")
add_subdirectory(rowset)
-add_subdirectory(fs)
add_library(Olap STATIC
aggregate_func.cpp
diff --git a/be/src/olap/base_tablet.cpp b/be/src/olap/base_tablet.cpp
index cb2e7561f2..0417070771 100644
--- a/be/src/olap/base_tablet.cpp
+++ b/be/src/olap/base_tablet.cpp
@@ -21,7 +21,6 @@
#include "olap/data_dir.h"
#include "util/doris_metrics.h"
#include "util/path_util.h"
-#include "util/storage_backend_mgr.h"
namespace doris {
@@ -29,11 +28,9 @@ extern MetricPrototype METRIC_query_scan_bytes;
extern MetricPrototype METRIC_query_scan_rows;
extern MetricPrototype METRIC_query_scan_count;
-BaseTablet::BaseTablet(TabletMetaSharedPtr tablet_meta, const StorageParamPB& storage_param,
- DataDir* data_dir)
+BaseTablet::BaseTablet(TabletMetaSharedPtr tablet_meta, DataDir* data_dir)
: _state(tablet_meta->tablet_state()),
_tablet_meta(tablet_meta),
- _storage_param(storage_param),
_schema(tablet_meta->tablet_schema()),
_data_dir(data_dir) {
_gen_tablet_path();
diff --git a/be/src/olap/base_tablet.h b/be/src/olap/base_tablet.h
index 99c7d1cac3..84e336fc2e 100644
--- a/be/src/olap/base_tablet.h
+++ b/be/src/olap/base_tablet.h
@@ -33,8 +33,7 @@ class DataDir;
// storage engine evolves.
class BaseTablet : public std::enable_shared_from_this<BaseTablet> {
public:
- BaseTablet(TabletMetaSharedPtr tablet_meta, const StorageParamPB& storage_param,
- DataDir* data_dir);
+ BaseTablet(TabletMetaSharedPtr tablet_meta, DataDir* data_dir);
virtual ~BaseTablet();
DataDir* data_dir() const;
@@ -76,7 +75,6 @@ protected:
protected:
TabletState _state;
TabletMetaSharedPtr _tablet_meta;
- StorageParamPB _storage_param;
const TabletSchema& _schema;
DataDir* _data_dir;
diff --git a/be/src/olap/data_dir.cpp b/be/src/olap/data_dir.cpp
index 52d1570e48..afc56f9d15 100644
--- a/be/src/olap/data_dir.cpp
+++ b/be/src/olap/data_dir.cpp
@@ -48,8 +48,6 @@
#include "service/backend_options.h"
#include "util/errno.h"
#include "util/file_utils.h"
-#include "util/storage_backend.h"
-#include "util/storage_backend_mgr.h"
#include "util/string_util.h"
using strings::Substitute;
diff --git a/be/src/olap/fs/CMakeLists.txt b/be/src/olap/fs/CMakeLists.txt
deleted file mode 100644
index 83f27a3804..0000000000
--- a/be/src/olap/fs/CMakeLists.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one
-# or more contributor license agreements. See the NOTICE file
-# distributed with this work for additional information
-# regarding copyright ownership. The ASF licenses this file
-# to you under the Apache License, Version 2.0 (the
-# "License"); you may not use this file except in compliance
-# with the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing,
-# software distributed under the License is distributed on an
-# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-# KIND, either express or implied. See the License for the
-# specific language governing permissions and limitations
-# under the License.
-
-# where to put generated libraries
-set(LIBRARY_OUTPUT_PATH "${BUILD_DIR}/src/olap/fs")
-
-# where to put generated binaries
-set(EXECUTABLE_OUTPUT_PATH "${BUILD_DIR}/src/olap/fs")
-
-add_library(OlapFs STATIC
- block_id.cpp
- block_manager_metrics.cpp
- block_manager.cpp
- fs_util.cpp
- file_block_manager.cpp
- remote_block_manager.cpp
-)
diff --git a/be/src/olap/fs/block_id.cpp b/be/src/olap/fs/block_id.cpp
deleted file mode 100644
index f5cf4f7551..0000000000
--- a/be/src/olap/fs/block_id.cpp
+++ /dev/null
@@ -1,42 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-#include "olap/fs/block_id.h"
-
-#include <string>
-#include <vector>
-
-#include "common/logging.h"
-#include "gutil/strings/join.h"
-
-using std::string;
-using std::vector;
-
-namespace doris {
-
-const uint64_t BlockId::kInvalidId = 0;
-
-std::string BlockId::join_strings(const std::vector<BlockId>& blocks) {
- std::vector<string> strings;
- strings.reserve(blocks.size());
- for (const BlockId& block : blocks) {
- strings.push_back(block.to_string());
- }
- return ::JoinStrings(strings, ",");
-}
-
-} // namespace doris
diff --git a/be/src/olap/fs/block_id.h b/be/src/olap/fs/block_id.h
deleted file mode 100644
index 1f1f26b841..0000000000
--- a/be/src/olap/fs/block_id.h
+++ /dev/null
@@ -1,85 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-#pragma once
-
-#include <cinttypes>
-#include <cstddef>
-#include <cstdint>
-#include <iosfwd>
-#include <string>
-#include <unordered_set>
-#include <vector>
-
-#include "gutil/stringprintf.h"
-
-namespace doris {
-
-// Block is the smallest unit of reading and writing.
-// In the future, each BlockId should become a relatively simple structure,
-// such as a uint64_t. But now, we don't have a mapping management structure
-// from uint64_t to files, so we need to save the file name in BlockId.
-class BlockId {
-public:
- BlockId() : _id(kInvalidId) {}
-
- explicit BlockId(uint64_t id) : _id(id) {}
-
- void set_id(uint64_t id) { _id = id; }
-
- bool is_null() const { return _id == kInvalidId; }
-
- std::string to_string() const { return StringPrintf("%016" PRIu64, _id); }
-
- bool operator==(const BlockId& other) const { return _id == other._id; }
-
- bool operator!=(const BlockId& other) const { return _id != other._id; }
-
- bool operator<(const BlockId& other) const { return _id < other._id; }
-
- // Returns the raw ID. Use with care; in most cases the BlockId should be
- // treated as a completely opaque value.
- uint64_t id() const { return _id; }
-
- // Join the given block IDs with ','. Useful for debug printouts.
- static std::string join_strings(const std::vector<BlockId>& blocks);
-
-private:
- static const uint64_t kInvalidId;
-
- uint64_t _id;
-};
-
-std::ostream& operator<<(std::ostream& o, const BlockId& block_id);
-
-struct BlockIdHash {
- // size_t is same as uint64_t
- size_t operator()(const BlockId& block_id) const { return block_id.id(); }
-};
-
-struct BlockIdCompare {
- bool operator()(const BlockId& first, const BlockId& second) const { return first < second; }
-};
-
-struct BlockIdEqual {
- bool operator()(const BlockId& first, const BlockId& second) const { return first == second; }
-};
-
-typedef std::unordered_set<BlockId, BlockIdHash, BlockIdEqual> BlockIdSet;
-typedef std::vector<BlockId> BlockIdContainer;
-
-} // end namespace doris
diff --git a/be/src/olap/fs/block_manager.cpp b/be/src/olap/fs/block_manager.cpp
deleted file mode 100644
index 47043ca1bf..0000000000
--- a/be/src/olap/fs/block_manager.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-#include "olap/fs/block_manager.h"
-
-#include <mutex>
-#include <ostream>
-
-#include "common/logging.h"
-
-namespace doris {
-namespace fs {
-
-// Controls when to pre-flush a block. Valid values are 'finalize',
-// 'close', or 'never'.
-// + If 'finalize', blocks will be pre-flushed when writing is finished.
-// + If 'close', blocks will be pre-flushed when their transaction is committed.
-// + If 'never', blocks will never be pre-flushed but still be flushed when closed.");
-//
-// The default value is optimized for throughput in the case that
-// there are multiple drives backing the tablet. By asynchronously
-// flushing each block before issuing any fsyncs, the IO across
-// disks is done in parallel.
-//
-// This increases throughput but can harm latency in the case that
-// there are few disks and the WAL is on the same disk as the
-// data blocks. The default is chosen based on the assumptions that:
-// - latency is leveled across machines by Raft
-// - latency-sensitive applications can devote a disk to the WAL
-// - super-sensitive applications can devote an SSD to the WAL.
-// - users could always change this to "never", which slows down
-// throughput but may improve write latency.
-//
-// TODO(lingbin): move it to conf later, to allow adjust dynamically.
-const std::string BlockManager::block_manager_preflush_control = "finalize";
-
-} // namespace fs
-} // namespace doris
diff --git a/be/src/olap/fs/block_manager.h b/be/src/olap/fs/block_manager.h
deleted file mode 100644
index 9a9f9c32a9..0000000000
--- a/be/src/olap/fs/block_manager.h
+++ /dev/null
@@ -1,251 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-#pragma once
-
-#include <cstddef>
-#include <cstdint>
-#include <memory>
-#include <string>
-#include <vector>
-
-#include "common/status.h"
-#include "env/env.h"
-
-namespace doris {
-
-class BlockId;
-class Env;
-struct Slice;
-
-namespace fs {
-
-class BlockManager;
-
-// The smallest unit of data that is backed by the filesystem.
-//
-// The block interface reflects Doris on-disk storage design principles:
-// - Blocks are append only.
-// - Blocks are immutable once written.
-// - Blocks opened for reading are thread-safe and may be used by multiple
-// concurrent readers.
-// - Blocks opened for writing are not thread-safe.
-class Block {
-public:
- virtual ~Block() {}
-
- // Returns the identifier for this block.
- // TODO: should we assign a block an identifier?
- virtual const BlockId& id() const = 0;
-
- // Currently, each block in Doris will correspond to a file, but it may not be
- // in the future (that is, a block may correspond to multiple files, or multiple
- // blocks correspond to a file).
- // For convenience, the path interface is directly exposed. At that time, the path()
- // method should be removed.
- virtual const FilePathDesc& path_desc() const = 0;
-};
-
-// A block that has been opened for writing. There may only be a single
-// writing thread, and data may only be appended to the block.
-//
-// close() is an expensive operation, as it must flush both dirty block data
-// and metadata to disk. The block manager API provides two ways to improve
-// close() performance:
-// 1. finalize() before close(). When 'block_manager_preflush_control' is set
-// to 'finalize', if there's enough work to be done between the two calls,
-// there will be less outstanding I/O to wait for during close().
-// 2. CloseBlocks() on a group of blocks. This ensures: 1) flushing of dirty
-// blocks are grouped together if possible, resulting in less I/O.
-// 2) when waiting on outstanding I/O, the waiting is done in parallel.
-//
-// NOTE: if a WritableBlock is not explicitly close()ed, it will be aborted
-// (i.e. deleted).
-class WritableBlock : public Block {
-public:
- enum State {
- // There is no dirty data in the block.
- CLEAN,
- // There is some dirty data in the block.
- DIRTY,
- // No more data may be written to the block, but it is not yet guaranteed
- // to be durably stored on disk.
- FINALIZED,
- // The block is closed. No more operations can be performed on it.
- CLOSED
- };
-
- // Destroy the WritableBlock. If it was not explicitly closed using close(),
- // this will Abort() the block.
- virtual ~WritableBlock() {}
-
- // Destroys the in-memory representation of the block and synchronizes
- // dirty block data and metadata with the disk. On success, guarantees
- // that the entire block is durable.
- virtual Status close() = 0;
-
- // Like close() but does not synchronize dirty data or metadata to disk.
- // Meaning, after a successful Abort(), the block no longer exists.
- virtual Status abort() = 0;
-
- // Get a pointer back to this block's manager.
- virtual BlockManager* block_manager() const = 0;
-
- // Appends the chunk of data referenced by 'data' to the block.
- //
- // Does not guarantee durability of 'data'; close() must be called for all
- // outstanding data to reach the disk.
- virtual Status append(const Slice& data) = 0;
-
- // Appends multiple chunks of data referenced by 'data' to the block.
- //
- // Does not guarantee durability of 'data'; close() must be called for all
- // outstanding data to reach the disk.
- virtual Status appendv(const Slice* data, size_t data_cnt) = 0;
-
- // Signals that the block will no longer receive writes. Does not guarantee
- // durability; close() must still be called for that.
- //
- // When 'block_manager_preflush_control' is set to 'finalize', it also begins an
- // asynchronous flush of dirty block data to disk. If there is other work
- // to be done between the final Append() and the future close(),
- // finalize() will reduce the amount of time spent waiting for outstanding
- // I/O to complete in close(). This is analogous to readahead or prefetching.
- virtual Status finalize() = 0;
-
- // Returns the number of bytes successfully appended via Append().
- virtual size_t bytes_appended() const = 0;
-
- virtual State state() const = 0;
-};
-
-// A block that has been opened for reading. Multiple in-memory blocks may
-// be constructed for the same logical block, and the same in-memory block
-// may be shared amongst threads for concurrent reading.
-class ReadableBlock : public Block {
-public:
- virtual ~ReadableBlock() {}
-
- // Destroys the in-memory representation of the block.
- virtual Status close() = 0;
-
- // Get a pointer back to this block's manager.
- virtual BlockManager* block_manager() const = 0;
-
- // Returns the on-disk size of a written block.
- virtual Status size(uint64_t* sz) const = 0;
-
- // Reads exactly 'result.size' bytes beginning from 'offset' in the block,
- // returning an error if fewer bytes exist.
- // Sets "result" to the data that was read.
- // If an error was encountered, returns a non-OK status.
- virtual Status read(uint64_t offset, Slice result) const = 0;
-
- // Reads exactly the "results" aggregate bytes, based on each Slice's "size",
- // beginning from 'offset' in the block, returning an error if fewer bytes exist.
- // Sets each "result" to the data that was read.
- // If an error was encountered, returns a non-OK status.
- virtual Status readv(uint64_t offset, const Slice* res, size_t res_cnt) const = 0;
-
- // Returns the memory usage of this object including the object itself.
- // virtual size_t memory_footprint() const = 0;
-};
-
-// Provides options and hints for block placement. This is used for identifying
-// the correct DataDirGroups to place blocks. In the future this may also be
-// used to specify directories based on block type (e.g. to prefer bloom block
-// placement into SSD-backed directories).
-struct CreateBlockOptions {
- CreateBlockOptions(const FilePathDesc& new_path_desc) { path_desc = new_path_desc; }
- CreateBlockOptions(const std::string& path) { path_desc.filepath = path; }
- // const std::string tablet_id;
- FilePathDesc path_desc;
-};
-
-// Block manager creation options.
-struct BlockManagerOptions {
- BlockManagerOptions() = default;
-
- // If false, metrics will not be produced.
- bool enable_metric = false;
-
- // Whether the block manager should only allow reading. Defaults to false.
- bool read_only = false;
-};
-
-// Utilities for Block lifecycle management. All methods are thread-safe.
-class BlockManager {
-public:
- // Lists the available block manager types.
- static std::vector<std::string> block_manager_types() { return {"file"}; }
-
- virtual ~BlockManager() {}
-
- // Opens an existing on-disk representation of this block manager and
- // checks it for inconsistencies. If found, and if the block manager was not
- // constructed in read-only mode, an attempt will be made to repair them.
- //
- // If 'report' is not nullptr, it will be populated with the results of the
- // check (and repair, if applicable); otherwise, the results of the check
- // will be logged and the presence of fatal inconsistencies will manifest as
- // a returned error.
- //
- // Returns an error if an on-disk representation does not exist or cannot be
- // opened.
- virtual Status open() = 0;
-
- // Creates a new block using the provided options and opens it for
- // writing. The block's ID will be generated.
- //
- // Does not guarantee the durability of the block; it must be closed to
- // ensure that it reaches disk.
- //
- // Does not modify 'block' on error.
- virtual Status create_block(const CreateBlockOptions& opts,
- std::unique_ptr<WritableBlock>* block) = 0;
-
- // Opens an existing block for reading.
- //
- // While it is safe to delete a block that has already been opened, it is
- // not safe to do so concurrently with the OpenBlock() call itself. In some
- // block manager implementations this may result in unusual behavior. For
- // example, OpenBlock() may succeed but subsequent ReadableBlock operations
- // may fail.
- //
- // Does not modify 'block' on error.
- virtual Status open_block(const FilePathDesc& path_desc,
- std::unique_ptr<ReadableBlock>* block) = 0;
-
- // Retrieves the IDs of all blocks under management by this block manager.
- // These include ReadableBlocks as well as WritableBlocks.
- //
- // Returned block IDs are not guaranteed to be in any particular order,
- // nor is the order guaranteed to be deterministic. Furthermore, if
- // concurrent operations are ongoing, some of the blocks themselves may not
- // even exist after the call.
- virtual Status get_all_block_ids(std::vector<BlockId>* block_ids) = 0;
-
- virtual Status delete_block(const FilePathDesc& path_desc, bool is_dir = false) = 0;
-
- virtual Status link_file(const FilePathDesc& src_path_desc,
- const FilePathDesc& dest_path_desc) = 0;
-
- static const std::string block_manager_preflush_control;
-};
-
-} // namespace fs
-} // namespace doris
diff --git a/be/src/olap/fs/block_manager_metrics.cpp b/be/src/olap/fs/block_manager_metrics.cpp
deleted file mode 100644
index 0eba2510d9..0000000000
--- a/be/src/olap/fs/block_manager_metrics.cpp
+++ /dev/null
@@ -1,41 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-#include "olap/fs/block_manager_metrics.h"
-
-#include "util/doris_metrics.h"
-
-namespace doris {
-namespace fs {
-namespace internal {
-
-BlockManagerMetrics::BlockManagerMetrics() {
- blocks_open_reading = DorisMetrics::instance()->blocks_open_reading;
- blocks_open_writing = DorisMetrics::instance()->blocks_open_writing;
-
- total_readable_blocks = DorisMetrics::instance()->readable_blocks_total;
- total_writable_blocks = DorisMetrics::instance()->writable_blocks_total;
- total_blocks_created = DorisMetrics::instance()->blocks_created_total;
- total_blocks_deleted = DorisMetrics::instance()->blocks_deleted_total;
- total_bytes_read = DorisMetrics::instance()->bytes_read_total;
- total_bytes_written = DorisMetrics::instance()->bytes_written_total;
- total_disk_sync = DorisMetrics::instance()->disk_sync_total;
-}
-
-} // namespace internal
-} // namespace fs
-} // namespace doris
diff --git a/be/src/olap/fs/block_manager_metrics.h b/be/src/olap/fs/block_manager_metrics.h
deleted file mode 100644
index 142df66c12..0000000000
--- a/be/src/olap/fs/block_manager_metrics.h
+++ /dev/null
@@ -1,54 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-#pragma once
-
-#include "util/metrics.h"
-
-namespace doris {
-namespace fs {
-namespace internal {
-
-// TODO(lingbin): we should add a registry mechanism to Metrics, so that for
-// different BlockManager we can register different metrics.
-struct BlockManagerMetrics {
- explicit BlockManagerMetrics();
-
- // Number of data blocks currently open for reading
- IntGauge* blocks_open_reading;
- // Number of data blocks currently open for writing
- IntGauge* blocks_open_writing;
-
- // Number of data blocks opened for writing since service start
- IntCounter* total_readable_blocks;
- // Number of data blocks opened for reading since service start
- IntCounter* total_writable_blocks;
- // Number of data blocks that were created since service start
- IntCounter* total_blocks_created;
- // Number of data blocks that were deleted since service start
- IntCounter* total_blocks_deleted;
- // Number of bytes of block data written since service start
- IntCounter* total_bytes_read;
- // Number of bytes of block data read since service start
- IntCounter* total_bytes_written;
- // Number of disk synchronizations of block data since service start
- IntCounter* total_disk_sync;
-};
-
-} // namespace internal
-} // namespace fs
-} // namespace doris
diff --git a/be/src/olap/fs/file_block_manager.cpp b/be/src/olap/fs/file_block_manager.cpp
deleted file mode 100644
index d66645fb25..0000000000
--- a/be/src/olap/fs/file_block_manager.cpp
+++ /dev/null
@@ -1,464 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-#include "olap/fs/file_block_manager.h"
-
-#include <atomic>
-#include <cstddef>
-#include <memory>
-#include <numeric>
-#include <string>
-#include <utility>
-
-#include "common/config.h"
-#include "common/logging.h"
-#include "env/env.h"
-#include "env/env_util.h"
-#include "gutil/strings/substitute.h"
-#include "olap/fs/block_id.h"
-#include "olap/fs/block_manager_metrics.h"
-#include "olap/storage_engine.h"
-#include "util/doris_metrics.h"
-#include "util/file_cache.h"
-#include "util/metrics.h"
-#include "util/path_util.h"
-#include "util/slice.h"
-
-using std::accumulate;
-using std::shared_ptr;
-using std::string;
-
-using strings::Substitute;
-
-namespace doris {
-namespace fs {
-
-namespace internal {
-
-////////////////////////////////////////////////////////////
-// FileWritableBlock
-////////////////////////////////////////////////////////////
-
-// A file-backed block that has been opened for writing.
-//
-// Contains a pointer to the block manager as well as file path
-// so that dirty metadata can be synced via BlockManager::SyncMetadata()
-// at Close() time. Embedding a file path (and not a simpler
-// BlockId) consumes more memory, but the number of outstanding
-// FileWritableBlock instances is expected to be low.
-class FileWritableBlock : public WritableBlock {
-public:
- FileWritableBlock(FileBlockManager* block_manager, const FilePathDesc& path_desc,
- shared_ptr<WritableFile> writer);
-
- virtual ~FileWritableBlock();
-
- virtual Status close() override;
-
- virtual Status abort() override;
-
- virtual BlockManager* block_manager() const override;
-
- virtual const BlockId& id() const override;
- virtual const FilePathDesc& path_desc() const override;
-
- virtual Status append(const Slice& data) override;
-
- virtual Status appendv(const Slice* data, size_t data_cnt) override;
-
- virtual Status finalize() override;
-
- virtual size_t bytes_appended() const override;
-
- virtual State state() const override;
-
- void handle_error(const Status& s) const;
-
- // Starts an asynchronous flush of dirty block data to disk.
- Status flush_data_async();
-
-private:
- DISALLOW_COPY_AND_ASSIGN(FileWritableBlock);
-
- enum SyncMode { SYNC, NO_SYNC };
-
- // Close the block, optionally synchronizing dirty data and metadata.
- Status _close(SyncMode mode);
-
- // Back pointer to the block manager.
- //
- // Should remain alive for the lifetime of this block.
- FileBlockManager* _block_manager;
-
- const BlockId _block_id;
- FilePathDesc _path_desc;
-
- // The underlying opened file backing this block.
- shared_ptr<WritableFile> _writer;
-
- State _state;
-
- // The number of bytes successfully appended to the block.
- size_t _bytes_appended;
-};
-
-FileWritableBlock::FileWritableBlock(FileBlockManager* block_manager, const FilePathDesc& path_desc,
- shared_ptr<WritableFile> writer)
- : _block_manager(block_manager),
- _path_desc(path_desc),
- _writer(writer),
- _state(CLEAN),
- _bytes_appended(0) {
- if (_block_manager->_metrics) {
- _block_manager->_metrics->blocks_open_writing->increment(1);
- _block_manager->_metrics->total_writable_blocks->increment(1);
- }
-}
-
-FileWritableBlock::~FileWritableBlock() {
- if (_state != CLOSED) {
- WARN_IF_ERROR(abort(),
- strings::Substitute("Failed to close block $0", _path_desc.filepath));
- }
-}
-
-Status FileWritableBlock::close() {
- return _close(SYNC);
-}
-
-Status FileWritableBlock::abort() {
- RETURN_IF_ERROR(_close(NO_SYNC));
- return _block_manager->delete_block(_path_desc);
-}
-
-BlockManager* FileWritableBlock::block_manager() const {
- return _block_manager;
-}
-
-const BlockId& FileWritableBlock::id() const {
- CHECK(false) << "Not support Block.id(). (TODO)";
- return _block_id;
-}
-
-const FilePathDesc& FileWritableBlock::path_desc() const {
- return _path_desc;
-}
-
-Status FileWritableBlock::append(const Slice& data) {
- return appendv(&data, 1);
-}
-
-Status FileWritableBlock::appendv(const Slice* data, size_t data_cnt) {
- DCHECK(_state == CLEAN || _state == DIRTY)
- << "path=" << _path_desc.filepath << " invalid state=" << _state;
- RETURN_IF_ERROR(_writer->appendv(data, data_cnt));
- _state = DIRTY;
-
- // Calculate the amount of data written
- size_t bytes_written =
- accumulate(data, data + data_cnt, static_cast<size_t>(0),
- [](size_t sum, const Slice& curr) { return sum + curr.size; });
- _bytes_appended += bytes_written;
- return Status::OK();
-}
-
-Status FileWritableBlock::flush_data_async() {
- VLOG_NOTICE << "Flushing block " << _path_desc.filepath;
- RETURN_IF_ERROR(_writer->flush(WritableFile::FLUSH_ASYNC));
- return Status::OK();
-}
-
-Status FileWritableBlock::finalize() {
- DCHECK(_state == CLEAN || _state == DIRTY || _state == FINALIZED)
- << "path=" << _path_desc.filepath << "Invalid state: " << _state;
-
- if (_state == FINALIZED) {
- return Status::OK();
- }
- VLOG_NOTICE << "Finalizing block " << _path_desc.filepath;
- if (_state == DIRTY && BlockManager::block_manager_preflush_control == "finalize") {
- flush_data_async();
- }
- _state = FINALIZED;
- return Status::OK();
-}
-
-size_t FileWritableBlock::bytes_appended() const {
- return _bytes_appended;
-}
-
-WritableBlock::State FileWritableBlock::state() const {
- return _state;
-}
-
-Status FileWritableBlock::_close(SyncMode mode) {
- if (_state == CLOSED) {
- return Status::OK();
- }
-
- Status sync;
- if (mode == SYNC && (_state == CLEAN || _state == DIRTY || _state == FINALIZED)) {
- // Safer to synchronize data first, then metadata.
- VLOG_NOTICE << "Syncing block " << _path_desc.filepath;
- if (_block_manager->_metrics) {
- _block_manager->_metrics->total_disk_sync->increment(1);
- }
- sync = _writer->sync();
- if (sync.ok()) {
- sync = _block_manager->_sync_metadata(_path_desc.filepath);
- }
- WARN_IF_ERROR(sync, strings::Substitute("Failed to sync when closing block $0",
- _path_desc.filepath));
- }
- Status close = _writer->close();
-
- _state = CLOSED;
- _writer.reset();
- if (_block_manager->_metrics) {
- _block_manager->_metrics->blocks_open_writing->increment(-1);
- _block_manager->_metrics->total_bytes_written->increment(_bytes_appended);
- _block_manager->_metrics->total_blocks_created->increment(1);
- }
-
- // Either Close() or Sync() could have run into an error.
- RETURN_IF_ERROR(close);
- RETURN_IF_ERROR(sync);
-
- // Prefer the result of Close() to that of Sync().
- return close.ok() ? close : sync;
-}
-
-////////////////////////////////////////////////////////////
-// FileReadableBlock
-////////////////////////////////////////////////////////////
-
-// A file-backed block that has been opened for reading.
-//
-// There may be millions of instances of FileReadableBlock outstanding, so
-// great care must be taken to reduce its size. To that end, it does _not_
-// embed a FileBlockLocation, using the simpler BlockId instead.
-class FileReadableBlock : public ReadableBlock {
-public:
- FileReadableBlock(FileBlockManager* block_manager, const FilePathDesc& path_desc,
- std::shared_ptr<OpenedFileHandle<RandomAccessFile>> file_handle);
-
- virtual ~FileReadableBlock();
-
- virtual Status close() override;
-
- virtual BlockManager* block_manager() const override;
-
- virtual const BlockId& id() const override;
- virtual const FilePathDesc& path_desc() const override;
-
- virtual Status size(uint64_t* sz) const override;
-
- virtual Status read(uint64_t offset, Slice result) const override;
-
- virtual Status readv(uint64_t offset, const Slice* results, size_t res_cnt) const override;
-
- void handle_error(const Status& s) const;
-
-private:
- // Back pointer to the owning block manager.
- FileBlockManager* _block_manager;
-
- // The block's identifier.
- const BlockId _block_id;
- const FilePathDesc _path_desc;
-
- // The underlying opened file backing this block.
- std::shared_ptr<OpenedFileHandle<RandomAccessFile>> _file_handle;
- // the backing file of OpenedFileHandle, not owned.
- RandomAccessFile* _file;
-
- // Whether or not this block has been closed. Close() is thread-safe, so
- // this must be an atomic primitive.
- std::atomic_bool _closed;
-
- DISALLOW_COPY_AND_ASSIGN(FileReadableBlock);
-};
-
-FileReadableBlock::FileReadableBlock(
- FileBlockManager* block_manager, const FilePathDesc& path_desc,
- std::shared_ptr<OpenedFileHandle<RandomAccessFile>> file_handle)
- : _block_manager(block_manager),
- _path_desc(path_desc),
- _file_handle(std::move(file_handle)),
- _closed(false) {
- if (_block_manager->_metrics) {
- _block_manager->_metrics->blocks_open_reading->increment(1);
- _block_manager->_metrics->total_readable_blocks->increment(1);
- }
- _file = _file_handle->file();
-}
-
-FileReadableBlock::~FileReadableBlock() {
- WARN_IF_ERROR(close(), strings::Substitute("Failed to close block $0", _path_desc.filepath));
-}
-
-Status FileReadableBlock::close() {
- bool expected = false;
- if (_closed.compare_exchange_strong(expected, true)) {
- _file_handle.reset();
- if (_block_manager->_metrics) {
- _block_manager->_metrics->blocks_open_reading->increment(-1);
- }
- }
-
- return Status::OK();
-}
-
-BlockManager* FileReadableBlock::block_manager() const {
- return _block_manager;
-}
-
-const BlockId& FileReadableBlock::id() const {
- CHECK(false) << "Not support Block.id(). (TODO)";
- return _block_id;
-}
-
-const FilePathDesc& FileReadableBlock::path_desc() const {
- return _path_desc;
-}
-
-Status FileReadableBlock::size(uint64_t* sz) const {
- DCHECK(!_closed.load());
-
- RETURN_IF_ERROR(_file->size(sz));
- return Status::OK();
-}
-
-Status FileReadableBlock::read(uint64_t offset, Slice result) const {
- return readv(offset, &result, 1);
-}
-
-Status FileReadableBlock::readv(uint64_t offset, const Slice* results, size_t res_cnt) const {
- DCHECK(!_closed.load());
-
- RETURN_IF_ERROR(_file->readv_at(offset, results, res_cnt));
-
- if (_block_manager->_metrics) {
- // Calculate the read amount of data
- size_t bytes_read = accumulate(results, results + res_cnt, static_cast<size_t>(0),
- [&](int sum, const Slice& curr) { return sum + curr.size; });
- _block_manager->_metrics->total_bytes_read->increment(bytes_read);
- }
-
- return Status::OK();
-}
-
-} // namespace internal
-
-////////////////////////////////////////////////////////////
-// FileBlockManager
-////////////////////////////////////////////////////////////
-
-FileBlockManager::FileBlockManager(Env* env, BlockManagerOptions opts)
- : _env(DCHECK_NOTNULL(env)), _opts(std::move(opts)) {
- if (_opts.enable_metric) {
- _metrics.reset(new internal::BlockManagerMetrics());
- }
-
-#ifdef BE_TEST
- _file_cache.reset(new FileCache<RandomAccessFile>("Readable_file_cache",
- config::file_descriptor_cache_capacity));
-#else
- _file_cache.reset(new FileCache<RandomAccessFile>("Readable_file_cache",
- StorageEngine::instance()->file_cache()));
-#endif
-}
-
-FileBlockManager::~FileBlockManager() {}
-
-Status FileBlockManager::open() {
- // TODO(lingbin)
- return Status::NotSupported("to be implemented. (TODO)");
-}
-
-Status FileBlockManager::create_block(const CreateBlockOptions& opts,
- std::unique_ptr<WritableBlock>* block) {
- CHECK(!_opts.read_only);
-
- shared_ptr<WritableFile> writer;
- WritableFileOptions wr_opts;
- wr_opts.mode = Env::MUST_CREATE;
- RETURN_IF_ERROR(env_util::open_file_for_write(wr_opts, _env, opts.path_desc.filepath, &writer));
-
- VLOG_CRITICAL << "Creating new block at " << opts.path_desc.filepath;
- block->reset(new internal::FileWritableBlock(this, opts.path_desc, writer));
- return Status::OK();
-}
-
-Status FileBlockManager::open_block(const FilePathDesc& path_desc,
- std::unique_ptr<ReadableBlock>* block) {
- VLOG_CRITICAL << "Opening block with path at " << path_desc.filepath;
- std::shared_ptr<OpenedFileHandle<RandomAccessFile>> file_handle(
- new OpenedFileHandle<RandomAccessFile>());
- bool found = _file_cache->lookup(path_desc.filepath, file_handle.get());
- if (!found) {
- std::unique_ptr<RandomAccessFile> file;
- RETURN_IF_ERROR(_env->new_random_access_file(path_desc.filepath, &file));
- _file_cache->insert(path_desc.filepath, file.release(), file_handle.get());
- }
-
- block->reset(new internal::FileReadableBlock(this, path_desc, file_handle));
- return Status::OK();
-}
-
-// TODO(lingbin): We should do something to ensure that deletion can only be done
-// after the last reader or writer has finished
-Status FileBlockManager::delete_block(const FilePathDesc& path_desc, bool is_dir) {
- CHECK(!_opts.read_only);
-
- RETURN_IF_ERROR(_env->delete_file(path_desc.filepath));
-
- // We don't bother fsyncing the parent directory as there's nothing to be
- // gained by ensuring that the deletion is made durable. Even if we did
- // fsync it, we'd need to account for garbage at startup time (in the
- // event that we crashed just before the fsync), and with such accounting
- // fsync-as-you-delete is unnecessary.
- //
- // The block's directory hierarchy is left behind. We could prune it if
- // it's empty, but that's racy and leaving it isn't much overhead.
-
- return Status::OK();
-}
-
-Status FileBlockManager::link_file(const FilePathDesc& src_path_desc,
- const FilePathDesc& dest_path_desc) {
- if (link(src_path_desc.filepath.c_str(), dest_path_desc.filepath.c_str()) != 0) {
- LOG(WARNING) << "fail to create hard link. from=" << src_path_desc.filepath << ", "
- << "to=" << dest_path_desc.filepath << ", "
- << "errno=" << Errno::no();
- return Status::InternalError("link file failed");
- }
- return Status::OK();
-}
-
-// TODO(lingbin): only one level is enough?
-Status FileBlockManager::_sync_metadata(const FilePathDesc& path_desc) {
- string dir = path_util::dir_name(path_desc.filepath);
- if (_metrics) {
- _metrics->total_disk_sync->increment(1);
- }
- RETURN_IF_ERROR(_env->sync_dir(dir));
- return Status::OK();
-}
-
-} // namespace fs
-} // namespace doris
diff --git a/be/src/olap/fs/file_block_manager.h b/be/src/olap/fs/file_block_manager.h
deleted file mode 100644
index faf053e100..0000000000
--- a/be/src/olap/fs/file_block_manager.h
+++ /dev/null
@@ -1,122 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-#pragma once
-
-#include <cstdint>
-#include <memory>
-#include <string>
-#include <unordered_set>
-#include <vector>
-
-#include "common/status.h"
-#include "olap/fs/block_manager.h"
-#include "util/file_cache.h"
-
-namespace doris {
-
-class BlockId;
-class Env;
-class RandomAccessFile;
-
-namespace fs {
-namespace internal {
-
-class FileReadableBlock;
-class FileWritableBlock;
-struct BlockManagerMetrics;
-
-} // namespace internal
-
-// TODO(lingbin): When we create a batch of blocks(blocks are created one by one),
-// eg, when we do a compaction, multiple files will be generated in sequence.
-// For this scenario, we should have a mechanism that can give the Operating System
-// more opportunities to perform IO merge.
-
-// A file-backed block storage implementation.
-//
-// This is a naive block implementation which maps each block to its own
-// file on disk.
-//
-// The block manager can take advantage of multiple filesystem paths.
-//
-// When creating blocks, the block manager will place blocks based on the
-// provided CreateBlockOptions.
-
-// The file-backed block manager.
-class FileBlockManager : public BlockManager {
-public:
- // Note: all objects passed as pointers should remain alive for the lifetime
- // of the block manager.
- FileBlockManager(Env* env, BlockManagerOptions opts);
- virtual ~FileBlockManager();
-
- Status open() override;
-
- Status create_block(const CreateBlockOptions& opts,
- std::unique_ptr<WritableBlock>* block) override;
- Status open_block(const FilePathDesc& path_desc,
- std::unique_ptr<ReadableBlock>* block) override;
-
- Status get_all_block_ids(std::vector<BlockId>* block_ids) override {
- // TODO(lingbin): to be implemented after we assign each block an id
- return Status::OK();
- };
-
- // Deletes an existing block, allowing its space to be reclaimed by the
- // filesystem. The change is immediately made durable.
- //
- // Blocks may be deleted while they are open for reading or writing;
- // the actual deletion will take place after the last open reader or
- // writer is closed.
- // is_dir: whether this path is a dir or file. if it is true, delete all files in this path
- Status delete_block(const FilePathDesc& path_desc, bool is_dir = false) override;
-
- Status link_file(const FilePathDesc& src_path_desc,
- const FilePathDesc& dest_path_desc) override;
-
-private:
- friend class internal::FileReadableBlock;
- friend class internal::FileWritableBlock;
-
- // Synchronizes the metadata for a block with the given location.
- Status _sync_metadata(const FilePathDesc& path_desc);
-
- Env* env() const { return _env; }
-
- // For manipulating files.
- Env* _env;
-
- // The options that the FileBlockManager was created with.
- const BlockManagerOptions _opts;
-
- // Tracks the block directories which are dirty from block creation. This
- // lets us perform some simple coalescing when synchronizing metadata.
- std::unordered_set<std::string> _dirty_dirs;
-
- // Metric container for the block manager.
- // May be null if instantiated without metrics.
- std::unique_ptr<internal::BlockManagerMetrics> _metrics;
-
- // DISALLOW_COPY_AND_ASSIGN(FileBlockManager);
-
- // Underlying cache instance. Caches opened files.
- std::unique_ptr<FileCache<RandomAccessFile>> _file_cache;
-};
-
-} // namespace fs
-} // namespace doris
diff --git a/be/src/olap/fs/fs_util.cpp b/be/src/olap/fs/fs_util.cpp
deleted file mode 100644
index 221c561fc4..0000000000
--- a/be/src/olap/fs/fs_util.cpp
+++ /dev/null
@@ -1,102 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-#include "olap/fs/fs_util.h"
-
-#include "common/status.h"
-#include "env/env.h"
-#include "olap/fs/file_block_manager.h"
-#include "olap/fs/remote_block_manager.h"
-#include "olap/storage_engine.h"
-#include "runtime/exec_env.h"
-#include "util/storage_backend.h"
-#include "util/storage_backend_mgr.h"
-
-namespace doris {
-namespace fs {
-namespace fs_util {
-
-BlockManager* block_manager(const FilePathDesc& path_desc) {
- fs::BlockManagerOptions bm_opts;
- bm_opts.read_only = false;
- if (path_desc.is_remote()) {
- bm_opts.read_only = true;
- std::shared_ptr<StorageBackend> storage_backend =
- StorageBackendMgr::instance()->get_storage_backend(path_desc.storage_name);
- if (storage_backend == nullptr) {
- LOG(WARNING) << "storage_backend is invalid: " << path_desc.debug_string();
- return nullptr;
- }
- static RemoteBlockManager remote_block_mgr(Env::Default(), storage_backend, bm_opts);
- return &remote_block_mgr;
- } else {
- static FileBlockManager block_mgr(Env::Default(), std::move(bm_opts));
- return &block_mgr;
- }
-}
-
-StorageMediumPB get_storage_medium_pb(TStorageMedium::type t_storage_medium) {
- switch (t_storage_medium) {
- case TStorageMedium::S3:
- return StorageMediumPB::S3;
- case TStorageMedium::SSD:
- return StorageMediumPB::SSD;
- case TStorageMedium::HDD:
- default:
- return StorageMediumPB::HDD;
- }
-}
-
-TStorageMedium::type get_t_storage_medium(StorageMediumPB storage_medium) {
- switch (storage_medium) {
- case StorageMediumPB::S3:
- return TStorageMedium::S3;
- case StorageMediumPB::SSD:
- return TStorageMedium::SSD;
- case StorageMediumPB::HDD:
- default:
- return TStorageMedium::HDD;
- }
-}
-
-StorageParamPB get_storage_param_pb(const TStorageParam& t_storage_param) {
- StorageParamPB storage_param;
- storage_param.set_storage_medium(get_storage_medium_pb(t_storage_param.storage_medium));
- storage_param.set_storage_name(t_storage_param.storage_name);
- switch (t_storage_param.storage_medium) {
- case TStorageMedium::S3: {
- S3StorageParamPB* s3_param = storage_param.mutable_s3_storage_param();
- s3_param->set_s3_endpoint(t_storage_param.s3_storage_param.s3_endpoint);
- s3_param->set_s3_region(t_storage_param.s3_storage_param.s3_region);
- s3_param->set_s3_ak(t_storage_param.s3_storage_param.s3_ak);
- s3_param->set_s3_sk(t_storage_param.s3_storage_param.s3_sk);
- s3_param->set_s3_max_conn(t_storage_param.s3_storage_param.s3_max_conn);
- s3_param->set_s3_request_timeout_ms(t_storage_param.s3_storage_param.s3_request_timeout_ms);
- s3_param->set_s3_conn_timeout_ms(t_storage_param.s3_storage_param.s3_conn_timeout_ms);
- s3_param->set_root_path(t_storage_param.s3_storage_param.root_path);
- return storage_param;
- }
- case TStorageMedium::SSD:
- case TStorageMedium::HDD:
- default:
- return storage_param;
- }
-}
-
-} // namespace fs_util
-} // namespace fs
-} // namespace doris
diff --git a/be/src/olap/fs/fs_util.h b/be/src/olap/fs/fs_util.h
deleted file mode 100644
index 7864037791..0000000000
--- a/be/src/olap/fs/fs_util.h
+++ /dev/null
@@ -1,42 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-#pragma once
-
-#include "common/status.h"
-#include "gen_cpp/AgentService_types.h"
-#include "gen_cpp/Types_types.h"
-#include "gen_cpp/olap_file.pb.h"
-#include "olap/fs/block_manager.h"
-
-namespace doris {
-namespace fs {
-namespace fs_util {
-
-// Each BlockManager type may have different params, so we provide a separate
-// method for each type(instead of a factory method which require same params)
-BlockManager* block_manager(const FilePathDesc& path_desc);
-
-StorageMediumPB get_storage_medium_pb(TStorageMedium::type t_storage_medium);
-
-TStorageMedium::type get_t_storage_medium(StorageMediumPB storage_medium);
-
-StorageParamPB get_storage_param_pb(const TStorageParam& t_storage_param);
-
-} // namespace fs_util
-} // namespace fs
-} // namespace doris
diff --git a/be/src/olap/fs/remote_block_manager.cpp b/be/src/olap/fs/remote_block_manager.cpp
deleted file mode 100644
index 9f9042551d..0000000000
--- a/be/src/olap/fs/remote_block_manager.cpp
+++ /dev/null
@@ -1,345 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-#include "olap/fs/remote_block_manager.h"
-
-#include <atomic>
-#include <cstddef>
-#include <memory>
-#include <numeric>
-#include <sstream>
-#include <string>
-#include <utility>
-
-#include "common/config.h"
-#include "common/logging.h"
-#include "env/env.h"
-#include "env/env_posix.h"
-#include "env/env_util.h"
-#include "gutil/strings/substitute.h"
-#include "olap/fs/block_id.h"
-#include "util/storage_backend.h"
-
-using std::shared_ptr;
-using std::string;
-
-using strings::Substitute;
-
-namespace doris {
-namespace fs {
-
-namespace internal {
-
-////////////////////////////////////////////////////////////
-// RemoteWritableBlock
-////////////////////////////////////////////////////////////
-
-// A remote-backed block that has been opened for writing.
-//
-// Contains a pointer to the block manager as well as file path
-// so that dirty metadata can be synced via BlockManager::SyncMetadata()
-// at Close() time. Embedding a file path (and not a simpler
-// BlockId) consumes more memory, but the number of outstanding
-// RemoteWritableBlock instances is expected to be low.
-class RemoteWritableBlock : public WritableBlock {
-public:
- RemoteWritableBlock(RemoteBlockManager* block_manager, const FilePathDesc& path_desc,
- shared_ptr<WritableFile> writer);
-
- virtual ~RemoteWritableBlock();
-
- virtual Status close() override;
-
- virtual Status abort() override;
-
- virtual BlockManager* block_manager() const override;
-
- virtual const BlockId& id() const override;
- virtual const FilePathDesc& path_desc() const override;
-
- virtual Status append(const Slice& data) override;
-
- virtual Status appendv(const Slice* data, size_t data_cnt) override;
-
- virtual Status finalize() override;
-
- virtual size_t bytes_appended() const override;
-
- virtual State state() const override;
-
- void handle_error(const Status& s) const;
-
- // Starts an asynchronous flush of dirty block data to disk.
- Status flush_data_async();
-
-private:
- DISALLOW_COPY_AND_ASSIGN(RemoteWritableBlock);
-
- enum SyncMode { SYNC, NO_SYNC };
-
- // Close the block, optionally synchronizing dirty data and metadata.
- Status _close(SyncMode mode);
-
- // Back pointer to the block manager.
- //
- // Should remain alive for the lifetime of this block.
- RemoteBlockManager* _block_manager;
-
- const BlockId _block_id;
- FilePathDesc _path_desc;
-
- // The underlying opened file backing this block.
- shared_ptr<WritableFile> _local_writer;
-
- State _state;
-
- // The number of bytes successfully appended to the block.
- size_t _bytes_appended;
-};
-
-RemoteWritableBlock::RemoteWritableBlock(RemoteBlockManager* block_manager,
- const FilePathDesc& path_desc,
- shared_ptr<WritableFile> local_writer)
- : _block_manager(block_manager),
- _path_desc(path_desc),
- _local_writer(std::move(local_writer)) {}
-
-RemoteWritableBlock::~RemoteWritableBlock() {}
-
-Status RemoteWritableBlock::close() {
- return Status::IOError("invalid function");
-}
-
-Status RemoteWritableBlock::abort() {
- return Status::IOError("invalid function");
-}
-
-BlockManager* RemoteWritableBlock::block_manager() const {
- return _block_manager;
-}
-
-const BlockId& RemoteWritableBlock::id() const {
- CHECK(false) << "Not support Block.id(). (TODO)";
- return _block_id;
-}
-
-const FilePathDesc& RemoteWritableBlock::path_desc() const {
- return _path_desc;
-}
-
-Status RemoteWritableBlock::append(const Slice& data) {
- return appendv(&data, 1);
-}
-
-Status RemoteWritableBlock::appendv(const Slice* data, size_t data_cnt) {
- return Status::IOError("invalid function");
-}
-
-Status RemoteWritableBlock::flush_data_async() {
- return Status::IOError("invalid function");
-}
-
-Status RemoteWritableBlock::finalize() {
- return Status::IOError("invalid function");
-}
-
-size_t RemoteWritableBlock::bytes_appended() const {
- return _bytes_appended;
-}
-
-WritableBlock::State RemoteWritableBlock::state() const {
- return _state;
-}
-
-Status RemoteWritableBlock::_close(SyncMode mode) {
- return Status::IOError("invalid function");
-}
-
-////////////////////////////////////////////////////////////
-// RemoteReadableBlock
-////////////////////////////////////////////////////////////
-
-// A file-backed block that has been opened for reading.
-//
-// There may be millions of instances of RemoteReadableBlock outstanding, so
-// great care must be taken to reduce its size. To that end, it does _not_
-// embed a FileBlockLocation, using the simpler BlockId instead.
-class RemoteReadableBlock : public ReadableBlock {
-public:
- RemoteReadableBlock(RemoteBlockManager* block_manager, const FilePathDesc& path_desc,
- std::shared_ptr<OpenedFileHandle<RandomAccessFile>> file_handle);
-
- virtual ~RemoteReadableBlock();
-
- virtual Status close() override;
-
- virtual BlockManager* block_manager() const override;
-
- virtual const BlockId& id() const override;
- virtual const FilePathDesc& path_desc() const override;
-
- virtual Status size(uint64_t* sz) const override;
-
- virtual Status read(uint64_t offset, Slice result) const override;
-
- virtual Status readv(uint64_t offset, const Slice* results, size_t res_cnt) const override;
-
- void handle_error(const Status& s) const;
-
-private:
- // Back pointer to the owning block manager.
- RemoteBlockManager* _block_manager;
-
- // The block's identifier.
- const BlockId _block_id;
- const FilePathDesc _path_desc;
-
- // The underlying opened file backing this block.
- std::shared_ptr<OpenedFileHandle<RandomAccessFile>> _file_handle;
- // the backing file of OpenedFileHandle, not owned.
- RandomAccessFile* _file = nullptr;
-
- // Whether or not this block has been closed. Close() is thread-safe, so
- // this must be an atomic primitive.
- std::atomic_bool _closed;
-
- DISALLOW_COPY_AND_ASSIGN(RemoteReadableBlock);
-};
-
-RemoteReadableBlock::RemoteReadableBlock(
- RemoteBlockManager* block_manager, const FilePathDesc& path_desc,
- std::shared_ptr<OpenedFileHandle<RandomAccessFile>> file_handle) {}
-
-RemoteReadableBlock::~RemoteReadableBlock() {}
-
-Status RemoteReadableBlock::close() {
- return Status::IOError("invalid function");
-}
-
-BlockManager* RemoteReadableBlock::block_manager() const {
- return _block_manager;
-}
-
-const BlockId& RemoteReadableBlock::id() const {
- CHECK(false) << "Not support Block.id(). (TODO)";
- return _block_id;
-}
-
-const FilePathDesc& RemoteReadableBlock::path_desc() const {
- return _path_desc;
-}
-
-Status RemoteReadableBlock::size(uint64_t* sz) const {
- return Status::IOError("invalid function");
-}
-
-Status RemoteReadableBlock::read(uint64_t offset, Slice result) const {
- return readv(offset, &result, 1);
-}
-
-Status RemoteReadableBlock::readv(uint64_t offset, const Slice* results, size_t res_cnt) const {
- return Status::IOError("invalid function");
-}
-
-} // namespace internal
-
-////////////////////////////////////////////////////////////
-// RemoteBlockManager
-////////////////////////////////////////////////////////////
-
-RemoteBlockManager::RemoteBlockManager(Env* local_env,
- std::shared_ptr<StorageBackend> storage_backend,
- const BlockManagerOptions& opts)
- : _local_env(local_env), _storage_backend(storage_backend), _opts(opts) {}
-
-RemoteBlockManager::~RemoteBlockManager() {}
-
-Status RemoteBlockManager::open() {
- return Status::NotSupported("to be implemented. (TODO)");
-}
-
-Status RemoteBlockManager::create_block(const CreateBlockOptions& opts,
- std::unique_ptr<WritableBlock>* block) {
- if (_opts.read_only) {
- return Status::NotSupported("create_block failed. remote block is readonly: {}",
- opts.path_desc.debug_string());
- }
-
- shared_ptr<WritableFile> local_writer;
- WritableFileOptions wr_opts;
- wr_opts.mode = Env::MUST_CREATE;
- RETURN_IF_ERROR(env_util::open_file_for_write(wr_opts, Env::Default(), opts.path_desc.filepath,
- &local_writer));
-
- VLOG_CRITICAL << "Creating new remote block. local: " << opts.path_desc.filepath
- << ", remote: " << opts.path_desc.remote_path;
- block->reset(new internal::RemoteWritableBlock(this, opts.path_desc, local_writer));
- return Status::OK();
-}
-
-Status RemoteBlockManager::open_block(const FilePathDesc& path_desc,
- std::unique_ptr<ReadableBlock>* block) {
- VLOG_CRITICAL << "Opening remote block. local: " << path_desc.filepath
- << ", remote: " << path_desc.remote_path;
- std::shared_ptr<OpenedFileHandle<RandomAccessFile>> file_handle;
- if (Env::Default()->path_exists(path_desc.filepath).ok()) {
- file_handle.reset(new OpenedFileHandle<RandomAccessFile>());
- bool found = _file_cache->lookup(path_desc.filepath, file_handle.get());
- if (!found) {
- std::unique_ptr<RandomAccessFile> file;
- RETURN_IF_ERROR(Env::Default()->new_random_access_file(path_desc.filepath, &file));
- _file_cache->insert(path_desc.filepath, file.release(), file_handle.get());
- }
- }
-
- block->reset(new internal::RemoteReadableBlock(this, path_desc, file_handle));
- return Status::OK();
-}
-
-Status RemoteBlockManager::delete_block(const FilePathDesc& path_desc, bool is_dir) {
- if (is_dir) {
- if (_local_env->path_exists(path_desc.filepath).ok()) {
- RETURN_IF_ERROR(_local_env->delete_dir(path_desc.filepath));
- }
- if (!path_desc.remote_path.empty()) {
- RETURN_IF_ERROR(_storage_backend->rmdir(path_desc.remote_path));
- }
- } else {
- if (_local_env->path_exists(path_desc.filepath).ok()) {
- RETURN_IF_ERROR(_local_env->delete_file(path_desc.filepath));
- }
- if (_storage_backend->exist(path_desc.remote_path).ok()) {
- RETURN_IF_ERROR(_storage_backend->rm(path_desc.remote_path));
- }
- }
- return Status::OK();
-}
-
-Status RemoteBlockManager::link_file(const FilePathDesc& src_path_desc,
- const FilePathDesc& dest_path_desc) {
- if (_local_env->path_exists(src_path_desc.filepath).ok()) {
- RETURN_IF_ERROR(_local_env->link_file(src_path_desc.filepath, dest_path_desc.filepath));
- }
- if (_storage_backend->exist(src_path_desc.remote_path).ok()) {
- RETURN_IF_ERROR(
- _storage_backend->copy(src_path_desc.remote_path, dest_path_desc.remote_path));
- }
- return Status::OK();
-}
-
-} // namespace fs
-} // namespace doris
diff --git a/be/src/olap/fs/remote_block_manager.h b/be/src/olap/fs/remote_block_manager.h
deleted file mode 100644
index 3a35a4a84c..0000000000
--- a/be/src/olap/fs/remote_block_manager.h
+++ /dev/null
@@ -1,73 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-#pragma once
-
-#include <cstdint>
-#include <memory>
-#include <string>
-#include <unordered_set>
-#include <vector>
-
-#include "common/status.h"
-#include "olap/fs/block_manager.h"
-#include "util/file_cache.h"
-
-namespace doris {
-
-class BlockId;
-class Env;
-class StorageBackend;
-
-namespace fs {
-
-// The remote-backed block manager.
-class RemoteBlockManager : public BlockManager {
-public:
- // Note: all objects passed as pointers should remain alive for the lifetime
- // of the block manager.
- RemoteBlockManager(Env* local_env, std::shared_ptr<StorageBackend> storage_backend,
- const BlockManagerOptions& opts);
- virtual ~RemoteBlockManager();
-
- Status open() override;
-
- Status create_block(const CreateBlockOptions& opts,
- std::unique_ptr<WritableBlock>* block) override;
- Status open_block(const FilePathDesc& path_desc,
- std::unique_ptr<ReadableBlock>* block) override;
-
- Status get_all_block_ids(std::vector<BlockId>* block_ids) override {
- // TODO(lingbin): to be implemented after we assign each block an id
- return Status::OK();
- };
-
- Status delete_block(const FilePathDesc& path_desc, bool is_dir = false) override;
-
- Status link_file(const FilePathDesc& src_path_desc,
- const FilePathDesc& dest_path_desc) override;
-
-private:
- Env* _local_env;
- std::shared_ptr<StorageBackend> _storage_backend;
- const BlockManagerOptions _opts;
- // Underlying cache instance. Caches opened files.
- std::unique_ptr<FileCache<RandomAccessFile>> _file_cache;
-};
-
-} // namespace fs
-} // namespace doris
\ No newline at end of file
diff --git a/be/src/olap/rowset/beta_rowset_writer.cpp b/be/src/olap/rowset/beta_rowset_writer.cpp
index d9ea4f16eb..0a8d84ae31 100644
--- a/be/src/olap/rowset/beta_rowset_writer.cpp
+++ b/be/src/olap/rowset/beta_rowset_writer.cpp
@@ -24,7 +24,6 @@
#include "env/env.h"
#include "gutil/strings/substitute.h"
#include "io/fs/file_writer.h"
-#include "olap/fs/fs_util.h"
#include "olap/memtable.h"
#include "olap/olap_define.h"
#include "olap/row.h" // ContiguousRow
diff --git a/be/src/olap/rowset/segment_v2/indexed_column_reader.h b/be/src/olap/rowset/segment_v2/indexed_column_reader.h
index 1346aecbdf..8ce9f63d3b 100644
--- a/be/src/olap/rowset/segment_v2/indexed_column_reader.h
+++ b/be/src/olap/rowset/segment_v2/indexed_column_reader.h
@@ -26,7 +26,6 @@
#include "io/fs/file_system.h"
#include "io/fs/file_system_map.h"
#include "olap/column_block.h"
-#include "olap/fs/fs_util.h"
#include "olap/rowset/segment_v2/common.h"
#include "olap/rowset/segment_v2/index_page.h"
#include "olap/rowset/segment_v2/page_handle.h"
diff --git a/be/src/olap/rowset/segment_v2/ordinal_page_index.cpp b/be/src/olap/rowset/segment_v2/ordinal_page_index.cpp
index 06f289f8e0..6b99dc3aa8 100644
--- a/be/src/olap/rowset/segment_v2/ordinal_page_index.cpp
+++ b/be/src/olap/rowset/segment_v2/ordinal_page_index.cpp
@@ -22,7 +22,6 @@
#include "io/fs/file_system_map.h"
#include "io/fs/file_writer.h"
#include "io/fs/local_file_system.h"
-#include "olap/fs/fs_util.h"
#include "olap/key_coder.h"
#include "olap/rowset/segment_v2/page_handle.h"
#include "olap/rowset/segment_v2/page_io.h"
diff --git a/be/src/olap/rowset/segment_v2/segment.cpp b/be/src/olap/rowset/segment_v2/segment.cpp
index 5452d1c35e..dbd970644e 100644
--- a/be/src/olap/rowset/segment_v2/segment.cpp
+++ b/be/src/olap/rowset/segment_v2/segment.cpp
@@ -20,10 +20,7 @@
#include <memory>
#include <utility>
-#include "common/logging.h" // LOG
-#include "gutil/strings/substitute.h"
-#include "io/fs/file_reader.h"
-#include "olap/fs/fs_util.h"
+#include "common/logging.h" // LOG
#include "olap/rowset/segment_v2/column_reader.h" // ColumnReader
#include "olap/rowset/segment_v2/empty_segment_iterator.h"
#include "olap/rowset/segment_v2/page_io.h"
@@ -37,8 +34,6 @@
namespace doris {
namespace segment_v2 {
-using strings::Substitute;
-
Status Segment::open(io::FileSystem* fs, const std::string& path, uint32_t segment_id,
const TabletSchema* tablet_schema, std::shared_ptr<Segment>* output) {
std::shared_ptr<Segment> segment(new Segment(segment_id, tablet_schema));
diff --git a/be/src/olap/rowset/segment_v2/segment_iterator.cpp b/be/src/olap/rowset/segment_v2/segment_iterator.cpp
index ed399926f9..173abd2e27 100644
--- a/be/src/olap/rowset/segment_v2/segment_iterator.cpp
+++ b/be/src/olap/rowset/segment_v2/segment_iterator.cpp
@@ -24,7 +24,6 @@
#include "common/status.h"
#include "gutil/strings/substitute.h"
#include "olap/column_predicate.h"
-#include "olap/fs/fs_util.h"
#include "olap/olap_common.h"
#include "olap/row_block2.h"
#include "olap/row_cursor.h"
diff --git a/be/src/olap/storage_engine.cpp b/be/src/olap/storage_engine.cpp
index 596ea48f0a..e06d788f9b 100644
--- a/be/src/olap/storage_engine.cpp
+++ b/be/src/olap/storage_engine.cpp
@@ -41,7 +41,6 @@
#include "olap/base_compaction.h"
#include "olap/cumulative_compaction.h"
#include "olap/data_dir.h"
-#include "olap/fs/file_block_manager.h"
#include "olap/lru_cache.h"
#include "olap/memtable_flush_executor.h"
#include "olap/push_handler.h"
@@ -58,8 +57,6 @@
#include "util/file_utils.h"
#include "util/pretty_printer.h"
#include "util/scoped_cleanup.h"
-#include "util/storage_backend.h"
-#include "util/storage_backend_mgr.h"
#include "util/time.h"
#include "util/trace.h"
diff --git a/be/src/olap/storage_engine.h b/be/src/olap/storage_engine.h
index adf99ed156..6ab0d5a825 100644
--- a/be/src/olap/storage_engine.h
+++ b/be/src/olap/storage_engine.h
@@ -36,7 +36,6 @@
#include "gen_cpp/MasterService_types.h"
#include "gutil/ref_counted.h"
#include "olap/compaction_permit_limiter.h"
-#include "olap/fs/fs_util.h"
#include "olap/olap_common.h"
#include "olap/olap_define.h"
#include "olap/olap_meta.h"
diff --git a/be/src/olap/tablet.cpp b/be/src/olap/tablet.cpp
index ef04985989..ec2fa0050f 100644
--- a/be/src/olap/tablet.cpp
+++ b/be/src/olap/tablet.cpp
@@ -70,14 +70,13 @@ DEFINE_COUNTER_METRIC_PROTOTYPE_2ARG(flush_bytes, MetricUnit::BYTES);
DEFINE_COUNTER_METRIC_PROTOTYPE_2ARG(flush_count, MetricUnit::OPERATIONS);
TabletSharedPtr Tablet::create_tablet_from_meta(TabletMetaSharedPtr tablet_meta,
- const StorageParamPB& storage_param,
DataDir* data_dir) {
- return std::make_shared<Tablet>(tablet_meta, storage_param, data_dir);
+ return std::make_shared<Tablet>(tablet_meta, data_dir);
}
-Tablet::Tablet(TabletMetaSharedPtr tablet_meta, const StorageParamPB& storage_param,
- DataDir* data_dir, const std::string& cumulative_compaction_type)
- : BaseTablet(tablet_meta, storage_param, data_dir),
+Tablet::Tablet(TabletMetaSharedPtr tablet_meta, DataDir* data_dir,
+ const std::string& cumulative_compaction_type)
+ : BaseTablet(tablet_meta, data_dir),
_is_bad(false),
_last_cumu_compaction_failure_millis(0),
_last_base_compaction_failure_millis(0),
diff --git a/be/src/olap/tablet.h b/be/src/olap/tablet.h
index c6ae64fab6..23aaeaed55 100644
--- a/be/src/olap/tablet.h
+++ b/be/src/olap/tablet.h
@@ -55,10 +55,9 @@ using TabletSharedPtr = std::shared_ptr<Tablet>;
class Tablet : public BaseTablet {
public:
static TabletSharedPtr create_tablet_from_meta(TabletMetaSharedPtr tablet_meta,
- const StorageParamPB& storage_param,
DataDir* data_dir = nullptr);
- Tablet(TabletMetaSharedPtr tablet_meta, const StorageParamPB& storage_param, DataDir* data_dir,
+ Tablet(TabletMetaSharedPtr tablet_meta, DataDir* data_dir,
const std::string& cumulative_compaction_type = "");
Status init();
diff --git a/be/src/olap/tablet_manager.cpp b/be/src/olap/tablet_manager.cpp
index f61b0cc06a..a081c899c5 100644
--- a/be/src/olap/tablet_manager.cpp
+++ b/be/src/olap/tablet_manager.cpp
@@ -57,7 +57,6 @@
#include "util/path_util.h"
#include "util/pretty_printer.h"
#include "util/scoped_cleanup.h"
-#include "util/storage_backend_mgr.h"
#include "util/time.h"
#include "util/trace.h"
@@ -420,16 +419,7 @@ TabletSharedPtr TabletManager::_create_tablet_meta_and_dir_unlocked(
}
}
- StorageParamPB storage_param;
- Status status =
- _get_storage_param(data_dir, tablet_meta->remote_storage_name(), &storage_param);
- if (!status.ok()) {
- LOG(WARNING) << "fail to _get_storage_param. storage_name: "
- << tablet_meta->remote_storage_name();
- return nullptr;
- }
- TabletSharedPtr new_tablet =
- Tablet::create_tablet_from_meta(tablet_meta, storage_param, data_dir);
+ TabletSharedPtr new_tablet = Tablet::create_tablet_from_meta(tablet_meta, data_dir);
DCHECK(new_tablet != nullptr);
return new_tablet;
}
@@ -739,12 +729,7 @@ Status TabletManager::load_tablet_from_meta(DataDir* data_dir, TTabletId tablet_
tablet_meta->set_tablet_state(TABLET_RUNNING);
}
- StorageParamPB storage_param;
- RETURN_NOT_OK_LOG(
- _get_storage_param(data_dir, tablet_meta->remote_storage_name(), &storage_param),
- "fail to _get_storage_param. storage_name: " + tablet_meta->remote_storage_name());
-
- TabletSharedPtr tablet = Tablet::create_tablet_from_meta(tablet_meta, storage_param, data_dir);
+ TabletSharedPtr tablet = Tablet::create_tablet_from_meta(tablet_meta, data_dir);
if (tablet == nullptr) {
LOG(WARNING) << "fail to load tablet. tablet_id=" << tablet_id
<< ", schema_hash:" << schema_hash;
@@ -1265,13 +1250,6 @@ void TabletManager::get_tablets_distribution_on_different_disks(
}
}
-Status TabletManager::_get_storage_param(DataDir* data_dir, const std::string& storage_name,
- StorageParamPB* storage_param) {
- storage_param->set_storage_medium(
- fs::fs_util::get_storage_medium_pb(data_dir->storage_medium()));
- return Status::OK();
-}
-
struct SortCtx {
SortCtx(TabletSharedPtr tablet, int64_t cooldown_timestamp, int64_t file_size)
: tablet(tablet), cooldown_timestamp(cooldown_timestamp), file_size(file_size) {}
diff --git a/be/src/olap/tablet_manager.h b/be/src/olap/tablet_manager.h
index 5b97c76eaf..46aa04b71a 100644
--- a/be/src/olap/tablet_manager.h
+++ b/be/src/olap/tablet_manager.h
@@ -181,9 +181,6 @@ private:
std::shared_mutex& _get_tablets_shard_lock(TTabletId tabletId);
- Status _get_storage_param(DataDir* data_dir, const std::string& storage_name,
- StorageParamPB* storage_param);
-
private:
DISALLOW_COPY_AND_ASSIGN(TabletManager);
diff --git a/be/src/olap/tablet_meta.cpp b/be/src/olap/tablet_meta.cpp
index 526ddec54d..f0ae3bfc85 100644
--- a/be/src/olap/tablet_meta.cpp
+++ b/be/src/olap/tablet_meta.cpp
@@ -44,8 +44,7 @@ Status TabletMeta::create(const TCreateTabletReq& request, const TabletUid& tabl
request.tablet_schema.schema_hash, shard_id, request.tablet_schema, next_unique_id,
col_ordinal_to_unique_id, tablet_uid,
request.__isset.tablet_type ? request.tablet_type : TTabletType::TABLET_TYPE_DISK,
- request.storage_medium, request.storage_param.storage_name, request.compression_type,
- request.storage_policy,
+ request.compression_type, request.storage_policy,
request.__isset.enable_unique_key_merge_on_write
? request.enable_unique_key_merge_on_write
: false));
@@ -60,7 +59,6 @@ TabletMeta::TabletMeta(int64_t table_id, int64_t partition_id, int64_t tablet_id
const TTabletSchema& tablet_schema, uint32_t next_unique_id,
const std::unordered_map<uint32_t, uint32_t>& col_ordinal_to_unique_id,
TabletUid tablet_uid, TTabletType::type tabletType,
- TStorageMedium::type t_storage_medium, const std::string& storage_name,
TCompressionType::type compression_type, const std::string& storage_policy,
bool enable_unique_key_merge_on_write)
: _tablet_uid(0, 0), _schema(new TabletSchema), _delete_bitmap(new DeleteBitmap()) {
@@ -79,8 +77,6 @@ TabletMeta::TabletMeta(int64_t table_id, int64_t partition_id, int64_t tablet_id
tablet_meta_pb.set_tablet_type(tabletType == TTabletType::TABLET_TYPE_DISK
? TabletTypePB::TABLET_TYPE_DISK
: TabletTypePB::TABLET_TYPE_MEMORY);
- tablet_meta_pb.set_storage_medium(fs::fs_util::get_storage_medium_pb(t_storage_medium));
- tablet_meta_pb.set_remote_storage_name(storage_name);
tablet_meta_pb.set_enable_unique_key_merge_on_write(enable_unique_key_merge_on_write);
tablet_meta_pb.set_storage_policy(storage_policy);
TabletSchemaPB* schema = tablet_meta_pb.mutable_schema();
@@ -207,8 +203,6 @@ TabletMeta::TabletMeta(const TabletMeta& b)
_del_predicates(b._del_predicates),
_in_restore_mode(b._in_restore_mode),
_preferred_rowset_type(b._preferred_rowset_type),
- _remote_storage_name(b._remote_storage_name),
- _storage_medium(b._storage_medium),
_cooldown_resource(b._cooldown_resource),
_delete_bitmap(new DeleteBitmap(*b._delete_bitmap)) {};
@@ -465,8 +459,6 @@ void TabletMeta::init_from_pb(const TabletMetaPB& tablet_meta_pb) {
_preferred_rowset_type = tablet_meta_pb.preferred_rowset_type();
}
- _remote_storage_name = tablet_meta_pb.remote_storage_name();
- _storage_medium = tablet_meta_pb.storage_medium();
_cooldown_resource = tablet_meta_pb.storage_policy();
if (tablet_meta_pb.has_enable_unique_key_merge_on_write()) {
_enable_unique_key_merge_on_write = tablet_meta_pb.enable_unique_key_merge_on_write();
@@ -534,8 +526,6 @@ void TabletMeta::to_meta_pb(TabletMetaPB* tablet_meta_pb) {
tablet_meta_pb->set_preferred_rowset_type(_preferred_rowset_type);
}
- tablet_meta_pb->set_remote_storage_name(_remote_storage_name);
- tablet_meta_pb->set_storage_medium(_storage_medium);
tablet_meta_pb->set_storage_policy(_cooldown_resource);
tablet_meta_pb->set_enable_unique_key_merge_on_write(_enable_unique_key_merge_on_write);
@@ -761,8 +751,6 @@ bool operator==(const TabletMeta& a, const TabletMeta& b) {
}
if (a._in_restore_mode != b._in_restore_mode) return false;
if (a._preferred_rowset_type != b._preferred_rowset_type) return false;
- if (a._storage_medium != b._storage_medium) return false;
- if (a._remote_storage_name != b._remote_storage_name) return false;
if (a._cooldown_resource != b._cooldown_resource) return false;
return true;
}
diff --git a/be/src/olap/tablet_meta.h b/be/src/olap/tablet_meta.h
index 6e23ec8204..e32b966d1f 100644
--- a/be/src/olap/tablet_meta.h
+++ b/be/src/olap/tablet_meta.h
@@ -87,7 +87,6 @@ public:
uint32_t next_unique_id,
const std::unordered_map<uint32_t, uint32_t>& col_ordinal_to_unique_id,
TabletUid tablet_uid, TTabletType::type tabletType,
- TStorageMedium::type t_storage_medium, const std::string& remote_storage_name,
TCompressionType::type compression_type,
const std::string& storage_policy = std::string(),
bool enable_unique_key_merge_on_write = false);
@@ -186,10 +185,6 @@ public:
bool all_beta() const;
- std::string remote_storage_name() const { return _remote_storage_name; }
-
- StorageMediumPB storage_medium() const { return _storage_medium; }
-
const io::ResourceId& cooldown_resource() const {
std::shared_lock<std::shared_mutex> rlock(_meta_lock);
return _cooldown_resource;
@@ -241,8 +236,6 @@ private:
std::vector<DeletePredicatePB> _del_predicates;
bool _in_restore_mode = false;
RowsetTypePB _preferred_rowset_type = BETA_ROWSET;
- std::string _remote_storage_name;
- StorageMediumPB _storage_medium = StorageMediumPB::HDD;
// FIXME(cyx): Currently `cooldown_resource` is equivalent to `storage_policy`.
io::ResourceId _cooldown_resource;
diff --git a/be/src/util/CMakeLists.txt b/be/src/util/CMakeLists.txt
index 0178939d8c..48d6d45f3d 100644
--- a/be/src/util/CMakeLists.txt
+++ b/be/src/util/CMakeLists.txt
@@ -51,7 +51,7 @@ set(UTIL_FILES
progress_updater.cpp
runtime_profile.cpp
static_asserts.cpp
- storage_backend_mgr.cpp
+ # storage_backend_mgr.cpp
string_parser.cpp
thrift_util.cpp
thrift_client.cpp
diff --git a/be/src/util/doris_metrics.cpp b/be/src/util/doris_metrics.cpp
index 70dfc36a39..4216ea5942 100644
--- a/be/src/util/doris_metrics.cpp
+++ b/be/src/util/doris_metrics.cpp
@@ -287,16 +287,6 @@ DorisMetrics::DorisMetrics() : _metric_registry(_s_registry_name) {
INT_GAUGE_METRIC_REGISTER(_server_metric_entity, max_network_send_bytes_rate);
INT_GAUGE_METRIC_REGISTER(_server_metric_entity, max_network_receive_bytes_rate);
- INT_COUNTER_METRIC_REGISTER(_server_metric_entity, readable_blocks_total);
- INT_COUNTER_METRIC_REGISTER(_server_metric_entity, writable_blocks_total);
- INT_COUNTER_METRIC_REGISTER(_server_metric_entity, blocks_created_total);
- INT_COUNTER_METRIC_REGISTER(_server_metric_entity, blocks_deleted_total);
- INT_COUNTER_METRIC_REGISTER(_server_metric_entity, bytes_read_total);
- INT_COUNTER_METRIC_REGISTER(_server_metric_entity, bytes_written_total);
- INT_COUNTER_METRIC_REGISTER(_server_metric_entity, disk_sync_total);
- INT_GAUGE_METRIC_REGISTER(_server_metric_entity, blocks_open_reading);
- INT_GAUGE_METRIC_REGISTER(_server_metric_entity, blocks_open_writing);
-
INT_COUNTER_METRIC_REGISTER(_server_metric_entity, load_rows);
INT_COUNTER_METRIC_REGISTER(_server_metric_entity, load_bytes);
diff --git a/be/src/util/doris_metrics.h b/be/src/util/doris_metrics.h
index 34b17a7a9a..20e00c3c05 100644
--- a/be/src/util/doris_metrics.h
+++ b/be/src/util/doris_metrics.h
@@ -159,17 +159,6 @@ public:
IntGauge* max_network_send_bytes_rate;
IntGauge* max_network_receive_bytes_rate;
- // Metrics related with BlockManager
- IntCounter* readable_blocks_total;
- IntCounter* writable_blocks_total;
- IntCounter* blocks_created_total;
- IntCounter* blocks_deleted_total;
- IntCounter* bytes_read_total;
- IntCounter* bytes_written_total;
- IntCounter* disk_sync_total;
- IntGauge* blocks_open_reading;
- IntGauge* blocks_open_writing;
-
// Metrics related with file reader/writer
IntCounter* local_file_reader_total;
IntCounter* s3_file_reader_total;
diff --git a/be/src/vec/columns/column_nullable.h b/be/src/vec/columns/column_nullable.h
index 168ee94d10..ef26802f0e 100644
--- a/be/src/vec/columns/column_nullable.h
+++ b/be/src/vec/columns/column_nullable.h
@@ -173,7 +173,7 @@ public:
bool is_date_type() const override { return get_nested_column().is_date_type(); }
bool is_date_v2_type() const override { return get_nested_column().is_date_v2_type(); }
bool is_datetime_type() const override { return get_nested_column().is_datetime_type(); }
- bool is_decimalv2_type() const { return get_nested_column().is_decimalv2_type(); }
+ bool is_decimalv2_type() const override { return get_nested_column().is_decimalv2_type(); }
void set_date_type() override { get_nested_column().set_date_type(); }
void set_date_v2_type() override { get_nested_column().set_date_v2_type(); }
void set_datetime_type() override { get_nested_column().set_datetime_type(); }
diff --git a/be/test/CMakeLists.txt b/be/test/CMakeLists.txt
index 9c38bb875e..84f9a42d2c 100644
--- a/be/test/CMakeLists.txt
+++ b/be/test/CMakeLists.txt
@@ -191,7 +191,6 @@ set(OLAP_TEST_FILES
olap/selection_vector_test.cpp
olap/block_column_predicate_test.cpp
olap/options_test.cpp
- olap/fs/file_block_manager_test.cpp
olap/common_test.cpp
olap/primary_key_index_test.cpp
# olap/memtable_flush_executor_test.cpp
diff --git a/be/test/olap/cumulative_compaction_policy_test.cpp b/be/test/olap/cumulative_compaction_policy_test.cpp
index 92d3dda5bd..3d2364bbec 100644
--- a/be/test/olap/cumulative_compaction_policy_test.cpp
+++ b/be/test/olap/cumulative_compaction_policy_test.cpp
@@ -33,7 +33,7 @@ public:
void SetUp() {
_tablet_meta = static_cast<TabletMetaSharedPtr>(new TabletMeta(
1, 2, 15673, 15674, 4, 5, TTabletSchema(), 6, {{7, 8}}, UniqueId(9, 10),
- TTabletType::TABLET_TYPE_DISK, TStorageMedium::HDD, "", TCompressionType::LZ4F));
+ TTabletType::TABLET_TYPE_DISK, TCompressionType::LZ4F));
_json_rowset_meta = R"({
"rowset_id": 540081,
@@ -207,10 +207,7 @@ TEST_F(TestNumBasedCumulativeCompactionPolicy, calc_cumulative_compaction_score)
_tablet_meta->add_rs_meta(rowset);
}
- StorageParamPB storage_param;
- storage_param.set_storage_medium(StorageMediumPB::HDD);
- TabletSharedPtr _tablet(
- new Tablet(_tablet_meta, storage_param, nullptr, CUMULATIVE_NUM_BASED_POLICY));
+ TabletSharedPtr _tablet(new Tablet(_tablet_meta, nullptr, CUMULATIVE_NUM_BASED_POLICY));
_tablet->init();
std::shared_ptr<CumulativeCompactionPolicy> cumulative_compaction_policy =
CumulativeCompactionPolicyFactory::create_cumulative_compaction_policy(
@@ -230,10 +227,7 @@ TEST_F(TestNumBasedCumulativeCompactionPolicy, calculate_cumulative_point) {
_tablet_meta->add_rs_meta(rowset);
}
- StorageParamPB storage_param;
- storage_param.set_storage_medium(StorageMediumPB::HDD);
- TabletSharedPtr _tablet(
- new Tablet(_tablet_meta, storage_param, nullptr, CUMULATIVE_NUM_BASED_POLICY));
+ TabletSharedPtr _tablet(new Tablet(_tablet_meta, nullptr, CUMULATIVE_NUM_BASED_POLICY));
_tablet->init();
_tablet->calculate_cumulative_point();
@@ -248,10 +242,7 @@ TEST_F(TestNumBasedCumulativeCompactionPolicy, pick_candidate_rowsets) {
_tablet_meta->add_rs_meta(rowset);
}
- StorageParamPB storage_param;
- storage_param.set_storage_medium(StorageMediumPB::HDD);
- TabletSharedPtr _tablet(
- new Tablet(_tablet_meta, storage_param, nullptr, CUMULATIVE_NUM_BASED_POLICY));
+ TabletSharedPtr _tablet(new Tablet(_tablet_meta, nullptr, CUMULATIVE_NUM_BASED_POLICY));
_tablet->init();
_tablet->calculate_cumulative_point();
@@ -269,10 +260,7 @@ TEST_F(TestNumBasedCumulativeCompactionPolicy, pick_input_rowsets_normal) {
_tablet_meta->add_rs_meta(rowset);
}
- StorageParamPB storage_param;
- storage_param.set_storage_medium(StorageMediumPB::HDD);
- TabletSharedPtr _tablet(
- new Tablet(_tablet_meta, storage_param, nullptr, CUMULATIVE_NUM_BASED_POLICY));
+ TabletSharedPtr _tablet(new Tablet(_tablet_meta, nullptr, CUMULATIVE_NUM_BASED_POLICY));
_tablet->init();
_tablet->calculate_cumulative_point();
@@ -301,10 +289,7 @@ TEST_F(TestNumBasedCumulativeCompactionPolicy, pick_input_rowsets_delete) {
_tablet_meta->add_rs_meta(rowset);
}
- StorageParamPB storage_param;
- storage_param.set_storage_medium(StorageMediumPB::HDD);
- TabletSharedPtr _tablet(
- new Tablet(_tablet_meta, storage_param, nullptr, CUMULATIVE_NUM_BASED_POLICY));
+ TabletSharedPtr _tablet(new Tablet(_tablet_meta, nullptr, CUMULATIVE_NUM_BASED_POLICY));
_tablet->init();
_tablet->calculate_cumulative_point();
@@ -337,7 +322,7 @@ public:
_tablet_meta = static_cast<TabletMetaSharedPtr>(new TabletMeta(
1, 2, 15673, 15674, 4, 5, TTabletSchema(), 6, {{7, 8}}, UniqueId(9, 10),
- TTabletType::TABLET_TYPE_DISK, TStorageMedium::HDD, "", TCompressionType::LZ4F));
+ TTabletType::TABLET_TYPE_DISK, TCompressionType::LZ4F));
_json_rowset_meta = R"({
"rowset_id": 540081,
@@ -678,10 +663,7 @@ TEST_F(TestSizeBasedCumulativeCompactionPolicy, calc_cumulative_compaction_score
_tablet_meta->add_rs_meta(rowset);
}
- StorageParamPB storage_param;
- storage_param.set_storage_medium(StorageMediumPB::HDD);
- TabletSharedPtr _tablet(
- new Tablet(_tablet_meta, storage_param, nullptr, CUMULATIVE_SIZE_BASED_POLICY));
+ TabletSharedPtr _tablet(new Tablet(_tablet_meta, nullptr, CUMULATIVE_SIZE_BASED_POLICY));
_tablet->init();
_tablet->calculate_cumulative_point();
@@ -702,10 +684,7 @@ TEST_F(TestSizeBasedCumulativeCompactionPolicy, calc_cumulative_compaction_score
_tablet_meta->add_rs_meta(rowset);
}
- StorageParamPB storage_param;
- storage_param.set_storage_medium(StorageMediumPB::HDD);
- TabletSharedPtr _tablet(
- new Tablet(_tablet_meta, storage_param, nullptr, CUMULATIVE_SIZE_BASED_POLICY));
+ TabletSharedPtr _tablet(new Tablet(_tablet_meta, nullptr, CUMULATIVE_SIZE_BASED_POLICY));
_tablet->init();
_tablet->calculate_cumulative_point();
std::shared_ptr<CumulativeCompactionPolicy> cumulative_compaction_policy =
@@ -725,10 +704,7 @@ TEST_F(TestSizeBasedCumulativeCompactionPolicy, calculate_cumulative_point_big_b
_tablet_meta->add_rs_meta(rowset);
}
- StorageParamPB storage_param;
- storage_param.set_storage_medium(StorageMediumPB::HDD);
- TabletSharedPtr _tablet(
- new Tablet(_tablet_meta, storage_param, nullptr, CUMULATIVE_SIZE_BASED_POLICY));
+ TabletSharedPtr _tablet(new Tablet(_tablet_meta, nullptr, CUMULATIVE_SIZE_BASED_POLICY));
_tablet->init();
_tablet->calculate_cumulative_point();
@@ -743,10 +719,7 @@ TEST_F(TestSizeBasedCumulativeCompactionPolicy, calculate_cumulative_point_overl
_tablet_meta->add_rs_meta(rowset);
}
- StorageParamPB storage_param;
- storage_param.set_storage_medium(StorageMediumPB::HDD);
- TabletSharedPtr _tablet(
- new Tablet(_tablet_meta, storage_param, nullptr, CUMULATIVE_SIZE_BASED_POLICY));
+ TabletSharedPtr _tablet(new Tablet(_tablet_meta, nullptr, CUMULATIVE_SIZE_BASED_POLICY));
_tablet->init();
_tablet->calculate_cumulative_point();
@@ -761,10 +734,7 @@ TEST_F(TestSizeBasedCumulativeCompactionPolicy, pick_candidate_rowsets) {
_tablet_meta->add_rs_meta(rowset);
}
- StorageParamPB storage_param;
- storage_param.set_storage_medium(StorageMediumPB::HDD);
- TabletSharedPtr _tablet(
- new Tablet(_tablet_meta, storage_param, nullptr, CUMULATIVE_SIZE_BASED_POLICY));
+ TabletSharedPtr _tablet(new Tablet(_tablet_meta, nullptr, CUMULATIVE_SIZE_BASED_POLICY));
_tablet->init();
_tablet->calculate_cumulative_point();
@@ -782,10 +752,7 @@ TEST_F(TestSizeBasedCumulativeCompactionPolicy, pick_candidate_rowsets_big_base)
_tablet_meta->add_rs_meta(rowset);
}
- StorageParamPB storage_param;
- storage_param.set_storage_medium(StorageMediumPB::HDD);
- TabletSharedPtr _tablet(
- new Tablet(_tablet_meta, storage_param, nullptr, CUMULATIVE_SIZE_BASED_POLICY));
+ TabletSharedPtr _tablet(new Tablet(_tablet_meta, nullptr, CUMULATIVE_SIZE_BASED_POLICY));
_tablet->init();
_tablet->calculate_cumulative_point();
@@ -803,10 +770,7 @@ TEST_F(TestSizeBasedCumulativeCompactionPolicy, pick_input_rowsets_normal) {
_tablet_meta->add_rs_meta(rowset);
}
- StorageParamPB storage_param;
- storage_param.set_storage_medium(StorageMediumPB::HDD);
- TabletSharedPtr _tablet(
- new Tablet(_tablet_meta, storage_param, nullptr, CUMULATIVE_SIZE_BASED_POLICY));
+ TabletSharedPtr _tablet(new Tablet(_tablet_meta, nullptr, CUMULATIVE_SIZE_BASED_POLICY));
_tablet->init();
_tablet->calculate_cumulative_point();
@@ -835,10 +799,7 @@ TEST_F(TestSizeBasedCumulativeCompactionPolicy, pick_input_rowsets_big_base) {
_tablet_meta->add_rs_meta(rowset);
}
- StorageParamPB storage_param;
- storage_param.set_storage_medium(StorageMediumPB::HDD);
- TabletSharedPtr _tablet(
- new Tablet(_tablet_meta, storage_param, nullptr, CUMULATIVE_SIZE_BASED_POLICY));
+ TabletSharedPtr _tablet(new Tablet(_tablet_meta, nullptr, CUMULATIVE_SIZE_BASED_POLICY));
_tablet->init();
_tablet->calculate_cumulative_point();
@@ -867,10 +828,7 @@ TEST_F(TestSizeBasedCumulativeCompactionPolicy, pick_input_rowsets_promotion) {
_tablet_meta->add_rs_meta(rowset);
}
- StorageParamPB storage_param;
- storage_param.set_storage_medium(StorageMediumPB::HDD);
- TabletSharedPtr _tablet(
- new Tablet(_tablet_meta, storage_param, nullptr, CUMULATIVE_SIZE_BASED_POLICY));
+ TabletSharedPtr _tablet(new Tablet(_tablet_meta, nullptr, CUMULATIVE_SIZE_BASED_POLICY));
_tablet->init();
_tablet->calculate_cumulative_point();
@@ -899,10 +857,7 @@ TEST_F(TestSizeBasedCumulativeCompactionPolicy, pick_input_rowsets_not_same_leve
_tablet_meta->add_rs_meta(rowset);
}
- StorageParamPB storage_param;
- storage_param.set_storage_medium(StorageMediumPB::HDD);
- TabletSharedPtr _tablet(
- new Tablet(_tablet_meta, storage_param, nullptr, CUMULATIVE_SIZE_BASED_POLICY));
+ TabletSharedPtr _tablet(new Tablet(_tablet_meta, nullptr, CUMULATIVE_SIZE_BASED_POLICY));
_tablet->init();
_tablet->calculate_cumulative_point();
@@ -931,10 +886,7 @@ TEST_F(TestSizeBasedCumulativeCompactionPolicy, pick_input_rowsets_empty) {
_tablet_meta->add_rs_meta(rowset);
}
- StorageParamPB storage_param;
- storage_param.set_storage_medium(StorageMediumPB::HDD);
- TabletSharedPtr _tablet(
- new Tablet(_tablet_meta, storage_param, nullptr, CUMULATIVE_SIZE_BASED_POLICY));
+ TabletSharedPtr _tablet(new Tablet(_tablet_meta, nullptr, CUMULATIVE_SIZE_BASED_POLICY));
_tablet->init();
_tablet->calculate_cumulative_point();
@@ -963,10 +915,7 @@ TEST_F(TestSizeBasedCumulativeCompactionPolicy, pick_input_rowsets_not_reach_min
_tablet_meta->add_rs_meta(rowset);
}
- StorageParamPB storage_param;
- storage_param.set_storage_medium(StorageMediumPB::HDD);
- TabletSharedPtr _tablet(
- new Tablet(_tablet_meta, storage_param, nullptr, CUMULATIVE_SIZE_BASED_POLICY));
+ TabletSharedPtr _tablet(new Tablet(_tablet_meta, nullptr, CUMULATIVE_SIZE_BASED_POLICY));
_tablet->init();
_tablet->calculate_cumulative_point();
@@ -995,10 +944,7 @@ TEST_F(TestSizeBasedCumulativeCompactionPolicy, pick_input_rowsets_delete) {
_tablet_meta->add_rs_meta(rowset);
}
- StorageParamPB storage_param;
- storage_param.set_storage_medium(StorageMediumPB::HDD);
- TabletSharedPtr _tablet(
- new Tablet(_tablet_meta, storage_param, nullptr, CUMULATIVE_SIZE_BASED_POLICY));
+ TabletSharedPtr _tablet(new Tablet(_tablet_meta, nullptr, CUMULATIVE_SIZE_BASED_POLICY));
_tablet->init();
_tablet->calculate_cumulative_point();
@@ -1028,10 +974,7 @@ TEST_F(TestSizeBasedCumulativeCompactionPolicy, _calc_promotion_size_big) {
_tablet_meta->add_rs_meta(rowset);
}
- StorageParamPB storage_param;
- storage_param.set_storage_medium(StorageMediumPB::HDD);
- TabletSharedPtr _tablet(
- new Tablet(_tablet_meta, storage_param, nullptr, CUMULATIVE_SIZE_BASED_POLICY));
+ TabletSharedPtr _tablet(new Tablet(_tablet_meta, nullptr, CUMULATIVE_SIZE_BASED_POLICY));
_tablet->init();
_tablet->calculate_cumulative_point();
@@ -1050,10 +993,7 @@ TEST_F(TestSizeBasedCumulativeCompactionPolicy, _calc_promotion_size_small) {
_tablet_meta->add_rs_meta(rowset);
}
- StorageParamPB storage_param;
- storage_param.set_storage_medium(StorageMediumPB::HDD);
- TabletSharedPtr _tablet(
- new Tablet(_tablet_meta, storage_param, nullptr, CUMULATIVE_SIZE_BASED_POLICY));
+ TabletSharedPtr _tablet(new Tablet(_tablet_meta, nullptr, CUMULATIVE_SIZE_BASED_POLICY));
_tablet->init();
_tablet->calculate_cumulative_point();
@@ -1071,10 +1011,7 @@ TEST_F(TestSizeBasedCumulativeCompactionPolicy, _level_size) {
_tablet_meta->add_rs_meta(rowset);
}
- StorageParamPB storage_param;
- storage_param.set_storage_medium(StorageMediumPB::HDD);
- TabletSharedPtr _tablet(
- new Tablet(_tablet_meta, storage_param, nullptr, CUMULATIVE_SIZE_BASED_POLICY));
+ TabletSharedPtr _tablet(new Tablet(_tablet_meta, nullptr, CUMULATIVE_SIZE_BASED_POLICY));
_tablet->init();
SizeBasedCumulativeCompactionPolicy* policy =
@@ -1095,10 +1032,7 @@ TEST_F(TestSizeBasedCumulativeCompactionPolicy, _pick_missing_version_cumulative
_tablet_meta->add_rs_meta(rowset);
}
- StorageParamPB storage_param;
- storage_param.set_storage_medium(StorageMediumPB::HDD);
- TabletSharedPtr _tablet(
- new Tablet(_tablet_meta, storage_param, nullptr, CUMULATIVE_SIZE_BASED_POLICY));
+ TabletSharedPtr _tablet(new Tablet(_tablet_meta, nullptr, CUMULATIVE_SIZE_BASED_POLICY));
_tablet->init();
// has miss version
diff --git a/be/test/olap/fs/file_block_manager_test.cpp b/be/test/olap/fs/file_block_manager_test.cpp
deleted file mode 100644
index e22a83a6f5..0000000000
--- a/be/test/olap/fs/file_block_manager_test.cpp
+++ /dev/null
@@ -1,81 +0,0 @@
-// Licensed to the Apache Software Foundation (ASF) under one
-// or more contributor license agreements. See the NOTICE file
-// distributed with this work for additional information
-// regarding copyright ownership. The ASF licenses this file
-// to you under the Apache License, Version 2.0 (the
-// "License"); you may not use this file except in compliance
-// with the License. You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing,
-// software distributed under the License is distributed on an
-// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-// KIND, either express or implied. See the License for the
-// specific language governing permissions and limitations
-// under the License.
-
-#include "olap/fs/file_block_manager.h"
-
-#include <gtest/gtest.h>
-
-#include <string>
-
-#include "env/env.h"
-#include "util/file_utils.h"
-#include "util/slice.h"
-
-using std::string;
-
-namespace doris {
-
-class FileBlockManagerTest : public testing::Test {
-protected:
- const std::string kBlockManagerDir = "./ut_dir/file_block_manager";
-
- void SetUp() override {
- if (FileUtils::check_exist(kBlockManagerDir)) {
- EXPECT_TRUE(FileUtils::remove_all(kBlockManagerDir).ok());
- }
- EXPECT_TRUE(FileUtils::create_dir(kBlockManagerDir).ok());
- }
-
- void TearDown() override {
- if (FileUtils::check_exist(kBlockManagerDir)) {
- EXPECT_TRUE(FileUtils::remove_all(kBlockManagerDir).ok());
- }
- }
-};
-
-TEST_F(FileBlockManagerTest, NormalTest) {
- fs::BlockManagerOptions bm_opts;
- bm_opts.read_only = false;
- bm_opts.enable_metric = false;
- Env* env = Env::Default();
- std::unique_ptr<fs::FileBlockManager> fbm(new fs::FileBlockManager(env, std::move(bm_opts)));
-
- std::unique_ptr<fs::WritableBlock> wblock;
- std::string fname = kBlockManagerDir + "/test_file";
- fs::CreateBlockOptions wblock_opts(fname);
- Status st = fbm->create_block(wblock_opts, &wblock);
- EXPECT_TRUE(st.ok()) << st.get_error_msg();
-
- std::string data = "abcdefghijklmnopqrstuvwxyz";
- wblock->append(data);
- wblock->close();
-
- FilePathDesc path_desc;
- path_desc.filepath = fname;
- std::unique_ptr<fs::ReadableBlock> rblock;
- st = fbm->open_block(path_desc, &rblock);
- uint64_t file_size = 0;
- EXPECT_TRUE(rblock->size(&file_size).ok());
- EXPECT_EQ(data.size(), file_size);
- std::string read_buff(data.size(), 'a');
- Slice read_slice(read_buff);
- rblock->read(0, read_slice);
- EXPECT_EQ(data, read_buff);
- rblock->close();
-}
-
-} // namespace doris
diff --git a/be/test/olap/primary_key_index_test.cpp b/be/test/olap/primary_key_index_test.cpp
index 8345e0c603..c316487312 100644
--- a/be/test/olap/primary_key_index_test.cpp
+++ b/be/test/olap/primary_key_index_test.cpp
@@ -21,7 +21,6 @@
#include "io/fs/file_writer.h"
#include "io/fs/local_file_system.h"
-#include "olap/fs/fs_util.h"
#include "olap/row_cursor.h"
#include "olap/tablet_schema_helper.h"
#include "util/debug_util.h"
diff --git a/be/test/olap/rowset/segment_v2/bloom_filter_index_reader_writer_test.cpp b/be/test/olap/rowset/segment_v2/bloom_filter_index_reader_writer_test.cpp
index fd5338fcd1..661eb497eb 100644
--- a/be/test/olap/rowset/segment_v2/bloom_filter_index_reader_writer_test.cpp
+++ b/be/test/olap/rowset/segment_v2/bloom_filter_index_reader_writer_test.cpp
@@ -22,8 +22,6 @@
#include "io/fs/file_system.h"
#include "io/fs/file_writer.h"
#include "io/fs/local_file_system.h"
-#include "olap/fs/block_manager.h"
-#include "olap/fs/fs_util.h"
#include "olap/key_coder.h"
#include "olap/olap_common.h"
#include "olap/rowset/segment_v2/bloom_filter.h"
diff --git a/be/test/olap/rowset/segment_v2/column_reader_writer_test.cpp b/be/test/olap/rowset/segment_v2/column_reader_writer_test.cpp
index dc492cc39c..0355ea80ff 100644
--- a/be/test/olap/rowset/segment_v2/column_reader_writer_test.cpp
+++ b/be/test/olap/rowset/segment_v2/column_reader_writer_test.cpp
@@ -25,7 +25,6 @@
#include "io/fs/local_file_system.h"
#include "olap/column_block.h"
#include "olap/decimal12.h"
-#include "olap/fs/fs_util.h"
#include "olap/olap_common.h"
#include "olap/rowset/segment_v2/column_reader.h"
#include "olap/rowset/segment_v2/column_writer.h"
diff --git a/be/test/olap/rowset/segment_v2/ordinal_page_index_test.cpp b/be/test/olap/rowset/segment_v2/ordinal_page_index_test.cpp
index 0bda20536c..cb7d730973 100644
--- a/be/test/olap/rowset/segment_v2/ordinal_page_index_test.cpp
+++ b/be/test/olap/rowset/segment_v2/ordinal_page_index_test.cpp
@@ -29,7 +29,6 @@
#include "io/fs/file_system.h"
#include "io/fs/file_writer.h"
#include "io/fs/local_file_system.h"
-#include "olap/fs/fs_util.h"
#include "olap/page_cache.h"
#include "util/file_utils.h"
diff --git a/be/test/olap/rowset/segment_v2/segment_test.cpp b/be/test/olap/rowset/segment_v2/segment_test.cpp
index 442aaecdac..bc43001d07 100644
--- a/be/test/olap/rowset/segment_v2/segment_test.cpp
+++ b/be/test/olap/rowset/segment_v2/segment_test.cpp
@@ -29,8 +29,6 @@
#include "io/fs/local_file_system.h"
#include "olap/comparison_predicate.h"
#include "olap/data_dir.h"
-#include "olap/fs/block_manager.h"
-#include "olap/fs/fs_util.h"
#include "olap/in_list_predicate.h"
#include "olap/olap_common.h"
#include "olap/row_block.h"
diff --git a/be/test/olap/rowset/segment_v2/zone_map_index_test.cpp b/be/test/olap/rowset/segment_v2/zone_map_index_test.cpp
index df5d4d6e24..7a6994003b 100644
--- a/be/test/olap/rowset/segment_v2/zone_map_index_test.cpp
+++ b/be/test/olap/rowset/segment_v2/zone_map_index_test.cpp
@@ -27,8 +27,6 @@
#include "io/fs/file_system.h"
#include "io/fs/file_writer.h"
#include "io/fs/local_file_system.h"
-#include "olap/fs/block_manager.h"
-#include "olap/fs/fs_util.h"
#include "olap/page_cache.h"
#include "olap/tablet_schema_helper.h"
#include "util/file_utils.h"
diff --git a/be/test/olap/tablet_meta_test.cpp b/be/test/olap/tablet_meta_test.cpp
index 4f2b7f7afd..28e8654b56 100644
--- a/be/test/olap/tablet_meta_test.cpp
+++ b/be/test/olap/tablet_meta_test.cpp
@@ -27,8 +27,7 @@ TEST(TabletMetaTest, SaveAndParse) {
std::string meta_path = "./be/test/olap/test_data/tablet_meta_test.hdr";
TabletMeta old_tablet_meta(1, 2, 3, 3, 4, 5, TTabletSchema(), 6, {{7, 8}}, UniqueId(9, 10),
- TTabletType::TABLET_TYPE_DISK, TStorageMedium::HDD, "",
- TCompressionType::LZ4F);
+ TTabletType::TABLET_TYPE_DISK, TCompressionType::LZ4F);
EXPECT_EQ(Status::OK(), old_tablet_meta.save(meta_path));
{
diff --git a/be/test/olap/tablet_test.cpp b/be/test/olap/tablet_test.cpp
index 18af72f7e6..d819fc3a0a 100644
--- a/be/test/olap/tablet_test.cpp
+++ b/be/test/olap/tablet_test.cpp
@@ -40,7 +40,7 @@ public:
virtual void SetUp() {
_tablet_meta = static_cast<TabletMetaSharedPtr>(new TabletMeta(
1, 2, 15673, 15674, 4, 5, TTabletSchema(), 6, {{7, 8}}, UniqueId(9, 10),
- TTabletType::TABLET_TYPE_DISK, TStorageMedium::HDD, "", TCompressionType::LZ4F));
+ TTabletType::TABLET_TYPE_DISK, TCompressionType::LZ4F));
_json_rowset_meta = R"({
"rowset_id": 540081,
"tablet_id": 15673,
@@ -192,9 +192,7 @@ TEST_F(TestTablet, delete_expired_stale_rowset) {
_tablet_meta->add_rs_meta(rowset);
}
- StorageParamPB storage_param;
- storage_param.set_storage_medium(StorageMediumPB::HDD);
- TabletSharedPtr _tablet(new Tablet(_tablet_meta, storage_param, nullptr));
+ TabletSharedPtr _tablet(new Tablet(_tablet_meta, nullptr));
_tablet->init();
for (auto ptr : expired_rs_metas) {
@@ -240,9 +238,7 @@ TEST_F(TestTablet, cooldown_policy) {
_tablet_meta->add_rs_meta(rowset);
}
- StorageParamPB storage_param;
- storage_param.set_storage_medium(StorageMediumPB::HDD);
- TabletSharedPtr _tablet(new Tablet(_tablet_meta, storage_param, nullptr));
+ TabletSharedPtr _tablet(new Tablet(_tablet_meta, nullptr));
_tablet->init();
_tablet->set_cooldown_resource("test_policy_name");
diff --git a/be/test/olap/test_data/header_without_inc_rs.txt b/be/test/olap/test_data/header_without_inc_rs.txt
index 660a6957bf..35cde8c238 100644
--- a/be/test/olap/test_data/header_without_inc_rs.txt
+++ b/be/test/olap/test_data/header_without_inc_rs.txt
@@ -147,8 +147,6 @@
},
"preferred_rowset_type": "BETA_ROWSET",
"tablet_type": "TABLET_TYPE_DISK",
- "storage_medium": "HDD",
- "remote_storage_name": "",
"replica_id": 0,
"storage_policy": "",
"delete_bitmap": {},
diff --git a/be/test/runtime/array_test.cpp b/be/test/runtime/array_test.cpp
index 7adb6d3810..0c60965cb8 100644
--- a/be/test/runtime/array_test.cpp
+++ b/be/test/runtime/array_test.cpp
@@ -31,8 +31,6 @@
#include "io/fs/file_writer.h"
#include "io/fs/local_file_system.h"
#include "olap/field.h"
-#include "olap/fs/block_manager.h"
-#include "olap/fs/fs_util.h"
#include "olap/row_block2.h"
#include "olap/rowset/segment_v2/column_reader.h"
#include "olap/rowset/segment_v2/column_writer.h"
diff --git a/be/test/tools/benchmark_tool.cpp b/be/test/tools/benchmark_tool.cpp
index daa50bc86a..279305e72c 100644
--- a/be/test/tools/benchmark_tool.cpp
+++ b/be/test/tools/benchmark_tool.cpp
@@ -38,8 +38,6 @@
#include "io/fs/local_file_system.h"
#include "olap/comparison_predicate.h"
#include "olap/data_dir.h"
-#include "olap/fs/block_manager.h"
-#include "olap/fs/fs_util.h"
#include "olap/in_list_predicate.h"
#include "olap/olap_common.h"
#include "olap/row_block2.h"
diff --git a/gensrc/proto/olap_file.proto b/gensrc/proto/olap_file.proto
index 0ce1ca34cf..aafd94ef99 100644
--- a/gensrc/proto/olap_file.proto
+++ b/gensrc/proto/olap_file.proto
@@ -248,12 +248,6 @@ message S3StorageParamPB {
optional string root_path = 8;
}
-message StorageParamPB {
- optional StorageMediumPB storage_medium = 1 [default = HDD];
- optional string storage_name = 2 [default = "local"];
- optional S3StorageParamPB s3_storage_param = 3;
-}
-
message TabletMetaPB {
optional int64 table_id = 1; // ?
optional int64 partition_id = 2; // ?
@@ -278,8 +272,8 @@ message TabletMetaPB {
optional RowsetTypePB preferred_rowset_type = 16;
optional TabletTypePB tablet_type = 17;
repeated RowsetMetaPB stale_rs_metas = 18;
- optional StorageMediumPB storage_medium = 19 [default = HDD];
- optional string remote_storage_name = 20;
+ // optional StorageMediumPB storage_medium = 19 [default = HDD];
+ // optional string remote_storage_name = 20;
optional int64 replica_id = 21 [default = 0];
optional string storage_policy = 22;
optional DeleteBitmapPB delete_bitmap = 23;
diff --git a/gensrc/thrift/AgentService.thrift b/gensrc/thrift/AgentService.thrift
index 49d967f078..913b8aad96 100644
--- a/gensrc/thrift/AgentService.thrift
+++ b/gensrc/thrift/AgentService.thrift
@@ -79,12 +79,6 @@ struct TGetStoragePolicyResult {
2: required list<TGetStoragePolicy> result_entrys
}
-struct TStorageParam {
- 1: required Types.TStorageMedium storage_medium = TStorageMedium.HDD
- 2: required string storage_name = "";
- 3: optional TS3StorageParam s3_storage_param
-}
-
enum TCompressionType {
UNKNOWN_COMPRESSION = 0,
DEFAULT_COMPRESSION = 1,
@@ -117,7 +111,7 @@ struct TCreateTabletReq {
12: optional bool is_eco_mode
13: optional TStorageFormat storage_format
14: optional TTabletType tablet_type
- 15: optional TStorageParam storage_param
+ // 15: optional TStorageParam storage_param
16: optional TCompressionType compression_type = TCompressionType.LZ4F
17: optional Types.TReplicaId replica_id = 0
18: optional string storage_policy
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@doris.apache.org
For additional commands, e-mail: commits-help@doris.apache.org