Github user justinleet commented on a diff in the pull request:

    https://github.com/apache/metron/pull/600#discussion_r120434003
  
    --- Diff: 
metron-platform/metron-common/src/main/java/org/apache/metron/common/utils/KafkaUtils.java
 ---
    @@ -68,12 +68,14 @@
         return ret;
       }
     
    -  public List<String> fromEndpoint(String url) throws URISyntaxException {
    +  public List<String> fromEndpoint(String url){
         List<String> ret = new ArrayList<>();
         if(url != null) {
    -      URI uri = new URI(url);
    -      int port = uri.getPort();
    -      ret.add(uri.getHost() + ((port > 0)?(":" + port):""));
    +      Iterable<String> splits = Splitter.on("//").split(url);
    +      if(Iterables.size(splits) == 2) {
    +        String hostPort = Iterables.getLast(splits);
    +        ret.add(hostPort);
    --- End diff --
    
    @mattf-horton You're absolutely not being a PITA.  Honestly, I tried to get 
a solution to a known problem out a little too quickly because it was actually 
experienced, so I'm actually pretty happy you're double checking me on this so 
something half baked didn't go in.
    
    So looking back at this a bit more fresh, this only gets called from 
`getBrokersFromZookeeper`.  The fact that's it's public isn't reflective of 
it's use (I'd probably argue package private, so it can be unit tested, or just 
better unit tested in general). 
    
    In practice, these aren't general URLs.  They're specifically from 
https://cwiki.apache.org/confluence/display/KAFKA/Kafka+data+structures+in+Zookeeper
    e.g.
    ```
      "endpoints": ["PLAINTEXT://host1:9092", "SSL://host1:9093"]
    ```
    
    So it's exactly protocol://host[:port] (to the best of my knowledge).  So 
while the URI solution is probably technically better (outside of the 
underscore issue), fixing the split should be perfectly fine, if a bit kludgier.
    
    Looking back at it, I'm pretty sure I didn't hit the right code path to 
trigger it in testing.  I'm going to adjust the unit tests to actually do 
something more useful, so we avoid these issues in the future. I'm also going 
to add a comment, so it's very explicit what the actual assumptions made by 
that function are.



---
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 [email protected] or file a JIRA ticket
with INFRA.
---

Reply via email to