11
11
import org .apache .logging .log4j .Logger ;
12
12
import org .elasticsearch .action .ActionListener ;
13
13
import org .elasticsearch .action .datastreams .DataStreamsActionUtil ;
14
+ import org .elasticsearch .action .datastreams .DataStreamsStatsAction ;
14
15
import org .elasticsearch .action .datastreams .GetDataStreamAction ;
15
16
import org .elasticsearch .action .datastreams .GetDataStreamAction .Response .IndexProperties ;
16
17
import org .elasticsearch .action .datastreams .GetDataStreamAction .Response .ManagedBy ;
17
18
import org .elasticsearch .action .support .ActionFilters ;
18
19
import org .elasticsearch .action .support .master .TransportMasterNodeReadAction ;
20
+ import org .elasticsearch .client .internal .Client ;
19
21
import org .elasticsearch .cluster .ClusterState ;
20
22
import org .elasticsearch .cluster .block .ClusterBlockException ;
21
23
import org .elasticsearch .cluster .block .ClusterBlockLevel ;
30
32
import org .elasticsearch .cluster .service .ClusterService ;
31
33
import org .elasticsearch .common .settings .ClusterSettings ;
32
34
import org .elasticsearch .common .settings .Settings ;
33
- import org .elasticsearch .common . util . concurrent . EsExecutors ;
35
+ import org .elasticsearch .core . Nullable ;
34
36
import org .elasticsearch .core .Tuple ;
35
37
import org .elasticsearch .index .Index ;
36
38
import org .elasticsearch .index .IndexMode ;
43
45
44
46
import java .time .Instant ;
45
47
import java .util .ArrayList ;
48
+ import java .util .Arrays ;
46
49
import java .util .Comparator ;
47
50
import java .util .HashMap ;
48
51
import java .util .List ;
49
52
import java .util .Map ;
53
+ import java .util .stream .Collectors ;
50
54
51
55
import static org .elasticsearch .index .IndexSettings .PREFER_ILM_SETTING ;
52
56
53
- public class GetDataStreamsTransportAction extends TransportMasterNodeReadAction <
57
+ public class TransportGetDataStreamsAction extends TransportMasterNodeReadAction <
54
58
GetDataStreamAction .Request ,
55
59
GetDataStreamAction .Response > {
56
60
57
- private static final Logger LOGGER = LogManager .getLogger (GetDataStreamsTransportAction .class );
61
+ private static final Logger LOGGER = LogManager .getLogger (TransportGetDataStreamsAction .class );
58
62
private final SystemIndices systemIndices ;
59
63
private final ClusterSettings clusterSettings ;
60
64
private final DataStreamGlobalRetentionSettings globalRetentionSettings ;
65
+ private final Client client ;
61
66
62
67
@ Inject
63
- public GetDataStreamsTransportAction (
68
+ public TransportGetDataStreamsAction (
64
69
TransportService transportService ,
65
70
ClusterService clusterService ,
66
71
ThreadPool threadPool ,
67
72
ActionFilters actionFilters ,
68
73
IndexNameExpressionResolver indexNameExpressionResolver ,
69
74
SystemIndices systemIndices ,
70
- DataStreamGlobalRetentionSettings globalRetentionSettings
75
+ DataStreamGlobalRetentionSettings globalRetentionSettings ,
76
+ Client client
71
77
) {
72
78
super (
73
79
GetDataStreamAction .NAME ,
@@ -78,11 +84,12 @@ public GetDataStreamsTransportAction(
78
84
GetDataStreamAction .Request ::new ,
79
85
indexNameExpressionResolver ,
80
86
GetDataStreamAction .Response ::new ,
81
- EsExecutors . DIRECT_EXECUTOR_SERVICE
87
+ transportService . getThreadPool (). executor ( ThreadPool . Names . MANAGEMENT )
82
88
);
83
89
this .systemIndices = systemIndices ;
84
90
this .globalRetentionSettings = globalRetentionSettings ;
85
91
clusterSettings = clusterService .getClusterSettings ();
92
+ this .client = client ;
86
93
}
87
94
88
95
@ Override
@@ -92,9 +99,42 @@ protected void masterOperation(
92
99
ClusterState state ,
93
100
ActionListener <GetDataStreamAction .Response > listener
94
101
) throws Exception {
95
- listener .onResponse (
96
- innerOperation (state , request , indexNameExpressionResolver , systemIndices , clusterSettings , globalRetentionSettings )
97
- );
102
+ if (request .verbose ()) {
103
+ DataStreamsStatsAction .Request req = new DataStreamsStatsAction .Request ();
104
+ req .indices (request .indices ());
105
+ client .execute (DataStreamsStatsAction .INSTANCE , req , new ActionListener <>() {
106
+ @ Override
107
+ public void onResponse (DataStreamsStatsAction .Response response ) {
108
+ final Map <String , Long > maxTimestamps = Arrays .stream (response .getDataStreams ())
109
+ .collect (
110
+ Collectors .toMap (
111
+ DataStreamsStatsAction .DataStreamStats ::getDataStream ,
112
+ DataStreamsStatsAction .DataStreamStats ::getMaximumTimestamp
113
+ )
114
+ );
115
+ listener .onResponse (
116
+ innerOperation (
117
+ state ,
118
+ request ,
119
+ indexNameExpressionResolver ,
120
+ systemIndices ,
121
+ clusterSettings ,
122
+ globalRetentionSettings ,
123
+ maxTimestamps
124
+ )
125
+ );
126
+ }
127
+
128
+ @ Override
129
+ public void onFailure (Exception e ) {
130
+ listener .onFailure (e );
131
+ }
132
+ });
133
+ } else {
134
+ listener .onResponse (
135
+ innerOperation (state , request , indexNameExpressionResolver , systemIndices , clusterSettings , globalRetentionSettings , null )
136
+ );
137
+ }
98
138
}
99
139
100
140
static GetDataStreamAction .Response innerOperation (
@@ -103,7 +143,8 @@ static GetDataStreamAction.Response innerOperation(
103
143
IndexNameExpressionResolver indexNameExpressionResolver ,
104
144
SystemIndices systemIndices ,
105
145
ClusterSettings clusterSettings ,
106
- DataStreamGlobalRetentionSettings globalRetentionSettings
146
+ DataStreamGlobalRetentionSettings globalRetentionSettings ,
147
+ @ Nullable Map <String , Long > maxTimestamps
107
148
) {
108
149
List <DataStream > dataStreams = getDataStreams (state , indexNameExpressionResolver , request );
109
150
List <GetDataStreamAction .Response .DataStreamInfo > dataStreamInfos = new ArrayList <>(dataStreams .size ());
@@ -216,7 +257,8 @@ public int compareTo(IndexInfo o) {
216
257
ilmPolicyName ,
217
258
timeSeries ,
218
259
backingIndicesSettingsValues ,
219
- indexTemplatePreferIlmValue
260
+ indexTemplatePreferIlmValue ,
261
+ maxTimestamps == null ? null : maxTimestamps .get (dataStream .getName ())
220
262
)
221
263
);
222
264
}
0 commit comments