|
18 | 18 | */ |
19 | 19 | package org.elasticsearch.action.support; |
20 | 20 |
|
| 21 | +import org.apache.logging.log4j.LogManager; |
| 22 | +import org.apache.logging.log4j.Logger; |
21 | 23 | import org.apache.logging.log4j.message.ParameterizedMessage; |
22 | 24 | import org.elasticsearch.action.ActionListener; |
23 | 25 | import org.elasticsearch.action.ActionRequest; |
|
27 | 29 | import org.elasticsearch.tasks.Task; |
28 | 30 | import org.elasticsearch.threadpool.ThreadPool; |
29 | 31 | import org.elasticsearch.transport.TransportChannel; |
| 32 | +import org.elasticsearch.transport.TransportRequest; |
30 | 33 | import org.elasticsearch.transport.TransportRequestHandler; |
| 34 | +import org.elasticsearch.transport.TransportResponse; |
31 | 35 | import org.elasticsearch.transport.TransportService; |
32 | 36 |
|
33 | 37 | import java.util.function.Supplier; |
@@ -63,30 +67,44 @@ protected HandledTransportAction(Settings settings, String actionName, boolean c |
63 | 67 | } |
64 | 68 |
|
65 | 69 | class TransportHandler implements TransportRequestHandler<Request> { |
66 | | - |
67 | 70 | @Override |
68 | 71 | public final void messageReceived(final Request request, final TransportChannel channel, Task task) throws Exception { |
69 | 72 | // We already got the task created on the network layer - no need to create it again on the transport layer |
70 | | - execute(task, request, new ActionListener<Response>() { |
71 | | - @Override |
72 | | - public void onResponse(Response response) { |
73 | | - try { |
74 | | - channel.sendResponse(response); |
75 | | - } catch (Exception e) { |
76 | | - onFailure(e); |
77 | | - } |
78 | | - } |
| 73 | + Logger logger = HandledTransportAction.this.logger; |
| 74 | + execute(task, request, new ChannelActionListener<>(channel, actionName, request)); |
| 75 | + } |
| 76 | + } |
| 77 | + |
| 78 | + public static final class ChannelActionListener<Response extends TransportResponse, Request extends TransportRequest> implements |
| 79 | + ActionListener<Response> { |
| 80 | + private final Logger logger = LogManager.getLogger(getClass()); |
| 81 | + private final TransportChannel channel; |
| 82 | + private final Request request; |
| 83 | + private final String actionName; |
| 84 | + |
| 85 | + public ChannelActionListener(TransportChannel channel, String actionName, Request request) { |
| 86 | + this.channel = channel; |
| 87 | + this.request = request; |
| 88 | + this.actionName = actionName; |
| 89 | + } |
79 | 90 |
|
80 | | - @Override |
81 | | - public void onFailure(Exception e) { |
82 | | - try { |
83 | | - channel.sendResponse(e); |
84 | | - } catch (Exception e1) { |
85 | | - logger.warn(() -> new ParameterizedMessage( |
86 | | - "Failed to send error response for action [{}] and request [{}]", actionName, request), e1); |
87 | | - } |
88 | | - } |
89 | | - }); |
| 91 | + @Override |
| 92 | + public void onResponse(Response response) { |
| 93 | + try { |
| 94 | + channel.sendResponse(response); |
| 95 | + } catch (Exception e) { |
| 96 | + onFailure(e); |
| 97 | + } |
| 98 | + } |
| 99 | + |
| 100 | + @Override |
| 101 | + public void onFailure(Exception e) { |
| 102 | + try { |
| 103 | + channel.sendResponse(e); |
| 104 | + } catch (Exception e1) { |
| 105 | + logger.warn(() -> new ParameterizedMessage( |
| 106 | + "Failed to send error response for action [{}] and request [{}]", actionName, request), e1); |
| 107 | + } |
90 | 108 | } |
91 | 109 | } |
92 | 110 |
|
|
0 commit comments