| 1 | #include <list> |
| 2 | #include <Storages/MergeTree/ReplicatedMergeTreeLogEntry.h> |
| 3 | #include <Common/ZooKeeper/ZooKeeper.h> |
| 4 | #include <boost/program_options.hpp> |
| 5 | |
| 6 | |
| 7 | int main(int argc, char ** argv) |
| 8 | try |
| 9 | { |
| 10 | boost::program_options::options_description desc("Allowed options" ); |
| 11 | desc.add_options() |
| 12 | ("help,h" , "produce help message" ) |
| 13 | ("address,a" , boost::program_options::value<std::string>()->required(), |
| 14 | "addresses of ZooKeeper instances, comma separated. Example: example01e.yandex.ru:2181" ) |
| 15 | ("path,p" , boost::program_options::value<std::string>()->required(), "path of replica queue to insert node (without trailing slash)" ) |
| 16 | ("name,n" , boost::program_options::value<std::string>()->required(), "name of part to download" ) |
| 17 | ; |
| 18 | |
| 19 | boost::program_options::variables_map options; |
| 20 | boost::program_options::store(boost::program_options::parse_command_line(argc, argv, desc), options); |
| 21 | |
| 22 | if (options.count("help" )) |
| 23 | { |
| 24 | std::cout << "Insert log entry to replication queue to download part from any replica." << std::endl; |
| 25 | std::cout << "Usage: " << argv[0] << " [options]" << std::endl; |
| 26 | std::cout << desc << std::endl; |
| 27 | return 1; |
| 28 | } |
| 29 | |
| 30 | std::string path = options.at("path" ).as<std::string>(); |
| 31 | std::string name = options.at("name" ).as<std::string>(); |
| 32 | |
| 33 | zkutil::ZooKeeper zookeeper(options.at("address" ).as<std::string>()); |
| 34 | |
| 35 | DB::ReplicatedMergeTreeLogEntry entry; |
| 36 | entry.type = DB::ReplicatedMergeTreeLogEntry::MERGE_PARTS; |
| 37 | entry.source_parts = {name}; |
| 38 | entry.new_part_name = name; |
| 39 | |
| 40 | zookeeper.create(path + "/queue-" , entry.toString(), zkutil::CreateMode::PersistentSequential); |
| 41 | return 0; |
| 42 | } |
| 43 | catch (const Poco::Exception & e) |
| 44 | { |
| 45 | std::cerr << DB::getCurrentExceptionMessage(true) << '\n'; |
| 46 | throw; |
| 47 | } |
| 48 | |