From d394cef77508ecb3ac267b8086f42e42f3679c4b Mon Sep 17 00:00:00 2001 From: Eric Anderson Date: Thu, 4 Aug 2016 11:16:39 -0700 Subject: [PATCH] core: Avoid wrapping Errors in RuntimeException --- .../io/grpc/internal/LogExceptionRunnable.java | 5 ++++- .../main/java/io/grpc/internal/ServerImpl.java | 18 +++++++++--------- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/core/src/main/java/io/grpc/internal/LogExceptionRunnable.java b/core/src/main/java/io/grpc/internal/LogExceptionRunnable.java index 359a35f9c5..2b0e5b2a05 100644 --- a/core/src/main/java/io/grpc/internal/LogExceptionRunnable.java +++ b/core/src/main/java/io/grpc/internal/LogExceptionRunnable.java @@ -33,6 +33,8 @@ package io.grpc.internal; import static com.google.common.base.Preconditions.checkNotNull; +import com.google.common.base.Throwables; + import java.util.logging.Level; import java.util.logging.Logger; @@ -56,7 +58,8 @@ public final class LogExceptionRunnable implements Runnable { task.run(); } catch (Throwable t) { log.log(Level.SEVERE, "Exception while executing runnable " + task, t); - throw t instanceof RuntimeException ? (RuntimeException) t : new RuntimeException(t); + Throwables.propagateIfPossible(t); + throw new AssertionError(t); } } diff --git a/core/src/main/java/io/grpc/internal/ServerImpl.java b/core/src/main/java/io/grpc/internal/ServerImpl.java index a4a40cb9ba..08777309b7 100644 --- a/core/src/main/java/io/grpc/internal/ServerImpl.java +++ b/core/src/main/java/io/grpc/internal/ServerImpl.java @@ -364,10 +364,10 @@ public final class ServerImpl extends io.grpc.Server { stream.close(Status.fromThrowable(e), new Metadata()); context.cancel(null); throw e; - } catch (Throwable t) { - stream.close(Status.fromThrowable(t), new Metadata()); + } catch (Error e) { + stream.close(Status.fromThrowable(e), new Metadata()); context.cancel(null); - throw new RuntimeException(t); + throw e; } finally { jumpListener.setListener(listener); } @@ -487,9 +487,9 @@ public final class ServerImpl extends io.grpc.Server { } catch (RuntimeException e) { internalClose(Status.fromThrowable(e), new Metadata()); throw e; - } catch (Throwable t) { - internalClose(Status.fromThrowable(t), new Metadata()); - throw new RuntimeException(t); + } catch (Error e) { + internalClose(Status.fromThrowable(e), new Metadata()); + throw e; } } }); @@ -505,9 +505,9 @@ public final class ServerImpl extends io.grpc.Server { } catch (RuntimeException e) { internalClose(Status.fromThrowable(e), new Metadata()); throw e; - } catch (Throwable t) { - internalClose(Status.fromThrowable(t), new Metadata()); - throw new RuntimeException(t); + } catch (Error e) { + internalClose(Status.fromThrowable(e), new Metadata()); + throw e; } } });