You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@geode.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2017/05/03 23:18:04 UTC

[jira] [Commented] (GEODE-2812) Add API to get list of live locators

    [ https://issues.apache.org/jira/browse/GEODE-2812?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15995887#comment-15995887 ] 

ASF GitHub Bot commented on GEODE-2812:
---------------------------------------

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

    https://github.com/apache/geode/pull/475#discussion_r114674811
  
    --- Diff: geode-core/src/main/java/org/apache/geode/cache/client/Pool.java ---
    @@ -193,13 +193,23 @@
       /**
        * Returns an unmodifiable list of {@link java.net.InetSocketAddress} of the locators this pool is
        * using. Each locator is either one {@link PoolFactory#addLocator added explicitly} when the pool
    -   * was created or were discovered using the explicit locators.
    +   * was created.
        * <p>
        * If a pool has no locators then it can not discover servers or locators at runtime.
        */
       public java.util.List<InetSocketAddress> getLocators();
     
       /**
    +   * Returns an unmodifiable list of {@link java.net.InetSocketAddress} of the locators this pool is
    +   * using. The returned locator is only the currently living locator found based on the periodic
    +   * locator list request.
    +   * <p>
    +   * The returned locator list may be slightly old information. If the locator does not exist, an
    +   * empty list is returned.
    +   */
    +  public java.util.List<InetSocketAddress> getLiveLocators();
    --- End diff --
    
    We usually use the terms "online" vs "offline" to distinguish between a member or server that's currently running or not. I would recommend changing from "live" to "online":
    ```java
    List<InetSocketAddress> getOnlineLocators();
    ```


> Add API to get list of live locators
> ------------------------------------
>
>                 Key: GEODE-2812
>                 URL: https://issues.apache.org/jira/browse/GEODE-2812
>             Project: Geode
>          Issue Type: Improvement
>          Components: client/server
>            Reporter: Masaki Yamakawa
>            Priority: Minor
>
> There is a Geode cluster using a logical member group, and from the client, the connection pool to the logical member group is connected using the PoolFactory API at the timing when connection becomes necessary.
> At this time, even though the locator that was running at the initial connection stops due to reasons such as regular maintenance etc., even if the alternate locator is started before maintenance, I can not connect to the locator in the static initial list.
> # Client side:PoolManager.createFactory().addLocator("localhost", 10334).setServerGroup("GroupA").create("pool1");
> # Geode cluster:start locator [ localhost:10335 ].
> # Geode cluster:stop locator [ localhost:10334 ].
> # Client side:PoolManager.createFactory().addLocator("localhost", 10334).setServerGroup("GroupB").create("pool2");
> Therefore, I would like to decide the connection destination based on the live locator list of another logical member group.
> I added an API that can get the list of live locators from the Pool. Use the API as follows:
> {code:java|borderStyle=solid}
> Pool pool = PoolManager.createFactory()
>   .addLocator("localhost", 10334)
>   .setSubscriptionEnabled(true).setServerGroup("GroupA")
>   .create("GroupAPool");
> List<InetSocketAddress> = pool.getLiveLocators();
> {code}
> {quote}
> Note:
> The list of live locators gets the result of the UpdateLocatorListTask periodically running in AutoConnectionSourceImpl.
> Therefore, whether or not it is alive will cause a time lag, depending on the task execution interval.
> Also, the result of ExplicitConnectionSourceImpl without using a locator is always empty.
> {quote}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)