Skip to content

Commit

Permalink
Add Netty versions to the self-diagnostics (#2716)
Browse files Browse the repository at this point in the history
  • Loading branch information
jeanbisutti committed Nov 21, 2022
1 parent 21deab5 commit 07d40e3
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,7 @@ public void init() {
if (startupLogger.isDebugEnabled()) {
startupLogger.debug("OS: " + System.getProperty("os.name"));
logJavaInfo();
startupLogger.debug("Netty versions: " + NettyVersions.extract());
}

} catch (Exception e) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.

package com.microsoft.applicationinsights.agent.internal.init;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.nio.charset.StandardCharsets;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.stream.Collectors;

class NettyVersions {

// Example: **19** **Group:** `io.netty` **Name:** `netty-codec-dns` **Version:** `4.1.79.Final`
private static final Pattern DEPENDENCY_COORDINATE_PATTERN =
Pattern.compile(".*`(.*)`.*`(.*)`.*`(.*)`");

private NettyVersions() {}

static String extract() {
String moreLicenseResource = "/META-INF/licenses/more-licenses.md";
InputStream moreLicenseAsStream = NettyVersions.class.getResourceAsStream(moreLicenseResource);
if (moreLicenseAsStream == null) {
return moreLicenseResource + " notFound";
}
return extractNettyVersions(moreLicenseAsStream);
}

private static String extractNettyVersions(InputStream moreLicenseAsStream) {
try (InputStreamReader inputStreamReader =
new InputStreamReader(moreLicenseAsStream, StandardCharsets.UTF_8);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader)) {
return bufferedReader
.lines()
.filter(line -> line.contains("netty") && line.contains("Group"))
.map(line -> extractDependency(line.trim()))
.collect(Collectors.joining(", "));
} catch (IOException e) {
return e.getMessage();
}
}

private static String extractDependency(String line) {
Matcher matcher = DEPENDENCY_COORDINATE_PATTERN.matcher(line);
boolean matched = matcher.find();
if (!matched) {
return "(" + line + ")";
}
try {
return "(" + matcher.group(1) + ", " + matcher.group(2) + ", " + matcher.group(3) + ")";
} catch (IllegalStateException | IndexOutOfBoundsException e) {
return "(" + e.getMessage() + " for " + line + ")";
}
}
}

0 comments on commit 07d40e3

Please sign in to comment.