[
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)