[ https://issues.apache.org/jira/browse/SOLR-11722?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16323124#comment-16323124 ]
ASF GitHub Bot commented on SOLR-11722: --------------------------------------- Github user fsparv commented on a diff in the pull request: https://github.com/apache/lucene-solr/pull/304#discussion_r161096191 --- Diff: solr/core/src/java/org/apache/solr/cloud/CreateAliasCmd.java --- @@ -45,13 +147,92 @@ public CreateAliasCmd(OverseerCollectionMessageHandler ocmh) { public void call(ClusterState state, ZkNodeProps message, NamedList results) throws Exception { final String aliasName = message.getStr(NAME); - final List<String> canonicalCollectionList = parseCollectionsParameter(message.get("collections")); - final String canonicalCollectionsString = StrUtils.join(canonicalCollectionList, ','); - ZkStateReader zkStateReader = ocmh.zkStateReader; - validateAllCollectionsExistAndNoDups(canonicalCollectionList, zkStateReader); + ZkStateReader.AliasesManager holder = zkStateReader.aliasesHolder; + if (!anyRoutingParams(message)) { + final List<String> canonicalCollectionList = parseCollectionsParameter(message.get("collections")); + final String canonicalCollectionsString = StrUtils.join(canonicalCollectionList, ','); + validateAllCollectionsExistAndNoDups(canonicalCollectionList, zkStateReader); + holder.applyModificationAndExportToZk(aliases -> aliases.cloneWithCollectionAlias(aliasName, canonicalCollectionsString)); + } else { + final String routedField = message.getStr(ROUTING_FIELD); + final String routingType = message.getStr(ROUTING_TYPE); + final String tz = message.getStr(TZ); + final String start = message.getStr(START); + final String increment = message.getStr(ROUTING_INCREMENT); + final String maxFutureMs = message.getStr(ROUTING_MAX_FUTURE); + + try { + if (0 > Long.valueOf(maxFutureMs)) { + throw new NumberFormatException("Negative value not allowed here"); + } + } catch (NumberFormatException e) { + throw new SolrException(BAD_REQUEST, ROUTING_MAX_FUTURE + " must be a valid long integer representing a number " + + "of milliseconds greater than or equal to zero"); + } - zkStateReader.aliasesHolder.applyModificationAndExportToZk(aliases -> aliases.cloneWithCollectionAlias(aliasName, canonicalCollectionsString)); + // Validate we got everything we need + if (routedField == null || routingType == null || start == null || increment == null) { --- End diff -- in this area of the code I implement checks for the following: name start router.field router.name router.interval router.max-future-ms TZ collection-create.config Only that last one could possibly be left to the collection-create infrastructure. The rest are ours (note that the router ones are not the collection level routing but the alias level routing). > API to create a Time Routed Alias and first collection > ------------------------------------------------------ > > Key: SOLR-11722 > URL: https://issues.apache.org/jira/browse/SOLR-11722 > Project: Solr > Issue Type: Sub-task > Security Level: Public(Default Security Level. Issues are Public) > Components: SolrCloud > Reporter: David Smiley > Attachments: SOLR-11722.patch, SOLR-11722.patch > > > This issue is about creating a single API command to create a "Time Routed > Alias" along with its first collection. Need to decide what endpoint URL it > is and parameters. > Perhaps in v2 it'd be {{/api/collections?command=create-routed-alias}} or > alternatively piggy-back off of command=create-alias but we add more options, > perhaps with a prefix like "router"? > Inputs: > * alias name > * misc collection creation metadata (e.g. config, numShards, ...) perhaps in > this context with a prefix like "collection." > * metadata for TimeRoutedAliasUpdateProcessor, currently: router.field > * date specifier for first collection; can include "date math". > We'll certainly add more options as future features unfold. > I believe the collection needs to be created first (referring to the alias > name via a core property), and then the alias pointing to it which demands > collections exist first. When figuring the collection name, you'll need to > reference the format in TimeRoutedAliasUpdateProcessor. -- This message was sent by Atlassian JIRA (v6.4.14#64029) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org For additional commands, e-mail: dev-h...@lucene.apache.org