diff --git a/CHANGELOG.rst b/CHANGELOG.rst index e834d3b010..a5857f09e4 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -31,6 +31,9 @@ Runtime Behavior Changes * finagle-core: Request logging now defaults to disabled. Enable it by configuring the `RequestLogger` Stack parameter on your `Client` or `Server`. ``PHAB_ID=D308476`` +* finagle-core: Subtree binding failures in `NameTree.Union`'s are ignored in the + final binding result. ``PHAB_ID=D315282`` + Breaking API Changes ~~~~~~~~~~~~~~~~~~~~ diff --git a/finagle-core/src/main/scala/com/twitter/finagle/NameTree.scala b/finagle-core/src/main/scala/com/twitter/finagle/NameTree.scala index 6146cade87..2f0ff64b32 100644 --- a/finagle-core/src/main/scala/com/twitter/finagle/NameTree.scala +++ b/finagle-core/src/main/scala/com/twitter/finagle/NameTree.scala @@ -185,8 +185,7 @@ object NameTree { case Nil => accum case Seq(Weighted(w, tree), tail @ _*) => simplify(tree) match { - case Fail => unionFail - case Neg => loop(tail, accum) + case Fail | Neg => loop(tail, accum) case tree => loop(tail, accum :+ Weighted(w, tree)) } } @@ -269,8 +268,7 @@ object NameTree { } case Seq(Weighted(_, head), tail @ _*) => eval(head) match { - case Fail => Fail - case Neg => loop(tail, accum) + case Fail | Neg => loop(tail, accum) case Leaf(value) => loop(tail, accum :+ value) case _ => scala.sys.error("bug") } diff --git a/finagle-core/src/test/scala/com/twitter/finagle/NameTreeTest.scala b/finagle-core/src/test/scala/com/twitter/finagle/NameTreeTest.scala index eae9df4ea6..8889e0088d 100644 --- a/finagle-core/src/test/scala/com/twitter/finagle/NameTreeTest.scala +++ b/finagle-core/src/test/scala/com/twitter/finagle/NameTreeTest.scala @@ -157,7 +157,8 @@ class NameTreeTest extends FunSuite { "~ | (~ | $) | /blah" -> Some(Set.empty), "(~|$|/foo) & (/bar|/blah) & ~ & /FOO" -> Some(Set("/bar", "/FOO")), "! | /ok" -> None, - "/ok & !" -> None, + "/ok & !" -> Some(Set("/ok")), + "! & ! & !" -> None, "~ | /ok | !" -> Some(Set("/ok")) )