* Copyright (c) Huawei Technologies Co., Ltd. 2025. All rights reserved.
* You can use this software according to the terms and conditions of the Mulan PSL v2.
* You may obtain a copy of Mulan PSL v2 at:
* http://license.coscl.org.cn/MulanPSL2
* THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
* EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
* MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
* See the Mulan PSL v2 for more details.
*/
#ifndef OMNISTREAM_ROCKSDBNONERESTOREOPERATION_H
#define OMNISTREAM_ROCKSDBNONERESTOREOPERATION_H
#include "runtime/state/restore/RocksDBRestoreOperation.h"
#include "runtime/state/restore/RocksDBRestoreResult.h"
#include "runtime/state/rocksdb/RocksDbHandle.h"
#include "runtime/state/RocksDbKvStateInfo.h"
#include "streaming/runtime/metrics/MetricGroup.h"
#include "runtime/state/UUID.h"
class RocksDBNoneRestoreOperation : public RocksDBRestoreOperation {
public:
RocksDBNoneRestoreOperation(
std::unordered_map<std::string, std::shared_ptr<RocksDbKvStateInfo>> *kvStateInformation,
std::filesystem::path& instanceRocksDBPath,
std::shared_ptr<rocksdb::DBOptions> dbOptions,
std::function<rocksdb::ColumnFamilyOptions(const std::string&)> columnFamilyOptionsFactory)
{
this->rocksHandle = std::make_unique<RocksDbHandle>(
kvStateInformation,
instanceRocksDBPath,
dbOptions,
columnFamilyOptionsFactory);
}
~RocksDBNoneRestoreOperation() = default;
std::shared_ptr<RocksDBRestoreResult> restore() override
{
rocksHandle->openDB();
return std::make_unique<RocksDBRestoreResult>(
rocksHandle->getDb(),
rocksHandle->getDefaultColumnFamilyHandle(),
-1,
UUID(),
std::map<long, std::vector<IncrementalKeyedStateHandle::HandleAndLocalPath>>()
);
}
private:
std::unique_ptr<RocksDbHandle> rocksHandle;
};
#endif