Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 71fd5bc

Browse files
committed
Merge pull request linkerd#161 from BuoyantIO/alex/disable-thrift-upgrade
Allow control over thrift protocol upgrade
2 parents b343688 + 2bb504f commit 71fd5bc

File tree

4 files changed

+11
-2
lines changed

4 files changed

+11
-2
lines changed

CHANGES.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
requests accepted by a server.
1313
* Add a `hostConnectionPool` client config section to control the number of
1414
connections maintained to destination hosts.
15+
* Add a `attemptTTwitterUpgrade` thrift client config option to control whether
16+
thrift protocol upgrade should be attempted.
1517

1618
## 0.2.0
1719

docs/config.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -340,6 +340,8 @@ Thrift also supports additional *client* parameters:
340340
currently supports `binary` for `TBinaryProtocol` (default) and
341341
`compact` for `TCompactProtocol`. Typically this setting matches
342342
the router's servers' `thriftProtocol` param.
343+
* *attemptTTwitterUpgrade* -- controls whether thrift protocol upgrade should be
344+
attempted. (default: true)
343345

344346
As an example: Here's a thrift router configuration that routes thrift--via
345347
buffered transport using the TCompactProtocol --from port 4004 to port 5005

linkerd/protocol/thrift/src/main/scala/io/buoyant/linkerd/protocol/ThriftInitializer.scala

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore
55
import com.twitter.finagle.Path
66
import com.twitter.finagle.Stack.Params
77
import com.twitter.finagle.Thrift.param
8-
import com.twitter.finagle.Thrift.param.ProtocolFactory
8+
import com.twitter.finagle.Thrift.param.{AttemptTTwitterUpgrade, ProtocolFactory}
99
import io.buoyant.linkerd.config.Parser
1010
import io.buoyant.linkerd.config.types.ThriftProtocol
1111
import io.buoyant.router.{RoutingFactory, Thrift}
@@ -58,10 +58,12 @@ case class ThriftServerConfig(
5858

5959
case class ThriftClientConfig(
6060
thriftFramed: Option[Boolean],
61-
thriftProtocol: Option[ThriftProtocol]
61+
thriftProtocol: Option[ThriftProtocol],
62+
attemptTTwitterUpgrade: Option[Boolean]
6263
) extends ClientConfig {
6364
@JsonIgnore
6465
override def clientParams: Params = super.clientParams
6566
.maybeWith(thriftFramed.map(param.Framed(_)))
6667
.maybeWith(thriftProtocol.map(proto => param.ProtocolFactory(proto.factory)))
68+
.maybeWith(attemptTTwitterUpgrade.map(AttemptTTwitterUpgrade(_)))
6769
}

linkerd/protocol/thrift/src/test/scala/io/buoyant/linkerd/protocol/ThriftInitializerTest.scala

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package io.buoyant.linkerd.protocol
22

33
import com.fasterxml.jackson.databind.JsonMappingException
44
import com.twitter.finagle.Thrift.param
5+
import com.twitter.finagle.Thrift.param.AttemptTTwitterUpgrade
56
import io.buoyant.linkerd.Linker
67
import io.buoyant.router.Thrift.param.MethodInDst
78
import org.apache.thrift.protocol.TCompactProtocol
@@ -17,6 +18,7 @@ class ThriftInitializerTest extends FunSuite {
1718
| client:
1819
| thriftFramed: false
1920
| thriftProtocol: binary
21+
| attemptTTwitterUpgrade: false
2022
| servers:
2123
| - thriftFramed: true
2224
| thriftProtocol: compact
@@ -29,6 +31,7 @@ class ThriftInitializerTest extends FunSuite {
2931
assert(!router.params[param.ProtocolFactory].protocolFactory.isInstanceOf[TCompactProtocol.Factory])
3032
assert(router.servers.head.params[param.Framed].enabled)
3133
assert(router.servers.head.params[param.ProtocolFactory].protocolFactory.isInstanceOf[TCompactProtocol.Factory])
34+
assert(!router.params[AttemptTTwitterUpgrade].upgrade)
3235
}
3336

3437
test("unsupported thrift protocol") {

0 commit comments

Comments
 (0)