We use and will use the same origin for multiple DS. It’s an inherent part of the design of some part of our delivery.
Wouldn’t be less of a problem using cachekeys for different delivery services? I would rather see origin as an object and not just a simple URL. I’ve seen this in the past in other systems. I don’t believe we can create multiple http services endpoint for a single DS like we can for DNS type delivery service. This would solve it for us. Steve On Thu, Jan 24, 2019 at 11:22 AM Gray, Jonathan <jonathan_g...@comcast.com> wrote: > Even that has a strong element of confusion when in a self-service > multi-tenancy world. Multiple tenants can use the same origins for things > like akami, aws, internal load balancers and any communication about the > origin already being used will be confusing. > > Jonathan G > > > On 1/23/19, 7:37 PM, "Gelinas, Derek" <derek_geli...@comcast.com> wrote: > > Perhaps we could solve both issues and just allow it to happen on DS > config but throw up a message when it is saved that says "hey we're going > to do this but it's really not without an element of risk and ats isn't > designed to work properly with multiple identical origins. We recommend you > use an alternative fqdn blah blah blah." > > Something along those lines, anyway. > > Derek > > > On Jan 23, 2019, at 7:18 PM, Rawlin Peters <rawlin.pet...@gmail.com> > wrote: > > > > Simply prohibiting duplicate origin FQDNs has been vetoed now, so we > > can't really move forward with that unless the vetoers change their > > minds and remove their -1s. > > > > Currently that leaves us with checking at DS create/update whether or > > not it would conflict with a shared origin due to different DS types, > > qstring config, etc. I am -1 on that idea since I think it will be > > difficult to maintain and enumerate all the possible conflicting > > cases, will present confusing error messages to the user to which the > > solution would just be "create a CNAME record" anyways, and that the > > ATS parent.config should really be per-remap rather than "global". I > > know there has been some discussion in the ATS community about making > > parent.config per-remap, but I don't have much information there. > > > > That is to say, I don't think there is a great solution to this > > problem right now that we can all agree upon, but maybe our efforts > > would be better spent in the ATS community by making a per-remap > > parent.config. Then the duplicate origin problem in Traffic Control > > would go away. > > > > Another option could be to have some kind of generic rules engine > that > > would allow an organization to create some set of rules that DSes > > would have to abide by. For example, no duplicate origins, an origin > > can't be in a list of known malicious domains, you can't use the DS > > type "HTTP_NO_CACHE", maxDnsAnswers must be < 5, TTLs must be > 30 > and > > < 6000, protocol must be HTTPS, intitialDispersion must be < 10, DSCP > > must be 40, etc. It seems like for something truly self-service you'd > > probably need to set up some rules for your users to abide by that > > might not necessarily apply to ALL organizations. Just a thought. I > > don't think the duplicate origins problem alone would warrant > > something like that, but if it also provided a solution for the > > self-service effort, maybe it would be worth it. > > > > - Rawlin > > > > On Wed, Jan 23, 2019 at 4:15 AM Gelinas, Derek > > <derek_geli...@comcast.com> wrote: > >> > >> That's the problem. We either need to be smart enough to recognize > that in our config and warn the user or just prevent it and suggest to the > user that they use a different fqdn. > >> > >> My vote is for preventing it at this point. > >> > >>> On Jan 23, 2019, at 12:50 AM, Gray, Jonathan < > jonathan_g...@comcast.com> wrote: > >>> > >>> It's not just differing types, it's anything that affects the > parent.config which also includes the, qstring configuration, MSO > parents/config, etc. as well. > >>> > >>> Jonathan G > >>> > >>> > >>> On 1/22/19, 2:33 PM, "Dave Neuman" <neu...@apache.org> wrote: > >>> > >>> -1 on the one DS to Origin limitation. I think there are legit > use cases > >>> for it. > >>> I would be +1 on the idea if we include type though. Two DSs > can share the > >>> same origin as long as they are of the same type (DNS, HTTP, > HTTP_LIVE), > >>> etc. You shouldn't be able to have two DSs with the same origin > but > >>> different types. > >>> > >>> On Mon, Jan 14, 2019 at 7:53 AM Fieck, Brennan < > brennan_fi...@comcast.com> > >>> wrote: > >>> > >>>> I don't see this as a complicated use case or a barrier to entry, > an > >>>> extremely basic introduction to ATC would only make use of one DS > >>>> (shameless CDN-in-a-Box plug). > >>>> It seems far more complicated for a user to be using many DSes to > serve a > >>>> single origin - we can easily make it clear in the docs that the > two have a > >>>> 1:1 relationship, with a footnote about CNAME records for users > with the > >>>> knowledge, resources, and need for such workarounds. > >>>> ________________________________________ > >>>> From: Mark Torluemke <mtorlue...@apache.org> > >>>> Sent: Friday, January 11, 2019 1:21 PM > >>>> To: dev@trafficcontrol.apache.org > >>>> Subject: Re: [EXTERNAL] Re: Origins assigned to Multipe Delivery > Services > >>>> produces indeterminate parent.config > >>>> > >>>>>> 1. Prohibit creating new delivery services that would share an > >>>> existing origin and prohibit updating a delivery service to a > shared > >>>> origin > >>>> In case my position has been lost, I'm still -1 on this. :) IMO, > we > >>>> shouldn't let the few complicated use cases increase the barrier > to entry > >>>> (to using ATC) for the masses. > >>>> > >>>> > >>>> > >>>> > >>>> On Fri, Jan 11, 2019 at 11:53 AM Rawlin Peters < > rawlin.pet...@gmail.com> > >>>> wrote: > >>>> > >>>>> Alright, I'm trying to sum up this discussion so far since it > seems > >>>>> like everyone went on vacation and didn't really get a chance to > wrap > >>>>> this one up: > >>>>> - duplicate origins cause undefined behavior > >>>>> - we need a way to migrate to a future that is free of duplicate > >>>>> origins in Traffic Control > >>>>> - we need a visual and easy way to determine if Traffic Ops > currently > >>>>> contains duplicate origins, so that operators are incentivized > to fix > >>>>> them rather than let it slide indefinitely > >>>>> - operators should have a fair amount of time to fix their > duplicate > >>>>> origins > >>>>> > >>>>> I believe this is what we've mostly agreed upon but haven't > clearly voted > >>>>> on: > >>>>> > >>>>> In release N we will: > >>>>> 1. Prohibit creating new delivery services that would share an > >>>>> existing origin and prohibit updating a delivery service to a > shared > >>>>> origin > >>>>> 2. Add some kind of visual indicator that duplicate origins are a > >>>>> problem that need to be fixed before release N+1; otherwise, an > >>>>> upgrade to N+1 will be prohibited. > >>>>> > >>>>> In release N+1 we will: > >>>>> 3. Include a DB migration that adds a uniqueness constraint on > origin > >>>>> FQDN, removing the API-level checks for that. > >>>>> 4. Prevent an upgrade to N+1 if duplicate origins are found (this > >>>>> might occur as a byproduct of step 3). > >>>>> > >>>>> I am +1 on this plan and believe this would hit on all the > summarized > >>>>> points above. Please provide a clear vote on this plan so that > we can > >>>>> dive deeper in the details (i.e. what release 'N' is, the best > visual > >>>>> indicator for step 2, and a friendly way to handle step 4). > >>>>> > >>>>> Thanks, > >>>>> Rawlin > >>>>> > >>>>> On Wed, Dec 19, 2018 at 3:39 PM Jeremy Mitchell < > mitchell...@gmail.com> > >>>>> wrote: > >>>>>> > >>>>>> Not sure TP is the right place for a warning like "clean up this > >>>>>> 'duplicate' origin or your next upgrade will fail". Most users > of our > >>>>>> system will be like "not my problem". > >>>>>> > >>>>>> On Wed, Dec 19, 2018 at 11:58 AM Fieck, Brennan < > >>>>> brennan_fi...@comcast.com> > >>>>>> wrote: > >>>>>> > >>>>>>> Probably. It would impact load times by a bit, but the page > for an > >>>>>>> individual object is not our bottleneck. > >>>>>>> ________________________________________ > >>>>>>> From: Robert Butts <r...@apache.org> > >>>>>>> Sent: Wednesday, December 19, 2018 11:50 AM > >>>>>>> To: dev@trafficcontrol.apache.org > >>>>>>> Subject: Re: [EXTERNAL] Re: Origins assigned to Multipe > Delivery > >>>>> Services > >>>>>>> produces indeterminate parent.config > >>>>>>> > >>>>>>>> - Including a warning on startup and an API constraint > preventing > >>>>> adding > >>>>>>> more bad data in the next 3.0.0 Release Candidate > >>>>>>>> - Adding a database constraint immediately into master that > won't > >>>> be > >>>>>>> cherry-picked into 3.0.0 but should be included in 3.1.0 > >>>>>>> > >>>>>>> +1 > >>>>>>> > >>>>>>> I understand Jonathan's objection, but at some point, we have > to be > >>>>> able to > >>>>>>> move forward. This is a good compromise: deprecate, then > remove. That > >>>>> gives > >>>>>>> people a full major version to fix their data. > >>>>>>> > >>>>>>> I would be ideal if it were more than just a logged warning, > though. > >>>>> Can we > >>>>>>> add a big red banner in Traffic Portal, on the Delivery > Service page > >>>>> for > >>>>>>> any DS with a duplicate origin, telling users to fix it, and > that > >>>> they > >>>>>>> won't be able to upgrade to the next major version until it's > fixed? > >>>>>>> > >>>>>>> > >>>>>>> On Wed, Dec 19, 2018 at 10:57 AM Fieck, Brennan < > >>>>> brennan_fi...@comcast.com > >>>>>>>> > >>>>>>> wrote: > >>>>>>> > >>>>>>>> So it seems like nobody has a problem with the "how" - > disallowing > >>>>>>>> duplicate origin FQDNs on Delivery Services - but we never > reached > >>>> a > >>>>>>>> consensus on "when". > >>>>>>>> > >>>>>>>> I stand by my previous proposal: > >>>>>>>> - Including a warning on startup and an API constraint > preventing > >>>>> adding > >>>>>>>> more bad data in the next 3.0.0 Release Candidate > >>>>>>>> - Adding a database constraint immediately into master that > won't > >>>> be > >>>>>>>> cherry-picked into 3.0.0 but should be included in 3.1.0 > >>>>>>>> ________________________________________ > >>>>>>>> From: Rawlin Peters <rawlin.pet...@gmail.com> > >>>>>>>> Sent: Tuesday, December 18, 2018 4:59 PM > >>>>>>>> To: dev@trafficcontrol.apache.org > >>>>>>>> Subject: Re: [EXTERNAL] Re: Origins assigned to Multipe > Delivery > >>>>> Services > >>>>>>>> produces indeterminate parent.config > >>>>>>>> > >>>>>>>> Also, building more around DS types will make it even harder > to get > >>>>>>>> away from DS types in the future too, which I know is > something > >>>> we've > >>>>>>>> discussed on this mailing list before. It also adds to the > overhead > >>>>> of > >>>>>>>> Delivery Service Topologies, since a lot of the DS types won't > >>>>>>>> carryover into that world. > >>>>>>>> > >>>>>>>> - Rawlin > >>>>>>>> > >>>>>>>> On Tue, Dec 18, 2018 at 2:42 PM Fieck, Brennan > >>>>>>>> <brennan_fi...@comcast.com> wrote: > >>>>>>>>> > >>>>>>>>> +1. > >>>>>>>>> If there's a simple way to work around duplicate origins > being > >>>>>>>> prohibited, > >>>>>>>>> then we should rely on that instead of "enumerating all those > >>>>> possible > >>>>>>>> conflicting > >>>>>>>>> settings, which are not only highly complex and confusing, > but > >>>> also > >>>>>>>> further > >>>>>>>>> entrench us in only supporting ATS as a caching proxy > (hurting > >>>>> efforts > >>>>>>> to > >>>>>>>>> integrate e.g. Grove, nginx etc.) > >>>>>>>>> ________________________________________ > >>>>>>>>> From: Rawlin Peters <rawlin.pet...@gmail.com> > >>>>>>>>> Sent: Tuesday, December 18, 2018 2:20 PM > >>>>>>>>> To: dev@trafficcontrol.apache.org > >>>>>>>>> Subject: Re: [EXTERNAL] Re: Origins assigned to Multipe > Delivery > >>>>>>>> Services produces indeterminate parent.config > >>>>>>>>> > >>>>>>>>> There are a number of different DS settings at play that can > >>>>>>>>> potentially cause conflicts. The question is: do we want to > get > >>>>> into > >>>>>>>>> the business of enumerating all those possible conflicting > >>>>> settings or > >>>>>>>>> just simply prohibit duplicate origins altogether? I think > we can > >>>>> dig > >>>>>>>>> in and get that "sufficiently advanced sql query" to check > for > >>>>>>>>> conflicting origins, but is that something we want to carry > along > >>>>> for > >>>>>>>>> the foreseeable future? Aren't CNAMEs relatively cheaper than > >>>>>>>>> developing and maintaining that code and the mental overhead > >>>>> required > >>>>>>>>> in understanding why you're getting an error that says your > >>>>> requested > >>>>>>>>> DS would cause an origin conflict? I think at the point > you've > >>>>>>>>> requested a DS that would create a conflict, you've chosen > those > >>>>>>>>> settings for a reason and would probably prefer to just > >>>> create/use > >>>>> a > >>>>>>>>> CNAME in your new DS and keep the rest of your settings the > same. > >>>>>>>>> > >>>>>>>>> Thinking in terms of errors, I'm imagining: > >>>>>>>>> "cannot create delivery service: origin fqdn ' > foo.example.com' > >>>>> already > >>>>>>>> in use" > >>>>>>>>> vs > >>>>>>>>> "cannot create delivery service: origin fqdn ' > foo.example.com' > >>>>> already > >>>>>>>>> in use as type DNS_LIVE_NATNL, which is incompatible with > your > >>>>> chosen > >>>>>>>>> type of HTTP_NO_CACHE" > >>>>>>>>> > >>>>>>>>> At that point you'd probably say to yourself, "uh, I need > >>>>>>>>> HTTP_NO_CACHE, so what am I supposed to do now?" > >>>>>>>>> > >>>>>>>>> As a lazy developer I'm +1 on prohibiting duplicate origin > fqdns > >>>>>>>>> because the resulting code will be simpler, but I think > >>>> eliminating > >>>>>>>>> the mental overhead for operators could be worthwhile too. > If we > >>>>> can > >>>>>>>>> agree on an end state of prohibiting duplicate origins > >>>> altogether, > >>>>> we > >>>>>>>>> can start working on a design to smoothly transition us to > that > >>>>> point. > >>>>>>>>> Are we willing to live with "just CNAME your origin fqdn" as > the > >>>>>>>>> standard solution to duplicates? > >>>>>>>>> > >>>>>>>>> - Rawlin > >>>>>>>>> > >>>>>>>>> > >>>>>>>>> On Tue, Dec 18, 2018 at 1:27 PM Gelinas, Derek > >>>>>>>>> <derek_geli...@comcast.com> wrote: > >>>>>>>>>> > >>>>>>>>>> The only situation in which they can share origins is if a) > the > >>>>>>>> origins are shared in an MSO configuration but still have > different > >>>>>>> defined > >>>>>>>> origin fields in the delivery service, or if they're assigned > to > >>>>>>> completely > >>>>>>>> different cachegroups. It's when two delivery services share > the > >>>>> same > >>>>>>>> edges that there's an issue, because you end up with > parent.config > >>>>>>> issues. > >>>>>>>> Actually you could even get away with it in mids as long as > you > >>>>> weren't > >>>>>>>> doing anything like MSO to it. > >>>>>>>>>> > >>>>>>>>>> Could get messy real fast, though. Best to just create a > >>>> second > >>>>>>> FQDN. > >>>>>>>>>> > >>>>>>>>>> Derek > >>>>>>>>>> > >>>>>>>>>> On 12/18/18, 3:23 PM, "Fieck, Brennan" < > >>>>> brennan_fi...@comcast.com> > >>>>>>>> wrote: > >>>>>>>>>> > >>>>>>>>>> So no two Delivery Services may share an origin > *regardless > >>>>> of > >>>>>>>> cache hierarchy* ? I've been told that DNS Delivery Services > can > >>>>> have the > >>>>>>>> same origin as HTTP Delivery Services because they obey the > same > >>>>> cache > >>>>>>>> hierarchy. You're saying that would still produce invalid > output > >>>>> and/or > >>>>>>> is > >>>>>>>> explicitly disallowed by ATS? > >>>>>>>>>> ________________________________________ > >>>>>>>>>> From: Robert Butts <r...@apache.org> > >>>>>>>>>> Sent: Tuesday, December 18, 2018 1:09 PM > >>>>>>>>>> To: dev@trafficcontrol.apache.org > >>>>>>>>>> Subject: Re: [EXTERNAL] Re: Origins assigned to Multipe > >>>>> Delivery > >>>>>>>> Services produces indeterminate parent.config > >>>>>>>>>> > >>>>>>>>>>> can you give an example of what parent.config looks like > >>>>> when 2 > >>>>>>>> ds's share > >>>>>>>>>> an origin and have different a different topology? > >>>>>>>>>> > >>>>>>>>>> Answering because I encountered this directly, when > >>>> rewriting > >>>>>>>> parent.config. > >>>>>>>>>> > >>>>>>>>>> For example: Suppose you have one Delivery Service: > >>>>>>>>>> XML_ID: foo > >>>>>>>>>> Type: HTPT_LIVE_NATL > >>>>>>>>>> Query String Handling: 1 - ignore in cache key, and pass > up > >>>>>>>>>> Origin Server Base URL: http://foo.example.net > >>>>>>>>>> > >>>>>>>>>> And another Delivery Service: > >>>>>>>>>> XML_ID: bar > >>>>>>>>>> Type: HTPT_LIVE_NATL > >>>>>>>>>> Query String Handling: 1 - ignore in cache key, and pass > up > >>>>>>>>>> Origin Server Base URL: http://foo.example.net > >>>>>>>>>> > >>>>>>>>>> ATS only supports unique `dest_domain` entries in > >>>>> parent.config. > >>>>>>>> Therefore, > >>>>>>>>>> the parent.config generated for a server assigned to both > >>>> of > >>>>>>> these > >>>>>>>> Delivery > >>>>>>>>>> Services with either be: > >>>>>>>>>> > >>>>>>>>>> dest_domain=foo.example.net port=80 go_direct=true > >>>>>>>>>> > >>>>>>>>>> Or > >>>>>>>>>> > >>>>>>>>>> dest_domain=foo.example.net port=80 go_direct=false > >>>>>>>> qstring=consider > >>>>>>>>>> > >>>>>>>>>> Right now, it's arbitrary which Perl Traffic Ops inserts, > >>>> and > >>>>>>> Perl > >>>>>>>> provides > >>>>>>>>>> no warning or error of any kind (the pending Go > >>>>> parent.config PR > >>>>>>>> logs an > >>>>>>>>>> error). > >>>>>>>>>> > >>>>>>>>>> Whichever is arbitrarily inserted, the resulting remaps > for > >>>>> the > >>>>>>>> other > >>>>>>>>>> delivery service will be wrong. Either `foo` requests will > >>>>> drop > >>>>>>>> the query > >>>>>>>>>> string when they shouldn't, and go to the mid when they > >>>>>>> shouldn't; > >>>>>>>> or `bar` > >>>>>>>>>> requests will use the query string and skip the mid when > it > >>>>>>>> shouldn't. > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> Does that make sense? The only correct solution, is to > >>>>> somehow > >>>>>>>> prevent > >>>>>>>>>> different DSes having the same origin, and tell tenants > >>>> they > >>>>> must > >>>>>>>> use > >>>>>>>>>> CNAMEs if they need. > >>>>>>>>>> > >>>>>>>>>> This isn't a bug in Traffic Control. ATS fundamentally > >>>>> doesn't > >>>>>>>> support > >>>>>>>>>> multiple remap rules with the same parent FQDN with > >>>> different > >>>>>>>>>> configurations. Hence, Traffic Control needs to prohibit > >>>>> that. > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> On Tue, Dec 18, 2018 at 12:24 PM Jeremy Mitchell < > >>>>>>>> mitchell...@gmail.com> > >>>>>>>>>> wrote: > >>>>>>>>>> > >>>>>>>>>>> brennan, > >>>>>>>>>>> > >>>>>>>>>>> can you give an example of what parent.config looks like > >>>>> when 2 > >>>>>>>> ds's share > >>>>>>>>>>> an origin and have different a different topology? > >>>>>>>>>>> > >>>>>>>>>>> jeremy > >>>>>>>>>>> > >>>>>>>>>>> On Tue, Dec 18, 2018 at 11:39 AM Fieck, Brennan < > >>>>>>>> brennan_fi...@comcast.com > >>>>>>>>>>>> > >>>>>>>>>>> wrote: > >>>>>>>>>>> > >>>>>>>>>>>> To be clear, the "Warning" I'm talking about would > >>>>> happen at > >>>>>>>> startup, but > >>>>>>>>>>>> I'd like a UI-only constraint to come with that to > >>>>> disallow > >>>>>>>> using the API > >>>>>>>>>>>> to bind the same origin to multiple Delivery Services > >>>>> with > >>>>>>>> varying > >>>>>>>>>>>> topography requirements. It wouldn't change the > >>>> existing > >>>>>>> data, > >>>>>>>> but > >>>>>>>>>>> prevent > >>>>>>>>>>>> users from creating more bad data. > >>>>>>>>>>>> > >>>>>>>>>>>> "warning" doesn't really sufficiently describe that, my > >>>>> bad. > >>>>>>>>>>>> ________________________________________ > >>>>>>>>>>>> From: Fieck, Brennan <brennan_fi...@comcast.com> > >>>>>>>>>>>> Sent: Tuesday, December 18, 2018 11:24 AM > >>>>>>>>>>>> To: dev@trafficcontrol.apache.org > >>>>>>>>>>>> Subject: Re: [EXTERNAL] Re: Origins assigned to Multipe > >>>>>>>> Delivery Services > >>>>>>>>>>>> produces indeterminate parent.config > >>>>>>>>>>>> > >>>>>>>>>>>> Well the cost of fixing this bug is a constraint on the > >>>>> data. > >>>>>>>> Unless we > >>>>>>>>>>>> make it a UI-only constraint - which I'm personally > >>>>> against - > >>>>>>>> there must > >>>>>>>>>>> be > >>>>>>>>>>>> some point in the future where ATC cannot reasonably be > >>>>>>>> expected to work > >>>>>>>>>>>> with data that violates that constraint. The question > >>>> is > >>>>> when > >>>>>>>> that should > >>>>>>>>>>>> occur, which should likely happen at a minor version > >>>>> release. > >>>>>>>> Minor not > >>>>>>>>>>>> major because it doesn't involve a change in data > >>>>> structures, > >>>>>>>> merely > >>>>>>>>>>>> relationships between them - in my opinion that's a > >>>> minor > >>>>>>>> version change > >>>>>>>>>>>> but that's definitely up for debate. With several > >>>> release > >>>>>>>> candidates for > >>>>>>>>>>>> 3.0.0 that _doesn't_ include this restriction already > >>>> in > >>>>> the > >>>>>>>> wild, I > >>>>>>>>>>>> wouldn't recommend putting it in there. That means to > >>>>> fix the > >>>>>>>> bug as soon > >>>>>>>>>>>> as possible it should go in 3.1.0 which should be the > >>>>> target > >>>>>>>> of "master" > >>>>>>>>>>>> after the 3.0.0 release is cut from it. > >>>>>>>>>>>> > >>>>>>>>>>>> So I'd recommend immediately implementing the > >>>> constraint > >>>>> in > >>>>>>>> master with a > >>>>>>>>>>>> refusal to upgrade with bad data, and backport a > >>>> warning > >>>>>>> about > >>>>>>>> the future > >>>>>>>>>>>> behavior into 3.0.0 or as part of a 3.0.1 provided we > >>>> had > >>>>>>> more > >>>>>>>> changes > >>>>>>>>>>> that > >>>>>>>>>>>> would warrant a micro version bump. > >>>>>>>>>>>> ________________________________________ > >>>>>>>>>>>> From: Gray, Jonathan <jonathan_g...@comcast.com> > >>>>>>>>>>>> Sent: Tuesday, December 18, 2018 9:34 AM > >>>>>>>>>>>> To: dev@trafficcontrol.apache.org > >>>>>>>>>>>> Subject: Re: [EXTERNAL] Re: Origins assigned to Multipe > >>>>>>>> Delivery Services > >>>>>>>>>>>> produces indeterminate parent.config > >>>>>>>>>>>> > >>>>>>>>>>>> -1 Holding an ATC upgrade hostage to data cleanup seems > >>>>> like > >>>>>>> a > >>>>>>>> bad idea. > >>>>>>>>>>>> The issue isn't great, but it's also not new. We > >>>> should > >>>>>>> allow > >>>>>>>> teams to > >>>>>>>>>>> fix > >>>>>>>>>>>> their data at their normal paces if it doesn't create > >>>>>>>> significant > >>>>>>>>>>> overhead > >>>>>>>>>>>> or an inherant blocker for new functionality or > >>>>> correction of > >>>>>>>> other major > >>>>>>>>>>>> problems imho. > >>>>>>>>>>>> > >>>>>>>>>>>> Jonathan G > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> On 12/18/18, 9:28 AM, "Fieck, Brennan" < > >>>>>>>> brennan_fi...@comcast.com> > >>>>>>>>>>> wrote: > >>>>>>>>>>>> > >>>>>>>>>>>> Another option is we could detect collisions at > >>>>> startup > >>>>>>>> and simply > >>>>>>>>>>>> refuse to continue with the upgrade until the data is > >>>>> fixed. > >>>>>>>> That would > >>>>>>>>>>>> allow people using the now-unsupported data format to > >>>>>>> continue > >>>>>>>> to use > >>>>>>>>>>> their > >>>>>>>>>>>> old versions of Traffic Ops without wrecking their > >>>>> database, > >>>>>>>> but also > >>>>>>>>>>>> provide an incentive to clean up the data. > >>>>>>>>>>>> ________________________________________ > >>>>>>>>>>>> From: Gray, Jonathan <jonathan_g...@comcast.com> > >>>>>>>>>>>> Sent: Tuesday, December 18, 2018 5:12 AM > >>>>>>>>>>>> To: dev@trafficcontrol.apache.org > >>>>>>>>>>>> Subject: Re: [EXTERNAL] Re: Origins assigned to > >>>>> Multipe > >>>>>>>> Delivery > >>>>>>>>>>>> Services produces indeterminate parent.config > >>>>>>>>>>>> > >>>>>>>>>>>> I'm generally a fan of constrain your data in your > >>>>>>>> database, but not > >>>>>>>>>>>> necessarily exclusively. I see this as a one-way > >>>>>>>> cleanup/conversion so > >>>>>>>>>>> it > >>>>>>>>>>>> doesn't need to be configurable; otherwise you have to > >>>>> ask > >>>>>>> the > >>>>>>>> question > >>>>>>>>>>>> what happens if someone turns it off. That said, > >>>>> something > >>>>>>> in > >>>>>>>> the UI > >>>>>>>>>>> layer > >>>>>>>>>>>> would be nice to prevent spending significant > >>>> quantities > >>>>> of > >>>>>>>> time > >>>>>>>>>>> building a > >>>>>>>>>>>> complex DS only to have it fail to post for reasons > >>>> that > >>>>>>> could > >>>>>>>> have been > >>>>>>>>>>>> known earlier. > >>>>>>>>>>>> > >>>>>>>>>>>> The way my brain works in this case: > >>>>>>>>>>>> If !unique_constraint_exists_query() > >>>>>>>>>>>> If has_duplicates_query() > >>>>>>>>>>>> show_warning() > >>>>>>>>>>>> else > >>>>>>>>>>>> add_unique_constraint() > >>>>>>>>>>>> > >>>>>>>>>>>> to which the API and UI configuration could also > >>>>> make use > >>>>>>>> of > >>>>>>>>>>>> unique_constraint_exists_query() to drive additional > >>>>> layer > >>>>>>>> constraints if > >>>>>>>>>>>> desired. > >>>>>>>>>>>> > >>>>>>>>>>>> Jonathan G > >>>>>>>>>>>> > >>>>>>>>>>>> On 12/17/18, 1:11 PM, "Rawlin Peters" < > >>>>>>>> rawlin.pet...@gmail.com> > >>>>>>>>>>> wrote: > >>>>>>>>>>>> > >>>>>>>>>>>> That is an interesting idea...detect at TO > >>>>> startup > >>>>>>>> whether or not > >>>>>>>>>>>> there are duplicate origins and operate in a > >>>>> "prevent > >>>>>>>> duplicate > >>>>>>>>>>>> origins" state if no duplicates are found or > >>>>> "prevent > >>>>>>>> conflicting > >>>>>>>>>>>> DS > >>>>>>>>>>>> topologies" state if duplicates are found? So > >>>>> once > >>>>>>>> operators have > >>>>>>>>>>>> replaced all the duplicate origins with CNAMEs, > >>>>> TO > >>>>>>> will > >>>>>>>>>>> essentially > >>>>>>>>>>>> operate in a "prohibit all duplicate origins" > >>>>> state. > >>>>>>>> That would > >>>>>>>>>>>> probably make for a simpler transition, but I'd > >>>>> want > >>>>>>>> to remove > >>>>>>>>>>> that > >>>>>>>>>>>> logic in a following release that strictly > >>>>> prohibits > >>>>>>>> duplicate > >>>>>>>>>>>> origins > >>>>>>>>>>>> (assuming that the community agrees we should > >>>>>>> prohibit > >>>>>>>> duplicate > >>>>>>>>>>>> origins altogether). > >>>>>>>>>>>> > >>>>>>>>>>>> As for DB constraints vs UI, I was thinking > >>>> those > >>>>>>>> DS-type > >>>>>>>>>>>> constraints > >>>>>>>>>>>> I pointed out would live in the API. It would > >>>>>>>> basically be added > >>>>>>>>>>>> validation in the deliveryservices POST/PUT > >>>>> endpoint > >>>>>>>> that checks > >>>>>>>>>>>> the > >>>>>>>>>>>> DB for existing DSes that conflict with the > >>>>> requested > >>>>>>>> DS. > >>>>>>>>>>>> > >>>>>>>>>>>> - Rawlin > >>>>>>>>>>>> > >>>>>>>>>>>> On Mon, Dec 17, 2018 at 12:35 PM Gray, Jonathan > >>>>>>>>>>>> <jonathan_g...@comcast.com> wrote: > >>>>>>>>>>>>> > >>>>>>>>>>>>> These kinds of conditions should be > >>>> detectable > >>>>>>> with a > >>>>>>>>>>>> sufficiently advanced SQL query. Is it possible to add > >>>>> the > >>>>>>>> constraint if > >>>>>>>>>>>> it passes and emit a warning during TO startup > >>>> otherwise? > >>>>>>>> That would let > >>>>>>>>>>>> you know the condition exists at startup but not > >>>> getting > >>>>> in > >>>>>>>> your way and > >>>>>>>>>>>> keep you out of trouble once you've cleaned up. We > >>>> made > >>>>> a > >>>>>>>> mistake early > >>>>>>>>>>>> on, but this would acknowledge it was bad and encourage > >>>>> it to > >>>>>>>> be fixed at > >>>>>>>>>>>> the speed of operations teams. Also this puts the > >>>>> constraint > >>>>>>>> in the > >>>>>>>>>>>> database rather than the UI which is really where the > >>>>>>>> contention is for > >>>>>>>>>>>> usability. > >>>>>>>>>>>>> > >>>>>>>>>>>>> Jonathan G > >>>>>>>>>>>>> > >>>>>>>>>>>>> > >>>>>>>>>>>>> On 12/17/18, 11:38 AM, "Rawlin Peters" < > >>>>>>>>>>> rawlin.pet...@gmail.com> > >>>>>>>>>>>> wrote: > >>>>>>>>>>>>> > >>>>>>>>>>>>> We occasionally discuss this issue but > >>>>> haven't > >>>>>>>> tackled it > >>>>>>>>>>>> yet. I think > >>>>>>>>>>>>> the main issue is just that duplicate > >>>>> origins > >>>>>>>> have been > >>>>>>>>>>>> allowed since > >>>>>>>>>>>>> the beginning, and now everyone's Traffic > >>>>> Ops > >>>>>>>> could be > >>>>>>>>>>>> littered with > >>>>>>>>>>>>> duplicate origins. Also, depending on the > >>>>>>> config > >>>>>>>> of the > >>>>>>>>>>>> duplicate > >>>>>>>>>>>>> delivery services, the origins might not > >>>>> be in > >>>>>>>> conflict at > >>>>>>>>>>>> all (if > >>>>>>>>>>>>> they don't have different topology > >>>>>>> constraints). > >>>>>>>> I would > >>>>>>>>>>>> love for us > >>>>>>>>>>>>> to just add a uniqueness constraint, but > >>>>> there > >>>>>>>> would need > >>>>>>>>>>> to > >>>>>>>>>>>> be a fair > >>>>>>>>>>>>> amount of warning to the community before > >>>>> doing > >>>>>>>> so and > >>>>>>>>>>> might > >>>>>>>>>>>>> invalidate a significant amount of valid > >>>>> use > >>>>>>>> cases. > >>>>>>>>>>>> Operators would > >>>>>>>>>>>>> need time to make DNS CNAME records for > >>>> the > >>>>>>>> duplicate > >>>>>>>>>>>> origins and > >>>>>>>>>>>>> update their DSes to use the different > >>>>> CNAMEs. > >>>>>>>>>>>>> > >>>>>>>>>>>>> I think as a good first step to > >>>>> eliminating the > >>>>>>>> use of > >>>>>>>>>>>> duplicate > >>>>>>>>>>>>> origins altogether, we should identify > >>>>> which > >>>>>>>> "topology > >>>>>>>>>>>> constraints" > >>>>>>>>>>>>> actually cause conflicting config when > >>>> used > >>>>>>> with > >>>>>>>> duplicate > >>>>>>>>>>>> origins and > >>>>>>>>>>>>> prevent creating DSes with duplicate > >>>>> origins > >>>>>>> _if > >>>>>>>> it would > >>>>>>>>>>>> cause a > >>>>>>>>>>>>> conflict with an existing DS that uses > >>>> the > >>>>> same > >>>>>>>> origin_. > >>>>>>>>>>>>> > >>>>>>>>>>>>> For instance, I believe an HTTP and > >>>>> DNS-type DS > >>>>>>>> can live > >>>>>>>>>>>> happily > >>>>>>>>>>>>> side-by-side using the same origin > >>>>> (probably > >>>>>>>> need different > >>>>>>>>>>>>> routing_names?), but scenarios like HTTP > >>>>> and > >>>>>>>> HTTP_LIVE, or > >>>>>>>>>>>> DNS and > >>>>>>>>>>>>> HTTP_NO_CACHE sharing the same origin > >>>> will > >>>>>>> cause > >>>>>>>> conflicts > >>>>>>>>>>>> for sure. > >>>>>>>>>>>>> So maybe we can start by making sure the > >>>> DS > >>>>>>>> types "match" > >>>>>>>>>>>> when using > >>>>>>>>>>>>> the same origin: > >>>>>>>>>>>>> HTTP + DNS: possibly good, if they have > >>>>>>>> different routing > >>>>>>>>>>>> names? > >>>>>>>>>>>>> HTTP_LIVE + HTTP_LIVE_NATNL: bad > >>>>>>>>>>>>> HTTP_NO_CACHE + [any other type]: bad > >>>>>>>>>>>>> HTTP_LIVE + HTTP: bad > >>>>>>>>>>>>> etc. > >>>>>>>>>>>>> > >>>>>>>>>>>>> There are most likely other conflict > >>>>> scenarios > >>>>>>>> that don't > >>>>>>>>>>>> involve the > >>>>>>>>>>>>> DS types, but I think this would be a > >>>> good > >>>>>>>> start. In the > >>>>>>>>>>>> future with > >>>>>>>>>>>>> Delivery Service Topologies (aka Flexible > >>>>>>>> Cachegroups aka > >>>>>>>>>>>> Bring Your > >>>>>>>>>>>>> Own Topology), we might be able to > >>>> prohibit > >>>>>>>> assigning a DS > >>>>>>>>>>>> to a > >>>>>>>>>>>>> Topology if the DS's origin is already > >>>>> used by > >>>>>>>> another DS > >>>>>>>>>>> in > >>>>>>>>>>>> a > >>>>>>>>>>>>> different Topology. > >>>>>>>>>>>>> > >>>>>>>>>>>>> - Rawlin > >>>>>>>>>>>>> > >>>>>>>>>>>>> On Mon, Dec 17, 2018 at 10:52 AM Fieck, > >>>>> Brennan > >>>>>>>>>>>>> <brennan_fi...@comcast.com> wrote: > >>>>>>>>>>>>>> > >>>>>>>>>>>>>> As some of you may be aware, > >>>>> `parent.config` > >>>>>>>> files > >>>>>>>>>>>> generated by Traffic Ops can vary wildly when an origin > >>>>> is > >>>>>>>> assigned to > >>>>>>>>>>>> multiple Delivery Services. This results in undefined > >>>>>>>> behavior. I'm told > >>>>>>>>>>>> that the conflict only happens when two Delivery > >>>> Services > >>>>>>> with > >>>>>>>> different > >>>>>>>>>>>> "topology requirements" use the same origin, whatever > >>>>> that > >>>>>>>> means (content > >>>>>>>>>>>> routing type?). Regardless, the issue should be > >>>>> addressed. > >>>>>>> The > >>>>>>>> obvious > >>>>>>>>>>>> solution is to put in place a database constraint that > >>>>>>>> prevents an origin > >>>>>>>>>>>> from being assigned to more that one Delivery Service > >>>>> with > >>>>>>> API > >>>>>>>> checks in > >>>>>>>>>>>> place that would provide helpful error messages when an > >>>>>>>> attempt is made > >>>>>>>>>>> to > >>>>>>>>>>>> violate the constraint. However, would that mess with > >>>>> things > >>>>>>>> like > >>>>>>>>>>>> Multi-Site Origin? Or is it just not viable for some > >>>>> other > >>>>>>>> reason? If it > >>>>>>>>>>> is > >>>>>>>>>>>> a good solution, I'm prepared to work on a fix that > >>>>> utilizes > >>>>>>>> it. > >>>>>>>>>>>>> > >>>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>>> > >>>>>>>>>>> > >>>>>>>>>> > >>>>>>>>>> > >>>>>>>> > >>>>>>> > >>>>> > >>>> > >>> > >>> > > >