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();
}
}
}
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());
}
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);
}
}
}
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.");
}
}
}
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();
}
}
Aggregations