diff --git a/src/main/java/com/nhn/pinpoint/collector/receiver/tcp/TCPReceiver.java b/src/main/java/com/nhn/pinpoint/collector/receiver/tcp/TCPReceiver.java index 3aeba95b5..0aa140691 100644 --- a/src/main/java/com/nhn/pinpoint/collector/receiver/tcp/TCPReceiver.java +++ b/src/main/java/com/nhn/pinpoint/collector/receiver/tcp/TCPReceiver.java @@ -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(); diff --git a/src/main/java/com/nhn/pinpoint/collector/receiver/udp/UDPReceiver.java b/src/main/java/com/nhn/pinpoint/collector/receiver/udp/UDPReceiver.java index abadb5e21..d1b4bcf7c 100644 --- a/src/main/java/com/nhn/pinpoint/collector/receiver/udp/UDPReceiver.java +++ b/src/main/java/com/nhn/pinpoint/collector/receiver/udp/UDPReceiver.java @@ -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) {