Remove Guava from SDK extensions, except zpages (#2149)

* Remove Guava from SDK extensions, except zpages

* Fix
This commit is contained in:
Anuraag Agrawal 2020-12-01 09:12:58 +09:00 committed by GitHub
parent e0989d75e7
commit ed57751d00
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 55 additions and 43 deletions

View File

@ -5,7 +5,6 @@
package io.opentelemetry.sdk.extension.trace.export;
import com.google.common.base.Preconditions;
import com.lmax.disruptor.SleepingWaitStrategy;
import com.lmax.disruptor.WaitStrategy;
import io.opentelemetry.context.Context;
@ -149,7 +148,9 @@ public final class DisruptorAsyncSpanProcessor implements SpanProcessor {
* @return this.
*/
public Builder setBufferSize(int bufferSize) {
Preconditions.checkArgument(bufferSize > 0, "bufferSize must be positive");
if (bufferSize <= 0) {
throw new IllegalArgumentException("bufferSize must be positive");
}
this.bufferSize = bufferSize;
return this;
}

View File

@ -12,16 +12,10 @@ dependencies {
api project(':opentelemetry-api'),
project(':opentelemetry-sdk')
implementation 'com.fasterxml.jackson.core:jackson-core',
libraries.guava,
platform(boms.guava)
implementation 'com.fasterxml.jackson.core:jackson-databind',
libraries.guava,
platform(boms.guava)
implementation 'com.fasterxml.jackson.core:jackson-core'
implementation 'com.fasterxml.jackson.core:jackson-databind'
testImplementation 'com.github.tomakehurst:wiremock-jre8:2.27.2',
libraries.guava,
libraries.junit
signature libraries.android_signature
}

View File

@ -8,7 +8,6 @@ package io.opentelemetry.sdk.extension.aws.resource;
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;
import com.google.common.annotations.VisibleForTesting;
import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.api.common.AttributesBuilder;
import io.opentelemetry.sdk.resources.ResourceAttributes;
@ -42,7 +41,7 @@ public class BeanstalkResource extends ResourceProvider {
this(BEANSTALK_CONF_PATH);
}
@VisibleForTesting
// Visible for testing
BeanstalkResource(String configPath) {
this.configPath = configPath;
}

View File

@ -5,7 +5,6 @@
package io.opentelemetry.sdk.extension.aws.resource;
import com.google.common.annotations.VisibleForTesting;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
@ -25,7 +24,7 @@ class DockerHelper {
this(DEFAULT_CGROUP_PATH);
}
@VisibleForTesting
// Visible for testing
DockerHelper(String cgroupPath) {
this.cgroupPath = cgroupPath;
}

View File

@ -8,8 +8,6 @@ package io.opentelemetry.sdk.extension.aws.resource;
import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonToken;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.io.ByteStreams;
import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.api.common.AttributesBuilder;
import io.opentelemetry.sdk.resources.ResourceAttributes;
@ -25,6 +23,7 @@ import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.Nullable;
/**
* A {@link ResourceProvider} which provides information about the current EC2 instance if running
@ -54,7 +53,7 @@ public class Ec2Resource extends ResourceProvider {
this(System.getProperty("otel.aws.imds.endpointOverride", DEFAULT_IMDS_ENDPOINT));
}
@VisibleForTesting
// Visible for testing
Ec2Resource(String endpoint) {
String urlBase = "http://" + endpoint;
try {
@ -68,6 +67,7 @@ public class Ec2Resource extends ResourceProvider {
}
// Generic HTTP fetch function for IMDS.
// TODO(anuraaga): Migrate to JdkHttpClient
private static String fetchString(String httpMethod, URL url, String token, boolean includeTtl) {
final HttpURLConnection connection;
try {
@ -117,13 +117,13 @@ public class Ec2Resource extends ResourceProvider {
private static String readResponseString(HttpURLConnection connection) {
ByteArrayOutputStream os = new ByteArrayOutputStream();
try (InputStream is = connection.getInputStream()) {
ByteStreams.copy(is, os);
readTo(is, os);
} catch (IOException e) {
// Only best effort read if we can.
}
try (InputStream is = connection.getErrorStream()) {
if (is != null) {
ByteStreams.copy(is, os);
readTo(is, os);
}
} catch (IOException e) {
// Only best effort read if we can.
@ -206,4 +206,16 @@ public class Ec2Resource extends ResourceProvider {
private String fetchHostname(String token) {
return fetchString("GET", hostnameUrl, token, /* includeTtl= */ false);
}
private static void readTo(@Nullable InputStream is, ByteArrayOutputStream os)
throws IOException {
if (is == null) {
return;
}
byte[] buf = new byte[8192];
int read;
while ((read = is.read(buf)) > 0) {
os.write(buf, 0, read);
}
}
}

View File

@ -5,8 +5,6 @@
package io.opentelemetry.sdk.extension.aws.resource;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Strings;
import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.api.common.AttributesBuilder;
import io.opentelemetry.sdk.resources.ResourceAttributes;
@ -39,7 +37,7 @@ public class EcsResource extends ResourceProvider {
this(System.getenv(), new DockerHelper());
}
@VisibleForTesting
// Visible for testing
EcsResource(Map<String, String> sysEnv, DockerHelper dockerHelper) {
this.sysEnv = sysEnv;
this.dockerHelper = dockerHelper;
@ -61,7 +59,7 @@ public class EcsResource extends ResourceProvider {
}
String containerId = dockerHelper.getContainerId();
if (!Strings.isNullOrEmpty(containerId)) {
if (containerId != null && !containerId.isEmpty()) {
attrBuilders.put(ResourceAttributes.CONTAINER_ID, containerId);
}
@ -69,7 +67,7 @@ public class EcsResource extends ResourceProvider {
}
private boolean isOnEcs() {
return (!Strings.isNullOrEmpty(sysEnv.get(ECS_METADATA_KEY_V3))
|| !Strings.isNullOrEmpty(sysEnv.get(ECS_METADATA_KEY_V4)));
return !sysEnv.getOrDefault(ECS_METADATA_KEY_V3, "").isEmpty()
|| !sysEnv.getOrDefault(ECS_METADATA_KEY_V4, "").isEmpty();
}
}

View File

@ -7,16 +7,15 @@ package io.opentelemetry.sdk.extension.aws.resource;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Charsets;
import com.google.common.base.Strings;
import com.google.common.io.Files;
import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.api.common.AttributesBuilder;
import io.opentelemetry.sdk.resources.ResourceAttributes;
import io.opentelemetry.sdk.resources.ResourceProvider;
import java.io.File;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.HashMap;
import java.util.Map;
import java.util.logging.Level;
@ -43,7 +42,7 @@ public class EksResource extends ResourceProvider {
this(new JdkHttpClient(), new DockerHelper(), K8S_TOKEN_PATH, K8S_CERT_PATH);
}
@VisibleForTesting
// Visible for testing
EksResource(
JdkHttpClient jdkHttpClient,
DockerHelper dockerHelper,
@ -64,12 +63,12 @@ public class EksResource extends ResourceProvider {
AttributesBuilder attrBuilders = Attributes.builder();
String clusterName = getClusterName();
if (!Strings.isNullOrEmpty(clusterName)) {
if (clusterName != null && !clusterName.isEmpty()) {
attrBuilders.put(ResourceAttributes.K8S_CLUSTER, clusterName);
}
String containerId = dockerHelper.getContainerId();
if (!Strings.isNullOrEmpty(containerId)) {
if (containerId != null && !containerId.isEmpty()) {
attrBuilders.put(ResourceAttributes.CONTAINER_ID, containerId);
}
@ -88,7 +87,7 @@ public class EksResource extends ResourceProvider {
jdkHttpClient.fetchString(
"GET", K8S_SVC_URL + AUTH_CONFIGMAP_PATH, requestProperties, K8S_CERT_PATH);
return !Strings.isNullOrEmpty(awsAuth);
return awsAuth != null && !awsAuth.isEmpty();
}
private boolean isK8s() {
@ -115,8 +114,8 @@ public class EksResource extends ResourceProvider {
private static String getK8sCredHeader() {
try {
File file = new File(K8S_TOKEN_PATH);
String content = Files.asCharSource(file, Charsets.UTF_8).read();
String content =
new String(Files.readAllBytes(Paths.get(K8S_TOKEN_PATH)), StandardCharsets.UTF_8);
return "Bearer " + content;
} catch (IOException e) {
logger.log(Level.WARNING, "Unable to load K8s client token.", e);

View File

@ -5,7 +5,6 @@
package io.opentelemetry.sdk.extension.aws.resource;
import com.google.common.io.ByteStreams;
import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.IOException;
@ -21,6 +20,7 @@ import java.util.Collection;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.Nullable;
import javax.net.ssl.HttpsURLConnection;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSocketFactory;
@ -80,13 +80,13 @@ class JdkHttpClient {
private static String readResponseString(HttpURLConnection connection) {
ByteArrayOutputStream os = new ByteArrayOutputStream();
try (InputStream is = connection.getInputStream()) {
ByteStreams.copy(is, os);
readTo(is, os);
} catch (IOException e) {
// Only best effort read if we can.
}
try (InputStream is = connection.getErrorStream()) {
if (is != null) {
ByteStreams.copy(is, os);
readTo(is, os);
}
} catch (IOException e) {
// Only best effort read if we can.
@ -134,4 +134,16 @@ class JdkHttpClient {
return null;
}
}
private static void readTo(@Nullable InputStream is, ByteArrayOutputStream os)
throws IOException {
if (is == null) {
return;
}
byte[] buf = new byte[8192];
int read;
while ((read = is.read(buf)) > 0) {
os.write(buf, 0, read);
}
}
}

View File

@ -5,7 +5,6 @@
package io.opentelemetry.sdk.extension.trace.jaeger.sampler;
import com.google.common.annotations.VisibleForTesting;
import io.grpc.ManagedChannel;
import io.opentelemetry.api.common.ReadableAttributes;
import io.opentelemetry.api.trace.Span.Kind;
@ -111,7 +110,7 @@ public class JaegerRemoteSampler implements Sampler {
return getDescription();
}
@VisibleForTesting
// Visible for testing
Sampler getSampler() {
return this.sampler;
}

View File

@ -8,7 +8,6 @@ package io.opentelemetry.sdk.extension.trace.jaeger.sampler;
import static io.opentelemetry.api.common.AttributeKey.doubleKey;
import static io.opentelemetry.api.common.AttributeKey.stringKey;
import com.google.common.annotations.VisibleForTesting;
import io.opentelemetry.api.common.AttributeKey;
import io.opentelemetry.api.common.Attributes;
import io.opentelemetry.api.common.ReadableAttributes;
@ -84,7 +83,7 @@ class RateLimitingSampler implements Sampler {
return getDescription();
}
@VisibleForTesting
// Visible for testing
double getMaxTracesPerSecond() {
return maxTracesPerSecond;
}