if (streams.getDataOut() != null) { long flushStartNanos = System.nanoTime(); streams.flushDataOut(); dirSyncOnHSyncDone = true; if (checksumOut != null || streams.getDataOut() != null) { datanode.metrics.addFlushNanos(flushTotalNanos); if (isSync) {
if (syncOnClose && (streams.getDataOut() != null || checksumOut != null)) { datanode.metrics.incrFsyncCount(); if (streams.getDataOut() != null) { long flushStartNanos = System.nanoTime(); streams.flushDataOut();
IOUtils.closeStream(streams.getDataOut());
this.checksumSize = diskChecksum.getChecksumSize(); this.out = streams.getDataOut(); if (out instanceof FileOutputStream) { this.outFd = ((FileOutputStream)out).getFD();
this.checksumSize = diskChecksum.getChecksumSize(); this.out = streams.getDataOut(); if (out instanceof FileOutputStream) { this.outFd = ((FileOutputStream)out).getFD();
ReplicaOutputStreams outputStreams = rbw.createStreams(false, DEFAULT_CHECKSUM); OutputStream dataOutput = outputStreams.getDataOut();
int addSomeBlocks(SimulatedFSDataset fsdataset, int startingBlockId) throws IOException { int bytesAdded = 0; for (int i = startingBlockId; i < startingBlockId+NUMBLOCKS; ++i) { ExtendedBlock b = new ExtendedBlock(bpid, i, 0, 0); // we pass expected len as zero, - fsdataset should use the sizeof actual // data written ReplicaInPipelineInterface bInfo = fsdataset.createRbw( StorageType.DEFAULT, b, false).getReplica(); ReplicaOutputStreams out = bInfo.createStreams(true, DataChecksum.newDataChecksum(DataChecksum.Type.CRC32, 512)); try { OutputStream dataOut = out.getDataOut(); assertEquals(0, fsdataset.getLength(b)); for (int j=1; j <= blockIdToLen(i); ++j) { dataOut.write(j); assertEquals(j, bInfo.getBytesOnDisk()); // correct length even as we write bytesAdded++; } } finally { out.close(); } b.setNumBytes(blockIdToLen(i)); fsdataset.finalizeBlock(b, false); assertEquals(blockIdToLen(i), fsdataset.getLength(b)); } return bytesAdded; } int addSomeBlocks(SimulatedFSDataset fsdataset ) throws IOException {