From 7e7a3ca9f809acf3fbc82f8d15d705ea27f5b953 Mon Sep 17 00:00:00 2001 From: brycezhongqing Date: Mon, 7 Oct 2024 16:10:45 -0700 Subject: [PATCH 01/12] add kafka announcement only logic --- CHANGELOG.md | 5 +- .../balancer/servers/ConnectionManager.java | 114 ++++++++++++++++++ .../servers/ZooKeeperConnectionManager.java | 96 ++------------- deprecate.sh | 8 ++ gradle.properties | 2 +- 5 files changed, 139 insertions(+), 86 deletions(-) create mode 100644 d2/src/main/java/com/linkedin/d2/balancer/servers/ConnectionManager.java create mode 100644 deprecate.sh diff --git a/CHANGELOG.md b/CHANGELOG.md index 2da2f25c37..d2e9752ca0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,8 @@ and what APIs have changed, if applicable. ## [Unreleased] +## [29.58.12] - 2024-10-07 +- Add support for announcing/deannoucing service only to INDIS ## [29.58.11] - 2024-10-03 - Add getters in ZookeeperAnnouncer @@ -5743,7 +5745,8 @@ patch operations can re-use these classes for generating patch messages. ## [0.14.1] -[Unreleased]: https://github.com/linkedin/rest.li/compare/v29.58.11...master +[Unreleased]: https://github.com/linkedin/rest.li/compare/v29.58.12...master +[29.58.12]: https://github.com/linkedin/rest.li/compare/v29.58.11...v29.58.12 [29.58.11]: https://github.com/linkedin/rest.li/compare/v29.58.10...v29.58.11 [29.58.10]: https://github.com/linkedin/rest.li/compare/v29.58.9...v29.58.10 [29.58.9]: https://github.com/linkedin/rest.li/compare/v29.58.8...v29.58.9 diff --git a/d2/src/main/java/com/linkedin/d2/balancer/servers/ConnectionManager.java b/d2/src/main/java/com/linkedin/d2/balancer/servers/ConnectionManager.java new file mode 100644 index 0000000000..86e5f97d84 --- /dev/null +++ b/d2/src/main/java/com/linkedin/d2/balancer/servers/ConnectionManager.java @@ -0,0 +1,114 @@ +package com.linkedin.d2.balancer.servers; + +import com.linkedin.common.callback.Callback; +import com.linkedin.common.callback.Callbacks; +import com.linkedin.common.util.None; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public abstract class ConnectionManager +{ + private final ZooKeeperAnnouncer[] _servers; + private final String _zkConnectString; + private final int _zkSessionTimeout; + private final String _zkBasePath; + + private static final Logger LOG = LoggerFactory.getLogger(ConnectionManager.class); + + protected ConnectionManager(ZooKeeperAnnouncer[] servers, String zkConnectString, int zkSessionTimeout, String zkBasePath) + { + _servers = servers; + _zkConnectString = zkConnectString; + _zkSessionTimeout = zkSessionTimeout; + _zkBasePath = zkBasePath; + } + + abstract public void start(Callback callback); + + abstract public void shutdown(final Callback callback); + + public void markDownAllServers(final Callback callback) + { + Callback markDownCallback; + if (callback != null) + { + markDownCallback = callback; + } + else + { + markDownCallback = new Callback() + { + @Override + public void onError(Throwable e) + { + LOG.error("failed to mark down servers", e); + } + + @Override + public void onSuccess(None result) + { + LOG.info("mark down all servers successful"); + } + }; + } + Callback multiCallback = Callbacks.countDown(markDownCallback, _servers.length); + for (ZooKeeperAnnouncer server : _servers) + { + server.markDown(multiCallback); + } + } + + public void markUpAllServers(final Callback callback) + { + Callback markUpCallback; + if (callback != null) + { + markUpCallback = callback; + } + else + { + markUpCallback = new Callback() + { + @Override + public void onError(Throwable e) + { + LOG.error("failed to mark up servers", e); + } + + @Override + public void onSuccess(None result) + { + LOG.info("mark up all servers successful"); + } + }; + } + Callback multiCallback = Callbacks.countDown(markUpCallback, _servers.length); + for (ZooKeeperAnnouncer server : _servers) + { + server.markUp(multiCallback); + } + + } + + public ZooKeeperAnnouncer[] getAnnouncers() + { + return _servers; + } + + abstract public boolean isSessionEstablished(); + + public String getZooKeeperConnectString() + { + return _zkConnectString; + } + + public int getZooKeeperSessionTimeout() + { + return _zkSessionTimeout; + } + + public String getZooKeeperBasePath() + { + return _zkBasePath; + } +} diff --git a/d2/src/main/java/com/linkedin/d2/balancer/servers/ZooKeeperConnectionManager.java b/d2/src/main/java/com/linkedin/d2/balancer/servers/ZooKeeperConnectionManager.java index 1eda85e193..f1d6073054 100644 --- a/d2/src/main/java/com/linkedin/d2/balancer/servers/ZooKeeperConnectionManager.java +++ b/d2/src/main/java/com/linkedin/d2/balancer/servers/ZooKeeperConnectionManager.java @@ -46,7 +46,7 @@ * @version $Revision: $ */ -public class ZooKeeperConnectionManager +public class ZooKeeperConnectionManager extends ConnectionManager { private static final Logger LOG = LoggerFactory.getLogger(ZooKeeperConnectionManager.class); @@ -79,6 +79,10 @@ public ZooKeeperConnectionManager(ZKPersistentConnection zkConnection, ZKStoreFactory> factory, ZooKeeperAnnouncer... servers) { + super(servers, + zkConnection.getZKConnection().getConnectString(), + zkConnection.getZKConnection().getTimeout(), + zkBasePath); _zkBasePath = zkBasePath; _zkConnection = zkConnection; _factory = factory; @@ -94,6 +98,10 @@ public ZooKeeperConnectionManager(String zkConnectString, int zkSessionTimeout, ZKStoreFactory> factory, ZooKeeperAnnouncer... servers) { + super(servers, + zkConnectString, + zkSessionTimeout, + zkBasePath); _zkConnectString = zkConnectString; _zkSessionTimeout = zkSessionTimeout; _zkBasePath = zkBasePath; @@ -132,6 +140,7 @@ public ZooKeeperConnectionManager(String zkConnectString, int zkSessionTimeout, this(zkConnectString, zkSessionTimeout, zkBasePath, factory, servers); } + @Override public void start(Callback callback) { _managerStarted = true; @@ -154,6 +163,7 @@ public void start(Callback callback) } } + @Override public void shutdown(final Callback callback) { _managerStarted = false; @@ -179,69 +189,6 @@ protected None convertResponse(None none) throws Exception zkCloseCallback.onSuccess(None.none()); } } - - public void markDownAllServers(final Callback callback) - { - Callback markDownCallback; - if (callback != null) - { - markDownCallback = callback; - } - else - { - markDownCallback = new Callback() - { - @Override - public void onError(Throwable e) - { - LOG.error("failed to mark down servers", e); - } - - @Override - public void onSuccess(None result) - { - LOG.info("mark down all servers successful"); - } - }; - } - Callback multiCallback = Callbacks.countDown(markDownCallback, _servers.length); - for (ZooKeeperAnnouncer server : _servers) - { - server.markDown(multiCallback); - } - } - - public void markUpAllServers(final Callback callback) - { - Callback markUpCallback; - if (callback != null) - { - markUpCallback = callback; - } - else - { - markUpCallback = new Callback() - { - @Override - public void onError(Throwable e) - { - LOG.error("failed to mark up servers", e); - } - - @Override - public void onSuccess(None result) - { - LOG.info("mark up all servers successful"); - } - }; - } - Callback multiCallback = Callbacks.countDown(markUpCallback, _servers.length); - for (ZooKeeperAnnouncer server : _servers) - { - server.markUp(multiCallback); - } - } - private class Listener implements ZKPersistentConnection.EventListener { @Override @@ -353,28 +300,9 @@ public interface ZKStoreFactory> Z createStore(ZKConnection connection, String path); } - public ZooKeeperAnnouncer[] getAnnouncers() - { - return _servers; - } - + @Override public boolean isSessionEstablished() { return _sessionEstablished; } - - public String getZooKeeperConnectString() - { - return _zkConnectString; - } - - public int getZooKeeperSessionTimeout() - { - return _zkSessionTimeout; - } - - public String getZooKeeperBasePath() - { - return _zkBasePath; - } } diff --git a/deprecate.sh b/deprecate.sh new file mode 100644 index 0000000000..ad97da56c2 --- /dev/null +++ b/deprecate.sh @@ -0,0 +1,8 @@ +grep -o "include '[^']*'" settings.gradle | sed -e "s/^include '/com.linkedin.pegasus:/g" -e "s/'//g" | while read -r module_name ; do + if [ "$module_name" == "com.linkedin.pegasus:gradle-plugins" ] + then + echo "WARNING: $module_name cannot be deprecated due to MPPCX-7165. Skipping deprecation..." + else + mint catalog deprecate "$module_name" "$@" + fi +done diff --git a/gradle.properties b/gradle.properties index 7854292dbb..e7075f74d1 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -version=29.58.11 +version=29.58.12 group=com.linkedin.pegasus org.gradle.configureondemand=true org.gradle.parallel=true From 873f9a62cb6a9e960d7ea4ef4d52ed0158f1ccf8 Mon Sep 17 00:00:00 2001 From: brycezhongqing Date: Mon, 7 Oct 2024 16:19:50 -0700 Subject: [PATCH 02/12] delete deprecate.sh --- deprecate.sh | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 deprecate.sh diff --git a/deprecate.sh b/deprecate.sh deleted file mode 100644 index ad97da56c2..0000000000 --- a/deprecate.sh +++ /dev/null @@ -1,8 +0,0 @@ -grep -o "include '[^']*'" settings.gradle | sed -e "s/^include '/com.linkedin.pegasus:/g" -e "s/'//g" | while read -r module_name ; do - if [ "$module_name" == "com.linkedin.pegasus:gradle-plugins" ] - then - echo "WARNING: $module_name cannot be deprecated due to MPPCX-7165. Skipping deprecation..." - else - mint catalog deprecate "$module_name" "$@" - fi -done From f727ff84bdb8d36a20484d5e75e07c8efe9e5dd8 Mon Sep 17 00:00:00 2001 From: brycezhongqing Date: Mon, 7 Oct 2024 18:47:21 -0700 Subject: [PATCH 03/12] resolve comments --- .../balancer/servers/ConnectionManager.java | 27 ++-------------- .../servers/ZooKeeperConnectionManager.java | 31 ++++++++++++++----- 2 files changed, 26 insertions(+), 32 deletions(-) diff --git a/d2/src/main/java/com/linkedin/d2/balancer/servers/ConnectionManager.java b/d2/src/main/java/com/linkedin/d2/balancer/servers/ConnectionManager.java index 86e5f97d84..050555501d 100644 --- a/d2/src/main/java/com/linkedin/d2/balancer/servers/ConnectionManager.java +++ b/d2/src/main/java/com/linkedin/d2/balancer/servers/ConnectionManager.java @@ -9,24 +9,20 @@ public abstract class ConnectionManager { private final ZooKeeperAnnouncer[] _servers; - private final String _zkConnectString; - private final int _zkSessionTimeout; - private final String _zkBasePath; private static final Logger LOG = LoggerFactory.getLogger(ConnectionManager.class); - protected ConnectionManager(ZooKeeperAnnouncer[] servers, String zkConnectString, int zkSessionTimeout, String zkBasePath) + protected ConnectionManager(ZooKeeperAnnouncer[] servers) { _servers = servers; - _zkConnectString = zkConnectString; - _zkSessionTimeout = zkSessionTimeout; - _zkBasePath = zkBasePath; } abstract public void start(Callback callback); abstract public void shutdown(final Callback callback); + abstract public String getAnnouncementTargetIdentifier(); + public void markDownAllServers(final Callback callback) { Callback markDownCallback; @@ -94,21 +90,4 @@ public ZooKeeperAnnouncer[] getAnnouncers() { return _servers; } - - abstract public boolean isSessionEstablished(); - - public String getZooKeeperConnectString() - { - return _zkConnectString; - } - - public int getZooKeeperSessionTimeout() - { - return _zkSessionTimeout; - } - - public String getZooKeeperBasePath() - { - return _zkBasePath; - } } diff --git a/d2/src/main/java/com/linkedin/d2/balancer/servers/ZooKeeperConnectionManager.java b/d2/src/main/java/com/linkedin/d2/balancer/servers/ZooKeeperConnectionManager.java index f1d6073054..7d36bc2182 100644 --- a/d2/src/main/java/com/linkedin/d2/balancer/servers/ZooKeeperConnectionManager.java +++ b/d2/src/main/java/com/linkedin/d2/balancer/servers/ZooKeeperConnectionManager.java @@ -79,10 +79,7 @@ public ZooKeeperConnectionManager(ZKPersistentConnection zkConnection, ZKStoreFactory> factory, ZooKeeperAnnouncer... servers) { - super(servers, - zkConnection.getZKConnection().getConnectString(), - zkConnection.getZKConnection().getTimeout(), - zkBasePath); + super(servers); _zkBasePath = zkBasePath; _zkConnection = zkConnection; _factory = factory; @@ -98,10 +95,7 @@ public ZooKeeperConnectionManager(String zkConnectString, int zkSessionTimeout, ZKStoreFactory> factory, ZooKeeperAnnouncer... servers) { - super(servers, - zkConnectString, - zkSessionTimeout, - zkBasePath); + super(servers); _zkConnectString = zkConnectString; _zkSessionTimeout = zkSessionTimeout; _zkBasePath = zkBasePath; @@ -189,6 +183,7 @@ protected None convertResponse(None none) throws Exception zkCloseCallback.onSuccess(None.none()); } } + private class Listener implements ZKPersistentConnection.EventListener { @Override @@ -301,8 +296,28 @@ public interface ZKStoreFactory> } @Override + public String getAnnouncementTargetIdentifier() + { + return getZooKeeperConnectString(); + } + public boolean isSessionEstablished() { return _sessionEstablished; } + + public String getZooKeeperConnectString() + { + return _zkConnectString; + } + + public int getZooKeeperSessionTimeout() + { + return _zkSessionTimeout; + } + + public String getZooKeeperBasePath() + { + return _zkBasePath; + } } From 5adcb9b17dba1877dea2f1881afabc9c17a902f6 Mon Sep 17 00:00:00 2001 From: brycezhongqing Date: Wed, 9 Oct 2024 11:35:27 -0700 Subject: [PATCH 04/12] resolve comments --- CHANGELOG.md | 1 + .../linkedin/d2/balancer/servers/ConnectionManager.java | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d2e9752ca0..c6cde2a88e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,7 @@ and what APIs have changed, if applicable. ## [29.58.12] - 2024-10-07 - Add support for announcing/deannoucing service only to INDIS + ## [29.58.11] - 2024-10-03 - Add getters in ZookeeperAnnouncer diff --git a/d2/src/main/java/com/linkedin/d2/balancer/servers/ConnectionManager.java b/d2/src/main/java/com/linkedin/d2/balancer/servers/ConnectionManager.java index 050555501d..c0029fd657 100644 --- a/d2/src/main/java/com/linkedin/d2/balancer/servers/ConnectionManager.java +++ b/d2/src/main/java/com/linkedin/d2/balancer/servers/ConnectionManager.java @@ -6,6 +6,13 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; +/** + * ConnectionManager is an abstract class responsible for managing connections to external systems. + * It can be extended to handle specific service registries (e.g., Zookeeper). + * For example, see {@link com.linkedin.d2.balancer.servers.ZooKeeperConnectionManager} for managing Zookeeper connections during D2 server announcements. + * This class provides basic functionalities such as start, shutdown, markDownAllServers, and markUpAllServers which + * is called during D2 server announcements/de-announcement. + */ public abstract class ConnectionManager { private final ZooKeeperAnnouncer[] _servers; From 71f30d0e3a5308edcbc86e3a7dae6d7a9be74e31 Mon Sep 17 00:00:00 2001 From: brycezhongqing Date: Wed, 9 Oct 2024 11:38:06 -0700 Subject: [PATCH 05/12] refactor --- .../com/linkedin/d2/balancer/servers/ConnectionManager.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/d2/src/main/java/com/linkedin/d2/balancer/servers/ConnectionManager.java b/d2/src/main/java/com/linkedin/d2/balancer/servers/ConnectionManager.java index c0029fd657..75a61b4ba9 100644 --- a/d2/src/main/java/com/linkedin/d2/balancer/servers/ConnectionManager.java +++ b/d2/src/main/java/com/linkedin/d2/balancer/servers/ConnectionManager.java @@ -9,7 +9,8 @@ /** * ConnectionManager is an abstract class responsible for managing connections to external systems. * It can be extended to handle specific service registries (e.g., Zookeeper). - * For example, see {@link com.linkedin.d2.balancer.servers.ZooKeeperConnectionManager} for managing Zookeeper connections during D2 server announcements. + * For example, see {@link com.linkedin.d2.balancer.servers.ZooKeeperConnectionManager} for managing Zookeeper + * connections during D2 server announcements. * This class provides basic functionalities such as start, shutdown, markDownAllServers, and markUpAllServers which * is called during D2 server announcements/de-announcement. */ From 9c25b1b93d491f6249fe90db8e31ca4f1a4baa95 Mon Sep 17 00:00:00 2001 From: brycezhongqing Date: Thu, 10 Oct 2024 13:53:49 -0700 Subject: [PATCH 06/12] resolve comments --- .../d2/balancer/LoadBalancerServer.java | 2 + .../balancer/servers/ZooKeeperAnnouncer.java | 44 +++++++++++-------- 2 files changed, 27 insertions(+), 19 deletions(-) diff --git a/d2/src/main/java/com/linkedin/d2/balancer/LoadBalancerServer.java b/d2/src/main/java/com/linkedin/d2/balancer/LoadBalancerServer.java index f8fe92ee48..978b80fc3e 100644 --- a/d2/src/main/java/com/linkedin/d2/balancer/LoadBalancerServer.java +++ b/d2/src/main/java/com/linkedin/d2/balancer/LoadBalancerServer.java @@ -69,4 +69,6 @@ void addUriSpecificProperty(String clusterName, void start(Callback callback); void shutdown(Callback callback); + + String getConnectString(); } diff --git a/d2/src/main/java/com/linkedin/d2/balancer/servers/ZooKeeperAnnouncer.java b/d2/src/main/java/com/linkedin/d2/balancer/servers/ZooKeeperAnnouncer.java index 29a71b9a2e..e298636510 100644 --- a/d2/src/main/java/com/linkedin/d2/balancer/servers/ZooKeeperAnnouncer.java +++ b/d2/src/main/java/com/linkedin/d2/balancer/servers/ZooKeeperAnnouncer.java @@ -31,14 +31,15 @@ import com.linkedin.common.callback.Callback; import com.linkedin.common.util.None; +import com.linkedin.d2.balancer.LoadBalancerServer; import com.linkedin.d2.balancer.properties.PartitionData; import com.linkedin.d2.balancer.properties.PropertyKeys; import com.linkedin.d2.balancer.properties.UriProperties; import com.linkedin.d2.balancer.util.partitions.DefaultPartitionAccessor; +import com.linkedin.d2.discovery.event.D2ServiceDiscoveryEventHelper; import com.linkedin.d2.discovery.event.LogOnlyServiceDiscoveryEventEmitter; import com.linkedin.d2.discovery.event.ServiceDiscoveryEventEmitter; import com.linkedin.d2.discovery.event.ServiceDiscoveryEventEmitter.StatusUpdateActionType; -import com.linkedin.d2.discovery.event.D2ServiceDiscoveryEventHelper; import com.linkedin.d2.discovery.stores.zk.ZooKeeperEphemeralStore; import com.linkedin.util.ArgumentUtil; @@ -66,7 +67,7 @@ public class ZooKeeperAnnouncer implements D2ServiceDiscoveryEventHelper public static final int DEFAULT_DARK_WARMUP_DURATION = 0; public static final String DEFAULT_DARK_WARMUP_CLUSTER_NAME = null; - private final ZooKeeperServer _server; + private final LoadBalancerServer _server; private static final Logger _log = LoggerFactory.getLogger(ZooKeeperAnnouncer.class); private volatile String _cluster; private volatile URI _uri; @@ -140,24 +141,24 @@ public class ZooKeeperAnnouncer implements D2ServiceDiscoveryEventHelper // Field to store the dark warm-up time duration in seconds, defaults to zero private int _warmupDuration; - public ZooKeeperAnnouncer(ZooKeeperServer server) + public ZooKeeperAnnouncer(LoadBalancerServer server) { this(server, true); } - public ZooKeeperAnnouncer(ZooKeeperServer server, boolean initialIsUp) + public ZooKeeperAnnouncer(LoadBalancerServer server, boolean initialIsUp) { this(server, initialIsUp, DEFAULT_DARK_WARMUP_ENABLED, DEFAULT_DARK_WARMUP_CLUSTER_NAME, DEFAULT_DARK_WARMUP_DURATION, (ScheduledExecutorService) null); } - public ZooKeeperAnnouncer(ZooKeeperServer server, boolean initialIsUp, + public ZooKeeperAnnouncer(LoadBalancerServer server, boolean initialIsUp, boolean isDarkWarmupEnabled, String warmupClusterName, int warmupDuration, ScheduledExecutorService executorService) { this(server, initialIsUp, isDarkWarmupEnabled, warmupClusterName, warmupDuration, executorService, new LogOnlyServiceDiscoveryEventEmitter()); // default to use log-only event emitter } - public ZooKeeperAnnouncer(ZooKeeperServer server, boolean initialIsUp, + public ZooKeeperAnnouncer(LoadBalancerServer server, boolean initialIsUp, boolean isDarkWarmupEnabled, String warmupClusterName, int warmupDuration, ScheduledExecutorService executorService, ServiceDiscoveryEventEmitter eventEmitter) { _server = server; @@ -175,7 +176,9 @@ public ZooKeeperAnnouncer(ZooKeeperServer server, boolean initialIsUp, _executorService = executorService; _eventEmitter = eventEmitter; - _server.setServiceDiscoveryEventHelper(this); + if(server instanceof ZooKeeperServer){ + ((ZooKeeperServer) server).setServiceDiscoveryEventHelper(this); + } } /** @@ -555,18 +558,21 @@ private void drain(Deque> callbacks, @Nullable Throwable t) public void setStore(ZooKeeperEphemeralStore store) { - store.setZnodePathAndDataCallback((cluster, path, data) -> { - if (cluster.equals(_cluster)) { - _znodePathRef.set(path); - _znodeDataRef.set(data); - } else if (cluster.equals(_warmupClusterName)) { - _warmupClusterZnodePathRef.set(path); - _warmupClusterZnodeDataRef.set(data); - } else { - _log.warn("znode path and data callback is called with unknown cluster: " + cluster + ", node path: " + path + ", and data: " + data); - } - }); - _server.setStore(store); + if (_server instanceof ZooKeeperServer) + { + store.setZnodePathAndDataCallback((cluster, path, data) -> { + if (cluster.equals(_cluster)) { + _znodePathRef.set(path); + _znodeDataRef.set(data); + } else if (cluster.equals(_warmupClusterName)) { + _warmupClusterZnodePathRef.set(path); + _warmupClusterZnodeDataRef.set(data); + } else { + _log.warn("znode path and data callback is called with unknown cluster: " + cluster + ", node path: " + path + ", and data: " + data); + } + }); + ((ZooKeeperServer) _server).setStore(store); + } } public synchronized void changeWeight(final Callback callback, boolean doNotSlowStart) From 7a8fcc89f87f7eadf4ed14bbec9ebac89c7e456f Mon Sep 17 00:00:00 2001 From: brycezhongqing Date: Fri, 11 Oct 2024 09:07:18 -0700 Subject: [PATCH 07/12] resolve comments --- CHANGELOG.md | 6 +++--- gradle.properties | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c6cde2a88e..ec05a9b40d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,7 +14,7 @@ and what APIs have changed, if applicable. ## [Unreleased] -## [29.58.12] - 2024-10-07 +## [29.59.0] - 2024-10-07 - Add support for announcing/deannoucing service only to INDIS ## [29.58.11] - 2024-10-03 @@ -5746,8 +5746,8 @@ patch operations can re-use these classes for generating patch messages. ## [0.14.1] -[Unreleased]: https://github.com/linkedin/rest.li/compare/v29.58.12...master -[29.58.12]: https://github.com/linkedin/rest.li/compare/v29.58.11...v29.58.12 +[Unreleased]: https://github.com/linkedin/rest.li/compare/v29.59.0...master +[29.59.0]: https://github.com/linkedin/rest.li/compare/v29.58.11...v29.59.0 [29.58.11]: https://github.com/linkedin/rest.li/compare/v29.58.10...v29.58.11 [29.58.10]: https://github.com/linkedin/rest.li/compare/v29.58.9...v29.58.10 [29.58.9]: https://github.com/linkedin/rest.li/compare/v29.58.8...v29.58.9 diff --git a/gradle.properties b/gradle.properties index e7075f74d1..87b5768bbd 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -version=29.58.12 +version=29.59.0 group=com.linkedin.pegasus org.gradle.configureondemand=true org.gradle.parallel=true From b319ad5a8737d9ff1e4732d962b24fbb206b7be3 Mon Sep 17 00:00:00 2001 From: brycezhongqing Date: Fri, 11 Oct 2024 12:28:19 -0700 Subject: [PATCH 08/12] emitSDStatusActiveUpdateIntentAndWriteEvents updated --- .../com/linkedin/d2/balancer/servers/ZooKeeperAnnouncer.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/d2/src/main/java/com/linkedin/d2/balancer/servers/ZooKeeperAnnouncer.java b/d2/src/main/java/com/linkedin/d2/balancer/servers/ZooKeeperAnnouncer.java index e298636510..51aa0991b2 100644 --- a/d2/src/main/java/com/linkedin/d2/balancer/servers/ZooKeeperAnnouncer.java +++ b/d2/src/main/java/com/linkedin/d2/balancer/servers/ZooKeeperAnnouncer.java @@ -724,6 +724,10 @@ public void setEventEmitter(ServiceDiscoveryEventEmitter emitter) { @Override public void emitSDStatusActiveUpdateIntentAndWriteEvents(String cluster, boolean isMarkUp, boolean succeeded, long startAt) { + if (_server instanceof ZooKeeperServer) + { + return; + } if (_eventEmitter == null) { _log.info("Service discovery event emitter in ZookeeperAnnouncer is null. Skipping emitting events."); return; From 4b95c960e90c82fddc295507a5d166d1bd11a618 Mon Sep 17 00:00:00 2001 From: brycezhongqing Date: Fri, 11 Oct 2024 12:31:08 -0700 Subject: [PATCH 09/12] emitSDStatusActiveUpdateIntentAndWriteEvents updated --- .../linkedin/d2/balancer/servers/ZooKeeperAnnouncer.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/d2/src/main/java/com/linkedin/d2/balancer/servers/ZooKeeperAnnouncer.java b/d2/src/main/java/com/linkedin/d2/balancer/servers/ZooKeeperAnnouncer.java index 51aa0991b2..f967efac98 100644 --- a/d2/src/main/java/com/linkedin/d2/balancer/servers/ZooKeeperAnnouncer.java +++ b/d2/src/main/java/com/linkedin/d2/balancer/servers/ZooKeeperAnnouncer.java @@ -481,7 +481,10 @@ public void onError(Throwable e) @Override public void onSuccess(None result) { - emitSDStatusActiveUpdateIntentAndWriteEvents(_cluster, false, true, _markDownStartAtRef.get()); + if (_server instanceof ZooKeeperServer) + { + emitSDStatusActiveUpdateIntentAndWriteEvents(_cluster, false, true, _markDownStartAtRef.get()); + } _log.info("markDown for uri = {} succeeded.", _uri); // Note that the pending callbacks we see at this point are // from the requests that are filed before us because zookeeper @@ -724,7 +727,7 @@ public void setEventEmitter(ServiceDiscoveryEventEmitter emitter) { @Override public void emitSDStatusActiveUpdateIntentAndWriteEvents(String cluster, boolean isMarkUp, boolean succeeded, long startAt) { - if (_server instanceof ZooKeeperServer) + if (!(_server instanceof ZooKeeperServer)) { return; } From a003aee25aad412f2b85932180e144158dcb604e Mon Sep 17 00:00:00 2001 From: brycezhongqing Date: Tue, 15 Oct 2024 10:08:57 -0700 Subject: [PATCH 10/12] emitSDStatusActiveUpdateIntentAndWriteEvents updated --- .../com/linkedin/d2/balancer/servers/ZooKeeperAnnouncer.java | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/d2/src/main/java/com/linkedin/d2/balancer/servers/ZooKeeperAnnouncer.java b/d2/src/main/java/com/linkedin/d2/balancer/servers/ZooKeeperAnnouncer.java index f967efac98..389eb697e9 100644 --- a/d2/src/main/java/com/linkedin/d2/balancer/servers/ZooKeeperAnnouncer.java +++ b/d2/src/main/java/com/linkedin/d2/balancer/servers/ZooKeeperAnnouncer.java @@ -481,10 +481,7 @@ public void onError(Throwable e) @Override public void onSuccess(None result) { - if (_server instanceof ZooKeeperServer) - { - emitSDStatusActiveUpdateIntentAndWriteEvents(_cluster, false, true, _markDownStartAtRef.get()); - } + emitSDStatusActiveUpdateIntentAndWriteEvents(_cluster, false, true, _markDownStartAtRef.get()); _log.info("markDown for uri = {} succeeded.", _uri); // Note that the pending callbacks we see at this point are // from the requests that are filed before us because zookeeper From 5446d6f299308b05a0d35ebbadf9a2c719037541 Mon Sep 17 00:00:00 2001 From: brycezhongqing Date: Tue, 15 Oct 2024 10:58:47 -0700 Subject: [PATCH 11/12] add comments for sending sd event --- .../com/linkedin/d2/balancer/servers/ZooKeeperAnnouncer.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/d2/src/main/java/com/linkedin/d2/balancer/servers/ZooKeeperAnnouncer.java b/d2/src/main/java/com/linkedin/d2/balancer/servers/ZooKeeperAnnouncer.java index 389eb697e9..4aa73a681a 100644 --- a/d2/src/main/java/com/linkedin/d2/balancer/servers/ZooKeeperAnnouncer.java +++ b/d2/src/main/java/com/linkedin/d2/balancer/servers/ZooKeeperAnnouncer.java @@ -724,6 +724,9 @@ public void setEventEmitter(ServiceDiscoveryEventEmitter emitter) { @Override public void emitSDStatusActiveUpdateIntentAndWriteEvents(String cluster, boolean isMarkUp, boolean succeeded, long startAt) { + // since SD event is sent in IndisAnnouncer for INDIS-write-only, inside ZookeeperAnnouncer, any calls to + // "emitSDStatusActiveUpdateIntentAndWriteEvents" should only happen when _server is an instance of + // ZooKeeperServer (which means it only emits the event when it's doing zk-only or dual write). if (!(_server instanceof ZooKeeperServer)) { return; From 7e40ee3f629ea06b0159e27126fb1b4e330e276d Mon Sep 17 00:00:00 2001 From: brycezhongqing Date: Tue, 15 Oct 2024 11:40:46 -0700 Subject: [PATCH 12/12] format --- .../com/linkedin/d2/balancer/servers/ZooKeeperAnnouncer.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/d2/src/main/java/com/linkedin/d2/balancer/servers/ZooKeeperAnnouncer.java b/d2/src/main/java/com/linkedin/d2/balancer/servers/ZooKeeperAnnouncer.java index 4aa73a681a..0a85e8547b 100644 --- a/d2/src/main/java/com/linkedin/d2/balancer/servers/ZooKeeperAnnouncer.java +++ b/d2/src/main/java/com/linkedin/d2/balancer/servers/ZooKeeperAnnouncer.java @@ -176,7 +176,8 @@ public ZooKeeperAnnouncer(LoadBalancerServer server, boolean initialIsUp, _executorService = executorService; _eventEmitter = eventEmitter; - if(server instanceof ZooKeeperServer){ + if (server instanceof ZooKeeperServer) + { ((ZooKeeperServer) server).setServiceDiscoveryEventHelper(this); } }