{"action":"opened","issue":{"url":"https://api.github.com/repos/BuoyantIO/linkerd/issues/124","repository_url":"https://api.github.com/repos/BuoyantIO/linkerd","labels_url":"https://api.github.com/repos/BuoyantIO/linkerd/issues/124/labels{/name}","comments_url":"https://api.github.com/repos/BuoyantIO/linkerd/issues/124/comments","events_url":"https://api.github.com/repos/BuoyantIO/linkerd/issues/124/events","html_url":"https://github.com/BuoyantIO/linkerd/issues/124","id":135845857,"number":124,"title":"`thriftProtocol: compact` not compatible with `thriftMethodInDst: true`","user":{"login":"klingerf","id":9226,"avatar_url":"https://avatars.githubusercontent.com/u/9226?v=3","gravatar_id":"","url":"https://api.github.com/users/klingerf","html_url":"https://github.com/klingerf","followers_url":"https://api.github.com/users/klingerf/followers","following_url":"https://api.github.com/users/klingerf/following{/other_user}","gists_url":"https://api.github.com/users/klingerf/gists{/gist_id}","starred_url":"https://api.github.com/users/klingerf/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/klingerf/subscriptions","organizations_url":"https://api.github.com/users/klingerf/orgs","repos_url":"https://api.github.com/users/klingerf/repos","events_url":"https://api.github.com/users/klingerf/events{/privacy}","received_events_url":"https://api.github.com/users/klingerf/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":0,"created_at":"2016-02-23T19:50:29Z","updated_at":"2016-02-23T19:50:29Z","closed_at":null,"body":"When a thrift router is configured with `thriftMethodInDst: true`, the thrift identifier for that router always uses a binary protocol factory to read the method name from the thrift request, regardless of whether or not the `thriftProtocol` server option has been set.  This causes a deserialization error when `thriftProtocol` is set to \"compact\".  Here's the problematic code:\r\n\r\nhttps://github.com/BuoyantIO/linkerd/blob/master/router/thrift/src/main/scala/io/buoyant/router/thrift/Identifier.scala#L18\r\n\r\nAnd here's the error that is thrown:\r\n\r\n```\r\norg.apache.thrift.protocol.TProtocolException: Bad version in readMessageBegin\r\n\tat org.apache.thrift.protocol.TBinaryProtocol.readMessageBegin(TBinaryProtocol.java:208)\r\n\tat io.buoyant.router.thrift.Identifier.suffix(Identifier.scala:20)\r\n\tat io.buoyant.router.thrift.Identifier.apply(Identifier.scala:28)\r\n\tat io.buoyant.router.thrift.Identifier.apply(Identifier.scala:10)\r\n\tat io.buoyant.router.RoutingFactory$RoutingService.apply(RoutingFactory.scala:83)\r\n\tat com.twitter.finagle.Service$$anon$2.apply(Service.scala:16)\r\n\tat io.buoyant.router.Thrift$Router$IngestingFilter$.apply(Thrift.scala:43)\r\n\tat io.buoyant.router.Thrift$Router$IngestingFilter$.apply(Thrift.scala:41)\r\n\t...\r\n```"}}