Github user vrozov commented on a diff in the pull request: https://github.com/apache/drill/pull/1058#discussion_r154499915 --- Diff: exec/java-exec/src/main/java/org/apache/drill/exec/cache/VectorSerializer.java --- @@ -40,20 +52,18 @@ */ public static class Writer { + static final MetricRegistry metrics = DrillMetrics.getRegistry(); + static final String WRITER_TIMER = MetricRegistry.name(VectorAccessibleSerializable.class, "writerTime"); - private final OutputStream stream; - private final BufferAllocator allocator; - private boolean retain; + private final SpillSet spillSet; + private final WritableByteChannel channel; + private final OutputStream output; private long timeNs; - public Writer(BufferAllocator allocator, OutputStream stream) { - this.allocator = allocator; - this.stream = stream; - } - - public Writer retain() { - retain = true; - return this; + private Writer(SpillSet spillSet, String path) throws IOException { --- End diff -- The `Writer` in `VectorSerializer` is used only for spilling. I'd suggest moving `VectorSerializer` to the `spill`package to make it more explicit and keep the dependency on the `SpillSet`. I am not sure if there is a need for generic `Writer` that can handle multiple use cases. I think that `Writer` needs to be optimized to handle spill use case. `SpillSet` is also needed to get `WritableByteChannel` and encapsulates what `Writer` uses from operators.
---