33
33
import org .elasticsearch .common .transport .TransportAddress ;
34
34
import org .elasticsearch .common .unit .TimeValue ;
35
35
import org .elasticsearch .threadpool .ThreadPool ;
36
- import org .elasticsearch .transport .*;
36
+ import org .elasticsearch .transport .BaseTransportResponseHandler ;
37
+ import org .elasticsearch .transport .ConnectTransportException ;
38
+ import org .elasticsearch .transport .FutureTransportResponseHandler ;
39
+ import org .elasticsearch .transport .TransportException ;
40
+ import org .elasticsearch .transport .TransportService ;
37
41
38
42
import java .util .HashSet ;
39
43
import java .util .Iterator ;
@@ -66,7 +70,7 @@ public class TransportClientNodesService extends AbstractComponent {
66
70
67
71
private final AtomicInteger tempNodeIdGenerator = new AtomicInteger ();
68
72
69
- private final Runnable nodesSampler ;
73
+ private final NodeSampler nodesSampler ;
70
74
71
75
private volatile ScheduledFuture nodesSamplerFuture ;
72
76
@@ -88,11 +92,11 @@ public class TransportClientNodesService extends AbstractComponent {
88
92
}
89
93
90
94
if (componentSettings .getAsBoolean ("sniff" , false )) {
91
- this .nodesSampler = new ScheduledSniffNodesSampler ();
95
+ this .nodesSampler = new SniffNodesSampler ();
92
96
} else {
93
- this .nodesSampler = new ScheduledConnectNodeSampler ();
97
+ this .nodesSampler = new SimpleNodeSampler ();
94
98
}
95
- this .nodesSamplerFuture = threadPool .schedule (nodesSamplerInterval , ThreadPool .Names .CACHED , nodesSampler );
99
+ this .nodesSamplerFuture = threadPool .schedule (nodesSamplerInterval , ThreadPool .Names .CACHED , new ScheduledNodeSampler () );
96
100
97
101
// we want the transport service to throw connect exceptions, so we can retry
98
102
transportService .throwConnectException (true );
@@ -115,7 +119,7 @@ public TransportClientNodesService addTransportAddress(TransportAddress transpor
115
119
ImmutableList .Builder <DiscoveryNode > builder = ImmutableList .builder ();
116
120
listedNodes = builder .addAll (listedNodes ).add (new DiscoveryNode ("#transport#-" + tempNodeIdGenerator .incrementAndGet (), transportAddress )).build ();
117
121
}
118
- nodesSampler .run ();
122
+ nodesSampler .sample ();
119
123
return this ;
120
124
}
121
125
@@ -129,7 +133,7 @@ public TransportClientNodesService removeTransportAddress(TransportAddress trans
129
133
}
130
134
listedNodes = builder .build ();
131
135
}
132
- nodesSampler .run ();
136
+ nodesSampler .sample ();
133
137
return this ;
134
138
}
135
139
@@ -157,8 +161,22 @@ public void close() {
157
161
transportService .disconnectFromNode (listedNode );
158
162
}
159
163
160
- private class ScheduledConnectNodeSampler implements Runnable {
161
- @ Override public synchronized void run () {
164
+ interface NodeSampler {
165
+ void sample ();
166
+ }
167
+
168
+ class ScheduledNodeSampler implements Runnable {
169
+ @ Override public void run () {
170
+ nodesSampler .sample ();
171
+ if (!closed ) {
172
+ nodesSamplerFuture = threadPool .schedule (nodesSamplerInterval , ThreadPool .Names .CACHED , this );
173
+ }
174
+ }
175
+ }
176
+
177
+ class SimpleNodeSampler implements NodeSampler {
178
+
179
+ @ Override public synchronized void sample () {
162
180
if (closed ) {
163
181
return ;
164
182
}
@@ -188,16 +206,12 @@ private class ScheduledConnectNodeSampler implements Runnable {
188
206
}
189
207
}
190
208
nodes = new ImmutableList .Builder <DiscoveryNode >().addAll (newNodes ).build ();
191
-
192
- if (!closed ) {
193
- nodesSamplerFuture = threadPool .schedule (nodesSamplerInterval , ThreadPool .Names .CACHED , this );
194
- }
195
209
}
196
210
}
197
211
198
- private class ScheduledSniffNodesSampler implements Runnable {
212
+ class SniffNodesSampler implements NodeSampler {
199
213
200
- @ Override public synchronized void run () {
214
+ @ Override public synchronized void sample () {
201
215
if (closed ) {
202
216
return ;
203
217
}
@@ -256,7 +270,7 @@ private class ScheduledSniffNodesSampler implements Runnable {
256
270
}
257
271
}
258
272
// now, make sure we are connected to all the updated nodes
259
- for (Iterator <DiscoveryNode > it = newNodes .iterator (); it .hasNext ();) {
273
+ for (Iterator <DiscoveryNode > it = newNodes .iterator (); it .hasNext (); ) {
260
274
DiscoveryNode node = it .next ();
261
275
try {
262
276
transportService .connectToNode (node );
@@ -266,10 +280,6 @@ private class ScheduledSniffNodesSampler implements Runnable {
266
280
}
267
281
}
268
282
nodes = new ImmutableList .Builder <DiscoveryNode >().addAll (newNodes ).build ();
269
-
270
- if (!closed ) {
271
- nodesSamplerFuture = threadPool .schedule (nodesSamplerInterval , ThreadPool .Names .CACHED , this );
272
- }
273
283
}
274
284
}
275
285
0 commit comments