aboutsummaryrefslogtreecommitdiffstats
path: root/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableFactories80.java
diff options
context:
space:
mode:
Diffstat (limited to 'documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableFactories80.java')
-rw-r--r--documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableFactories80.java11
1 files changed, 4 insertions, 7 deletions
diff --git a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableFactories80.java b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableFactories80.java
index a4dcd660ab8..2d29697717b 100644
--- a/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableFactories80.java
+++ b/documentapi/src/main/java/com/yahoo/documentapi/messagebus/protocol/RoutableFactories80.java
@@ -59,13 +59,10 @@ abstract class RoutableFactories80 {
public boolean encode(Routable obj, DocumentSerializer out) {
try {
var protoMsg = encoderFn.apply(apiClass.cast(obj));
- var protoStream = CodedOutputStream.newInstance(out.getBuf().getByteBuffer()); // Not AutoCloseable...
- try {
- protoMsg.writeTo(protoStream);
- } finally {
- protoStream.flush();
- }
- } catch (IOException | UnsupportedOperationException e) {
+ // TODO avoid this buffer indirection by directly exposing an OutputStream to write into...!
+ // ... or at the very least have a way to preallocate buffer output of protoMsg.getSerializedSize() bytes!
+ out.getBuf().put(protoMsg.toByteArray());
+ } catch (RuntimeException e) {
logCodecError("encoding", e);
return false;
}