{"record":{"id":"264401d661d64c84","repo":"apache/druid","slug":"found-lookups-for-tier-s-in-db-but-no-nodes-di","errorCode":null,"errorMessage":"Found lookups for tier [%s] in DB, but no nodes discovered for it","messagePattern":"Found lookups for tier \\[(.+?)\\] in DB, but no nodes discovered for it","errorType":"console","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"server/src/main/java/org/apache/druid/server/lookup/cache/LookupCoordinatorManager.java","lineNumber":564,"sourceCode":"    final Map<String, Map<String, LookupExtractorFactoryMapContainer>> allLookupTiers = lookupMapConfigRef.get();\n\n    if (allLookupTiers == null) {\n      LOG.info(\"Not updating lookups because no data exists\");\n      return;\n    }\n\n    LOG.debug(\"Starting lookup sync for on all nodes.\");\n\n    try {\n      List<ListenableFuture<Map.Entry>> futures = new ArrayList<>();\n\n      Set<String> discoveredLookupTiers = lookupNodeDiscovery.getAllTiers();\n\n      // Check and Log warnings about lookups configured by user in DB but no nodes discovered to load those.\n      for (String tierInDB : allLookupTiers.keySet()) {\n        if (!discoveredLookupTiers.contains(tierInDB) &&\n            !allLookupTiers.getOrDefault(tierInDB, ImmutableMap.of()).isEmpty()) {\n          LOG.warn(\"Found lookups for tier [%s] in DB, but no nodes discovered for it\", tierInDB);\n        }\n      }\n\n      for (String tier : discoveredLookupTiers) {\n\n        LOG.debug(\"Starting lookup mgmt for tier [%s].\", tier);\n\n        final Map<String, LookupExtractorFactoryMapContainer> tierLookups = allLookupTiers.getOrDefault(tier, ImmutableMap.of());\n        for (final HostAndPortWithScheme node : lookupNodeDiscovery.getNodesInTier(tier)) {\n\n          LOG.debug(\n              \"Starting lookup mgmt for tier [%s] and host [%s:%s:%s].\",\n              tier,\n              node.getScheme(),\n              node.getHostText(),\n              node.getPort()\n          );\n","sourceCodeStart":546,"sourceCodeEnd":582,"githubUrl":"https://github.com/apache/druid/blob/9b90983fd291f26935af934383ce360473179e4d/server/src/main/java/org/apache/druid/server/lookup/cache/LookupCoordinatorManager.java#L546-L582","documentation":"During the lookup management loop, the coordinator compares tiers that have lookups configured in the metadata store (DB) against tiers discovered from live lookup nodes. If a tier has lookups configured but no nodes were discovered to host them, it logs a warning. The lookups for that tier cannot be loaded anywhere until nodes join.","triggerScenarios":"lookupManagementLoop runs, allLookupTiers from the DB contains a non-empty tier, and lookupNodeDiscovery.getAllTiers() does not report that tier.","commonSituations":"All lookup nodes of a tier are down; tier name typo between cluster configuration and DB entries; service discovery (druid.discovery) misconfiguration; nodes not yet started after fresh deployment.","solutions":["Verify lookup nodes for the tier are running and discoverable via service discovery.","Check the tier name in lookup configuration matches the druid.lookup.lookupTier of running nodes.","If the tier is intentionally empty, remove its lookups from the DB or delete the tier."],"exampleFix":"// before (DB config)\n{\"tier\":\"__default\",\"lookups\":{\"country\":{\"v\":1,...}}}\n// after: ensure nodes announce tier\n// druid.lookup.lookupTier=\"__default\" and node is up, or remove unused lookups from the tier","handlingStrategy":"validation","validationCode":"// before relying on a tier\nboolean tierHasNodes = lookupCoordinatorManager.getAllTiers().contains(tier);\nif (!tierHasNodes) { LOG.warn(\"tier %s has no nodes; lookups will not be loaded\", tier); }","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Keep tier names consistent between DB lookup config and node druid.lookup.lookupTier","Monitor node discovery health; alert when configured tiers have zero discovered nodes","Ensure lookup nodes register with service discovery on startup"],"tags":["lookups","service-discovery","configuration"],"backgroundTag":"resource-not-found","analyzedSha":"9b90983fd291f26935af934383ce360473179e4d","analyzedAt":"2026-09-07T13:32:30.957Z","contentChangedAt":"2026-09-07T13:32:30.957Z","schemaVersion":2},"datasetVersion":"2026-09-17T15:17:12.973Z"}