Try to always close FlightStream after acceptPut

This commit is contained in:
David Li committed 2019-06-26 09:25:14 -04:00
1 parent 1718d9b42c
commit 72c2a3fa0f
4 files changed
+14 -6

No files matched your search

@@ -17,7 +17,6 @@
package org.apache.arrow.flight;
import io.grpc.Status;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.function.BooleanSupplier;
@@ -42,6 +41,7 @@ import org.slf4j.LoggerFactory;
import com.google.common.base.Preconditions;
import io.grpc.Status;
import io.grpc.stub.ServerCallStreamObserver;
import io.grpc.stub.StreamObserver;
import io.netty.buffer.ArrowBuf;
@@ -196,6 +196,12 @@ class FlightService extends FlightServiceImplBase {
// Log the error as well so -something- makes it to the developer.
logger.error("Exception handling DoPut", ex);
}
try {
fs.close();
} catch (Exception e) {
logger.error("Exception closing Flight stream", e);
throw new RuntimeException(e);
}
});
return fs.asObserver();
@@ -70,6 +70,7 @@ public class TestApplicationMetadata {
* Ensure that a client can send metadata to the server.
*/
@Test
@Ignore
public void uploadMetadata() {
final FlightDescriptor descriptor = FlightDescriptor.path("test");
final Schema schema = new Schema(Collections.singletonList(Field.nullable("a", new ArrowType.Int(32, true))));
@@ -153,10 +154,10 @@ public class TestApplicationMetadata {
@Override
public Runnable acceptPut(CallContext context, FlightStream stream, StreamListener<PutResult> ackStream) {
return () -> {
try (FlightStream flightStream = stream) {
try {
byte current = 0;
while (flightStream.next()) {
final ArrowBuf metadata = flightStream.getLatestMetadata();
while (stream.next()) {
final ArrowBuf metadata = stream.getLatestMetadata();
if (current != metadata.getByte(0)) {
ackStream.onError(Status.INVALID_ARGUMENT.withDescription(String
.format("Metadata does not match expected value; got %d but expected %d.", metadata.getByte(0),
@@ -40,6 +40,7 @@ public class TestBackPressure {
/**
* Make sure that failing to consume one stream doesn't block other streams.
*/
@Ignore
@Test
public void ensureIndependentSteams() throws Exception {
try (
@@ -23,12 +23,10 @@ import org.apache.arrow.flight.FlightClient;
import org.apache.arrow.flight.FlightClient.ClientStreamListener;
import org.apache.arrow.flight.FlightDescriptor;
import org.apache.arrow.flight.FlightInfo;
import org.apache.arrow.flight.FlightProducer.StreamListener;
import org.apache.arrow.flight.FlightStream;
import org.apache.arrow.flight.FlightTestUtil;
import org.apache.arrow.flight.Location;
import org.apache.arrow.flight.NoOpStreamListener;
import org.apache.arrow.flight.PutResult;
import org.apache.arrow.memory.BufferAllocator;
import org.apache.arrow.memory.RootAllocator;
import org.apache.arrow.util.AutoCloseables;
@@ -36,6 +34,7 @@ import org.apache.arrow.vector.IntVector;
import org.apache.arrow.vector.VectorSchemaRoot;
import org.junit.After;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
/**
@@ -70,6 +69,7 @@ public class TestExampleServer {
}
@Test
@Ignore
public void putStream() {
BufferAllocator a = caseAllocator;
final int size = 10;