Github user paul-rogers commented on a diff in the pull request:

    https://github.com/apache/drill/pull/701#discussion_r99454038
  
    --- Diff: 
exec/java-exec/src/main/java/org/apache/drill/exec/expr/fn/FunctionImplementationRegistry.java
 ---
    @@ -140,27 +142,39 @@ public void register(DrillOperatorTable 
operatorTable) {
       }
     
       /**
    -   * Using the given <code>functionResolver</code>
    -   * finds Drill function implementation for given 
<code>functionCall</code>.
    -   * If function implementation was not found,
    -   * loads all missing remote functions and tries to find Drill 
implementation one more time.
    +   * First attempts to finds the Drill function implementation that 
matches the name, arg types and return type.
    +   * If exact function implementation was not found,
    +   * syncs local function registry with remote function registry if needed
    +   * and tries to find function implementation one more time
    --- End diff --
    
    While this sounds pretty good, consider a possible condition. Suppose a 
user consistently uses an overloaded method. Every one of those queries will 
need to check with ZK. Drill is supposed to handle many concurrent queries. 
Each of those will trigger the update. Soon, we'll be pounding on ZK hundreds 
of times per second.
    
    The "not found" case was fine to force a sync since a user would not, 
presumably, continually issue such queries if the function really were 
undefined. But, the overloaded function case is possible, and can lead to 
performance issues.


---
If your project is set up for it, you can reply to this email and have your
reply appear on GitHub as well. If your project does not have this feature
enabled and wishes so, or if the feature is enabled but not working, please
contact infrastructure at infrastruct...@apache.org or file a JIRA ticket
with INFRA.
---

Reply via email to