Skip to content

Commit

Permalink
Replace static util class with JarDetails
Browse files Browse the repository at this point in the history
This class is able to be more optimized by using random access file classes depending on if the jar is embedded within another archive file (eg spring boot, war, ear, etc).
  • Loading branch information
tylerbenson committed Sep 8, 2023
1 parent a559225 commit a8073e3
Show file tree
Hide file tree
Showing 3 changed files with 302 additions and 214 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,9 @@

package io.opentelemetry.instrumentation.javaagent.runtimemetrics.java8;

import static io.opentelemetry.instrumentation.javaagent.runtimemetrics.java8.JarAnalyzerUtil.addPackageChecksum;
import static io.opentelemetry.instrumentation.javaagent.runtimemetrics.java8.JarAnalyzerUtil.addPackageDescription;
import static io.opentelemetry.instrumentation.javaagent.runtimemetrics.java8.JarAnalyzerUtil.addPackageNameAndVersion;
import static io.opentelemetry.instrumentation.javaagent.runtimemetrics.java8.JarAnalyzerUtil.addPackagePath;
import static io.opentelemetry.instrumentation.javaagent.runtimemetrics.java8.JarAnalyzerUtil.addPackageType;

import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.api.common.AttributeKey;
import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.api.common.AttributesBuilder;
import io.opentelemetry.api.events.EventEmitter;
Expand Down Expand Up @@ -47,6 +43,13 @@ final class JarAnalyzer {
private static final String WAR_EXTENSION = ".war";
private static final String EVENT_DOMAIN_PACKAGE = "package";
private static final String EVENT_NAME_INFO = "info";
static final AttributeKey<String> PACKAGE_NAME = AttributeKey.stringKey("package.name");
static final AttributeKey<String> PACKAGE_VERSION = AttributeKey.stringKey("package.version");
static final AttributeKey<String> PACKAGE_TYPE = AttributeKey.stringKey("package.type");
static final AttributeKey<String> PACKAGE_DESCRIPTION =
AttributeKey.stringKey("package.description");
static final AttributeKey<String> PACKAGE_CHECKSUM = AttributeKey.stringKey("package.checksum");
static final AttributeKey<String> PACKAGE_PATH = AttributeKey.stringKey("package.path");

private final Set<URI> seenUris = new HashSet<>();
private final BlockingQueue<URL> toProcess = new LinkedBlockingDeque<>();
Expand Down Expand Up @@ -204,39 +207,21 @@ public void run() {
* content.
*/
static void processUrl(EventEmitter eventEmitter, URL archiveUrl) {
AttributesBuilder builder = Attributes.builder();

try {
addPackageType(builder, archiveUrl);
} catch (Exception e) {
logger.log(Level.WARNING, "Error adding package type for archive URL: {0}" + archiveUrl, e);
}

try {
addPackageChecksum(builder, archiveUrl);
} catch (Exception e) {
logger.log(Level.WARNING, "Error adding package checksum for archive URL: " + archiveUrl, e);
}

JarDetails jarDetails;
try {
addPackagePath(builder, archiveUrl);
jarDetails = JarDetails.forUrl(archiveUrl);
} catch (Exception e) {
logger.log(Level.WARNING, "Error adding package path archive URL: " + archiveUrl, e);
}

try {
addPackageDescription(builder, archiveUrl);
} catch (Exception e) {
logger.log(
Level.WARNING, "Error adding package description for archive URL: " + archiveUrl, e);
logger.log(Level.WARNING, "Error reading package for archive URL: {0}" + archiveUrl, e);
return;
}
AttributesBuilder builder = Attributes.builder();

try {
addPackageNameAndVersion(builder, archiveUrl);
} catch (Exception e) {
logger.log(
Level.WARNING, "Error adding package name and version for archive URL: " + archiveUrl, e);
}
builder.put(PACKAGE_PATH, jarDetails.packagePath());
builder.put(PACKAGE_TYPE, jarDetails.packageType());
builder.put(PACKAGE_NAME, jarDetails.packageName());
builder.put(PACKAGE_VERSION, jarDetails.version());
builder.put(PACKAGE_DESCRIPTION, jarDetails.packageDescription());
builder.put(PACKAGE_CHECKSUM, jarDetails.computeSha1());

eventEmitter.emit(EVENT_NAME_INFO, builder.build());
}
Expand Down

This file was deleted.

Loading

0 comments on commit a8073e3

Please sign in to comment.