Search in sources :

Example 1 with Status

use of io.grpc.Status in project grpc-java by grpc.

the class AsyncClient method doUnaryCalls.

private Future<Histogram> doUnaryCalls(Channel channel, final SimpleRequest request, final long endTime) {
    final BenchmarkServiceStub stub = BenchmarkServiceGrpc.newStub(channel);
    final Histogram histogram = new Histogram(HISTOGRAM_MAX_VALUE, HISTOGRAM_PRECISION);
    final HistogramFuture future = new HistogramFuture(histogram);
    stub.unaryCall(request, new StreamObserver<SimpleResponse>() {

        long lastCall = System.nanoTime();

        @Override
        public void onNext(SimpleResponse value) {
        }

        @Override
        public void onError(Throwable t) {
            Status status = Status.fromThrowable(t);
            System.err.println("Encountered an error in unaryCall. Status is " + status);
            t.printStackTrace();
            future.cancel(true);
        }

        @Override
        public void onCompleted() {
            long now = System.nanoTime();
            // Record the latencies in microseconds
            histogram.recordValue((now - lastCall) / 1000);
            lastCall = now;
            if (endTime > now) {
                stub.unaryCall(request, this);
            } else {
                future.done();
            }
        }
    });
    return future;
}
Also used : Status(io.grpc.Status) Utils.saveHistogram(io.grpc.benchmarks.Utils.saveHistogram) Histogram(org.HdrHistogram.Histogram) SimpleResponse(io.grpc.benchmarks.proto.Messages.SimpleResponse) BenchmarkServiceStub(io.grpc.benchmarks.proto.BenchmarkServiceGrpc.BenchmarkServiceStub)

Example 2 with Status

use of io.grpc.Status in project grpc-java by grpc.

the class InProcessTransport method start.

@CheckReturnValue
@Override
public synchronized Runnable start(ManagedClientTransport.Listener listener) {
    this.clientTransportListener = listener;
    InProcessServer server = InProcessServer.findServer(name);
    if (server != null) {
        serverTransportListener = server.register(this);
    }
    if (serverTransportListener == null) {
        shutdownStatus = Status.UNAVAILABLE.withDescription("Could not find server: " + name);
        final Status localShutdownStatus = shutdownStatus;
        return new Runnable() {

            @Override
            public void run() {
                synchronized (InProcessTransport.this) {
                    notifyShutdown(localShutdownStatus);
                    notifyTerminated();
                }
            }
        };
    }
    return new Runnable() {

        @Override
        @SuppressWarnings("deprecation")
        public void run() {
            synchronized (InProcessTransport.this) {
                Attributes serverTransportAttrs = Attributes.newBuilder().set(Grpc.TRANSPORT_ATTR_REMOTE_ADDR, new InProcessSocketAddress(name)).build();
                serverStreamAttributes = serverTransportListener.transportReady(serverTransportAttrs);
                clientTransportListener.transportReady();
            }
        }
    };
}
Also used : Status(io.grpc.Status) Attributes(io.grpc.Attributes) CheckReturnValue(javax.annotation.CheckReturnValue)

Example 3 with Status

use of io.grpc.Status in project grpc-java by grpc.

the class DelayedStream method start.

@Override
public void start(ClientStreamListener listener) {
    checkState(this.listener == null, "already started");
    Status savedError;
    boolean savedPassThrough;
    synchronized (this) {
        this.listener = checkNotNull(listener, "listener");
        // If error != null, then cancel() has been called and was unable to close the listener
        savedError = error;
        savedPassThrough = passThrough;
        if (!savedPassThrough) {
            listener = delayedListener = new DelayedStreamListener(listener);
        }
    }
    if (savedError != null) {
        listener.closed(savedError, new Metadata());
        return;
    }
    if (savedPassThrough) {
        realStream.start(listener);
    } else {
        final ClientStreamListener finalListener = listener;
        delayOrExecute(new Runnable() {

            @Override
            public void run() {
                realStream.start(finalListener);
            }
        });
    }
}
Also used : Status(io.grpc.Status) Metadata(io.grpc.Metadata)

Example 4 with Status

use of io.grpc.Status in project grpc-java by grpc.

the class Http2ClientStream method statusFromTrailers.

/**
   * Extract the response status from trailers.
   */
private Status statusFromTrailers(Metadata trailers) {
    Status status = trailers.get(Status.CODE_KEY);
    if (status != null) {
        return status.withDescription(trailers.get(Status.MESSAGE_KEY));
    }
    // No status; something is broken. Try to provide a resonanable error.
    if (headersReceived) {
        return Status.UNKNOWN.withDescription("missing GRPC status in response");
    }
    Integer httpStatus = trailers.get(HTTP2_STATUS);
    if (httpStatus != null) {
        status = GrpcUtil.httpStatusToGrpcStatus(httpStatus);
    } else {
        status = Status.INTERNAL.withDescription("missing HTTP status code");
    }
    return status.augmentDescription("missing GRPC status, inferred error from HTTP status code");
}
Also used : Status(io.grpc.Status)

Example 5 with Status

use of io.grpc.Status in project grpc-java by grpc.

the class Http2ClientStream method transportTrailersReceived.

/**
   * Called by subclasses for the terminal trailer metadata on a stream.
   *
   * @param trailers the received terminal trailer metadata
   */
protected void transportTrailersReceived(Metadata trailers) {
    Preconditions.checkNotNull(trailers, "trailers");
    if (transportError == null && !headersReceived) {
        transportError = validateInitialMetadata(trailers);
        if (transportError != null) {
            transportErrorMetadata = trailers;
        }
    }
    if (transportError != null) {
        transportError = transportError.augmentDescription("trailers: " + trailers);
        inboundTransportError(transportError, transportErrorMetadata);
        sendCancel(Status.CANCELLED);
    } else {
        Status status = statusFromTrailers(trailers);
        stripTransportDetails(trailers);
        inboundTrailersReceived(trailers, status);
    }
}
Also used : Status(io.grpc.Status)

Aggregations

Status (io.grpc.Status)117 Test (org.junit.Test)89 Metadata (io.grpc.Metadata)57 Attributes (io.grpc.Attributes)15 StatusRuntimeException (io.grpc.StatusRuntimeException)12 ClientStream (io.grpc.internal.ClientStream)11 ServerStreamListener (io.grpc.internal.ServerStreamListener)11 IOException (java.io.IOException)11 ExecutionException (java.util.concurrent.ExecutionException)10 ClientCall (io.grpc.ClientCall)9 ResolvedServerInfoGroup (io.grpc.ResolvedServerInfoGroup)9 CountDownLatch (java.util.concurrent.CountDownLatch)9 ServerStream (io.grpc.internal.ServerStream)8 ByteArrayInputStream (java.io.ByteArrayInputStream)7 TimeoutException (java.util.concurrent.TimeoutException)7 ErrorPicker (io.grpc.grpclb.GrpclbLoadBalancer.ErrorPicker)6 ChannelFuture (io.netty.channel.ChannelFuture)6 InOrder (org.mockito.InOrder)6 EquivalentAddressGroup (io.grpc.EquivalentAddressGroup)5 ExpectedException (org.junit.rules.ExpectedException)5