From 928b6cc1e5d48d8eccc0081d407e4655b3abdc2b Mon Sep 17 00:00:00 2001 From: Bogdan Drutu Date: Wed, 23 Jan 2019 14:33:04 -0800 Subject: [PATCH] Update deps and OC instrumentation. --- src/adservice/build.gradle | 10 +- .../src/main/java/hipstershop/AdService.java | 70 +++++------- .../java/hipstershop/AdServiceClient.java | 106 +++++++++--------- 3 files changed, 87 insertions(+), 99 deletions(-) diff --git a/src/adservice/build.gradle b/src/adservice/build.gradle index 7450826..5266919 100644 --- a/src/adservice/build.gradle +++ b/src/adservice/build.gradle @@ -23,10 +23,10 @@ repositories { } group = "adservice" -version = "0.1.0-SNAPSHOT" // CURRENT_OPENCENSUS_VERSION +version = "0.1.0-SNAPSHOT" -def opencensusVersion = "0.17.0" // LATEST_OPENCENSUS_RELEASE_VERSION -def grpcVersion = "1.15.0" // CURRENT_GRPC_VERSION +def opencensusVersion = "0.18.0" +def grpcVersion = "1.17.0" def jacksonVersion = "2.9.6" tasks.withType(JavaCompile) { @@ -43,7 +43,9 @@ dependencies { if (speed) { compile fileTree(dir: offlineCompile, include: '*.jar') } else { - compile "com.google.api.grpc:proto-google-common-protos:1.11.0", + compile "com.google.api.grpc:proto-google-common-protos:1.12.0", + "io.opencensus:opencensus-api:${opencensusVersion}", + "io.opencensus:opencensus-contrib-grpc-util:${opencensusVersion}", "io.opencensus:opencensus-exporter-trace-jaeger:${opencensusVersion}", "io.opencensus:opencensus-exporter-stats-stackdriver:${opencensusVersion}", "io.opencensus:opencensus-exporter-trace-stackdriver:${opencensusVersion}", diff --git a/src/adservice/src/main/java/hipstershop/AdService.java b/src/adservice/src/main/java/hipstershop/AdService.java index 7320764..941ab39 100644 --- a/src/adservice/src/main/java/hipstershop/AdService.java +++ b/src/adservice/src/main/java/hipstershop/AdService.java @@ -29,20 +29,16 @@ import io.grpc.health.v1.HealthCheckResponse.ServingStatus; import io.grpc.stub.StreamObserver; import io.grpc.services.*; import io.opencensus.common.Duration; -import io.opencensus.common.Scope; import io.opencensus.contrib.grpc.metrics.RpcViews; import io.opencensus.exporter.trace.jaeger.JaegerTraceExporter; -import io.opencensus.exporter.trace.logging.LoggingTraceExporter; import io.opencensus.exporter.stats.stackdriver.StackdriverStatsConfiguration; import io.opencensus.exporter.stats.stackdriver.StackdriverStatsExporter; import io.opencensus.exporter.trace.stackdriver.StackdriverTraceConfiguration; import io.opencensus.exporter.trace.stackdriver.StackdriverTraceExporter; import io.opencensus.trace.AttributeValue; import io.opencensus.trace.Span; -import io.opencensus.trace.SpanBuilder; import io.opencensus.trace.Tracer; import io.opencensus.trace.Tracing; -import io.opencensus.trace.samplers.Samplers; import java.io.IOException; import java.util.Collection; import java.util.ArrayList; @@ -53,16 +49,17 @@ import org.apache.logging.log4j.Level; import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.LogManager; -public class AdService { - private static final Logger logger = LogManager.getLogger(AdService.class); +public final class AdService { + private static final Logger logger = LogManager.getLogger(AdService.class); private static final Tracer tracer = Tracing.getTracer(); - private int MAX_ADS_TO_SERVE = 2; + private static int MAX_ADS_TO_SERVE = 2; private Server server; private HealthStatusManager healthMgr; - static final AdService service = new AdService(); + private static final AdService service = new AdService(); + private void start() throws IOException { int port = Integer.parseInt(System.getenv("PORT")); healthMgr = new HealthStatusManager(); @@ -91,26 +88,20 @@ public class AdService { } } - static class AdServiceImpl extends hipstershop.AdServiceGrpc.AdServiceImplBase { + private static class AdServiceImpl extends hipstershop.AdServiceGrpc.AdServiceImplBase { /** * Retrieves ads based on context provided in the request {@code AdRequest}. * * @param req the request containing context. - * @param responseObserver the stream observer which gets notified with the value of - * {@code AdResponse} + * @param responseObserver the stream observer which gets notified with the value of {@code + * AdResponse} */ @Override public void getAds(AdRequest req, StreamObserver responseObserver) { AdService service = AdService.getInstance(); - Span parentSpan = tracer.getCurrentSpan(); - SpanBuilder spanBuilder = - tracer - .spanBuilderWithExplicitParent("Retrieve Ads", parentSpan) - .setRecordEvents(true) - .setSampler(Samplers.alwaysSample()); - try (Scope scope = spanBuilder.startScopedSpan()) { - Span span = tracer.getCurrentSpan(); + Span span = tracer.getCurrentSpan(); + try { span.putAttribute("method", AttributeValue.stringAttributeValue("getAds")); List allAds = new ArrayList<>(); logger.info("received ad request (context_words=" + req.getContextKeysList() + ")"); @@ -140,40 +131,42 @@ public class AdService { responseObserver.onCompleted(); } catch (StatusRuntimeException e) { logger.log(Level.WARN, "GetAds Failed", e.getStatus()); - return; + responseObserver.onError(e); } } } - static final ImmutableListMultimap adsMap = createAdsMap(); + private static final ImmutableListMultimap adsMap = createAdsMap(); - Collection getAdsByCategory(String category) { + private Collection getAdsByCategory(String category) { return adsMap.get(category); } private static final Random random = new Random(); - public List getRandomAds() { + private List getRandomAds() { List ads = new ArrayList<>(MAX_ADS_TO_SERVE); Collection allAds = adsMap.values(); - for (int i=0; i createAdsMap() { + private static ImmutableListMultimap createAdsMap() { Ad camera = Ad.newBuilder().setRedirectUrl("/product/2ZYFJ3GM2N") .setText("Film camera for sale. 50% off.").build(); Ad lens = Ad.newBuilder().setRedirectUrl("/product/66VCHSJNUP") @@ -197,7 +190,7 @@ public class AdService { .build(); } - public static void initStackdriver() { + private static void initStackdriver() { logger.info("Initialize StackDriver"); long sleepTime = 10; /* seconds */ @@ -205,7 +198,7 @@ public class AdService { boolean statsExporterRegistered = false; boolean traceExporterRegistered = false; - for (int i=0; i