public void start() throws Exception { Exceptions.checkNotClosed(this.closed, this); log.info("Initializing metrics provider ..."); MetricsProvider.initialize(builderConfig.getConfig(MetricsConfig::builder)); statsProvider = MetricsProvider.getMetricsProvider(); statsProvider.start(); log.info("Initializing ZooKeeper Client ..."); this.zkClient = createZKClient(); log.info("Initializing Service Builder ..."); this.serviceBuilder.initialize(); log.info("Creating StreamSegmentService ..."); StreamSegmentStore service = this.serviceBuilder.createStreamSegmentService(); log.info("Creating TableStoreService ..."); TableStore tableStoreService = this.serviceBuilder.createTableStoreService(); log.info("Creating Segment Stats recorder ..."); segmentStatsFactory = new SegmentStatsFactory(); SegmentStatsRecorder statsRecorder = segmentStatsFactory .createSegmentStatsRecorder(service, builderConfig.getConfig(AutoScalerConfig::builder)); TokenVerifierImpl tokenVerifier = new TokenVerifierImpl(builderConfig.getConfig(AutoScalerConfig::builder)); this.listener = new PravegaConnectionListener(this.serviceConfig.isEnableTls(), this.serviceConfig.getListeningIPAddress(), this.serviceConfig.getListeningPort(), service, tableStoreService, statsRecorder, tokenVerifier, this.serviceConfig.getCertFile(), this.serviceConfig.getKeyFile(), this.serviceConfig.isReplyWithStackTraceOnError()); this.listener.startListening(); log.info("PravegaConnectionListener started successfully."); log.info("StreamSegmentService started."); }