Fix thrift protocol, use path to locate exporter. (#3331)
* Fix thrift protocol, use path to locate exporter. * Fix UT
This commit is contained in:
parent
15faa9bb36
commit
e3aac2dd2a
|
|
@ -163,6 +163,7 @@ public class ThriftCodec implements Codec2 {
|
|||
|
||||
// version
|
||||
String serviceName;
|
||||
String path;
|
||||
long id;
|
||||
|
||||
TMessage message;
|
||||
|
|
@ -171,6 +172,7 @@ public class ThriftCodec implements Codec2 {
|
|||
protocol.readI16();
|
||||
protocol.readByte();
|
||||
serviceName = protocol.readString();
|
||||
path = protocol.readString();
|
||||
id = protocol.readI64();
|
||||
message = protocol.readMessageBegin();
|
||||
} catch (TException e) {
|
||||
|
|
@ -181,6 +183,7 @@ public class ThriftCodec implements Codec2 {
|
|||
|
||||
RpcInvocation result = new RpcInvocation();
|
||||
result.setAttachment(Constants.INTERFACE_KEY, serviceName);
|
||||
result.setAttachment(Constants.PATH_KEY, path);
|
||||
result.setMethodName(message.name);
|
||||
|
||||
String argsClassName = ExtensionLoader.getExtensionLoader(ClassNameGenerator.class)
|
||||
|
|
@ -496,6 +499,8 @@ public class ThriftCodec implements Codec2 {
|
|||
protocol.writeByte(VERSION);
|
||||
// service name
|
||||
protocol.writeString(serviceName);
|
||||
// path
|
||||
protocol.writeString(inv.getAttachment(Constants.PATH_KEY));
|
||||
// dubbo request id
|
||||
protocol.writeI64(request.getId());
|
||||
protocol.getTransport().flush();
|
||||
|
|
|
|||
|
|
@ -63,9 +63,9 @@ public class ThriftProtocol extends AbstractProtocol {
|
|||
|
||||
if (msg instanceof Invocation) {
|
||||
Invocation inv = (Invocation) msg;
|
||||
String serviceName = inv.getAttachments().get(Constants.INTERFACE_KEY);
|
||||
String path = inv.getAttachments().get(Constants.PATH_KEY);
|
||||
String serviceKey = serviceKey(channel.getLocalAddress().getPort(),
|
||||
serviceName, null, null);
|
||||
path, null, null);
|
||||
DubboExporter<?> exporter = (DubboExporter<?>) exporterMap.get(serviceKey);
|
||||
if (exporter == null) {
|
||||
throw new RemotingException(channel,
|
||||
|
|
|
|||
|
|
@ -93,6 +93,8 @@ public class ThriftCodecTest {
|
|||
Assertions.assertEquals(ThriftCodec.VERSION, protocol.readByte());
|
||||
// service name
|
||||
Assertions.assertEquals(Demo.Iface.class.getName(), protocol.readString());
|
||||
// path
|
||||
Assertions.assertEquals(Demo.Iface.class.getName(), protocol.readString());
|
||||
// dubbo request id
|
||||
Assertions.assertEquals(request.getId(), protocol.readI64());
|
||||
|
||||
|
|
@ -148,6 +150,8 @@ public class ThriftCodecTest {
|
|||
protocol.writeI16(Short.MAX_VALUE);
|
||||
protocol.writeByte(ThriftCodec.VERSION);
|
||||
protocol.writeString(Demo.Iface.class.getName());
|
||||
// path
|
||||
protocol.writeString(Demo.Iface.class.getName());
|
||||
protocol.writeI64(request.getId());
|
||||
protocol.getTransport().flush();
|
||||
headerLength = bos.size();
|
||||
|
|
@ -221,6 +225,8 @@ public class ThriftCodecTest {
|
|||
protocol.writeI16(Short.MAX_VALUE);
|
||||
protocol.writeByte(ThriftCodec.VERSION);
|
||||
protocol.writeString(Demo.class.getName());
|
||||
// path
|
||||
protocol.writeString(Demo.class.getName());
|
||||
protocol.writeI64(request.getId());
|
||||
protocol.getTransport().flush();
|
||||
headerLength = bos.size();
|
||||
|
|
@ -396,6 +402,9 @@ public class ThriftCodecTest {
|
|||
protocol.writeString(
|
||||
((RpcInvocation) request.getData())
|
||||
.getAttachment(Constants.INTERFACE_KEY));
|
||||
protocol.writeString(
|
||||
((RpcInvocation) request.getData())
|
||||
.getAttachment(Constants.PATH_KEY));
|
||||
protocol.writeI64(request.getId());
|
||||
protocol.getTransport().flush();
|
||||
headerLength = bos.size();
|
||||
|
|
@ -448,6 +457,7 @@ public class ThriftCodecTest {
|
|||
invocation.setParameterTypes(new Class<?>[]{String.class});
|
||||
|
||||
invocation.setAttachment(Constants.INTERFACE_KEY, Demo.Iface.class.getName());
|
||||
invocation.setAttachment(Constants.PATH_KEY, Demo.Iface.class.getName());
|
||||
|
||||
Request request = new Request(1L);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue