{"action":"created","issue":{"url":"https://api.github.com/repos/istio/istio/issues/4239","repository_url":"https://api.github.com/repos/istio/istio","labels_url":"https://api.github.com/repos/istio/istio/issues/4239/labels{/name}","comments_url":"https://api.github.com/repos/istio/istio/issues/4239/comments","events_url":"https://api.github.com/repos/istio/istio/issues/4239/events","html_url":"https://github.com/istio/istio/issues/4239","id":304919816,"number":4239,"title":"networking: ignore routes with same HTTP match as a preceding source match","user":{"login":"rshriram","id":8202871,"avatar_url":"https://avatars1.githubusercontent.com/u/8202871?v=4","gravatar_id":"","url":"https://api.github.com/users/rshriram","html_url":"https://github.com/rshriram","followers_url":"https://api.github.com/users/rshriram/followers","following_url":"https://api.github.com/users/rshriram/following{/other_user}","gists_url":"https://api.github.com/users/rshriram/gists{/gist_id}","starred_url":"https://api.github.com/users/rshriram/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rshriram/subscriptions","organizations_url":"https://api.github.com/users/rshriram/orgs","repos_url":"https://api.github.com/users/rshriram/repos","events_url":"https://api.github.com/users/rshriram/events{/privacy}","received_events_url":"https://api.github.com/users/rshriram/received_events","type":"User","site_admin":false},"labels":[{"id":735781806,"url":"https://api.github.com/repos/istio/istio/labels/area/networking","name":"area/networking","color":"0e8a16","default":false},{"id":816498729,"url":"https://api.github.com/repos/istio/istio/labels/kind/blocking%20release","name":"kind/blocking release","color":"fbca04","default":false}],"state":"open","locked":false,"assignee":{"login":"costinm","id":84202,"avatar_url":"https://avatars1.githubusercontent.com/u/84202?v=4","gravatar_id":"","url":"https://api.github.com/users/costinm","html_url":"https://github.com/costinm","followers_url":"https://api.github.com/users/costinm/followers","following_url":"https://api.github.com/users/costinm/following{/other_user}","gists_url":"https://api.github.com/users/costinm/gists{/gist_id}","starred_url":"https://api.github.com/users/costinm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/costinm/subscriptions","organizations_url":"https://api.github.com/users/costinm/orgs","repos_url":"https://api.github.com/users/costinm/repos","events_url":"https://api.github.com/users/costinm/events{/privacy}","received_events_url":"https://api.github.com/users/costinm/received_events","type":"User","site_admin":false},"assignees":[{"login":"costinm","id":84202,"avatar_url":"https://avatars1.githubusercontent.com/u/84202?v=4","gravatar_id":"","url":"https://api.github.com/users/costinm","html_url":"https://github.com/costinm","followers_url":"https://api.github.com/users/costinm/followers","following_url":"https://api.github.com/users/costinm/following{/other_user}","gists_url":"https://api.github.com/users/costinm/gists{/gist_id}","starred_url":"https://api.github.com/users/costinm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/costinm/subscriptions","organizations_url":"https://api.github.com/users/costinm/orgs","repos_url":"https://api.github.com/users/costinm/repos","events_url":"https://api.github.com/users/costinm/events{/privacy}","received_events_url":"https://api.github.com/users/costinm/received_events","type":"User","site_admin":false},{"login":"kyessenov","id":9537734,"avatar_url":"https://avatars2.githubusercontent.com/u/9537734?v=4","gravatar_id":"","url":"https://api.github.com/users/kyessenov","html_url":"https://github.com/kyessenov","followers_url":"https://api.github.com/users/kyessenov/followers","following_url":"https://api.github.com/users/kyessenov/following{/other_user}","gists_url":"https://api.github.com/users/kyessenov/gists{/gist_id}","starred_url":"https://api.github.com/users/kyessenov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kyessenov/subscriptions","organizations_url":"https://api.github.com/users/kyessenov/orgs","repos_url":"https://api.github.com/users/kyessenov/repos","events_url":"https://api.github.com/users/kyessenov/events{/privacy}","received_events_url":"https://api.github.com/users/kyessenov/received_events","type":"User","site_admin":false},{"login":"ijsnellf","id":19473346,"avatar_url":"https://avatars1.githubusercontent.com/u/19473346?v=4","gravatar_id":"","url":"https://api.github.com/users/ijsnellf","html_url":"https://github.com/ijsnellf","followers_url":"https://api.github.com/users/ijsnellf/followers","following_url":"https://api.github.com/users/ijsnellf/following{/other_user}","gists_url":"https://api.github.com/users/ijsnellf/gists{/gist_id}","starred_url":"https://api.github.com/users/ijsnellf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ijsnellf/subscriptions","organizations_url":"https://api.github.com/users/ijsnellf/orgs","repos_url":"https://api.github.com/users/ijsnellf/repos","events_url":"https://api.github.com/users/ijsnellf/events{/privacy}","received_events_url":"https://api.github.com/users/ijsnellf/received_events","type":"User","site_admin":false},{"login":"ostromart","id":30089849,"avatar_url":"https://avatars3.githubusercontent.com/u/30089849?v=4","gravatar_id":"","url":"https://api.github.com/users/ostromart","html_url":"https://github.com/ostromart","followers_url":"https://api.github.com/users/ostromart/followers","following_url":"https://api.github.com/users/ostromart/following{/other_user}","gists_url":"https://api.github.com/users/ostromart/gists{/gist_id}","starred_url":"https://api.github.com/users/ostromart/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ostromart/subscriptions","organizations_url":"https://api.github.com/users/ostromart/orgs","repos_url":"https://api.github.com/users/ostromart/repos","events_url":"https://api.github.com/users/ostromart/events{/privacy}","received_events_url":"https://api.github.com/users/ostromart/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/istio/istio/milestones/10","html_url":"https://github.com/istio/istio/milestone/10","labels_url":"https://api.github.com/repos/istio/istio/milestones/10/labels","id":3138003,"number":10,"title":"Istio 0.8","description":"","creator":{"login":"costinm","id":84202,"avatar_url":"https://avatars1.githubusercontent.com/u/84202?v=4","gravatar_id":"","url":"https://api.github.com/users/costinm","html_url":"https://github.com/costinm","followers_url":"https://api.github.com/users/costinm/followers","following_url":"https://api.github.com/users/costinm/following{/other_user}","gists_url":"https://api.github.com/users/costinm/gists{/gist_id}","starred_url":"https://api.github.com/users/costinm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/costinm/subscriptions","organizations_url":"https://api.github.com/users/costinm/orgs","repos_url":"https://api.github.com/users/costinm/repos","events_url":"https://api.github.com/users/costinm/events{/privacy}","received_events_url":"https://api.github.com/users/costinm/received_events","type":"User","site_admin":false},"open_issues":18,"closed_issues":1,"state":"open","created_at":"2018-02-23T01:36:07Z","updated_at":"2018-03-13T20:20:22Z","due_on":"2018-04-14T07:00:00Z","closed_at":null},"comments":8,"created_at":"2018-03-13T20:17:42Z","updated_at":"2018-03-14T04:04:13Z","closed_at":null,"author_association":"MEMBER","body":"```\r\nroute:\r\n - match:\r\n     source: foobar\r\n     gateways: scooby\r\n     httpMatch: \r\n       uri: /abc\r\n       host: xyz\r\n    destination:\r\n    - name: abcservice\r\n- match:\r\n     httpMatch: \r\n       uri: /abc\r\n       host: xyz\r\n    destination:\r\n    - name: totally-different-service\r\n    fault:\r\n    - add-10s-delay\r\n    mirror:\r\n    -...\r\n```\r\n\r\nThe example configuration above has two routes, that have the same HTTP match conditions, with one route having additional source/gateway match conditions. When processing rules like the one above, rules that have source match must override any other rule that has no-source-match+same-http-match conditions.\r\n\r\nSomething like the following is needed. \r\n```\r\nfor each route, \r\n       if source == route.source\r\n            context.source_http_match = route.http_match\r\n            add route..\r\n       else if route.source == nil and route.http_match == context.source_http_match, \r\n             ignore route\r\n```\r\n\r\nThis logic is needed in both RDS and LDS (fault filters). The latter logic will go away once we have route-local filter stacks.\r\n\r\nWithout this, we have a potential correctness issue, as filters added for later rules will end up being active (the example in this case being the fault filter).\r\n\r\ncc @louiscryan @ZackButcher @frankbu "},"comment":{"url":"https://api.github.com/repos/istio/istio/issues/comments/372897950","html_url":"https://github.com/istio/istio/issues/4239#issuecomment-372897950","issue_url":"https://api.github.com/repos/istio/istio/issues/4239","id":372897950,"user":{"login":"kyessenov","id":9537734,"avatar_url":"https://avatars2.githubusercontent.com/u/9537734?v=4","gravatar_id":"","url":"https://api.github.com/users/kyessenov","html_url":"https://github.com/kyessenov","followers_url":"https://api.github.com/users/kyessenov/followers","following_url":"https://api.github.com/users/kyessenov/following{/other_user}","gists_url":"https://api.github.com/users/kyessenov/gists{/gist_id}","starred_url":"https://api.github.com/users/kyessenov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kyessenov/subscriptions","organizations_url":"https://api.github.com/users/kyessenov/orgs","repos_url":"https://api.github.com/users/kyessenov/repos","events_url":"https://api.github.com/users/kyessenov/events{/privacy}","received_events_url":"https://api.github.com/users/kyessenov/received_events","type":"User","site_admin":false},"created_at":"2018-03-14T04:04:12Z","updated_at":"2018-03-14T04:04:12Z","author_association":"MEMBER","body":"@ZackButcher Yes, I'm saying that Envoy spec requires that routes match in order. I would reserve the judgement about brittleness of Envoy spec vs istio spec. It's up to the user to provide more specific rules first, before less specific. Specificity is a partial order, there is no one topological ordering between the conditions that can automatically resolve the ambiguity.\r\n\r\n@rshriram @louiscryan I think we've already discussed that more than one times. Can we please commit to the decisions, and not resurrect the discussions for v1alpha3. We can collect a list of improvements for v1alpha4 if this is really important."}}
{"actor":{"display_login":"kyessenov"}}