phoenix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From joshelser <...@git.apache.org>
Subject [GitHub] phoenix pull request #236: PHOENIX-3654 Load Balancer for thin client
Date Tue, 06 Jun 2017 15:39:18 GMT
Github user joshelser commented on a diff in the pull request:

    https://github.com/apache/phoenix/pull/236#discussion_r120394548
  
    --- Diff: phoenix-queryserver/src/main/java/org/apache/phoenix/queryserver/server/QueryServer.java
---
    @@ -233,16 +240,29 @@ public int run(String[] args) throws Exception {
           // Build and start the HttpServer
           server = builder.build();
           server.start();
    +      registerToServiceProvider(hostname);
           runningLatch.countDown();
           server.join();
           return 0;
         } catch (Throwable t) {
           LOG.fatal("Unrecoverable service error. Shutting down.", t);
           this.t = t;
           return -1;
    +    } finally {
    +      deRegister();
         }
       }
     
    +  private void registerToServiceProvider(String hostName) throws Exception {
    +      PqsZookeeperConf pqsZookeeperConf = new PqsZookeeperConfImpl(getConf());
    --- End diff --
    
    Oh, I see now. You're instantiating these implementations directly.
    
    I think you should use Java's ServiceLoader to properly separate properly separate interface
from implementation across the queryserver and loadbalancer modules. Here in queryserver,
you would just refer to PqsZookeeperConf and Registry (but the concrete implementations would
be wired up by ServiceLoader as defined by the META-INF/services/... files you create). 
    
    If you're not familiar: https://docs.oracle.com/javase/tutorial/ext/basics/spi.html. Should
be pretty straightforward. e.g. this is also how the PhoenixDriver class is loaded for JDBC
(so there's example of what to do in phoenix-core).


---
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 infrastructure@apache.org or file a JIRA ticket
with INFRA.
---

Mime
View raw message