【发布时间】:2020-12-29 06:51:45
【问题描述】:
在我看到的所有 gRPC bidistream 示例中,都遵循一种模式,即当(入站)requestObserver 收到 onComplete 时,它会调用(出站)responseObserver 的 onComplete 方法。但是,onError 并没有这样做。
想知道如果我不调用 responseObserver.onComplete() 会发生什么会导致内存泄漏吗?为什么我们不为 onError 做呢?
public StreamObserver<Point> recordRoute(final StreamObserver<RouteSummary> responseObserver) {
return new StreamObserver<Point>() {
@Override
public void onNext(Point point) {
// does something here
}
@Override
public void onError(Throwable t) {
logger.log(Level.WARNING, "recordRoute cancelled");
}
@Override
public void onCompleted() {
responseObserver.onCompleted();
}
};
}
【问题讨论】: