apache/druid · info

Ignored event type [ ] for node watcher of role [ ].

Error message

Ignored event type [%s] for node watcher of role [%s].

What it means

CuratorDruidNodeDiscoveryProvider's NodeRoleWatcher handleChildEvent received a Curator PathChildrenCacheEvent whose type is not one of the handled types (CHILD_ADDED, CHILD_UPDATED, CHILD_REMOVED, INITIALIZED). The event is dropped with a warning — typically CONNECTION_RECONNECTED / CONNECTION_SUSPENDED / CONNECTION_LOST events that reach the listener switch's default branch.

Solutions

  1. Usually informational — connection events are handled elsewhere via cache re-initialization; ignore if the node cache rebuilds afterward.
  2. If nodes appear stale after this warning, check for a subsequent cache reset/refresh or restart the affected Druid service.
  3. Verify ZK connectivity stability to reduce reconnect-related events.
  4. Upgrade Druid/Curator if unhandled event types cause missed node updates.
Defensive patterns

Strategy: retry

Prevention

When it happens

Trigger: Curator emits a connection-level event (e.g. CONNECTION_RECONNECTED after a ZK reconnect, or other unhandled event types) to the node-role watcher's child listener; handleChildEvent's switch has no case for it.

Common situations: ZK client reconnects, session suspensions during network blips, or Curator version changes introducing event types the switch doesn't cover.

Related errors


AI-assisted analysis of apache/druid@9b90983fd2 (2026-09-07). Data as JSON: /api/errors/292937f801e7d654. Report an issue: GitHub.

Appendix: source

Thrown at server/src/main/java/org/apache/druid/curator/discovery/CuratorDruidNodeDiscoveryProvider.java:249

    void handleChildEvent(PathChildrenCacheEvent event)
    {
      synchronized (lock) {
        try {
          switch (event.getType()) {
            case CHILD_ADDED: {
              childAdded(event);
              break;
            }
            case CHILD_REMOVED: {
              childRemoved(event);
              break;
            }
            case INITIALIZED: {
              baseNodeRoleWatcher.cacheInitialized();
              break;
            }
            default: {
              log.warn("Ignored event type [%s] for node watcher of role [%s].", event.getType(), nodeRole.getJsonName());
            }
          }
        }
        catch (Exception ex) {
          log.error(ex, "Unknown error in node watcher of role [%s].", nodeRole.getJsonName());
        }
      }
    }

    @GuardedBy("lock")
    private void childAdded(PathChildrenCacheEvent event) throws IOException
    {
      final byte[] data = getZkDataForNode(event.getData());
      if (data == null) {
        log.error(
            "Failed to get data for path [%s]. Ignoring a child addition event.",
            event.getData().getPath()
        );

View on GitHub (pinned to 9b90983fd2)