You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@zipkin.apache.org by ad...@apache.org on 2019/05/18 09:44:28 UTC
[incubator-zipkin] branch master updated: Moves to Armeria 0.86
(#2604)
This is an automated email from the ASF dual-hosted git repository.
adriancole pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-zipkin.git
The following commit(s) were added to refs/heads/master by this push:
new 0d9f4e5 Moves to Armeria 0.86 (#2604)
0d9f4e5 is described below
commit 0d9f4e54ee4af23c941d731835b4727778259f72
Author: Adrian Cole <ad...@users.noreply.github.com>
AuthorDate: Sat May 18 11:44:20 2019 +0200
Moves to Armeria 0.86 (#2604)
---
pom.xml | 2 +-
.../internal/AbstractUnsafeUnaryGrpcService.java | 129 ---------------------
.../server/internal/ZipkinGrpcCollector.java | 1 +
.../server/internal/ZipkinHttpCollector.java | 2 +-
4 files changed, 3 insertions(+), 131 deletions(-)
diff --git a/pom.xml b/pom.xml
index 5fd348e..3dcf546 100755
--- a/pom.xml
+++ b/pom.xml
@@ -57,7 +57,7 @@
<main.basedir>${project.basedir}</main.basedir>
- <armeria.version>0.85.0</armeria.version>
+ <armeria.version>0.86.0</armeria.version>
<!-- This is from armeria, but be careful to avoid >= v20 apis -->
<guava.version>27.1-jre</guava.version>
diff --git a/zipkin-server/src/main/java/zipkin2/server/internal/AbstractUnsafeUnaryGrpcService.java b/zipkin-server/src/main/java/zipkin2/server/internal/AbstractUnsafeUnaryGrpcService.java
deleted file mode 100644
index 051ee7e..0000000
--- a/zipkin-server/src/main/java/zipkin2/server/internal/AbstractUnsafeUnaryGrpcService.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/*
- * Copyright 2019 LINE Corporation
- *
- * LINE Corporation licenses this file to you under the Apache License,
- * version 2.0 (the "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at:
- *
- * https://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations
- * under the License.
- */
-
-package zipkin2.server.internal;
-
-import com.linecorp.armeria.common.HttpData;
-import com.linecorp.armeria.common.HttpHeaderNames;
-import com.linecorp.armeria.common.HttpHeadersBuilder;
-import com.linecorp.armeria.common.HttpRequest;
-import com.linecorp.armeria.common.HttpResponse;
-import com.linecorp.armeria.common.HttpStatus;
-import com.linecorp.armeria.common.ResponseHeaders;
-import com.linecorp.armeria.common.grpc.protocol.ArmeriaMessageDeframer;
-import com.linecorp.armeria.common.grpc.protocol.ArmeriaMessageDeframer.ByteBufOrStream;
-import com.linecorp.armeria.common.grpc.protocol.ArmeriaMessageDeframer.Listener;
-import com.linecorp.armeria.common.grpc.protocol.ArmeriaMessageFramer;
-import com.linecorp.armeria.common.grpc.protocol.ArmeriaStatusException;
-import com.linecorp.armeria.common.grpc.protocol.GrpcHeaderNames;
-import com.linecorp.armeria.common.grpc.protocol.GrpcTrailersUtil;
-import com.linecorp.armeria.server.AbstractHttpService;
-import com.linecorp.armeria.server.ServiceRequestContext;
-import io.netty.buffer.ByteBuf;
-import io.netty.buffer.ByteBufAllocator;
-import io.netty.buffer.Unpooled;
-import java.util.concurrent.CompletableFuture;
-
-/**
- * Temporarily copied from Armeria to allow using before it's released.
- */
-abstract class AbstractUnsafeUnaryGrpcService extends AbstractHttpService {
-
- private static final ResponseHeaders RESPONSE_HEADERS =
- ResponseHeaders.of(HttpStatus.OK,
- HttpHeaderNames.CONTENT_TYPE, "application/grpc+proto",
- GrpcHeaderNames.GRPC_ENCODING, "identity");
-
- /**
- * Returns an unframed response message to return to the client, given an unframed request message. It is
- * expected that the implementation has the logic to know how to parse the request and serialize a response
- * into {@link ByteBuf}. The returned {@link ByteBuf} will be framed and returned to the client.
- */
- protected abstract CompletableFuture<ByteBuf> handleMessage(ByteBuf message);
-
- @Override
- protected final HttpResponse doPost(ServiceRequestContext ctx, HttpRequest req) {
- final CompletableFuture<HttpResponse> responseFuture =
- req.aggregateWithPooledObjects(ctx.contextAwareEventLoop(), ctx.alloc())
- .thenCompose(msg -> deframeMessage(msg.content(), ctx.alloc()))
- .thenCompose(this::handleMessage)
- .thenApply(responseMessage -> {
- final ArmeriaMessageFramer framer = new ArmeriaMessageFramer(
- ctx.alloc(), Integer.MAX_VALUE);
- final HttpData framed = framer.writePayload(responseMessage);
- return HttpResponse.of(
- RESPONSE_HEADERS,
- framed,
- GrpcTrailersUtil.statusToTrailers(/* OK */ 0, null, true).build());
- })
- .exceptionally(t -> {
- final HttpHeadersBuilder trailers;
- if (t instanceof ArmeriaStatusException) {
- ArmeriaStatusException statusException = (ArmeriaStatusException) t;
- trailers = GrpcTrailersUtil.statusToTrailers(
- statusException.getCode(), statusException.getMessage(), false);
- } else {
- trailers = GrpcTrailersUtil.statusToTrailers(
- /* INTERNAL */ 13, t.getMessage(), false);
- }
- return HttpResponse.of(trailers.build());
- });
-
- return HttpResponse.from(responseFuture);
- }
-
- private CompletableFuture<ByteBuf> deframeMessage(HttpData framed, ByteBufAllocator alloc) {
- final CompletableFuture<ByteBuf> deframed = new CompletableFuture<>();
- try (ArmeriaMessageDeframer deframer = new ArmeriaMessageDeframer(
- new Listener() {
- @Override
- public void messageRead(ByteBufOrStream message) {
- // Compression not supported.
- assert message.buf() != null;
- deframed.complete(message.buf());
- }
-
- @Override
- public void endOfStream() {
- if (!deframed.isDone()) {
- deframed.complete(Unpooled.EMPTY_BUFFER);
- }
- }
- },
- Integer.MAX_VALUE,
- alloc)) {
- deframer.request(1);
- deframer.deframe(framed, true);
- }
- return deframed;
- }
-}
diff --git a/zipkin-server/src/main/java/zipkin2/server/internal/ZipkinGrpcCollector.java b/zipkin-server/src/main/java/zipkin2/server/internal/ZipkinGrpcCollector.java
index a0918ce..076bab3 100644
--- a/zipkin-server/src/main/java/zipkin2/server/internal/ZipkinGrpcCollector.java
+++ b/zipkin-server/src/main/java/zipkin2/server/internal/ZipkinGrpcCollector.java
@@ -16,6 +16,7 @@
*/
package zipkin2.server.internal;
+import com.linecorp.armeria.common.grpc.protocol.AbstractUnsafeUnaryGrpcService;
import com.linecorp.armeria.spring.ArmeriaServerConfigurator;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.Unpooled;
diff --git a/zipkin-server/src/main/java/zipkin2/server/internal/ZipkinHttpCollector.java b/zipkin-server/src/main/java/zipkin2/server/internal/ZipkinHttpCollector.java
index e894104..60d0807 100644
--- a/zipkin-server/src/main/java/zipkin2/server/internal/ZipkinHttpCollector.java
+++ b/zipkin-server/src/main/java/zipkin2/server/internal/ZipkinHttpCollector.java
@@ -213,7 +213,7 @@ final class UnzippingBytesRequestConverter {
String encoding = request.headers().get(HttpHeaderNames.CONTENT_ENCODING);
HttpData content = request.content();
if (!content.isEmpty() && encoding != null && encoding.contains("gzip")) {
- content = GZIP_DECODER_FACTORY.newDecoder().decode(content);
+ content = GZIP_DECODER_FACTORY.newDecoder(ctx.alloc()).decode(content);
// The implementation of the armeria decoder is to return an empty body on failure
if (content.isEmpty()) {
ZipkinHttpCollector.maybeLog("Malformed gzip body", ctx, request);