60
60
import java .util .Map ;
61
61
import java .util .Objects ;
62
62
import java .util .Set ;
63
- import java .util .concurrent .CopyOnWriteArrayList ;
64
63
import java .util .concurrent .CountDownLatch ;
65
64
import java .util .concurrent .Executor ;
66
65
import java .util .concurrent .TimeUnit ;
67
- import java .util .concurrent .atomic .AtomicBoolean ;
68
66
import java .util .function .Function ;
69
67
import java .util .function .Predicate ;
70
68
import java .util .function .Supplier ;
@@ -103,8 +101,7 @@ public class TransportService extends AbstractLifecycleComponent
103
101
Setting .Property .Deprecated
104
102
);
105
103
106
- private final AtomicBoolean handleIncomingRequests = new AtomicBoolean ();
107
- private final DelegatingTransportMessageListener messageListener = new DelegatingTransportMessageListener ();
104
+ private volatile boolean handleIncomingRequests ;
108
105
protected final Transport transport ;
109
106
protected final ConnectionManager connectionManager ;
110
107
protected final ThreadPool threadPool ;
@@ -134,7 +131,7 @@ protected boolean removeEldestEntry(Map.Entry<Long, TimeoutInfoHolder> eldest) {
134
131
135
132
// tracer log
136
133
137
- private final Logger tracerLog ;
134
+ private static final Logger tracerLog = Loggers . getLogger ( logger , ".tracer" ) ;
138
135
private final Tracer tracer ;
139
136
140
137
volatile String [] tracerLogInclude ;
@@ -291,7 +288,6 @@ public TransportService(
291
288
this .clusterName = ClusterName .CLUSTER_NAME_SETTING .get (settings );
292
289
setTracerLogInclude (TransportSettings .TRACE_LOG_INCLUDE_SETTING .get (settings ));
293
290
setTracerLogExclude (TransportSettings .TRACE_LOG_EXCLUDE_SETTING .get (settings ));
294
- tracerLog = Loggers .getLogger (logger , ".tracer" );
295
291
this .taskManager = taskManger ;
296
292
this .interceptor = transportInterceptor ;
297
293
this .asyncSender = interceptor .interceptSender (this ::sendRequestInternal );
@@ -432,8 +428,8 @@ protected void doClose() throws IOException {
432
428
* reject any incoming requests, including handshakes, by closing the connection.
433
429
*/
434
430
public final void acceptIncomingRequests () {
435
- final boolean startedWithThisCall = handleIncomingRequests . compareAndSet ( false , true ) ;
436
- assert startedWithThisCall : "transport service was already accepting incoming requests" ;
431
+ assert handleIncomingRequests == false : "transport service was already accepting incoming requests" ;
432
+ handleIncomingRequests = true ;
437
433
logger .debug ("now accepting incoming requests" );
438
434
}
439
435
@@ -750,14 +746,6 @@ public void disconnectFromNode(DiscoveryNode node) {
750
746
connectionManager .disconnectFromNode (node );
751
747
}
752
748
753
- public void addMessageListener (TransportMessageListener listener ) {
754
- messageListener .listeners .add (listener );
755
- }
756
-
757
- public void removeMessageListener (TransportMessageListener listener ) {
758
- messageListener .listeners .remove (listener );
759
- }
760
-
761
749
public void addConnectionListener (TransportConnectionListener listener ) {
762
750
connectionManager .addListener (listener );
763
751
}
@@ -1265,13 +1253,12 @@ public <Request extends TransportRequest> void registerRequestHandler(
1265
1253
*/
1266
1254
@ Override
1267
1255
public void onRequestReceived (long requestId , String action ) {
1268
- if (handleIncomingRequests . get () == false ) {
1256
+ if (handleIncomingRequests == false ) {
1269
1257
throw new TransportNotReadyException ();
1270
1258
}
1271
1259
if (tracerLog .isTraceEnabled () && shouldTraceAction (action )) {
1272
1260
tracerLog .trace ("[{}][{}] received request" , requestId , action );
1273
1261
}
1274
- messageListener .onRequestReceived (requestId , action );
1275
1262
}
1276
1263
1277
1264
/** called by the {@link Transport} implementation once a request has been sent */
@@ -1286,7 +1273,6 @@ public void onRequestSent(
1286
1273
if (tracerLog .isTraceEnabled () && shouldTraceAction (action )) {
1287
1274
tracerLog .trace ("[{}][{}] sent to [{}] (timeout: [{}])" , requestId , action , node , options .timeout ());
1288
1275
}
1289
- messageListener .onRequestSent (node , requestId , action , request , options );
1290
1276
}
1291
1277
1292
1278
@ Override
@@ -1297,7 +1283,6 @@ public void onResponseReceived(long requestId, Transport.ResponseContext holder)
1297
1283
} else if (tracerLog .isTraceEnabled () && shouldTraceAction (holder .action ())) {
1298
1284
tracerLog .trace ("[{}][{}] received response from [{}]" , requestId , holder .action (), holder .connection ().getNode ());
1299
1285
}
1300
- messageListener .onResponseReceived (requestId , holder );
1301
1286
}
1302
1287
1303
1288
/** called by the {@link Transport} implementation once a response was sent to calling node */
@@ -1306,7 +1291,6 @@ public void onResponseSent(long requestId, String action, TransportResponse resp
1306
1291
if (tracerLog .isTraceEnabled () && shouldTraceAction (action )) {
1307
1292
tracerLog .trace ("[{}][{}] sent response" , requestId , action );
1308
1293
}
1309
- messageListener .onResponseSent (requestId , action , response );
1310
1294
}
1311
1295
1312
1296
/** called by the {@link Transport} implementation after an exception was sent as a response to an incoming request */
@@ -1315,7 +1299,6 @@ public void onResponseSent(long requestId, String action, Exception e) {
1315
1299
if (tracerLog .isTraceEnabled () && shouldTraceAction (action )) {
1316
1300
tracerLog .trace (() -> format ("[%s][%s] sent error response" , requestId , action ), e );
1317
1301
}
1318
- messageListener .onResponseSent (requestId , action , e );
1319
1302
}
1320
1303
1321
1304
public RequestHandlerRegistry <? extends TransportRequest > getRequestHandler (String action ) {
@@ -1453,6 +1436,7 @@ public void run() {
1453
1436
public void cancel () {
1454
1437
assert responseHandlers .contains (requestId ) == false
1455
1438
: "cancel must be called after the requestId [" + requestId + "] has been removed from clientHandlers" ;
1439
+ var cancellable = this .cancellable ;
1456
1440
if (cancellable != null ) {
1457
1441
cancellable .cancel ();
1458
1442
}
@@ -1492,6 +1476,7 @@ public T read(StreamInput in) throws IOException {
1492
1476
1493
1477
@ Override
1494
1478
public void handleResponse (T response ) {
1479
+ var handler = this .handler ;
1495
1480
if (handler != null ) {
1496
1481
handler .cancel ();
1497
1482
}
@@ -1502,6 +1487,7 @@ public void handleResponse(T response) {
1502
1487
1503
1488
@ Override
1504
1489
public void handleException (TransportException exp ) {
1490
+ var handler = this .handler ;
1505
1491
if (handler != null ) {
1506
1492
handler .cancel ();
1507
1493
}
@@ -1666,53 +1652,6 @@ private boolean isLocalNode(DiscoveryNode discoveryNode) {
1666
1652
return discoveryNode .equals (localNode );
1667
1653
}
1668
1654
1669
- private static final class DelegatingTransportMessageListener implements TransportMessageListener {
1670
-
1671
- private final List <TransportMessageListener > listeners = new CopyOnWriteArrayList <>();
1672
-
1673
- @ Override
1674
- public void onRequestReceived (long requestId , String action ) {
1675
- for (TransportMessageListener listener : listeners ) {
1676
- listener .onRequestReceived (requestId , action );
1677
- }
1678
- }
1679
-
1680
- @ Override
1681
- public void onResponseSent (long requestId , String action , TransportResponse response ) {
1682
- for (TransportMessageListener listener : listeners ) {
1683
- listener .onResponseSent (requestId , action , response );
1684
- }
1685
- }
1686
-
1687
- @ Override
1688
- public void onResponseSent (long requestId , String action , Exception error ) {
1689
- for (TransportMessageListener listener : listeners ) {
1690
- listener .onResponseSent (requestId , action , error );
1691
- }
1692
- }
1693
-
1694
- @ Override
1695
- public void onRequestSent (
1696
- DiscoveryNode node ,
1697
- long requestId ,
1698
- String action ,
1699
- TransportRequest request ,
1700
- TransportRequestOptions finalOptions
1701
- ) {
1702
- for (TransportMessageListener listener : listeners ) {
1703
- listener .onRequestSent (node , requestId , action , request , finalOptions );
1704
- }
1705
- }
1706
-
1707
- @ Override
1708
- @ SuppressWarnings ("rawtypes" )
1709
- public void onResponseReceived (long requestId , Transport .ResponseContext holder ) {
1710
- for (TransportMessageListener listener : listeners ) {
1711
- listener .onResponseReceived (requestId , holder );
1712
- }
1713
- }
1714
- }
1715
-
1716
1655
private static class PendingDirectHandlers extends AbstractRefCounted {
1717
1656
1718
1657
// To handle a response we (i) remove the handler from responseHandlers and then (ii) enqueue an action to complete the handler on
0 commit comments