@@ -2128,6 +2128,122 @@ public void onFailure(Exception e) {
2128
2128
return throwables ;
2129
2129
}
2130
2130
2131
+ public void testRemoveMultipleLegacyIndexTemplates () throws Exception {
2132
+ MetadataIndexTemplateService metadataIndexTemplateService = getMetadataIndexTemplateService ();
2133
+ AtomicReference <Throwable > failure = new AtomicReference <>();
2134
+
2135
+ {
2136
+ PutRequest request = new PutRequest ("api" , "foo" );
2137
+ request .patterns (singletonList ("fo*" ));
2138
+ request .mappings (new CompressedXContent ("{}" ));
2139
+ final CountDownLatch latch = new CountDownLatch (1 );
2140
+ metadataIndexTemplateService .putTemplate (request , new MetadataIndexTemplateService .PutListener () {
2141
+ @ Override
2142
+ public void onResponse (MetadataIndexTemplateService .PutResponse response ) {
2143
+ latch .countDown ();
2144
+ }
2145
+
2146
+ @ Override
2147
+ public void onFailure (Exception e ) {
2148
+ logger .error (e .getMessage (), e );
2149
+ failure .set (e );
2150
+ latch .countDown ();
2151
+ }
2152
+ });
2153
+ latch .await (10 , TimeUnit .SECONDS );
2154
+ assertThat ("Unable to put template due to: " + failure .get (), failure .get (), nullValue ());
2155
+ }
2156
+
2157
+ {
2158
+ PutRequest request = new PutRequest ("api" , "bar" );
2159
+ request .patterns (singletonList ("ba*" ));
2160
+ request .mappings (new CompressedXContent ("{}" ));
2161
+
2162
+ final CountDownLatch latch = new CountDownLatch (1 );
2163
+ metadataIndexTemplateService .putTemplate (request , new MetadataIndexTemplateService .PutListener () {
2164
+ @ Override
2165
+ public void onResponse (MetadataIndexTemplateService .PutResponse response ) {
2166
+ latch .countDown ();
2167
+ }
2168
+
2169
+ @ Override
2170
+ public void onFailure (Exception e ) {
2171
+ logger .error (e .getMessage (), e );
2172
+ failure .set (e );
2173
+ latch .countDown ();
2174
+ }
2175
+ });
2176
+ latch .await (10 , TimeUnit .SECONDS );
2177
+ assertThat ("Unable to put template due to: " + failure .get (), failure .get (), nullValue ());
2178
+ }
2179
+
2180
+ ClusterService clusterService = getInstanceFromNode (ClusterService .class );
2181
+ ClusterState nextState = MetadataIndexTemplateService .innerRemoveTemplates (clusterService .state (), Set .of ("foo" , "bar" ));
2182
+ ImmutableOpenMap <String , IndexTemplateMetadata > templates = nextState .metadata ().templates ();
2183
+ assertThat (templates .containsKey ("foo" ), is (false ));
2184
+ assertThat (templates .containsKey ("bar" ), is (false ));
2185
+ }
2186
+
2187
+ public void testRemovingLegacyMissingTemplatesFails () throws Exception {
2188
+ MetadataIndexTemplateService metadataIndexTemplateService = getMetadataIndexTemplateService ();
2189
+ AtomicReference <Throwable > failure = new AtomicReference <>();
2190
+ {
2191
+ PutRequest request = new PutRequest ("api" , "foo" );
2192
+ request .patterns (singletonList ("fo*" ));
2193
+ request .mappings (new CompressedXContent ("{}" ));
2194
+
2195
+ final CountDownLatch latch = new CountDownLatch (1 );
2196
+ metadataIndexTemplateService .putTemplate (request , new MetadataIndexTemplateService .PutListener () {
2197
+ @ Override
2198
+ public void onResponse (MetadataIndexTemplateService .PutResponse response ) {
2199
+ latch .countDown ();
2200
+ }
2201
+
2202
+ @ Override
2203
+ public void onFailure (Exception e ) {
2204
+ logger .error (e .getMessage (), e );
2205
+ failure .set (e );
2206
+ latch .countDown ();
2207
+ }
2208
+ });
2209
+ latch .await (10 , TimeUnit .SECONDS );
2210
+ assertThat ("Unable to put template due to: " + failure .get (), failure .get (), nullValue ());
2211
+ }
2212
+
2213
+ {
2214
+ PutRequest request = new PutRequest ("api" , "bar" );
2215
+ request .patterns (singletonList ("ba*" ));
2216
+ request .mappings (new CompressedXContent ("{}" ));
2217
+ final CountDownLatch latch = new CountDownLatch (1 );
2218
+ metadataIndexTemplateService .putTemplate (request , new MetadataIndexTemplateService .PutListener () {
2219
+ @ Override
2220
+ public void onResponse (MetadataIndexTemplateService .PutResponse response ) {
2221
+ latch .countDown ();
2222
+ }
2223
+
2224
+ @ Override
2225
+ public void onFailure (Exception e ) {
2226
+ logger .error (e .getMessage (), e );
2227
+ failure .set (e );
2228
+ latch .countDown ();
2229
+ }
2230
+ });
2231
+ latch .await (10 , TimeUnit .SECONDS );
2232
+ assertThat ("Unable to put template due to: " + failure .get (), failure .get (), nullValue ());
2233
+ }
2234
+
2235
+ ClusterService clusterService = getInstanceFromNode (ClusterService .class );
2236
+ IndexTemplateMissingException indexTemplateMissingException = expectThrows (IndexTemplateMissingException .class ,
2237
+ () -> MetadataIndexTemplateService .innerRemoveTemplates (clusterService .state (),
2238
+ Set .of ("foo" , "bar" , "missing" , "other_mssing" )));
2239
+ assertThat (indexTemplateMissingException .getMessage (), is ("index_template [missing,other_mssing] missing" ));
2240
+
2241
+ // let's also test the templates that did exists were not removed
2242
+ ImmutableOpenMap <String , IndexTemplateMetadata > templates = clusterService .state ().metadata ().templates ();
2243
+ assertThat (templates .containsKey ("foo" ), is (true ));
2244
+ assertThat (templates .containsKey ("bar" ), is (true ));
2245
+ }
2246
+
2131
2247
private List <Throwable > putTemplateDetail (PutRequest request ) throws Exception {
2132
2248
MetadataIndexTemplateService service = getMetadataIndexTemplateService ();
2133
2249
0 commit comments