ltagliamonte-dd commented on code in PR #2845:
URL: https://github.com/apache/kvrocks/pull/2845#discussion_r2044405297
##########
src/storage/storage.cc:
##########
@@ -769,6 +770,101 @@ rocksdb::Status Storage::FlushScripts(engine::Context
&ctx, const rocksdb::Write
return Write(ctx, options, batch->GetWriteBatch());
}
+StatusOr<int> Storage::IngestSST(const std::string &sst_dir, const
rocksdb::IngestExternalFileOptions &ingest_options) {
+ if (config_->cluster_enabled) {
+ return {Status::NotOK, "SST command is not supported in cluster mode"};
+ }
+ std::vector<std::string> sst_files;
+ DIR *dir = opendir(sst_dir.c_str());
+ if (!dir) {
+ return {Status::NotOK, "Failed to open directory " + sst_dir};
+ }
+
+ struct dirent *entry = nullptr;
+ while ((entry = readdir(dir)) != nullptr) {
+ std::string filename = entry->d_name;
+ if (filename.length() >= 4 && filename.substr(filename.length() - 4) ==
".sst") {
+ sst_files.push_back(sst_dir + "/" + filename);
+ }
+ }
+ closedir(dir);
+
+ if (sst_files.empty()) {
+ LOG(WARNING) << "No SST files found in " << sst_dir;
+ return 0;
+ }
+
+ // Create a map to store SST files for each column family
+ std::unordered_map<std::string_view, std::vector<std::string>> cf_files;
+
+ // Initialize vectors for each column family
+ std::vector<std::string> cf_names;
+ for (const auto &cf : ColumnFamilyConfigs::ListAllColumnFamilies()) {
+ cf_names.emplace_back(cf.Name());
+ }
+
+ // Initialize vectors for each column family
+ for (const auto &cf_name : cf_names) {
+ cf_files[cf_name] = std::vector<std::string>();
+ }
+
+ // Sort files into appropriate vectors based on filename
+ for (const auto &file : sst_files) {
+ bool matched = false;
+ for (const auto &cf_name : cf_names) {
+ if (file.find(cf_name) != std::string::npos) {
+ cf_files[cf_name].push_back(file);
+ matched = true;
+ break;
+ }
+ }
+ // If no match found, assume it belongs to default CF
+ if (!matched) {
+ cf_files[rocksdb::kDefaultColumnFamilyName].push_back(file);
Review Comment:
addressed via 04d0aa3dd4e9ff1d64e9b0337c831aeba29528c4
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]