Hi Gian, Thank you for pointing that out. Although I'm getting following error when using DiscoveryDruidNode
// Declared a variable in MyEmitter private final DiscoveryDruidNode discoveryDruidNode; // Added in Constructor public MyEmitter( MyEmitterConfig myEmitterConfig, ObjectMapper mapper, DiscoveryDruidNode discoveryDruidNode ) { this.mapper = mapper; this.myEmitterConfig = myEmitterConfig; this.whiteListMetricsMap = readMap(myEmitterConfig.getWhiteListMetricsMapPath()); this.discoveryDruidNode = discoveryDruidNode; log.info("Constructed MyEmitter"); } // Added a log.info in emit() method just to check if it works log.info("NodeRole: " + discoveryDruidNode.getNodeRole().getJsonName()); Below is the error I'm getting: 1) Could not find a suitable constructor in org.apache.druid.discovery.DiscoveryDruidNode. Classes must have either one (and only one) constructor annotated with @Inject or a zero-argument constructor that is not private. at org.apache.druid.discovery.DiscoveryDruidNode.class(DiscoveryDruidNode.java:47) while locating org.apache.druid.discovery.DiscoveryDruidNode for the 3rd parameter of com.custom.MyEmitterModule.getEmitter(MyEmitterModule.java:39) According to the error, it looks like I cannot add DiscoveryDruidNode because it does not have @Inject or a zero-argument constructor. But I'm able to ad my MyEmitterConfig class which does not have zero-argument constructor. On 2021/08/22 23:40:08, Gian Merlino <g...@apache.org> wrote: > Does the "getNodeRole()" method on DiscoveryDruidNode do what you want? > > On Fri, Aug 20, 2021 at 3:07 PM Jeet Patel <jp707...@gmail.com> wrote: > > > Hi all, > > > > Is there a way to to know what druid services are running in a DruidNode > > (Not > > talking about the HTTP APIs)? > > I went through druid-server module, class > > DruidNodeDiscoveryProvider.getForNodeRole which accepts a NodeRole and > > returns a DruidNodeDiscovery instance after which we can use > > getAllNodes() method > > which returns Collection<DiscoveryDruidNode>. And for each item in the > > Collection<DiscoveryDruidNode> we can use getServiceName() method to get > > the service name. > > > > The question is, how can we get the instance of NodeRole running in the > > druid process. For example, if we have a host running broker service, is > > there a way to get NodeRole for broker process dynamically? > > > > For now I'm doing something like this. Adding all NodeRole in every host, > > since our extension runs in every host.: > > > > List<DruidNodeDiscovery> druidNodeDiscoveryList = ImmutableList.of( > > druidNodeDiscoveryProvider.getForNodeRole(NodeRole.COORDINATOR), > > druidNodeDiscoveryProvider.getForNodeRole(NodeRole.OVERLORD), > > druidNodeDiscoveryProvider.getForNodeRole(NodeRole.HISTORICAL), > > druidNodeDiscoveryProvider.getForNodeRole(NodeRole.MIDDLE_MANAGER), > > druidNodeDiscoveryProvider.getForNodeRole(NodeRole.INDEXER), > > druidNodeDiscoveryProvider.getForNodeRole(NodeRole.BROKER), > > druidNodeDiscoveryProvider.getForNodeRole(NodeRole.ROUTER) > > ); > > > > I'm trying to build an extension. So this extension will run in every hosts > > in our druid cluster. After getting the service details we wanted to some > > further procession from our side. > > > > Will really appreciate some pointers on this. > > > > Thank you :) > > > --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@druid.apache.org For additional commands, e-mail: dev-h...@druid.apache.org