src/kudu/tserver/tablet_server_options.h (44 lines of code) (raw):

// 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. #ifndef KUDU_TSERVER_TABLET_SERVER_OPTIONS_H #define KUDU_TSERVER_TABLET_SERVER_OPTIONS_H #include <vector> #include <memory> #include "kudu/consensus/metadata.pb.h" #include "kudu/consensus/proxy_policy.h" #include "kudu/server/server_base_options.h" #include "kudu/util/net/net_util.h" namespace kudu { namespace log { class LogFactory; } namespace consensus { class ConsensusRoundHandler; class OpId; struct ElectionResult; struct ElectionContext; } namespace KC = kudu::consensus; namespace tserver { // Options for constructing a tablet server. // These are filled in by gflags by default -- see the .cc file for // the list of options and corresponding flags. // // This allows tests to easily start miniclusters with different // tablet servers having different options. struct TabletServerOptions : public kudu::server::ServerBaseOptions { TabletServerOptions(); std::vector<HostPort> tserver_addresses; std::vector<std::string> tserver_regions; std::vector<bool> tserver_bbd; // bootstrap tservers can be directly passed in // by application std::vector<KC::RaftPeerPB> bootstrap_tservers; std::shared_ptr<kudu::log::LogFactory> log_factory; kudu::consensus::ConsensusRoundHandler *round_handler = nullptr; kudu::consensus::ProxyPolicy proxy_policy = kudu::consensus::ProxyPolicy::DURABLE_ROUTING_POLICY; // Election Decision Callback std::function<void(const consensus::ElectionResult&, const consensus::ElectionContext&)> edcb; // Term Advancement Callback std::function<void(int64_t)> tacb; // No-OP received Callback std::function<void(const consensus::OpId id, const kudu::consensus::RaftPeerPB&)> norcb; // Leader Detected Callback. This should eventually be reconciled // with NORCB. std::function<void(int64_t, const kudu::consensus::RaftPeerPB&)> ldcb; bool disable_noop = false; // This is to enable a fresh instance join the ring with logs from // a certain opid and term. bool log_bootstrap_on_first_run = false; consensus::TopologyConfigPB topology_config; // Enables functionality provided by kudu::consensus::TimeManager bool enable_time_manager = true; bool IsDistributed() const; }; } // namespace tserver } // namespace kudu #endif /* KUDU_TSERVER_TABLET_SERVER_OPTIONS_H */