Skip to content

Commit

Permalink
[#10420] Removed PinpointNettyServerBuilder, Tracing gRPC logId
Browse files Browse the repository at this point in the history
  • Loading branch information
youngjin.kim2 committed Oct 22, 2023
1 parent 0601f71 commit ded5cfe
Show file tree
Hide file tree
Showing 26 changed files with 357 additions and 1,340 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,10 @@ public String helloworld() {
public String async() {
return "async " + testService.getHello() + " world";
}

@GetMapping(value = "/sleep")
public String sleep() throws InterruptedException {
Thread.sleep(5000);
return "sleep " + 5000 + "ms";
}
}
Original file line number Diff line number Diff line change
@@ -1,134 +1,89 @@
package com.navercorp.pinpoint.collector.controller;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.navercorp.pinpoint.collector.receiver.grpc.GrpcReceiverNames;
import com.navercorp.pinpoint.grpc.channelz.ChannelzRegistry;
import com.navercorp.pinpoint.grpc.channelz.ChannelzUtils;
import io.grpc.InternalChannelz;
import io.grpc.InternalInstrumented;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.ArrayList;
import com.navercorp.pinpoint.collector.service.ChannelzService;
import com.navercorp.pinpoint.collector.service.ChannelzService.ServerStatsWithId;
import com.navercorp.pinpoint.collector.service.ChannelzService.SocketStatsWithId;
import org.springframework.http.MediaType;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Objects;
import java.util.Set;


@RestController
@RequestMapping("/channelz")
public class ChannelzController {

private final ChannelzRegistry channelzRegistry;
private final InternalChannelz channelz = InternalChannelz.instance();
private final ObjectMapper mapper;
private final ChannelzService channelzService;

public ChannelzController(ChannelzRegistry channelzRegistry, ObjectMapper objectMapper) {
this.channelzRegistry = Objects.requireNonNull(channelzRegistry, "channelzRegistry");
this.mapper = Objects.requireNonNull(objectMapper, "objectMapper");
public ChannelzController(ChannelzService channelzService) {
this.channelzService = Objects.requireNonNull(channelzService, "channelzService");

Check warning on line 20 in collector/src/main/java/com/navercorp/pinpoint/collector/controller/ChannelzController.java

View check run for this annotation

Codecov / codecov/patch

collector/src/main/java/com/navercorp/pinpoint/collector/controller/ChannelzController.java#L19-L20

Added lines #L19 - L20 were not covered by tests
}

@GetMapping("/getSocket")
public String getSocket(long logId) throws JsonProcessingException {
InternalChannelz.SocketStats stats = getSocket0(logId);

return mapper.writeValueAsString(stats);
@GetMapping(value = "/sockets/{logId}")
public SocketStatsWithId findSocketStatsByLogId(@PathVariable long logId) {
return this.channelzService.getSocketStats(logId);

Check warning on line 25 in collector/src/main/java/com/navercorp/pinpoint/collector/controller/ChannelzController.java

View check run for this annotation

Codecov / codecov/patch

collector/src/main/java/com/navercorp/pinpoint/collector/controller/ChannelzController.java#L25

Added line #L25 was not covered by tests
}

@GetMapping("/html/getSocket")
public String getSocketToHtml(long logId) {
InternalChannelz.SocketStats stats = getSocket0(logId);

return new HTMLBuilder().build(stats);
@GetMapping(value = "/sockets/{logId}", produces = MediaType.TEXT_HTML_VALUE)
public String findSocketStatsByLogIdInHtml(@PathVariable long logId) {
return buildHtml(this.findSocketStatsByLogId(logId));

Check warning on line 30 in collector/src/main/java/com/navercorp/pinpoint/collector/controller/ChannelzController.java

View check run for this annotation

Codecov / codecov/patch

collector/src/main/java/com/navercorp/pinpoint/collector/controller/ChannelzController.java#L30

Added line #L30 was not covered by tests
}

private InternalChannelz.SocketStats getSocket0(long logId) {
InternalInstrumented<InternalChannelz.SocketStats> socket = channelz.getSocket(logId);
if (socket == null) {
return null;
}
return ChannelzUtils.getResult("Socket", socket);
@GetMapping(value = "/sockets")
public List<SocketStatsWithId> findSocketStats(
@RequestParam(required = false) String remoteAddress,
@RequestParam(required = false) Integer localPort
) throws Exception {
return this.channelzService.getSocketStatsList(remoteAddress, localPort);

Check warning on line 38 in collector/src/main/java/com/navercorp/pinpoint/collector/controller/ChannelzController.java

View check run for this annotation

Codecov / codecov/patch

collector/src/main/java/com/navercorp/pinpoint/collector/controller/ChannelzController.java#L38

Added line #L38 was not covered by tests
}

@GetMapping("/findSocket")
public String findSocket(String remoteAddress, int localPort) throws JsonProcessingException {

ChannelzRegistry.AddressId addressId = ChannelzRegistry.AddressId.newAddressId(remoteAddress, localPort);
List<InternalChannelz.SocketStats> stats = findSocket(addressId);
if (stats == null) {
return notFound("remoteAddress:" + remoteAddress + " localPort:" + localPort);
}

return mapper.writeValueAsString(stats);
@GetMapping(value = "/sockets", produces = MediaType.TEXT_HTML_VALUE)
public String findSocketStatInHtml(
@RequestParam(required = false) String remoteAddress,
@RequestParam(required = false) Integer localPort
) throws Exception {
return buildHtml(this.findSocketStats(remoteAddress, localPort));

Check warning on line 46 in collector/src/main/java/com/navercorp/pinpoint/collector/controller/ChannelzController.java

View check run for this annotation

Codecov / codecov/patch

collector/src/main/java/com/navercorp/pinpoint/collector/controller/ChannelzController.java#L46

Added line #L46 was not covered by tests
}

@GetMapping("/html/findSocket")
public String findSocketStatToHtml(String remoteAddress, int localPort) {

ChannelzRegistry.AddressId targetAddress = ChannelzRegistry.AddressId.newAddressId(remoteAddress, localPort);

List<InternalChannelz.SocketStats> stats = findSocket(targetAddress);
if (stats.isEmpty()) {
return notFound("remoteAddress:" + remoteAddress + " localPort:" + localPort);
}

return buildHtml(stats);
@GetMapping(value = "/servers")
public List<ServerStatsWithId> getAllServerStats() {
return this.channelzService.getAllServers();

Check warning on line 51 in collector/src/main/java/com/navercorp/pinpoint/collector/controller/ChannelzController.java

View check run for this annotation

Codecov / codecov/patch

collector/src/main/java/com/navercorp/pinpoint/collector/controller/ChannelzController.java#L51

Added line #L51 was not covered by tests
}

@GetMapping(value = "/servers", produces = MediaType.TEXT_HTML_VALUE)
public String getAllServerStatsInHtml() {
return buildHtml(this.getAllServerStats());

Check warning on line 56 in collector/src/main/java/com/navercorp/pinpoint/collector/controller/ChannelzController.java

View check run for this annotation

Codecov / codecov/patch

collector/src/main/java/com/navercorp/pinpoint/collector/controller/ChannelzController.java#L56

Added line #L56 was not covered by tests
}

private List<InternalChannelz.SocketStats> findSocket(ChannelzRegistry.AddressId targetAddress) {
Set<Long> logIdSet = channelzRegistry.getSocketLogId(targetAddress);
@GetMapping(value = "/servers/{name}")
public ServerStatsWithId getServerStat(@PathVariable("name") String name) {
return this.channelzService.getServer(name);

Check warning on line 61 in collector/src/main/java/com/navercorp/pinpoint/collector/controller/ChannelzController.java

View check run for this annotation

Codecov / codecov/patch

collector/src/main/java/com/navercorp/pinpoint/collector/controller/ChannelzController.java#L61

Added line #L61 was not covered by tests
}

List<InternalInstrumented<InternalChannelz.SocketStats>> result = new ArrayList<>();
for (Long logId : logIdSet) {
InternalInstrumented<InternalChannelz.SocketStats> socket = channelz.getSocket(logId);
if (socket != null) {
result.add(socket);
}
}
return ChannelzUtils.getResults("Socket", result);
@GetMapping(value = "/servers/{name}", produces = MediaType.TEXT_HTML_VALUE)
public String getServerStatInHtml(@PathVariable("name") String name) {
return buildHtml(this.getServerStat(name));

Check warning on line 66 in collector/src/main/java/com/navercorp/pinpoint/collector/controller/ChannelzController.java

View check run for this annotation

Codecov / codecov/patch

collector/src/main/java/com/navercorp/pinpoint/collector/controller/ChannelzController.java#L66

Added line #L66 was not covered by tests
}

@GetMapping("/html/getServer")
public String getServerStatToHtml(String serverName) {
List<InternalChannelz.ServerStats> stats = getServer(serverName);
if (stats == null) {
return notFound("serverName=" + serverName);
private static <T> String buildHtml(List<T> stats) {
if (stats == null || stats.isEmpty()) {
return "Empty";

Check warning on line 71 in collector/src/main/java/com/navercorp/pinpoint/collector/controller/ChannelzController.java

View check run for this annotation

Codecov / codecov/patch

collector/src/main/java/com/navercorp/pinpoint/collector/controller/ChannelzController.java#L71

Added line #L71 was not covered by tests
}
return buildHtml(stats);
}

private <T> String buildHtml(List<T> stats) {
StringBuilder buffer = new StringBuilder();
for (T stat : stats) {
String html = new HTMLBuilder().build(stat);
buffer.append(html);
buffer.append(buildHtml(stat));

Check warning on line 76 in collector/src/main/java/com/navercorp/pinpoint/collector/controller/ChannelzController.java

View check run for this annotation

Codecov / codecov/patch

collector/src/main/java/com/navercorp/pinpoint/collector/controller/ChannelzController.java#L76

Added line #L76 was not covered by tests
buffer.append("<br>");
}
return buffer.toString();
}


@GetMapping("/html/getSpanReceiver")
public String getSpanReceiverl() {
return getServerStatToHtml(GrpcReceiverNames.SPAN);
}


private List<InternalChannelz.ServerStats> getServer(String serverName) {
Long logId = channelzRegistry.getServerLogId(serverName);

InternalChannelz.ServerList serverList = channelz.getServers(logId, 10000);

return ChannelzUtils.getResults("ServerStats", serverList.servers);
}


private String notFound(String target) {
return target + " not Found";
private static <T> String buildHtml(T stats) {
if (stats == null) {
return "Null";

Check warning on line 84 in collector/src/main/java/com/navercorp/pinpoint/collector/controller/ChannelzController.java

View check run for this annotation

Codecov / codecov/patch

collector/src/main/java/com/navercorp/pinpoint/collector/controller/ChannelzController.java#L84

Added line #L84 was not covered by tests
}
return new HTMLBuilder().build(stats);

Check warning on line 86 in collector/src/main/java/com/navercorp/pinpoint/collector/controller/ChannelzController.java

View check run for this annotation

Codecov / codecov/patch

collector/src/main/java/com/navercorp/pinpoint/collector/controller/ChannelzController.java#L86

Added line #L86 was not covered by tests
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
import com.navercorp.pinpoint.collector.grpc.config.GrpcReceiverProperties;
import com.navercorp.pinpoint.collector.receiver.grpc.GrpcReceiver;
import com.navercorp.pinpoint.common.server.util.AddressFilter;
import com.navercorp.pinpoint.grpc.channelz.ChannelzRegistry;
import com.navercorp.pinpoint.grpc.channelz.GrpcServerRegistry;
import com.navercorp.pinpoint.grpc.security.SslContextFactory;
import io.grpc.ServerCallExecutorSupplier;
import io.grpc.ServerInterceptor;
Expand Down Expand Up @@ -36,10 +36,10 @@ public GrpcReceiver grpcAgentSslReceiver(@Qualifier("grpcAgentSslReceiverPropert
AddressFilter addressFilter,
@Qualifier("agentServiceList") List<?> serviceList,
@Qualifier("agentInterceptorList")List<ServerInterceptor> serverInterceptorList,
ChannelzRegistry channelzRegistry,
GrpcServerRegistry grpcServerRegistry,
@Qualifier("grpcAgentServerExecutor") Executor executor,
@Qualifier("grpcAgentServerCallExecutorSupplier") ServerCallExecutorSupplier serverCallExecutorSupplier) throws SSLException {
GrpcReceiver receiver = createReceiver(properties, grpcReceiverProperties, addressFilter, serviceList, serverInterceptorList, channelzRegistry, executor);
GrpcReceiver receiver = createReceiver(properties, grpcReceiverProperties, addressFilter, serviceList, serverInterceptorList, grpcServerRegistry, executor);

Check warning on line 42 in collector/src/main/java/com/navercorp/pinpoint/collector/grpc/ssl/GrpcSslModule.java

View check run for this annotation

Codecov / codecov/patch

collector/src/main/java/com/navercorp/pinpoint/collector/grpc/ssl/GrpcSslModule.java#L42

Added line #L42 was not covered by tests
receiver.setServerCallExecutorSupplier(serverCallExecutorSupplier);

return receiver;
Expand All @@ -51,10 +51,10 @@ public GrpcReceiver grpcSpanSslReceiver(@Qualifier("grpcSpanSslReceiverPropertie
AddressFilter addressFilter,
@Qualifier("spanServiceList") List<ServerServiceDefinition> serviceList,
@Qualifier("spanInterceptorList") List<ServerInterceptor> serverInterceptorList,
ChannelzRegistry channelzRegistry,
GrpcServerRegistry grpcServerRegistry,
@Qualifier("grpcSpanServerExecutor") Executor executor,
@Qualifier("serverTransportFilterList") List<ServerTransportFilter> transportFilterList) throws SSLException {
GrpcReceiver receiver = createReceiver(properties, grpcReceiverProperties, addressFilter, serviceList, serverInterceptorList, channelzRegistry, executor);
GrpcReceiver receiver = createReceiver(properties, grpcReceiverProperties, addressFilter, serviceList, serverInterceptorList, grpcServerRegistry, executor);

Check warning on line 57 in collector/src/main/java/com/navercorp/pinpoint/collector/grpc/ssl/GrpcSslModule.java

View check run for this annotation

Codecov / codecov/patch

collector/src/main/java/com/navercorp/pinpoint/collector/grpc/ssl/GrpcSslModule.java#L57

Added line #L57 was not covered by tests
receiver.setTransportFilterList(transportFilterList);
return receiver;
}
Expand All @@ -65,10 +65,10 @@ public GrpcReceiver grpcStatSslReceiver(@Qualifier("grpcStatSslReceiverPropertie
AddressFilter addressFilter,
@Qualifier("statServiceList") List<ServerServiceDefinition> serviceList,
@Qualifier("statInterceptorList") List<ServerInterceptor> serverInterceptorList,
ChannelzRegistry channelzRegistry,
GrpcServerRegistry grpcServerRegistry,
@Qualifier("grpcStatServerExecutor") Executor executor,
@Qualifier("serverTransportFilterList") List<ServerTransportFilter> transportFilterList) throws SSLException {
GrpcReceiver receiver = createReceiver(properties, grpcReceiverProperties, addressFilter, serviceList, serverInterceptorList, channelzRegistry, executor);
GrpcReceiver receiver = createReceiver(properties, grpcReceiverProperties, addressFilter, serviceList, serverInterceptorList, grpcServerRegistry, executor);

Check warning on line 71 in collector/src/main/java/com/navercorp/pinpoint/collector/grpc/ssl/GrpcSslModule.java

View check run for this annotation

Codecov / codecov/patch

collector/src/main/java/com/navercorp/pinpoint/collector/grpc/ssl/GrpcSslModule.java#L71

Added line #L71 was not covered by tests
receiver.setTransportFilterList(transportFilterList);
return receiver;
}
Expand All @@ -78,7 +78,7 @@ private GrpcReceiver createReceiver(GrpcSslReceiverProperties properties,
AddressFilter addressFilter,
List<?> serviceList,
List<ServerInterceptor> serverInterceptorList,
ChannelzRegistry channelzRegistry,
GrpcServerRegistry grpcServerRegistry,
Executor executor) throws SSLException {
GrpcReceiver receiver = new GrpcReceiver();
receiver.setBindAddress(properties.getBindAddress());
Expand All @@ -90,7 +90,7 @@ private GrpcReceiver createReceiver(GrpcSslReceiverProperties properties,
receiver.setAddressFilter(addressFilter);
receiver.setBindableServiceList(serviceList);
receiver.setServerInterceptorList(serverInterceptorList);
receiver.setChannelzRegistry(channelzRegistry);
receiver.setGrpcServerRegistry(grpcServerRegistry);

Check warning on line 93 in collector/src/main/java/com/navercorp/pinpoint/collector/grpc/ssl/GrpcSslModule.java

View check run for this annotation

Codecov / codecov/patch

collector/src/main/java/com/navercorp/pinpoint/collector/grpc/ssl/GrpcSslModule.java#L93

Added line #L93 was not covered by tests

SslContext sslContext = newSslContext(properties.getGrpcSslProperties());
receiver.setSslContext(sslContext);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
import com.navercorp.pinpoint.common.server.util.AddressFilter;
import com.navercorp.pinpoint.common.util.Assert;
import com.navercorp.pinpoint.common.util.CollectionUtils;
import com.navercorp.pinpoint.grpc.channelz.ChannelzRegistry;
import com.navercorp.pinpoint.grpc.channelz.GrpcServerRegistry;
import com.navercorp.pinpoint.grpc.server.MetadataServerTransportFilter;
import com.navercorp.pinpoint.grpc.server.ServerFactory;
import com.navercorp.pinpoint.grpc.server.ServerOption;
Expand Down Expand Up @@ -77,7 +77,7 @@ public class GrpcReceiver implements InitializingBean, DisposableBean, BeanNameA
private SslContext sslContext;

private Server server;
private ChannelzRegistry channelzRegistry;
private GrpcServerRegistry grpcServerRegistry;


@Override
Expand Down Expand Up @@ -122,8 +122,8 @@ public void afterPropertiesSet() throws Exception {
this.serverFactory.addInterceptor(serverInterceptor);
}
}
if (channelzRegistry != null) {
this.serverFactory.setChannelzRegistry(channelzRegistry);
if (grpcServerRegistry != null) {
this.serverFactory.setChannelzRegistry(grpcServerRegistry);

Check warning on line 126 in collector/src/main/java/com/navercorp/pinpoint/collector/receiver/grpc/GrpcReceiver.java

View check run for this annotation

Codecov / codecov/patch

collector/src/main/java/com/navercorp/pinpoint/collector/receiver/grpc/GrpcReceiver.java#L126

Added line #L126 was not covered by tests
}

// Add service
Expand Down Expand Up @@ -276,8 +276,8 @@ public void setServerInterceptorList(List<ServerInterceptor> serverInterceptorLi
this.serverInterceptorList = serverInterceptorList;
}

public void setChannelzRegistry(ChannelzRegistry channelzRegistry) {
this.channelzRegistry = Objects.requireNonNull(channelzRegistry, "channelzRegistry");
public void setGrpcServerRegistry(GrpcServerRegistry grpcServerRegistry) {
this.grpcServerRegistry = Objects.requireNonNull(grpcServerRegistry, "grpcServerRegistry");

Check warning on line 280 in collector/src/main/java/com/navercorp/pinpoint/collector/receiver/grpc/GrpcReceiver.java

View check run for this annotation

Codecov / codecov/patch

collector/src/main/java/com/navercorp/pinpoint/collector/receiver/grpc/GrpcReceiver.java#L280

Added line #L280 was not covered by tests
}

}
Loading

0 comments on commit ded5cfe

Please sign in to comment.