31
31
import org .opensearch .cluster .service .ClusterService ;
32
32
import org .opensearch .common .inject .Inject ;
33
33
import org .opensearch .common .settings .Settings ;
34
+ import org .opensearch .core .action .ActionListener ;
34
35
import org .opensearch .core .xcontent .XContentBuilder ;
35
36
import org .opensearch .index .IndexingPressure ;
37
+ import org .opensearch .timeseries .AnalysisType ;
38
+ import org .opensearch .timeseries .NodeStateManager ;
39
+ import org .opensearch .timeseries .model .Config ;
36
40
import org .opensearch .timeseries .transport .ResultBulkTransportAction ;
37
41
import org .opensearch .timeseries .util .RestHandlerUtils ;
38
42
import org .opensearch .transport .TransportService ;
@@ -50,7 +54,8 @@ public ADResultBulkTransportAction(
50
54
IndexingPressure indexingPressure ,
51
55
Settings settings ,
52
56
ClusterService clusterService ,
53
- Client client
57
+ Client client ,
58
+ NodeStateManager stateManager
54
59
) {
55
60
super (
56
61
ADResultBulkAction .NAME ,
@@ -62,7 +67,8 @@ public ADResultBulkTransportAction(
62
67
AD_INDEX_PRESSURE_SOFT_LIMIT .get (settings ),
63
68
AD_INDEX_PRESSURE_HARD_LIMIT .get (settings ),
64
69
ADCommonName .ANOMALY_RESULT_INDEX_ALIAS ,
65
- ADResultBulkRequest ::new
70
+ ADResultBulkRequest ::new ,
71
+ stateManager
66
72
);
67
73
this .clusterService = clusterService ;
68
74
this .client = client ;
@@ -137,9 +143,16 @@ private boolean shouldAddResult(float indexingPressurePercent, AnomalyResult res
137
143
138
144
private void addToFlattenedIndexIfExists (BulkRequest bulkRequest , AnomalyResult result , String resultIndex ) {
139
145
String flattenedResultIndexAlias = resultIndex + "_flattened_" + result .getDetectorId ().toLowerCase (Locale .ROOT );
140
- if (clusterService .state ().metadata ().hasAlias (flattenedResultIndexAlias )) {
141
- addResult (bulkRequest , result , flattenedResultIndexAlias );
142
- }
146
+ String configId = result .getConfigId ();
147
+ nodeStateManager .getConfig (configId , AnalysisType .AD , ActionListener .wrap (configOptional -> {
148
+ if (configOptional .isEmpty ()) {
149
+ return ;
150
+ }
151
+ Config config = configOptional .get ();
152
+ if (config .getFlattenResultIndexMapping ()) {
153
+ addResult (bulkRequest , result , flattenedResultIndexAlias );
154
+ }
155
+ }, e -> LOG .error ("Fail to get config" , e )));
143
156
}
144
157
145
158
private void addResult (BulkRequest bulkRequest , AnomalyResult result , String resultIndex ) {
0 commit comments