3939import org .elasticsearch .cluster .metadata .IndexNameExpressionResolver ;
4040import org .elasticsearch .cluster .metadata .IndexTemplateMetadata ;
4141import org .elasticsearch .cluster .metadata .Metadata ;
42+ import org .elasticsearch .cluster .metadata .MetadataCreateIndexService ;
4243import org .elasticsearch .cluster .metadata .MetadataIndexTemplateService ;
4344import org .elasticsearch .cluster .node .DiscoveryNode ;
4445import org .elasticsearch .cluster .service .ClusterService ;
4546import org .elasticsearch .cluster .service .MasterServiceTaskQueue ;
4647import org .elasticsearch .common .Priority ;
4748import org .elasticsearch .common .TriConsumer ;
4849import org .elasticsearch .common .bytes .BytesReference ;
50+ import org .elasticsearch .common .logging .DeprecationCategory ;
51+ import org .elasticsearch .common .logging .DeprecationLogger ;
4952import org .elasticsearch .common .regex .Regex ;
5053import org .elasticsearch .common .settings .Settings ;
5154import org .elasticsearch .common .util .CollectionUtils ;
5558import org .elasticsearch .core .Releasable ;
5659import org .elasticsearch .core .TimeValue ;
5760import org .elasticsearch .core .Tuple ;
61+ import org .elasticsearch .core .UpdateForV10 ;
5862import org .elasticsearch .env .Environment ;
5963import org .elasticsearch .gateway .GatewayService ;
6064import org .elasticsearch .grok .MatcherWatchdog ;
97101import java .util .stream .Collectors ;
98102
99103import static org .elasticsearch .core .Strings .format ;
104+ import static org .elasticsearch .core .UpdateForV10 .Owner .DATA_MANAGEMENT ;
100105
101106/**
102107 * Holder class for several ingest related services.
@@ -108,6 +113,7 @@ public class IngestService implements ClusterStateApplier, ReportingService<Inge
108113 public static final String INGEST_ORIGIN = "ingest" ;
109114
110115 private static final Logger logger = LogManager .getLogger (IngestService .class );
116+ private static final DeprecationLogger deprecationLogger = DeprecationLogger .getLogger (IngestService .class );
111117
112118 private final MasterServiceTaskQueue <PipelineClusterStateUpdateTask > taskQueue ;
113119 private final ClusterService clusterService ;
@@ -652,12 +658,24 @@ public IngestMetadata execute(IngestMetadata currentIngestMetadata, Collection<I
652658 }
653659 }
654660
661+ @ UpdateForV10 (owner = DATA_MANAGEMENT ) // Change deprecation log for special characters in name to a failure
655662 void validatePipeline (Map <DiscoveryNode , IngestInfo > ingestInfos , String pipelineId , Map <String , Object > pipelineConfig )
656663 throws Exception {
657664 if (ingestInfos .isEmpty ()) {
658665 throw new IllegalStateException ("Ingest info is empty" );
659666 }
660667
668+ try {
669+ MetadataCreateIndexService .validateIndexOrAliasName (
670+ pipelineId ,
671+ (pipelineName , error ) -> new IllegalArgumentException (
672+ "Pipeline name [" + pipelineName + "] will be disallowed in a future version for the following reason: " + error
673+ )
674+ );
675+ } catch (IllegalArgumentException e ) {
676+ deprecationLogger .critical (DeprecationCategory .API , "pipeline_name_special_chars" , e .getMessage ());
677+ }
678+
661679 Pipeline pipeline = Pipeline .create (pipelineId , pipelineConfig , processorFactories , scriptService );
662680 List <Exception > exceptions = new ArrayList <>();
663681 for (Processor processor : pipeline .flattenAllProcessors ()) {
0 commit comments