Search in sources :

Example 1 with commands

use of commands in project skywalking-java by apache.

the class MeterSender method send.

public void send(Map<MeterId, BaseMeter> meterMap, MeterService meterService) {
    if (status == GRPCChannelStatus.CONNECTED) {
        StreamObserver<MeterData> reportStreamObserver = null;
        final GRPCStreamServiceStatus status = new GRPCStreamServiceStatus(false);
        try {
            reportStreamObserver = meterReportServiceStub.withDeadlineAfter(GRPC_UPSTREAM_TIMEOUT, TimeUnit.SECONDS).collect(new StreamObserver<Commands>() {

                @Override
                public void onNext(Commands commands) {
                }

                @Override
                public void onError(Throwable throwable) {
                    status.finished();
                    if (LOGGER.isErrorEnable()) {
                        LOGGER.error(throwable, "Send meters to collector fail with a grpc internal exception.");
                    }
                    ServiceManager.INSTANCE.findService(GRPCChannelManager.class).reportError(throwable);
                }

                @Override
                public void onCompleted() {
                    status.finished();
                }
            });
            final StreamObserver<MeterData> reporter = reportStreamObserver;
            transform(meterMap, meterData -> reporter.onNext(meterData));
        } catch (Throwable e) {
            if (!(e instanceof StatusRuntimeException)) {
                LOGGER.error(e, "Report meters to backend fail.");
                return;
            }
            final StatusRuntimeException statusRuntimeException = (StatusRuntimeException) e;
            if (statusRuntimeException.getStatus().getCode() == Status.Code.UNIMPLEMENTED) {
                LOGGER.warn("Backend doesn't support meter, it will be disabled");
                meterService.shutdown();
            }
        } finally {
            if (reportStreamObserver != null) {
                reportStreamObserver.onCompleted();
            }
            status.wait4Finish();
        }
    }
}
Also used : StreamObserver(io.grpc.stub.StreamObserver) GRPCStreamServiceStatus(org.apache.skywalking.apm.agent.core.remote.GRPCStreamServiceStatus) GRPCChannelManager(org.apache.skywalking.apm.agent.core.remote.GRPCChannelManager) Commands(org.apache.skywalking.apm.network.common.v3.Commands) StatusRuntimeException(io.grpc.StatusRuntimeException) MeterData(org.apache.skywalking.apm.network.language.agent.v3.MeterData)

Example 2 with commands

use of commands in project skywalking-java by apache.

the class GRPCNoServerTest method main.

public static void main(String[] args) throws InterruptedException {
    ManagedChannelBuilder<?> channelBuilder = NettyChannelBuilder.forAddress("127.0.0.1", 8080).nameResolverFactory(new DnsNameResolverProvider()).maxInboundMessageSize(1024 * 1024 * 50).usePlaintext();
    ManagedChannel channel = channelBuilder.build();
    TraceSegmentReportServiceGrpc.TraceSegmentReportServiceStub serviceStub = TraceSegmentReportServiceGrpc.newStub(channel);
    final Status[] status = { null };
    StreamObserver<SegmentObject> streamObserver = serviceStub.collect(new StreamObserver<Commands>() {

        @Override
        public void onNext(Commands value) {
        }

        @Override
        public void onError(Throwable t) {
            status[0] = ((StatusRuntimeException) t).getStatus();
        }

        @Override
        public void onCompleted() {
        }
    });
    streamObserver.onNext(null);
    streamObserver.onCompleted();
    Thread.sleep(2 * 1000);
    Assert.assertEquals(status[0].getCode(), Status.UNAVAILABLE.getCode());
}
Also used : Status(io.grpc.Status) SegmentObject(org.apache.skywalking.apm.network.language.agent.v3.SegmentObject) TraceSegmentReportServiceGrpc(org.apache.skywalking.apm.network.language.agent.v3.TraceSegmentReportServiceGrpc) DnsNameResolverProvider(io.grpc.internal.DnsNameResolverProvider) Commands(org.apache.skywalking.apm.network.common.v3.Commands) StatusRuntimeException(io.grpc.StatusRuntimeException) ManagedChannel(io.grpc.ManagedChannel)

Example 3 with commands

use of commands in project skywalking-java by apache.

the class ConfigurationDiscoveryService method getAgentDynamicConfig.

/**
 * get agent dynamic config through gRPC.
 */
private void getAgentDynamicConfig() {
    LOGGER.debug("ConfigurationDiscoveryService running, status:{}.", status);
    if (GRPCChannelStatus.CONNECTED.equals(status)) {
        try {
            ConfigurationSyncRequest.Builder builder = ConfigurationSyncRequest.newBuilder();
            builder.setService(Config.Agent.SERVICE_NAME);
            // Some plugin will register watcher later.
            final int size = register.keys().size();
            if (lastRegisterWatcherSize != size) {
                // reset uuid, avoid the same uuid causing the configuration not to be updated.
                uuid = null;
                lastRegisterWatcherSize = size;
            }
            if (null != uuid) {
                builder.setUuid(uuid);
            }
            if (configurationDiscoveryServiceBlockingStub != null) {
                final Commands commands = configurationDiscoveryServiceBlockingStub.withDeadlineAfter(GRPC_UPSTREAM_TIMEOUT, TimeUnit.SECONDS).fetchConfigurations(builder.build());
                ServiceManager.INSTANCE.findService(CommandService.class).receiveCommand(commands);
            }
        } catch (Throwable t) {
            LOGGER.error(t, "ConfigurationDiscoveryService execute fail.");
            ServiceManager.INSTANCE.findService(GRPCChannelManager.class).reportError(t);
        }
    }
}
Also used : ConfigurationSyncRequest(org.apache.skywalking.apm.network.language.agent.v3.ConfigurationSyncRequest) CommandService(org.apache.skywalking.apm.agent.core.commands.CommandService) Commands(org.apache.skywalking.apm.network.common.v3.Commands)

Example 4 with commands

use of commands in project skywalking-java by apache.

the class ProfileSnapshotSender method send.

public void send(List<TracingThreadSnapshot> buffer) {
    if (status == GRPCChannelStatus.CONNECTED) {
        try {
            final GRPCStreamServiceStatus status = new GRPCStreamServiceStatus(false);
            StreamObserver<ThreadSnapshot> snapshotStreamObserver = profileTaskStub.withDeadlineAfter(GRPC_UPSTREAM_TIMEOUT, TimeUnit.SECONDS).collectSnapshot(new StreamObserver<Commands>() {

                @Override
                public void onNext(Commands commands) {
                }

                @Override
                public void onError(Throwable throwable) {
                    status.finished();
                    if (LOGGER.isErrorEnable()) {
                        LOGGER.error(throwable, "Send profile segment snapshot to collector fail with a grpc internal exception.");
                    }
                    ServiceManager.INSTANCE.findService(GRPCChannelManager.class).reportError(throwable);
                }

                @Override
                public void onCompleted() {
                    status.finished();
                }
            });
            for (TracingThreadSnapshot snapshot : buffer) {
                final ThreadSnapshot transformSnapshot = snapshot.transform();
                snapshotStreamObserver.onNext(transformSnapshot);
            }
            snapshotStreamObserver.onCompleted();
            status.wait4Finish();
        } catch (Throwable t) {
            LOGGER.error(t, "Send profile segment snapshot to backend fail.");
        }
    }
}
Also used : GRPCStreamServiceStatus(org.apache.skywalking.apm.agent.core.remote.GRPCStreamServiceStatus) ThreadSnapshot(org.apache.skywalking.apm.network.language.profile.v3.ThreadSnapshot) Commands(org.apache.skywalking.apm.network.common.v3.Commands)

Example 5 with commands

use of commands in project skywalking-java by apache.

the class LogReportServiceClient method consume.

@Override
public void consume(final List<LogData> dataList) {
    if (CollectionUtil.isEmpty(dataList)) {
        return;
    }
    if (GRPCChannelStatus.CONNECTED.equals(status)) {
        GRPCStreamServiceStatus status = new GRPCStreamServiceStatus(false);
        StreamObserver<LogData> logDataStreamObserver = logReportServiceStub.withDeadlineAfter(Collector.GRPC_UPSTREAM_TIMEOUT, TimeUnit.SECONDS).collect(new StreamObserver<Commands>() {

            @Override
            public void onNext(final Commands commands) {
            }

            @Override
            public void onError(final Throwable throwable) {
                status.finished();
                LOGGER.error(throwable, "Try to send {} log data to collector, with unexpected exception.", dataList.size());
                ServiceManager.INSTANCE.findService(GRPCChannelManager.class).reportError(throwable);
            }

            @Override
            public void onCompleted() {
                status.finished();
            }
        });
        for (final LogData logData : dataList) {
            logDataStreamObserver.onNext(logData);
        }
        logDataStreamObserver.onCompleted();
        status.wait4Finish();
    }
}
Also used : LogData(org.apache.skywalking.apm.network.logging.v3.LogData) Commands(org.apache.skywalking.apm.network.common.v3.Commands)

Aggregations

Commands (org.apache.skywalking.apm.network.common.v3.Commands)20 StatusRuntimeException (io.grpc.StatusRuntimeException)5 CommandService (org.apache.skywalking.apm.agent.core.commands.CommandService)4 SegmentObject (org.apache.skywalking.apm.network.language.agent.v3.SegmentObject)4 ManagedChannel (io.grpc.ManagedChannel)3 Status (io.grpc.Status)3 DnsNameResolverProvider (io.grpc.internal.DnsNameResolverProvider)3 CountDownLatch (java.util.concurrent.CountDownLatch)3 TraceSegmentReportServiceGrpc (org.apache.skywalking.apm.network.language.agent.v3.TraceSegmentReportServiceGrpc)3 GRPCStreamServiceStatus (org.apache.skywalking.apm.agent.core.remote.GRPCStreamServiceStatus)2 Command (org.apache.skywalking.apm.network.common.v3.Command)2 MeterDataCollection (org.apache.skywalking.apm.network.language.agent.v3.MeterDataCollection)2 ProfileTask (org.apache.skywalking.oap.server.core.query.type.ProfileTask)2 ConfigurationDiscoveryCommand (org.apache.skywalking.oap.server.network.trace.component.command.ConfigurationDiscoveryCommand)2 AgentConfigurations (org.apache.skywalking.oap.server.recevier.configuration.discovery.AgentConfigurations)2 Test (org.junit.Test)2 StreamObserver (io.grpc.stub.StreamObserver)1 LinkedList (java.util.LinkedList)1 TraceSegment (org.apache.skywalking.apm.agent.core.context.trace.TraceSegment)1 GRPCChannelManager (org.apache.skywalking.apm.agent.core.remote.GRPCChannelManager)1