[강운덕] [PINPOINT-244] udp l4 패킷이 왔을 경우 무시하는 로직추가

git-svn-id: http://svn.bds.nhncorp.com/pe/hippo-server/trunk@3031 84d0f5b1-2673-498c-a247-62c4ff18d310
This commit is contained in:
Woonduk Kang
2013-12-17 06:30:50 +00:00
parent 04664072be
commit f12c17a6d8
2 changed files with 24 additions and 0 deletions
@@ -19,6 +19,7 @@ import com.nhn.pinpoint.rpc.server.PinpointServerSocket;
import com.nhn.pinpoint.rpc.server.ServerMessageListener;
import com.nhn.pinpoint.rpc.server.ServerStreamChannel;
import com.nhn.pinpoint.rpc.server.SocketChannel;
import com.nhn.pinpoint.thrift.io.L4Packet;
import com.nhn.pinpoint.thrift.io.SafeHeaderTBaseSerializer;
import org.apache.thrift.TBase;
import org.apache.thrift.TException;
@@ -160,6 +161,14 @@ public class TCPReceiver {
SocketAddress remoteAddress = socketChannel.getRemoteAddress();
try {
TBase<?, ?> tBase = deserializer.deserialize(bytes);
if (tBase instanceof L4Packet) {
// 동적으로 패스가 가능하도록 보완해야 될듯 하다.
if (logger.isDebugEnabled()) {
L4Packet packet = (L4Packet) tBase;
logger.debug("tcp l4 packet {}", packet.getHeader());
}
return;
}
TBase result = dispatchHandler.dispatch(tBase, bytes, Header.HEADER_SIZE, bytes.length);
if (result != null) {
SafeHeaderTBaseSerializer serializer = new SafeHeaderTBaseSerializer();
@@ -13,6 +13,7 @@ import com.nhn.pinpoint.thrift.io.Header;
import com.nhn.pinpoint.thrift.io.HeaderTBaseDeserializer;
import com.nhn.pinpoint.common.util.ExecutorFactory;
import com.nhn.pinpoint.rpc.util.CpuUtils;
import com.nhn.pinpoint.thrift.io.L4Packet;
import org.apache.thrift.TBase;
import org.apache.thrift.TException;
import org.slf4j.Logger;
@@ -123,6 +124,12 @@ public class UDPReceiver implements DataReceiver {
if (packet == null) {
continue;
}
if (packet.getLength() == 0) {
if (debugEnabled) {
logger.debug("length is 0 ip:{}, port:{}", packet.getAddress(), packet.getPort());
}
return;
}
if (debugEnabled) {
logger.debug("pool getActiveCount:{}", worker.getActiveCount());
}
@@ -263,6 +270,14 @@ public class UDPReceiver implements DataReceiver {
TBase<?, ?> tBase = null;
try {
tBase = deserializer.deserialize(packet.getData());
if (tBase instanceof L4Packet) {
// 동적으로 패스가 가능하도록 보완해야 될듯 하다.
if (logger.isDebugEnabled()) {
L4Packet packet = (L4Packet) tBase;
logger.debug("udp l4 packet {}", packet.getHeader());
}
return;
}
// dispatch는 비지니스 로직 실행을 의미.
dispatchHandler.dispatch(tBase, packet.getData(), Header.HEADER_SIZE, packet.getLength());
} catch (TException e) {