start datanode in distributed mode
(cfg common.AresServerConfig, logger common.Logger, scope tally.Scope, httpWrappers ...utils.HTTPHandlerWrapper)
| 254 | |
| 255 | // start datanode in distributed mode |
| 256 | func startDataNode(cfg common.AresServerConfig, logger common.Logger, scope tally.Scope, httpWrappers ...utils.HTTPHandlerWrapper) { |
| 257 | opts := datanode.NewOptions().SetServerConfig(cfg).SetInstrumentOptions(utils.NewOptions()).SetBootstrapOptions(bootstrap.NewOptions()).SetHTTPWrappers(httpWrappers) |
| 258 | |
| 259 | var topo topology.Topology |
| 260 | etcdCfg := cfg.Cluster.Etcd |
| 261 | etcdCfg.Service = utils.DataNodeServiceName(cfg.Cluster.Namespace) |
| 262 | configServiceCli, err := etcdCfg.NewClient(instrument.NewOptions()) |
| 263 | if err != nil { |
| 264 | logger.With("error", err.Error()).Fatal("failed to create etcd client", err) |
| 265 | } |
| 266 | |
| 267 | txnStore, err := configServiceCli.Txn() |
| 268 | if err != nil { |
| 269 | logger.With("error", err.Error()).Fatal("failed to create txn store") |
| 270 | } |
| 271 | |
| 272 | enumReader := etcd.NewEnumMutator(txnStore, etcd.NewTableSchemaMutator(txnStore, zap.NewExample().Sugar())) |
| 273 | |
| 274 | dynamicOptions := topology.NewDynamicOptions(). |
| 275 | SetConfigServiceClient(configServiceCli). |
| 276 | SetQueryOptions(services.NewQueryOptions().SetIncludeUnhealthy(true)). |
| 277 | SetServiceID(services.NewServiceID(). |
| 278 | SetZone(etcdCfg.Zone). |
| 279 | SetName(etcdCfg.Service). |
| 280 | SetEnvironment(etcdCfg.Env)) |
| 281 | topo, err = topology.NewDynamicInitializer(dynamicOptions).Init() |
| 282 | if err != nil { |
| 283 | logger.Fatal("Failed to initialize dynamic topology,", err) |
| 284 | } |
| 285 | |
| 286 | dataNode, err := datanode.NewDataNode(cfg.Cluster.InstanceID, topo, enumReader, opts) |
| 287 | if err != nil { |
| 288 | logger.Fatal("Failed to create datanode,", err) |
| 289 | } |
| 290 | defer dataNode.Close() |
| 291 | |
| 292 | // preparing |
| 293 | err = dataNode.Open() |
| 294 | if err != nil { |
| 295 | logger.Fatal("Failed to open datanode,", err) |
| 296 | } |
| 297 | // start serving traffic |
| 298 | dataNode.Serve() |
| 299 | } |
no test coverage detected