helix.git
6 months agoRead cloud config from zk and propagate to HelixManagerProperty in ZkHelixManager...
xyuanlu [Thu, 24 Mar 2022 16:30:00 +0000 (09:30 -0700)] 
Read cloud config from zk and propagate to HelixManagerProperty in ZkHelixManager constructor (#1986)

Read cloud config from zk and propagate to HelixManagerProperty in ZkHelixManager constructor.

6 months agoAdd Authorization Components to helix-rest (#1967) (#1981)
Neal Sun [Mon, 14 Mar 2022 23:30:43 +0000 (16:30 -0700)] 
Add Authorization Components to helix-rest (#1967) (#1981)

* Add Authorization Components to helix-rest

* Address some comments

6 months agoUse ZooKeeper 3.5.9 in zookeeper-api instead (#1977)
Hunter Lee [Sat, 12 Mar 2022 23:22:21 +0000 (18:22 -0500)] 
Use ZooKeeper 3.5.9 in zookeeper-api instead (#1977)

With the upgrade of apache zookeeper version, snappy-java was missing in the dependency. This commit adds snappy-java and removes unused imports in osgi declaration. Also, using ZooKeeper 3.5.9 in zookeeper-api instead because 3.6.0+ causes some tests to fail in zookeeper-api.

6 months agoAdd 3 Zookeeper CreateMode types to AccessOption (#1975)
Ramin Bashizade [Wed, 9 Mar 2022 17:29:31 +0000 (09:29 -0800)] 
Add 3 Zookeeper CreateMode types to AccessOption (#1975)

This commit adds the 3 missing CreateMode types to AccessOption
class in helix-core: CONTAINER, PERSISTENT_WITH_TTL, and
PERSISTENT_SEQUENTIAL_WITH_TTL.

6 months agoUpgrading Zookeeper version to 3.6.13 to enable zk client SSL/TLS
rahulrane50 [Tue, 8 Mar 2022 21:42:44 +0000 (13:42 -0800)] 
Upgrading Zookeeper version to 3.6.13 to enable zk client SSL/TLS

Upgrading Zookeeper version to 3.6.13 to enable zk client SSL/TLS support

6 months ago[HELIX-862] s/maintainence/maintenance docs fix (#1968)
Micah Stubbs [Thu, 3 Mar 2022 22:08:34 +0000 (14:08 -0800)] 
[HELIX-862] s/maintainence/maintenance docs fix (#1968)

7 months agoAdd rest endpoint for virtual topology group (#1958)
Qi (Quincy) Qu [Wed, 16 Feb 2022 17:55:56 +0000 (12:55 -0500)] 
Add rest endpoint for virtual topology group (#1958)

7 months agoImplement java API and utils for virtual topology group (#1935)
Qi (Quincy) Qu [Tue, 8 Feb 2022 21:53:40 +0000 (16:53 -0500)] 
Implement java API and utils for virtual topology group (#1935)

Add comment to VirtualTopologyGroupService.

7 months agoIntroduce VirtualTopologyGroup and its assignment logic with benchmark. (#1948)
Qi (Quincy) Qu [Thu, 3 Feb 2022 20:18:46 +0000 (12:18 -0800)] 
Introduce VirtualTopologyGroup and its assignment logic with benchmark. (#1948)

* Cleanup unused assignment schemes and minor change.

* Further refactor and code cleanup.

7 months agoFix #1946 -- Refactor and move ClusterTopologyConfig
Qi (Quincy) Qu [Sat, 29 Jan 2022 00:14:09 +0000 (16:14 -0800)] 
Fix #1946 -- Refactor and move ClusterTopologyConfig

Move ClusterTopologyConfig from nested to a standalone class in helix/model and to be used by virtual topology group logic.

7 months agoUse final remaining capacity when computing weighted score (#1961)
xyuanlu [Wed, 16 Feb 2022 21:52:48 +0000 (13:52 -0800)] 
Use final remaining capacity when computing weighted score (#1961)

WAGED improvement: Use final remaining capacity when computing weighted score

7 months agoRemove WAGED sorting for each assignment (#1959)
xyuanlu [Tue, 15 Feb 2022 00:58:05 +0000 (16:58 -0800)] 
Remove WAGED sorting for each assignment (#1959)

Improve WAGED sorting from n^2 to n*log(n)

7 months agoremove log before write error message to ZNode (#1955)
xyuanlu [Mon, 7 Feb 2022 23:07:16 +0000 (15:07 -0800)] 
remove log before write error message to ZNode (#1955)

Remove message logging before writing ZNode.

7 months agoFixes #1802 - messages intended for instances that are no longer in the cluster ...
Komal Desai [Mon, 7 Feb 2022 23:06:57 +0000 (15:06 -0800)] 
Fixes #1802 - messages intended for instances that are no longer in the cluster (#1951)

In MessageGenerationPhase.java, - process() method populates the list of live instances from cache.

But while generateMessage() method has the sessionIdMap information, it still goes through partition/resource/instance map without checking if instance is still part of the cluster or not.

It is possible that cache has stale entry but that logic needs to be worked separately. But while generating message, we should check if the instance is still there.

So this is a simple change. We need to still look further if cache is getting invalidated properly.

To make sure that the cache properly is handled/refreshed under instance being replaced or deletion - have filled another bug: #1956

7 months agoLet logging framework format exception stack traces (#1954)
Henri Hagberg [Thu, 3 Feb 2022 21:35:05 +0000 (23:35 +0200)] 
Let logging framework format exception stack traces (#1954)

Where possible, logging calls are changed so that logging framework handles exception formatting instead of stack trace being manually formatted using Throwable#getStackTrace

7 months agoAdd new metrics to record ZNRecord compression count. (#1943)
Jiajun Wang [Wed, 2 Feb 2022 20:28:14 +0000 (12:28 -0800)] 
Add new metrics to record ZNRecord compression count. (#1943)

This PR determines if a ZK write request is compressed by calling GZipCompressionUtil. This is an indirect method and can be inaccurate. So the decision is based on trade-offs.

Alternatively, the ZkClientMonitor can be passed into the serializer class and then report compressed write internally. However, this will require multiple changes in the serializer interfaces.
Due to the multiple layers (PathBasedZkSerializer, ZkSerializer) of serializer interfaces definition, it would be very costly to implement the alternative without major refactoring.

7 months agoFix for - Stale message redundant logs
desaikomal [Mon, 31 Jan 2022 02:08:42 +0000 (18:08 -0800)] 
Fix for - Stale message redundant logs

Avoid printing redundant log messages for unrelated partitions and resources.

7 months agoFix Issue#1941 - Incorrect condition caused not to log error message
desaikomal [Sat, 29 Jan 2022 00:16:16 +0000 (16:16 -0800)] 
Fix Issue#1941 - Incorrect condition caused not to log error message

Properly populate the error log messages for partitions and resource names whose replica status is in ERROR state.

8 months agoFix CVE dependency issue (#1927)
CVEDetect [Wed, 19 Jan 2022 15:17:11 +0000 (23:17 +0800)] 
Fix CVE dependency issue (#1927)

8 months agoRemove dependency to an old Jackson v1 library (org.codehaus.jackson:jackson-mapper...
Andrzej Hołowko [Wed, 19 Jan 2022 15:15:31 +0000 (16:15 +0100)] 
Remove dependency to an old Jackson v1 library (org.codehaus.jackson:jackson-mapper-asl) affected by the critical vulnerability: CVE-2019-17267 (#1934)

8 months agoFix race condition in scheduler message processing logic. (#1930)
Jiajun Wang [Wed, 19 Jan 2022 01:35:45 +0000 (17:35 -0800)] 
Fix race condition in scheduler message processing logic. (#1930)

This PR aims to fix the race condition that happens during processing scheduler messages. The previous logic which dynamically delete task partitions in the scheduler message IdealState may cause conflicts and results in inconsistent message status update. Since updating the task partitions is not a necessary step, this PR removes the corresponding logic and simplify the message handling procedure.

This PR will help to stablize TestSchedulerMessage.java.

8 months agoDaemonize ZkBucketDataAccessor GC_THREAD (#1936)
Henri Hagberg [Tue, 18 Jan 2022 22:30:13 +0000 (00:30 +0200)] 
Daemonize ZkBucketDataAccessor GC_THREAD (#1936)

GC_THREAD (which is actually an ExecutorService, not Thread) is a static field in ZkBucketDataAccessor. The executor is started when ZkBucketDataAccessor class is initialized but it is never shut down. Since ExecutorService threads are generally not daemon threads, not shutting down GC_THREAD prevents JVM from shutting down cleanly.

This commit makes ZkBucketDataAccessor GC_THREAD a daemon thread so it doesn't prevent application shutdown.

8 months agoUpgrade Log4j to 2.16.0 to address CVE-2021-44228 (#1922)
Brent [Fri, 14 Jan 2022 19:57:57 +0000 (11:57 -0800)] 
Upgrade Log4j to 2.16.0 to address CVE-2021-44228 (#1922)

* HELIX-1921: Upgrade Log4j to 2.16.0 to address CVE-2021-44228
- Upgrade SLF4J API version from 1.7.25 to 1.7.32 (latest)
- Remove use of slf4j-log4j12 package
- Add use of log4j-slf4j-impl package
- Remove unused custom log appender class
- Change direct Log4J reference to SLF4J
- Add -Dlog4j2.formatMsgNoLookups flag to scripts.
- Rename properties files to log4j2.properties and change CLI parameter to log4j2.configurationFile for Log4j2's precedence behavior
- Change properties files to use log4j2 syntax
- Add -Dlog4j2.configurationFile=file://"$BASEDIR"/conf/log4j2.properties to CLIs that were missing it

8 months agoImprove helix tutorial and code formatting (#1931) (#1932)
Qi (Quincy) Qu [Tue, 11 Jan 2022 19:48:54 +0000 (11:48 -0800)] 
Improve helix tutorial and code formatting (#1931) (#1932)

Improve helix tutorial and code formatting

8 months agoAvoid NPE when getting property store through Helix-rest API. (#1929)
Jiajun Wang [Fri, 7 Jan 2022 22:21:45 +0000 (14:21 -0800)] 
Avoid NPE when getting property store through Helix-rest API. (#1929)

This PR aims to fix the ambiguous error return message when user request to get an empty ZK node through the Helix-rest property store access API.
This PR changes the server behavior to response NO_CONTENT instead of internal_server_error in the scenarios described above.

8 months agoDeclare dependency to Zookeeper in zookeeper-api-*.ivy (#1926)
Ramin Bashizade [Wed, 5 Jan 2022 19:45:54 +0000 (11:45 -0800)] 
Declare dependency to Zookeeper in zookeeper-api-*.ivy (#1926)

Adds dependency to Zookeeper in the ivy file in zookeeper-api module.

9 months agoFix a string operation for custom health check and update test (#1924)
xyuanlu [Mon, 20 Dec 2021 18:28:51 +0000 (10:28 -0800)] 
Fix a string operation for custom health check and update test (#1924)

9 months agoAdd take/free instance implementation and test (#1918)
xyuanlu [Wed, 15 Dec 2021 21:41:36 +0000 (13:41 -0800)] 
Add take/free instance implementation and test (#1918)

* take & free single instance impl

9 months agoMake theadpool shutdown timeout configurable for the HelixTaskExecutor. (#1920)
Jiajun Wang [Tue, 14 Dec 2021 00:51:39 +0000 (16:51 -0800)] 
Make theadpool shutdown timeout configurable for the HelixTaskExecutor. (#1920)

Add TestHelixTaskExecutor.testHandlerResetTimeout() to cover the new changes.
Also refactoring the related code to reduce duplicate and confusing code.

9 months agoImplement RestSnapShot and substitute the kv maps in HelixDataAccessorWrapper to...
xyuanlu [Fri, 3 Dec 2021 23:32:21 +0000 (15:32 -0800)] 
Implement RestSnapShot and substitute the kv maps in HelixDataAccessorWrapper to a RestSnapShot object (#1913)

* implement RestSnapShot and substitute the kv maps in HelixDataAccessorWrapper with RestSnapShot object

9 months agoAdd rest API for take/free instance (#1917)
xyuanlu [Thu, 2 Dec 2021 23:53:12 +0000 (15:53 -0800)] 
Add rest API for take/free instance (#1917)

* add rest API for take/free instance

10 months agorefactor instanceService to clusterMaintenanceService (#1912)
xyuanlu [Thu, 25 Nov 2021 03:05:04 +0000 (19:05 -0800)] 
refactor instanceService to clusterMaintenanceService (#1912)

10 months agoFix No Instance Level Throttling (#1908)
Junkai Xue [Mon, 22 Nov 2021 19:48:09 +0000 (11:48 -0800)] 
Fix No Instance Level Throttling (#1908)

Instance level throttling quota never charged. Add the charging logic and tests.

10 months agoSplit BatchGetInstancesStoppableChecks (#1902)
xyuanlu [Mon, 22 Nov 2021 17:45:24 +0000 (09:45 -0800)] 
Split BatchGetInstancesStoppableChecks (#1902)

Split BatchGetInstancesStoppableChecks into 2 private util functions.

10 months agoAdd 0.9.9 to menu bar
Junkai Xue [Sun, 21 Nov 2021 21:15:56 +0000 (13:15 -0800)] 
Add 0.9.9 to menu bar

10 months agoMissing end quote
Junkai Xue [Sun, 21 Nov 2021 20:27:19 +0000 (12:27 -0800)] 
Missing end quote

10 months agoFix site.xml head/footer
Junkai Xue [Sun, 21 Nov 2021 20:09:42 +0000 (12:09 -0800)] 
Fix site.xml head/footer

10 months agoRemove 0.9.7 doc folder
Junkai Xue [Sun, 21 Nov 2021 20:03:21 +0000 (12:03 -0800)] 
Remove 0.9.7 doc folder

10 months agoRemove 0.9.1, 0.9.4, 0.9.7, 1.0.0 docs to keep only latest 2 releases doc
Junkai Xue [Sun, 21 Nov 2021 20:01:41 +0000 (12:01 -0800)] 
Remove 0.9.1, 0.9.4, 0.9.7, 1.0.0 docs to keep only latest 2 releases doc

10 months agoRemove 0.8 series doc
Junkai Xue [Sun, 21 Nov 2021 19:58:11 +0000 (11:58 -0800)] 
Remove 0.8 series doc

10 months agoupgrade maven-site-plugin: fix site.xml head/footer (#1910)
Hervé Boutemy [Sun, 21 Nov 2021 10:18:01 +0000 (11:18 +0100)] 
upgrade maven-site-plugin: fix site.xml head/footer (#1910)

10 months agoupdate parent and site plugin (#1909)
Hervé Boutemy [Sat, 20 Nov 2021 11:42:23 +0000 (12:42 +0100)] 
update parent and site plugin (#1909)

10 months agoAdd additional note for release
Junkai Xue [Wed, 17 Nov 2021 21:55:26 +0000 (13:55 -0800)] 
Add additional note for release

10 months agofix input issue for stoppable rest API (#1905)
xyuanlu [Wed, 17 Nov 2021 01:10:57 +0000 (17:10 -0800)] 
fix input issue for stoppable rest API (#1905)

10 months agoAdd 0.9.9 release notes
Junkai Xue [Tue, 16 Nov 2021 22:26:14 +0000 (14:26 -0800)] 
Add 0.9.9 release notes

10 months agoadd take/free instance(s) API (#1899)
xyuanlu [Mon, 15 Nov 2021 19:41:23 +0000 (11:41 -0800)] 
add take/free instance(s) API (#1899)

Create Cluster Maintenance Management service and add API signature and interfaces

10 months agoAdd additional ZK serializer configuration to active ZNRecord compression even the...
Jiajun Wang [Thu, 4 Nov 2021 18:52:05 +0000 (11:52 -0700)] 
Add additional ZK serializer configuration to active ZNRecord compression even the node size is smaller than write size limit.

The property zk.serializer.znrecord.auto-compress.threshold.bytes defines a threshold of ZNRecord size in bytes that the ZK serializer starts to auto compress the ZNRecord for write requests if it's size exceeds the threshold.
If the threshold is not configured or exceed ZKRecord write size limit, default value zk.serializer.znrecord.write.size.limit.bytes (if configured) or 1MB (if no configuration) will be applied.

10 months agoFix log format in instanceValidationUtil (#1894)
xyuanlu [Mon, 1 Nov 2021 20:11:51 +0000 (13:11 -0700)] 
Fix log format in instanceValidationUtil (#1894)

* fix log format in instanceValidationUtil

11 months agoFix test failure TestInstancesAccessor (#1881)
Junkai Xue [Mon, 27 Sep 2021 20:23:23 +0000 (13:23 -0700)] 
Fix test failure TestInstancesAccessor (#1881)

12 months agoFix inconsistent behavior beween batch stoppable and single stoppable API (#1879)
Junkai Xue [Fri, 24 Sep 2021 17:46:23 +0000 (10:46 -0700)] 
Fix inconsistent behavior beween batch stoppable and single stoppable API (#1879)

12 months agoFix TestClusterAggregateMetrics (#1842)
Neal Sun [Tue, 21 Sep 2021 23:15:55 +0000 (16:15 -0700)] 
Fix TestClusterAggregateMetrics (#1842)

Fix TestClusterAggregateMetrics

12 months agoImprove Purge Offline Instances API (#1870)
Neal Sun [Tue, 21 Sep 2021 23:15:16 +0000 (16:15 -0700)] 
Improve Purge Offline Instances API (#1870)

This commit improves the API such that it will also purge any incomplete instance data, such as instance path without InstanceConfig or ParticipantHistory.

12 months agoFix adding a task to a job after deleting old tasks (#1875)
Ali Reza Zamani Zadeh Najari [Fri, 17 Sep 2021 19:56:20 +0000 (12:56 -0700)] 
Fix adding a task to a job after deleting old tasks (#1875)

In this commit, the issue of dynamically adding a task to a job
in which some of its tasks have been deleted before is being
addressed.

12 months agoFix flaky test testClusterFreezeMode (#1871)
Huizhi Lu [Tue, 14 Sep 2021 18:15:55 +0000 (11:15 -0700)] 
Fix flaky test testClusterFreezeMode (#1871)

The test fails randomly. Root cause is the test used a random cluster from the clusters set which has super clusters and task cluster, so the cluster could be a task cluster and then the test fails. Freeze mode does not apply to task framework.

This commit fixes it by changing the test cluster name with a fixed name TestClusters_0.

12 months agoFix error partition blocks load rebalance (#1867)
Junkai Xue [Tue, 14 Sep 2021 02:43:24 +0000 (19:43 -0700)] 
Fix error partition blocks load rebalance (#1867)

There are three things fixed:
1. State priority is higher priority with smaller number.
2. When only downward is allowed, any non downward STs must be removed from message and throttled.
3. Even for downward STs should be respect to the throttling as backward compatible behavior.
4. Fix test for TestErrorReplicaPersist

12 months agoChange our release voting process
Junkai Xue [Fri, 10 Sep 2021 00:06:07 +0000 (17:06 -0700)] 
Change our release voting process

Acked from our Apache Helix VP, we will count committers' vote as binding vote for release.

12 months agoAdd input validation for getJobContext (#1864)
xyuanlu [Wed, 8 Sep 2021 21:05:03 +0000 (14:05 -0700)] 
Add input validation for getJobContext (#1864)

* add validation for getJobContext

12 months agoFix a potential race condition in MBean unregister logic.
Jiajun Wang [Wed, 1 Sep 2021 17:43:07 +0000 (10:43 -0700)] 
Fix a potential race condition in MBean unregister logic.

The unregister method should relies on the MBeanServer class to validate if the target MBean has been unregistered or not to avoid race condition.

12 months agoUpgrade mockito lib version to avoid test case failure due to mock mechanism legacy...
Jiajun Wang [Tue, 31 Aug 2021 21:01:10 +0000 (14:01 -0700)] 
Upgrade mockito lib version to avoid test case failure due to mock mechanism legacy issues.

12 months agoImprove TestControllerLeadershipChange test logic to tolerate longer delay when test...
Jiajun Wang [Tue, 31 Aug 2021 17:24:05 +0000 (10:24 -0700)] 
Improve TestControllerLeadershipChange test logic to tolerate longer delay when test runs. (#1853)

Change the assert condition to consider real test script execute delay to avoid test failure due to slow test runs.

12 months agoRemove unpublished 0.9.9
Junkai Xue [Wed, 1 Sep 2021 19:07:53 +0000 (12:07 -0700)] 
Remove unpublished 0.9.9

12 months agoRemove archived 0.6 & 0.7 version docs
Junkai Xue [Wed, 1 Sep 2021 19:05:17 +0000 (12:05 -0700)] 
Remove archived 0.6 & 0.7 version docs

12 months agoUpdate Menu Bar
Junkai Xue [Wed, 1 Sep 2021 18:36:04 +0000 (11:36 -0700)] 
Update Menu Bar

12 months agoFix management mode history duplicate recording (#1846)
Huizhi Lu [Wed, 1 Sep 2021 17:00:34 +0000 (10:00 -0700)] 
Fix management mode history duplicate recording (#1846)

The management mode history has duplicate entries. It does not impact the normal function, but it's good to get it fixed to avoid confusion. This commit fixes the issue by adding a check for the status in metadata store and the calculated status.

12 months agoRevert "Improve TestControllerLeadershipChange test logic to tolerate longer delay...
Jiajun Wang [Tue, 31 Aug 2021 20:02:33 +0000 (13:02 -0700)] 
Revert "Improve TestControllerLeadershipChange test logic to tolerate longer delay when test runs. (#1853)" (#1860)

This reverts commit a570d0566c42942b6154cb84a3d44f864fde37f0.

12 months agoImprove TestControllerLeadershipChange test logic to tolerate longer delay when test...
Jiajun Wang [Tue, 31 Aug 2021 17:24:05 +0000 (10:24 -0700)] 
Improve TestControllerLeadershipChange test logic to tolerate longer delay when test runs. (#1853)

Change the assert condition to consider real test script execute delay to avoid test failure due to slow test runs.

12 months agoThrow exception when query partition assignment in Maintenance mode (#1855)
xyuanlu [Mon, 30 Aug 2021 18:25:34 +0000 (11:25 -0700)] 
Throw exception when query partition assignment in Maintenance mode (#1855)

Throw exception for partitionAssignment when cluster in Maintenance mode.

12 months agoDisable delayed rebalance as default for partitionAssignment (#1852)
xyuanlu [Mon, 30 Aug 2021 18:25:06 +0000 (11:25 -0700)] 
Disable delayed rebalance as default for partitionAssignment (#1852)

Disable delayed rebalance as default for partitionAssignment.

13 months agoUse activate/DeactivateInstances as keyword in PartitionAssignment API (#1850)
xyuanlu [Tue, 24 Aug 2021 21:23:45 +0000 (14:23 -0700)] 
Use activate/DeactivateInstances as keyword in PartitionAssignment API (#1850)

Use activate/DeactivateInstances as keyword in PartitionAssignment API.

13 months agoAdd stop server wait time to be 10 seconds in MockMetadataStoreDirectoryServer to...
Jiajun Wang [Tue, 24 Aug 2021 00:42:20 +0000 (17:42 -0700)] 
Add stop server wait time to be 10 seconds in MockMetadataStoreDirectoryServer to avoid test failure. (#1848)

This change aims to reduce the unexpected test failure due to http endpoint in use. The additional timeout shall help the test terminate server instances gracefully.

13 months agoCheck server field state before shutdown to avoid NPE in MockMetadataStoreDirectorySe...
Jiajun Wang [Mon, 23 Aug 2021 23:04:20 +0000 (16:04 -0700)] 
Check server field state before shutdown to avoid NPE in MockMetadataStoreDirectoryServer. (#1847)

Check server field state before shutdown to avoid NPE in MockMetadataStoreDirectoryServer.

13 months agoRemove duplicated notice content
Junkai Xue [Thu, 19 Aug 2021 19:55:36 +0000 (12:55 -0700)] 
Remove duplicated notice content

13 months agoUpdate Lisence and Notice
Junkai Xue [Thu, 19 Aug 2021 19:53:38 +0000 (12:53 -0700)] 
Update Lisence and Notice

13 months agoAdd TF Available Threads Metrics (#1834)
Neal Sun [Mon, 16 Aug 2021 18:22:49 +0000 (11:22 -0700)] 
Add TF Available Threads Metrics (#1834)

Add metrics about Task Framework available threads in the cluster per job type.

13 months agoFix test logic for testExternalViewDiffFromTargetExternalView (#1835)
Junkai Xue [Mon, 9 Aug 2021 18:44:07 +0000 (11:44 -0700)] 
Fix test logic for testExternalViewDiffFromTargetExternalView (#1835)

13 months agoStabilize TestInstancesAccessor (#1828)
Ali Reza Zamani Zadeh Najari [Thu, 5 Aug 2021 18:35:01 +0000 (11:35 -0700)] 
Stabilize TestInstancesAccessor (#1828)

TestInstancesAccessor is unstable because the cluster might not be
stable while the test runs the stoppable check and cluster config and
instance config can be missing. In this commit, the test waits until the
cluster config and instance config get created and then proceeds for
the stoppable checks.

13 months agoFix the JavaDoc about transition priority. (#1831)
Jiajun Wang [Wed, 4 Aug 2021 19:33:45 +0000 (12:33 -0700)] 
Fix the JavaDoc about transition priority. (#1831)

Fix the JavaDoc about transition priority.
In addition, update several old code style for simplicity.

13 months agoFix TestZkConnectionLost (#1824)
Neal Sun [Tue, 3 Aug 2021 17:57:12 +0000 (10:57 -0700)] 
Fix TestZkConnectionLost (#1824)

Fix TestZkConnectionLost by adding longer connection timeout and fixing logic that are incorrect.

Co-authored-by: Neal Sun <nesun@nesun-mn1.linkedin.biz>
13 months agoAdd response metadata to response header for partitionAssignment (#1797)
xyuanlu [Tue, 3 Aug 2021 17:53:59 +0000 (10:53 -0700)] 
Add response metadata to response header for partitionAssignment (#1797)

Add response metadata to response header for partitionAssignment.

14 months agoRename property CLUSTER_PAUSE to CLUSTER_FREEZE in PauseSignal (#1820)
Huizhi Lu [Fri, 16 Jul 2021 03:26:11 +0000 (20:26 -0700)] 
Rename property CLUSTER_PAUSE to CLUSTER_FREEZE in PauseSignal (#1820)

Rename property CLUSTER_PAUSE to CLUSTER_FREEZE in PauseSignal.

14 months agoRename live instance status PAUSED to FROZEN (#1819)
Huizhi Lu [Thu, 15 Jul 2021 21:08:08 +0000 (14:08 -0700)] 
Rename live instance status PAUSED to FROZEN (#1819)

Since cluster freeze mode is naming as "FREEZE", live instance status should be named to "FROZEN" accordingly.
This commit renames the enum live instance status PAUSED to FROZEN. No logic change.

14 months agoRefactor freeze mode naming and getStatus default value (#1818)
Huizhi Lu [Thu, 15 Jul 2021 02:32:27 +0000 (19:32 -0700)] 
Refactor freeze mode naming and getStatus default value (#1818)

Rename CLUSTER_PAUSE with CLUSTER_FREEZE mode.
Change default return value for LiveInstance#getStatus(): null -> NORMAL. And fix tests accordingly.

14 months agoAdd integration tests for cluster freeze mode (#1816)
Huizhi Lu [Wed, 14 Jul 2021 22:10:33 +0000 (15:10 -0700)] 
Add integration tests for cluster freeze mode (#1816)

Integration tests are needed to cover the scenarios for the cluster freeze mode.
This commit adds integration tests for cluster freeze mode:
a. freeze cluster when there are pending state transition messages
b. handle new session when frozen - it should be reset and then frozen
c. restart participants when frozen - it should be reset and then frozen
d. reset partition when frozen
f. unfreeze cluster

14 months agoImplement Participant Freeze Process (#1812)
Huizhi Lu [Wed, 14 Jul 2021 19:22:19 +0000 (12:22 -0700)] 
Implement Participant Freeze Process (#1812)

After controller sends a freeze message to participant, participant needs to process the freeze message and execute the freeze request. It will mark the live instance as "frozen" internally in memory and in live instance znode.

For session change during freeze, handle new session won't do anything, except creating the live instance znode.
To unfreeze, if there is session change during the freeze period, state model state will be synced and current states will be carried over. Then live instance status field is removed.

14 months agoAdd message generation logic for management pipeline (#1803)
Huizhi Lu [Tue, 29 Jun 2021 05:53:46 +0000 (22:53 -0700)] 
Add message generation logic for management pipeline (#1803)

In cluster freeze mode, controller sends freeze/unfreeze and pending ST cancellation messages to participants.
In this commit, the existing message generation stage is leveraged to create the ST cancellation messages.
Best possible out is built by copying the state map from current state for generating cancellation messages.
For freeze/unfreeze messages, the logic is added in ManagementMessageGenerationPhase.
The existing MessageDispatchStage is also used for dispatching all the messages.

14 months agoAdd REST APIs for management mode (#1807)
Huizhi Lu [Tue, 29 Jun 2021 00:28:22 +0000 (17:28 -0700)] 
Add REST APIs for management mode (#1807)

This commit adds JAVA and REST APIs to set cluster freeze mode and get the management mode status

14 months agoCheck cluster management mode status (#1798)
Huizhi Lu [Tue, 22 Jun 2021 18:22:49 +0000 (11:22 -0700)] 
Check cluster management mode status (#1798)

Controller needs to know the participant freeze status so it can send freeze/unfreeze messages for entering/exiting freeze mode. The status check is done in management mode stage.

This commit adds methods to check cluster management mode status, and update the status and history accordingly.

14 months agoAdd message util to create messages (#1796)
Huizhi Lu [Tue, 15 Jun 2021 04:32:25 +0000 (21:32 -0700)] 
Add message util to create messages (#1796)

Message creation methods are private in message generation phase. Management mode stage will also need message generation methods to create ST cancellation and participant status change messages.
Message util will help with the purposes.

This commit moves the common message creation logic to a message util so multiple stages can reuse the code.

14 months agoMove pause and maintenance handling out of controller (#1793)
Huizhi Lu [Sat, 12 Jun 2021 08:00:25 +0000 (01:00 -0700)] 
Move pause and maintenance handling out of controller (#1793)

With management mode pipeline, the pause and maintenance signals handling logic should be moved out of the onControllerChange() and moved to the management mode pipeline.

This commit handles pause/maintenance signals enable/disable and update cluster status accordingly.

14 months agoAdd management mode pipeline registry and switch logic (#1769)
Huizhi Lu [Thu, 10 Jun 2021 04:01:30 +0000 (21:01 -0700)] 
Add management mode pipeline registry and switch logic (#1769)

Management Mode Pipeline will help check the cluster status and determine whether the default pipelines can be run.
One use case is, it will help controller to decide when it can exit the cluster freeze mode.

This commit adds management mode pipeline and logic to switch from/to the default resource/task pipelines.

14 months agoAdd model to record history and status of management mode (#1771)
Huizhi Lu [Wed, 9 Jun 2021 21:54:14 +0000 (14:54 -0700)] 
Add model to record history and status of management mode (#1771)

Management mode operation history needs to be persisted to the controller history znode. The status of IN_PROGRESS or COMPLETED is recorded in the temporary status znode: /{clusterName}/STATUS/CLUSTER/{clusterName}.
This commit adds data model and methods to record the status and history for management mode.

14 months agoAdd java api for enable/disable cluster pause mode (#1740)
Huizhi Lu [Wed, 19 May 2021 22:45:11 +0000 (15:45 -0700)] 
Add java api for enable/disable cluster pause mode (#1740)

Cluster pause mode feature is going to be added. This commit adds java api to set cluster pause mode: void setClusterManagementMode(ClusterManagementModeRequest request);

14 months agoStabilize the ZkClient monitor tests. (#1813)
Jiajun Wang [Thu, 15 Jul 2021 22:04:05 +0000 (15:04 -0700)] 
Stabilize the ZkClient monitor tests. (#1813)

Stabilize the ZkClient monitor tests.

14 months agoTurn on the computation of rebalance type discard throttling turned or not (#1817)
Junkai Xue [Wed, 14 Jul 2021 22:59:08 +0000 (15:59 -0700)] 
Turn on the computation of rebalance type discard throttling turned or not (#1817)

14 months agoFix versions bump up for 1.0.3
Junkai Xue [Tue, 29 Jun 2021 22:03:28 +0000 (15:03 -0700)] 
Fix versions bump up for 1.0.3

15 months agoBump ivy version from 1.0.2 SNAPSHOT to 1.0.3 SNAPSHOT
Junkai Xue [Fri, 25 Jun 2021 19:12:28 +0000 (12:12 -0700)] 
Bump ivy version from 1.0.2 SNAPSHOT to 1.0.3 SNAPSHOT

15 months agoAdd failure message for TestClusterAccessor (#1794)
xyuanlu [Mon, 14 Jun 2021 18:12:52 +0000 (11:12 -0700)] 
Add failure message for TestClusterAccessor  (#1794)

* make all test run on by one
* add message when audit log mismatch

15 months agoSupport currentState format for partitionAssignment (#1787)
xyuanlu [Sat, 12 Jun 2021 01:25:59 +0000 (18:25 -0700)] 
Support currentState format for partitionAssignment (#1787)

Support currentState format for partitionAssignment.

15 months agoAdd a badge to track flaky tests. (#1791)
Jiajun Wang [Fri, 11 Jun 2021 07:59:54 +0000 (00:59 -0700)] 
Add a badge to track flaky tests. (#1791)

15 months agoFix MaintenanceRecoveryStage Hanging (#1792)
Junkai Xue [Fri, 11 Jun 2021 00:45:03 +0000 (17:45 -0700)] 
Fix MaintenanceRecoveryStage Hanging (#1792)

The mainteance recovery stage should be in the order after IntermediateStage since it requires the output from IntermediateStage.