Skip to content

Commit 52c6efd

Browse files
author
Dave Syer
committed
Move ThreadFactory to a utility class
Signed-off-by: Dave Syer <dsyer@vmware.com>
1 parent 739291b commit 52c6efd

4 files changed

Lines changed: 52 additions & 51 deletions

File tree

extended/src/main/java/io/kubernetes/client/extended/controller/Controllers.java

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
import io.kubernetes.client.common.KubernetesObject;
1616
import io.kubernetes.client.extended.controller.reconciler.Request;
1717
import io.kubernetes.client.openapi.models.V1ObjectMeta;
18+
import io.kubernetes.client.util.Threads;
19+
1820
import java.util.concurrent.Executors;
1921
import java.util.concurrent.ThreadFactory;
2022
import java.util.concurrent.atomic.AtomicInteger;
@@ -51,16 +53,6 @@ Function<ApiType, Request> defaultReflectiveKeyFunc() {
5153
* @return the thread factory
5254
*/
5355
public static ThreadFactory namedControllerThreadFactory(String controllerName) {
54-
final ThreadFactory defaultFactory = Executors.defaultThreadFactory();
55-
final AtomicInteger threadNumber = new AtomicInteger(1);
56-
String format = controllerName + "-%d";
57-
return r -> {
58-
Thread thread = defaultFactory.newThread(r);
59-
if (!thread.isDaemon()) {
60-
thread.setDaemon(true);
61-
}
62-
thread.setName(String.format(format, threadNumber.getAndIncrement()));
63-
return thread;
64-
};
56+
return Threads.threadFactory(controllerName + "-%d");
6557
}
6658
}

extended/src/main/java/io/kubernetes/client/extended/leaderelection/LeaderElector.java

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212
*/
1313
package io.kubernetes.client.extended.leaderelection;
1414

15-
import io.kubernetes.client.openapi.ApiException;
1615
import java.net.HttpURLConnection;
1716
import java.time.Duration;
1817
import java.util.Date;
@@ -25,15 +24,17 @@
2524
import java.util.concurrent.Future;
2625
import java.util.concurrent.ScheduledExecutorService;
2726
import java.util.concurrent.ScheduledFuture;
28-
import java.util.concurrent.ThreadFactory;
2927
import java.util.concurrent.TimeUnit;
3028
import java.util.concurrent.TimeoutException;
3129
import java.util.concurrent.atomic.AtomicBoolean;
32-
import java.util.concurrent.atomic.AtomicInteger;
3330
import java.util.function.Consumer;
31+
3432
import org.slf4j.Logger;
3533
import org.slf4j.LoggerFactory;
3634

35+
import io.kubernetes.client.openapi.ApiException;
36+
import io.kubernetes.client.util.Threads;
37+
3738
public class LeaderElector implements AutoCloseable {
3839

3940
private static final Logger log = LoggerFactory.getLogger(LeaderElector.class);
@@ -54,11 +55,11 @@ public class LeaderElector implements AutoCloseable {
5455

5556
private final ScheduledExecutorService scheduledWorkers =
5657
Executors.newSingleThreadScheduledExecutor(
57-
makeThreadFactory("leader-elector-scheduled-worker-%d"));
58+
Threads.threadFactory("leader-elector-scheduled-worker-%d"));
5859
private final ExecutorService leaseWorkers =
59-
Executors.newSingleThreadExecutor(makeThreadFactory("leader-elector-lease-worker-%d"));
60+
Executors.newSingleThreadExecutor(Threads.threadFactory("leader-elector-lease-worker-%d"));
6061
private final ExecutorService hookWorkers =
61-
Executors.newSingleThreadExecutor(makeThreadFactory("leader-elector-hook-worker-%d"));
62+
Executors.newSingleThreadExecutor(Threads.threadFactory("leader-elector-hook-worker-%d"));
6263

6364
public LeaderElector(LeaderElectionConfig config) {
6465
this(
@@ -343,19 +344,6 @@ private void maybeReportTransition() {
343344
}
344345
}
345346

346-
private ThreadFactory makeThreadFactory(String format) {
347-
final ThreadFactory defaultFactory = Executors.defaultThreadFactory();
348-
final AtomicInteger threadNumber = new AtomicInteger(1);
349-
return r -> {
350-
Thread thread = defaultFactory.newThread(r);
351-
if (!thread.isDaemon()) {
352-
thread.setDaemon(true);
353-
}
354-
thread.setName(String.format(format, threadNumber.getAndIncrement()));
355-
return thread;
356-
};
357-
}
358-
359347
@Override
360348
public void close() {
361349
scheduledWorkers.shutdownNow();

util/src/main/java/io/kubernetes/client/informer/cache/Controller.java

Lines changed: 9 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -12,24 +12,25 @@
1212
*/
1313
package io.kubernetes.client.informer.cache;
1414

15-
import io.kubernetes.client.common.KubernetesListObject;
16-
import io.kubernetes.client.common.KubernetesObject;
17-
import io.kubernetes.client.informer.ListerWatcher;
18-
import io.kubernetes.client.informer.ResyncRunnable;
1915
import java.util.Deque;
2016
import java.util.concurrent.Executors;
2117
import java.util.concurrent.RejectedExecutionException;
2218
import java.util.concurrent.ScheduledExecutorService;
2319
import java.util.concurrent.ScheduledFuture;
24-
import java.util.concurrent.ThreadFactory;
2520
import java.util.concurrent.TimeUnit;
26-
import java.util.concurrent.atomic.AtomicInteger;
2721
import java.util.function.Consumer;
2822
import java.util.function.Supplier;
23+
2924
import org.apache.commons.lang3.tuple.MutablePair;
3025
import org.slf4j.Logger;
3126
import org.slf4j.LoggerFactory;
3227

28+
import io.kubernetes.client.common.KubernetesListObject;
29+
import io.kubernetes.client.common.KubernetesObject;
30+
import io.kubernetes.client.informer.ListerWatcher;
31+
import io.kubernetes.client.informer.ResyncRunnable;
32+
import io.kubernetes.client.util.Threads;
33+
3334
/**
3435
* Controller is a java port of k/client-go's informer#Controller. It plumbs reflector and the queue
3536
* implementation and it runs re-sync function periodically.
@@ -83,25 +84,12 @@ public Controller(
8384
// starts one daemon thread for reflector
8485
this.reflectExecutor =
8586
Executors.newSingleThreadScheduledExecutor(
86-
threadFactory("controller-reflector-" + apiTypeClass.getName() + "-%d"));
87+
Threads.threadFactory("controller-reflector-" + apiTypeClass.getName() + "-%d"));
8788

8889
// starts one daemon thread for resync
8990
this.resyncExecutor =
9091
Executors.newSingleThreadScheduledExecutor(
91-
threadFactory("controller-reflector-" + apiTypeClass.getName() + "-%d"));
92-
}
93-
94-
private ThreadFactory threadFactory(String format) {
95-
final ThreadFactory defaultFactory = Executors.defaultThreadFactory();
96-
final AtomicInteger threadNumber = new AtomicInteger(1);
97-
return r -> {
98-
Thread thread = defaultFactory.newThread(r);
99-
if (!thread.isDaemon()) {
100-
thread.setDaemon(true);
101-
}
102-
thread.setName(String.format(format, threadNumber.getAndIncrement()));
103-
return thread;
104-
};
92+
Threads.threadFactory("controller-reflector-" + apiTypeClass.getName() + "-%d"));
10593
}
10694

10795
public Controller(
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/*
2+
Copyright 2020 The Kubernetes Authors.
3+
Licensed under the Apache License, Version 2.0 (the "License");
4+
you may not use this file except in compliance with the License.
5+
You may obtain a copy of the License at
6+
http://www.apache.org/licenses/LICENSE-2.0
7+
Unless required by applicable law or agreed to in writing, software
8+
distributed under the License is distributed on an "AS IS" BASIS,
9+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10+
See the License for the specific language governing permissions and
11+
limitations under the License.
12+
*/
13+
package io.kubernetes.client.util;
14+
15+
import java.util.concurrent.Executors;
16+
import java.util.concurrent.ThreadFactory;
17+
import java.util.concurrent.atomic.AtomicInteger;
18+
19+
public class Threads {
20+
21+
public static ThreadFactory threadFactory(String format) {
22+
final ThreadFactory defaultFactory = Executors.defaultThreadFactory();
23+
final AtomicInteger threadNumber = new AtomicInteger(1);
24+
return r -> {
25+
Thread thread = defaultFactory.newThread(r);
26+
if (!thread.isDaemon()) {
27+
thread.setDaemon(true);
28+
}
29+
thread.setName(String.format(format, threadNumber.getAndIncrement()));
30+
return thread;
31+
};
32+
}
33+
}

0 commit comments

Comments
 (0)