yuanlihan commented on a change in pull request #10421:
URL: https://github.com/apache/druid/pull/10421#discussion_r509937891



##########
File path: 
server/src/main/java/org/apache/druid/query/lookup/LookupReferencesManager.java
##########
@@ -587,6 +594,43 @@ private StringFullResponseHolder 
fetchLookupsForTier(String tier) throws Interru
     void handle(Map<String, LookupExtractorFactoryContainer> lookupMap) throws 
Exception;
   }
 
+  private static class StatusNotice implements Notice
+  {
+    private final LookupReferencesManager manager;
+    private final String lookupName;
+    private final LookupExtractorFactoryContainer 
lookupExtractorFactoryContainer;
+
+    public StatusNotice(
+        LookupReferencesManager manager,
+        String lookupName,
+        LookupExtractorFactoryContainer lookupExtractorFactoryContainer
+    )
+    {
+      this.manager = manager;
+      this.lookupName = lookupName;
+      this.lookupExtractorFactoryContainer = lookupExtractorFactoryContainer;
+    }
+
+    @Override
+    public void handle(Map<String, LookupExtractorFactoryContainer> lookupMap)
+    {
+      if 
(lookupExtractorFactoryContainer.getLookupExtractorFactory().isReady()) {
+        LookupExtractorFactoryContainer old = lookupMap.put(lookupName, 
lookupExtractorFactoryContainer);
+
+        LOG.info("Loaded lookup [%s] with spec [%s].", lookupName, 
lookupExtractorFactoryContainer);
+
+        if (old != null) {
+          if (!old.getLookupExtractorFactory().destroy()) {
+            throw new ISE("destroy method returned false for lookup 
[%s]:[%s]", lookupName, old);
+          }
+        }
+      } else {
+        LOG.info("Loading lookup [%s] with spec [%s].", lookupName, 
lookupExtractorFactoryContainer);
+        manager.addNotice(new StatusNotice(manager, lookupName, 
lookupExtractorFactoryContainer));

Review comment:
       If there is a new cached lookup being initialised, then this lookup will 
not be visible to queries. And queries will failed with `Lookup [xxx] not 
found` error, see 
https://github.com/apache/druid/blob/1b9a8c46874520d22b65573eeabfa3a62e16a5e0/processing/src/main/java/org/apache/druid/query/lookup/RegisteredLookupExtractionFn.java#L151
   
   This PR only tries to improve the use case of updating an existing lookup 
with higher version. And I agree that this 
[proposal](https://github.com/apache/druid/issues/10294) will improve these use 
cases on a general level.




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org



---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@druid.apache.org
For additional commands, e-mail: commits-h...@druid.apache.org

Reply via email to