diff --git a/extended/src/main/java/io/kubernetes/client/extended/leaderelection/LeaderElector.java b/extended/src/main/java/io/kubernetes/client/extended/leaderelection/LeaderElector.java index 45308bfdbb..20cf090c52 100644 --- a/extended/src/main/java/io/kubernetes/client/extended/leaderelection/LeaderElector.java +++ b/extended/src/main/java/io/kubernetes/client/extended/leaderelection/LeaderElector.java @@ -281,14 +281,16 @@ private boolean tryAcquireOrRenew() { || oldLeaderElectionRecord.getAcquireTime() == null || oldLeaderElectionRecord.getRenewTime() == null || oldLeaderElectionRecord.getHolderIdentity() == null) { - // We found the lock resource with an empty LeaderElectionRecord, try to get leadership by updating it + // We found the lock resource with an empty LeaderElectionRecord, try to get leadership by + // updating it if (log.isDebugEnabled()) { log.debug("Update lock to get lease"); } if (oldLeaderElectionRecord != null) { // maintain the leaderTransitions - leaderElectionRecord.setLeaderTransitions(oldLeaderElectionRecord.getLeaderTransitions() + 1); + leaderElectionRecord.setLeaderTransitions( + oldLeaderElectionRecord.getLeaderTransitions() + 1); } return updateLock(lock, leaderElectionRecord); @@ -382,19 +384,23 @@ public void close() { // First ensure that all executors have stopped try { - boolean isTerminated = scheduledWorkers.awaitTermination(config.getRetryPeriod().getSeconds(), TimeUnit.SECONDS); + boolean isTerminated = + scheduledWorkers.awaitTermination( + config.getRetryPeriod().getSeconds(), TimeUnit.SECONDS); if (!isTerminated) { log.warn("scheduledWorkers executor termination didn't finish."); return; } - isTerminated = leaseWorkers.awaitTermination(config.getRetryPeriod().getSeconds(), TimeUnit.SECONDS); + isTerminated = + leaseWorkers.awaitTermination(config.getRetryPeriod().getSeconds(), TimeUnit.SECONDS); if (!isTerminated) { log.warn("leaseWorkers executor termination didn't finish."); return; } - isTerminated = hookWorkers.awaitTermination(config.getRetryPeriod().getSeconds(), TimeUnit.SECONDS); + isTerminated = + hookWorkers.awaitTermination(config.getRetryPeriod().getSeconds(), TimeUnit.SECONDS); if (!isTerminated) { log.warn("hookWorkers executor termination didn't finish."); return; diff --git a/extended/src/test/java/io/kubernetes/client/extended/leaderelection/LeaderElectionTest.java b/extended/src/test/java/io/kubernetes/client/extended/leaderelection/LeaderElectionTest.java index 2ef55b33e5..7c42684163 100644 --- a/extended/src/test/java/io/kubernetes/client/extended/leaderelection/LeaderElectionTest.java +++ b/extended/src/test/java/io/kubernetes/client/extended/leaderelection/LeaderElectionTest.java @@ -17,7 +17,6 @@ import static org.mockito.Mockito.*; import io.kubernetes.client.openapi.ApiException; - import java.net.HttpURLConnection; import java.time.Duration; import java.util.ArrayList; @@ -418,7 +417,7 @@ public LeaderElectionRecord get() throws ApiException { lock.lock(); try { if (leaderRecord == null) { - throw new ApiException("Record Not Found", HttpURLConnection.HTTP_NOT_FOUND, null, null); + throw new ApiException("Record Not Found", HttpURLConnection.HTTP_NOT_FOUND, null, null); } return leaderRecord; } finally { diff --git a/extended/src/test/java/io/kubernetes/client/extended/leaderelection/LeaderElectorTest.java b/extended/src/test/java/io/kubernetes/client/extended/leaderelection/LeaderElectorTest.java index c9918cfb44..513409de97 100644 --- a/extended/src/test/java/io/kubernetes/client/extended/leaderelection/LeaderElectorTest.java +++ b/extended/src/test/java/io/kubernetes/client/extended/leaderelection/LeaderElectorTest.java @@ -10,33 +10,28 @@ See the License for the specific language governing permissions and limitations under the License. */ - package io.kubernetes.client.extended.leaderelection; -import org.junit.Test; - import java.time.Duration; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; +import org.junit.Test; -/** - * Leader Election tests using "simulated" locks created by {@link LockSmith} - */ -public class LeaderElectorTest -{ +/** Leader Election tests using "simulated" locks created by {@link LockSmith} */ +public class LeaderElectorTest { /** * Tests that when a leader candidate is stopped gracefully, second candidate immediately becomes * leader. */ @Test(timeout = 20000L) - public void testLeaderGracefulShutdown() throws Exception - { + public void testLeaderGracefulShutdown() throws Exception { LockSmith lockSmith = new LockSmith(); CountDownLatch startBeingLeader1 = new CountDownLatch(1); CountDownLatch stopBeingLeader1 = new CountDownLatch(1); - LeaderElector leaderElector1 = makeAndRunLeaderElectorAsync(lockSmith, "candidate1", startBeingLeader1, stopBeingLeader1); + LeaderElector leaderElector1 = + makeAndRunLeaderElectorAsync(lockSmith, "candidate1", startBeingLeader1, stopBeingLeader1); // wait for candidate1 to become leader startBeingLeader1.await(); @@ -44,7 +39,8 @@ public void testLeaderGracefulShutdown() throws Exception CountDownLatch startBeingLeader2 = new CountDownLatch(1); CountDownLatch stopBeingLeader2 = new CountDownLatch(1); - LeaderElector leaderElector2 = makeAndRunLeaderElectorAsync(lockSmith, "candidate2", startBeingLeader2, stopBeingLeader2); + LeaderElector leaderElector2 = + makeAndRunLeaderElectorAsync(lockSmith, "candidate2", startBeingLeader2, stopBeingLeader2); leaderElector1.close(); @@ -57,23 +53,25 @@ public void testLeaderGracefulShutdown() throws Exception leaderElector2.close(); } - private LeaderElector makeAndRunLeaderElectorAsync(LockSmith lockSmith, String lockIdentity, CountDownLatch startBeingLeader, CountDownLatch stopBeingLeader) - { + private LeaderElector makeAndRunLeaderElectorAsync( + LockSmith lockSmith, + String lockIdentity, + CountDownLatch startBeingLeader, + CountDownLatch stopBeingLeader) { LeaderElectionConfig leaderElectionConfig = new LeaderElectionConfig( lockSmith.makeLock(lockIdentity), Duration.ofMillis(TimeUnit.MINUTES.toMillis(1)), Duration.ofMillis(TimeUnit.SECONDS.toMillis(51)), - Duration.ofMillis(TimeUnit.SECONDS.toMillis(3)) - ); + Duration.ofMillis(TimeUnit.SECONDS.toMillis(3))); LeaderElector leaderElector = new LeaderElector(leaderElectionConfig); - Thread thread = new Thread( - () -> leaderElector.run( - () -> startBeingLeader.countDown(), () -> stopBeingLeader.countDown() - ), - String.format("%s-leader-elector-main", lockIdentity) - ); + Thread thread = + new Thread( + () -> + leaderElector.run( + () -> startBeingLeader.countDown(), () -> stopBeingLeader.countDown()), + String.format("%s-leader-elector-main", lockIdentity)); thread.setDaemon(true); thread.start(); diff --git a/extended/src/test/java/io/kubernetes/client/extended/leaderelection/LockSmith.java b/extended/src/test/java/io/kubernetes/client/extended/leaderelection/LockSmith.java index 16eadc1a7a..e34b02bf2a 100644 --- a/extended/src/test/java/io/kubernetes/client/extended/leaderelection/LockSmith.java +++ b/extended/src/test/java/io/kubernetes/client/extended/leaderelection/LockSmith.java @@ -10,38 +10,29 @@ See the License for the specific language governing permissions and limitations under the License. */ - package io.kubernetes.client.extended.leaderelection; import io.kubernetes.client.openapi.ApiException; - import java.net.HttpURLConnection; import java.util.concurrent.atomic.AtomicReference; -/** - * Makes simulated {@link Lock} objects that behave as if they were backed by real API server. - */ -public class LockSmith -{ +/** Makes simulated {@link Lock} objects that behave as if they were backed by real API server. */ +public class LockSmith { private AtomicReference lockResourceRef = new AtomicReference<>(); - public Lock makeLock(String identity) - { + public Lock makeLock(String identity) { return new SimulatedLock(identity); } - private class SimulatedLock implements Lock - { + private class SimulatedLock implements Lock { private final String identity; - public SimulatedLock(String identity) - { + public SimulatedLock(String identity) { this.identity = identity; } @Override - public LeaderElectionRecord get() throws ApiException - { + public LeaderElectionRecord get() throws ApiException { if (lockResourceRef.get() == null) { throw new ApiException("Record Not Found", HttpURLConnection.HTTP_NOT_FOUND, null, null); } @@ -50,14 +41,12 @@ public LeaderElectionRecord get() throws ApiException } @Override - public boolean create(LeaderElectionRecord record) - { + public boolean create(LeaderElectionRecord record) { return lockResourceRef.compareAndSet(null, new Resource(record)); } @Override - public boolean update(LeaderElectionRecord record) - { + public boolean update(LeaderElectionRecord record) { Resource res = lockResourceRef.get(); if (res == null) { return false; @@ -68,31 +57,26 @@ public boolean update(LeaderElectionRecord record) } @Override - public String identity() - { + public String identity() { return identity; } @Override - public String describe() - { + public String describe() { return "simulated/lock"; } } - private static class Resource - { + private static class Resource { final int version; final LeaderElectionRecord record; - public Resource(LeaderElectionRecord record) - { + public Resource(LeaderElectionRecord record) { this.version = 0; this.record = record; } - public Resource(int version, LeaderElectionRecord record) - { + public Resource(int version, LeaderElectionRecord record) { this.version = version; this.record = record; }