@Inject public BrokerServerView( QueryToolChestWarehouse warehouse, QueryWatcher queryWatcher, @Smile ObjectMapper smileMapper, @Client HttpClient httpClient, FilteredServerInventoryView baseView, TierSelectorStrategy tierSelectorStrategy, ServiceEmitter emitter, final BrokerSegmentWatcherConfig segmentWatcherConfig) { this.warehouse = warehouse; this.queryWatcher = queryWatcher; this.smileMapper = smileMapper; this.httpClient = httpClient; this.baseView = baseView; this.tierSelectorStrategy = tierSelectorStrategy; this.emitter = emitter; this.clients = Maps.newConcurrentMap(); this.selectors = Maps.newHashMap(); this.timelines = Maps.newHashMap(); this.segmentFilter = new Predicate<Pair<DruidServerMetadata, DataSegment>>() { @Override public boolean apply(Pair<DruidServerMetadata, DataSegment> input) { if (segmentWatcherConfig.getWatchedTiers() != null && !segmentWatcherConfig.getWatchedTiers().contains(input.lhs.getTier())) { return false; } if (segmentWatcherConfig.getWatchedDataSources() != null && !segmentWatcherConfig .getWatchedDataSources() .contains(input.rhs.getDataSource())) { return false; } return true; } }; ExecutorService exec = Execs.singleThreaded("BrokerServerView-%s"); baseView.registerSegmentCallback( exec, new ServerView.SegmentCallback() { @Override public ServerView.CallbackAction segmentAdded( DruidServerMetadata server, DataSegment segment) { serverAddedSegment(server, segment); return ServerView.CallbackAction.CONTINUE; } @Override public ServerView.CallbackAction segmentRemoved( final DruidServerMetadata server, DataSegment segment) { serverRemovedSegment(server, segment); return ServerView.CallbackAction.CONTINUE; } @Override public CallbackAction segmentViewInitialized() { initialized = true; return ServerView.CallbackAction.CONTINUE; } }, segmentFilter); baseView.registerServerCallback( exec, new ServerView.ServerCallback() { @Override public ServerView.CallbackAction serverRemoved(DruidServer server) { removeServer(server); return ServerView.CallbackAction.CONTINUE; } }); }
@Override public void registerSegmentCallback(Executor exec, SegmentCallback callback) { baseView.registerSegmentCallback(exec, callback, segmentFilter); }