|
12 | 12 | */ |
13 | 13 | package io.kubernetes.client.informer.cache; |
14 | 14 |
|
| 15 | +import java.io.IOException; |
| 16 | +import java.net.ConnectException; |
| 17 | +import java.net.HttpURLConnection; |
| 18 | +import java.time.Duration; |
| 19 | +import java.util.List; |
| 20 | +import java.util.Optional; |
| 21 | +import java.util.concurrent.atomic.AtomicBoolean; |
| 22 | +import java.util.function.BiConsumer; |
| 23 | + |
| 24 | +import org.slf4j.Logger; |
| 25 | +import org.slf4j.LoggerFactory; |
| 26 | + |
15 | 27 | import io.kubernetes.client.common.KubernetesListObject; |
16 | 28 | import io.kubernetes.client.common.KubernetesObject; |
17 | 29 | import io.kubernetes.client.informer.EventType; |
|
23 | 35 | import io.kubernetes.client.util.CallGeneratorParams; |
24 | 36 | import io.kubernetes.client.util.Strings; |
25 | 37 | import io.kubernetes.client.util.Watchable; |
26 | | -import java.io.IOException; |
27 | | -import java.net.ConnectException; |
28 | | -import java.net.HttpURLConnection; |
29 | | -import java.time.Duration; |
30 | | -import java.util.List; |
31 | | -import java.util.Optional; |
32 | | -import java.util.concurrent.atomic.AtomicBoolean; |
33 | | -import java.util.function.BiConsumer; |
34 | | -import org.slf4j.Logger; |
35 | | -import org.slf4j.LoggerFactory; |
36 | 38 |
|
37 | 39 | public class ReflectorRunnable< |
38 | 40 | ApiType extends KubernetesObject, ApiListType extends KubernetesListObject> |
@@ -87,19 +89,7 @@ public void run() { |
87 | 89 | log.info("{}#Start listing and watching...", apiTypeClass); |
88 | 90 |
|
89 | 91 | try { |
90 | | - ApiListType list = |
91 | | - listerWatcher.list( |
92 | | - new CallGeneratorParams(Boolean.FALSE, getRelistResourceVersion(), null)); |
93 | | - |
94 | | - V1ListMeta listMeta = list.getMetadata(); |
95 | | - String resourceVersion = listMeta.getResourceVersion(); |
96 | | - List<? extends KubernetesObject> items = list.getItems(); |
97 | | - |
98 | | - if (log.isDebugEnabled()) { |
99 | | - log.debug("{}#Extract resourceVersion {} list meta", apiTypeClass, resourceVersion); |
100 | | - } |
101 | | - this.syncWith(items, resourceVersion); |
102 | | - this.lastSyncResourceVersion = resourceVersion; |
| 92 | + this.lastSyncResourceVersion = initialLoad(); |
103 | 93 | this.isLastSyncResourceVersionUnavailable = false; |
104 | 94 |
|
105 | 95 | if (log.isDebugEnabled()) { |
@@ -198,6 +188,22 @@ private synchronized void closeWatch() throws IOException { |
198 | 188 | } |
199 | 189 | } |
200 | 190 |
|
| 191 | + private String initialLoad() throws ApiException { |
| 192 | + ApiListType list = |
| 193 | + listerWatcher.list( |
| 194 | + new CallGeneratorParams(Boolean.FALSE, getRelistResourceVersion(), null)); |
| 195 | + |
| 196 | + V1ListMeta listMeta = list.getMetadata(); |
| 197 | + String resourceVersion = listMeta.getResourceVersion(); |
| 198 | + List<? extends KubernetesObject> items = list.getItems(); |
| 199 | + |
| 200 | + if (log.isDebugEnabled()) { |
| 201 | + log.debug("{}#Extract resourceVersion {} list meta", apiTypeClass, resourceVersion); |
| 202 | + } |
| 203 | + this.syncWith(items, resourceVersion); |
| 204 | + return resourceVersion; |
| 205 | + } |
| 206 | + |
201 | 207 | private void syncWith(List<? extends KubernetesObject> items, String resourceVersion) { |
202 | 208 | this.store.replace( |
203 | 209 | (List<KubernetesObject>) items, resourceVersion); // down-casting is safe here |
|
0 commit comments