Search in sources :

Example 1 with AgentInfo

use of com.navercorp.pinpoint.collector.cluster.AgentInfo in project pinpoint by naver.

the class ClusterManager method getConnectedAgentList.

@Override
public List<String> getConnectedAgentList() {
    List<String> result = new ArrayList<>();
    List<? extends ClusterPoint<?>> clusterPointList = clusterPointLocator.getClusterPointList();
    for (ClusterPoint<?> clusterPoint : clusterPointList) {
        AgentInfo destAgentInfo = clusterPoint.getDestAgentInfo();
        result.add(destAgentInfo.getAgentKey());
    }
    return result;
}
Also used : ArrayList(java.util.ArrayList) AgentInfo(com.navercorp.pinpoint.collector.cluster.AgentInfo)

Example 2 with AgentInfo

use of com.navercorp.pinpoint.collector.cluster.AgentInfo in project pinpoint by naver.

the class ClusterPointController method getGrpcAgentConnectionList.

private List<GrpcAgentConnection> getGrpcAgentConnectionList(final String applicationName, final String agentId, final long startTimestamp) {
    Objects.requireNonNull(applicationName, "applicationName");
    List<GrpcAgentConnection> result = new ArrayList<>();
    List<ClusterPoint<?>> clusterPointList = clusterPointLocator.getClusterPointList();
    for (ClusterPoint<?> clusterPoint : clusterPointList) {
        if (!(clusterPoint instanceof GrpcAgentConnection)) {
            continue;
        }
        AgentInfo destAgentInfo = clusterPoint.getDestAgentInfo();
        if (!destAgentInfo.getApplicationName().equals(applicationName)) {
            continue;
        }
        if (StringUtils.hasText(agentId) && !destAgentInfo.getAgentId().equals(agentId)) {
            continue;
        }
        if (startTimestamp > 0 && destAgentInfo.getStartTimestamp() != startTimestamp) {
            continue;
        }
        result.add((GrpcAgentConnection) clusterPoint);
    }
    return result;
}
Also used : GrpcAgentConnection(com.navercorp.pinpoint.collector.cluster.GrpcAgentConnection) ArrayList(java.util.ArrayList) AgentInfo(com.navercorp.pinpoint.collector.cluster.AgentInfo) ClusterPoint(com.navercorp.pinpoint.collector.cluster.ClusterPoint)

Example 3 with AgentInfo

use of com.navercorp.pinpoint.collector.cluster.AgentInfo in project pinpoint by naver.

the class AbstractRouteHandler method findClusterPoint.

protected ClusterPoint<?> findClusterPoint(TCommandTransfer deliveryCommand) {
    String applicationName = deliveryCommand.getApplicationName();
    String agentId = deliveryCommand.getAgentId();
    long startTimeStamp = deliveryCommand.getStartTime();
    List<ClusterPoint<?>> result = new ArrayList<>();
    for (ClusterPoint<?> targetClusterPoint : targetClusterPointLocator.getClusterPointList()) {
        AgentInfo destAgentInfo = targetClusterPoint.getDestAgentInfo();
        if (destAgentInfo.equals(applicationName, agentId, startTimeStamp)) {
            result.add(targetClusterPoint);
        }
    }
    if (result.size() == 1) {
        return result.get(0);
    }
    if (result.size() > 1) {
        logger.warn("Ambiguous ClusterPoint {}, {}, {} (Valid Agent list={}).", applicationName, agentId, startTimeStamp, result);
        return null;
    }
    return null;
}
Also used : ArrayList(java.util.ArrayList) AgentInfo(com.navercorp.pinpoint.collector.cluster.AgentInfo) ClusterPoint(com.navercorp.pinpoint.collector.cluster.ClusterPoint)

Example 4 with AgentInfo

use of com.navercorp.pinpoint.collector.cluster.AgentInfo in project pinpoint by naver.

the class GrpcCommandService method handleCommandV2.

@Override
public StreamObserver<PCmdMessage> handleCommandV2(StreamObserver<PCmdRequest> requestObserver) {
    final Long transportId = getTransportId();
    final AgentInfo agentInfo = getAgentInfo();
    final List<Integer> supportCommandCodeList = getSupportCommandCodeList();
    logger.info("{} => local. handleCommandV2(). transportId:{}, supportCommandCodeList{}", agentInfo, transportId, supportCommandCodeList);
    if (supportCommandCodeList == Header.SUPPORT_COMMAND_CODE_LIST_NOT_EXIST) {
        logger.warn("handleCommandV2() not allow empty Header:{}. Connection will be disconnected.", Header.SUPPORT_COMMAND_CODE.name());
        requestObserver.onError(new StatusException(Status.INVALID_ARGUMENT));
        return DisabledStreamObserver.instance();
    }
    final PinpointGrpcServer pinpointGrpcServer = registerNewPinpointGrpcServer(requestObserver, agentInfo, transportId);
    if (pinpointGrpcServer == null) {
        return handleServerRegistrationFailed(requestObserver, agentInfo, transportId);
    }
    final ServerCallStreamObserver<PCmdRequest> serverCallStreamObserver = (ServerCallStreamObserver<PCmdRequest>) requestObserver;
    serverCallStreamObserver.setOnReadyHandler(new Runnable() {

        public void run() {
            if (serverCallStreamObserver.isReady()) {
                logger.info("{} => local. ready() transportId:{}", agentInfo.getAgentKey(), transportId);
                pinpointGrpcServer.connected();
                registerAgentCommandList(pinpointGrpcServer, supportCommandCodeList);
            }
            pinpointGrpcServer.setOnCloseHandler(new Runnable() {

                @Override
                public void run() {
                    unregisterPinpointGrpcServer(transportId);
                }
            });
        }
    });
    final StreamObserver<PCmdMessage> responseObserver = new StreamObserver<PCmdMessage>() {

        @Override
        public void onNext(PCmdMessage value) {
            if (value.hasFailMessage()) {
                PCmdResponse failMessage = value.getFailMessage();
                pinpointGrpcServer.handleFail(failMessage);
            }
        }

        @Override
        public void onError(Throwable t) {
            handleOnError(t, pinpointGrpcServer, agentInfo);
        }

        @Override
        public void onCompleted() {
            handleOnCompleted(pinpointGrpcServer, agentInfo);
        }
    };
    return responseObserver;
}
Also used : StreamObserver(io.grpc.stub.StreamObserver) ServerCallStreamObserver(io.grpc.stub.ServerCallStreamObserver) ServerCallStreamObserver(io.grpc.stub.ServerCallStreamObserver) PinpointGrpcServer(com.navercorp.pinpoint.collector.receiver.grpc.PinpointGrpcServer) StatusException(io.grpc.StatusException) PCmdMessage(com.navercorp.pinpoint.grpc.trace.PCmdMessage) PCmdRequest(com.navercorp.pinpoint.grpc.trace.PCmdRequest) AgentInfo(com.navercorp.pinpoint.collector.cluster.AgentInfo) PCmdResponse(com.navercorp.pinpoint.grpc.trace.PCmdResponse)

Example 5 with AgentInfo

use of com.navercorp.pinpoint.collector.cluster.AgentInfo in project pinpoint by naver.

the class GrpcCommandService method handleCommand.

@Override
public StreamObserver<PCmdMessage> handleCommand(StreamObserver<PCmdRequest> requestObserver) {
    final Long transportId = getTransportId();
    final AgentInfo agentInfo = getAgentInfo();
    logger.info("{} => local. handleCommand(). transportId:{}.", agentInfo, transportId);
    final List<Integer> supportCommandCodeList = getSupportCommandCodeList();
    if (supportCommandCodeList != Header.SUPPORT_COMMAND_CODE_LIST_NOT_EXIST) {
        logger.warn("handleCommand() not support included Header:{}. Connection will be disconnected.", Header.SUPPORT_COMMAND_CODE.name());
        requestObserver.onError(new StatusException(Status.INVALID_ARGUMENT));
        return DisabledStreamObserver.instance();
    }
    final PinpointGrpcServer pinpointGrpcServer = registerNewPinpointGrpcServer(requestObserver, agentInfo, transportId);
    if (pinpointGrpcServer == null) {
        return handleServerRegistrationFailed(requestObserver, agentInfo, transportId);
    }
    final ServerCallStreamObserver<PCmdRequest> serverCallStreamObserver = (ServerCallStreamObserver<PCmdRequest>) requestObserver;
    serverCallStreamObserver.setOnReadyHandler(new Runnable() {

        public void run() {
            if (serverCallStreamObserver.isReady()) {
                logger.info("{} => local. ready() transportId:{}", agentInfo.getAgentKey(), transportId);
                pinpointGrpcServer.connected();
            }
            pinpointGrpcServer.setOnCloseHandler(new Runnable() {

                @Override
                public void run() {
                    unregisterPinpointGrpcServer(transportId);
                }
            });
        }
    });
    final StreamObserver<PCmdMessage> responseObserver = new StreamObserver<PCmdMessage>() {

        @Override
        public void onNext(PCmdMessage value) {
            // old operation for handshake
            if (value.hasHandshakeMessage()) {
                List<Integer> supportCommandServiceKeyList = value.getHandshakeMessage().getSupportCommandServiceKeyList();
                registerAgentCommandList(pinpointGrpcServer, supportCommandServiceKeyList);
            } else if (value.hasFailMessage()) {
                PCmdResponse failMessage = value.getFailMessage();
                pinpointGrpcServer.handleFail(failMessage);
            }
        }

        @Override
        public void onError(Throwable t) {
            handleOnError(t, pinpointGrpcServer, agentInfo);
        }

        @Override
        public void onCompleted() {
            handleOnCompleted(pinpointGrpcServer, agentInfo);
        }
    };
    return responseObserver;
}
Also used : StreamObserver(io.grpc.stub.StreamObserver) ServerCallStreamObserver(io.grpc.stub.ServerCallStreamObserver) ServerCallStreamObserver(io.grpc.stub.ServerCallStreamObserver) PinpointGrpcServer(com.navercorp.pinpoint.collector.receiver.grpc.PinpointGrpcServer) StatusException(io.grpc.StatusException) PCmdMessage(com.navercorp.pinpoint.grpc.trace.PCmdMessage) PCmdRequest(com.navercorp.pinpoint.grpc.trace.PCmdRequest) AgentInfo(com.navercorp.pinpoint.collector.cluster.AgentInfo) PCmdResponse(com.navercorp.pinpoint.grpc.trace.PCmdResponse)

Aggregations

AgentInfo (com.navercorp.pinpoint.collector.cluster.AgentInfo)5 ArrayList (java.util.ArrayList)3 ClusterPoint (com.navercorp.pinpoint.collector.cluster.ClusterPoint)2 PinpointGrpcServer (com.navercorp.pinpoint.collector.receiver.grpc.PinpointGrpcServer)2 PCmdMessage (com.navercorp.pinpoint.grpc.trace.PCmdMessage)2 PCmdRequest (com.navercorp.pinpoint.grpc.trace.PCmdRequest)2 PCmdResponse (com.navercorp.pinpoint.grpc.trace.PCmdResponse)2 StatusException (io.grpc.StatusException)2 ServerCallStreamObserver (io.grpc.stub.ServerCallStreamObserver)2 StreamObserver (io.grpc.stub.StreamObserver)2 GrpcAgentConnection (com.navercorp.pinpoint.collector.cluster.GrpcAgentConnection)1