From c4d186bdd997f3f697bf6c9d3ed8a09bbe970e8b Mon Sep 17 00:00:00 2001 From: Mark Payne Date: Thu, 18 Jun 2015 11:30:04 -0400 Subject: [PATCH] NIFI-230: Fixed bug in calculating how much data has been written to a ContentClaim --- .../repository/VolatileContentRepository.java | 20 ++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/repository/VolatileContentRepository.java b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/repository/VolatileContentRepository.java index 597186547c..e35a63c93e 100644 --- a/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/repository/VolatileContentRepository.java +++ b/nifi/nifi-nar-bundles/nifi-framework-bundle/nifi-framework/nifi-framework-core/src/main/java/org/apache/nifi/controller/repository/VolatileContentRepository.java @@ -419,7 +419,7 @@ public class VolatileContentRepository implements ContentRepository { } final ContentClaim backupClaim = getBackupClaim(claim); - return (backupClaim == null) ? getContent(claim).getSize() : getBackupRepository().size(claim); + return backupClaim == null ? getContent(claim).getSize() : getBackupRepository().size(claim); } @Override @@ -429,13 +429,13 @@ public class VolatileContentRepository implements ContentRepository { } final ContentClaim backupClaim = getBackupClaim(claim); - return (backupClaim == null) ? getContent(claim).read() : getBackupRepository().read(backupClaim); + return backupClaim == null ? getContent(claim).read() : getBackupRepository().read(backupClaim); } @Override public OutputStream write(final ContentClaim claim) throws IOException { final ContentClaim backupClaim = getBackupClaim(claim); - return (backupClaim == null) ? getContent(claim).write() : getBackupRepository().write(backupClaim); + return backupClaim == null ? getContent(claim).write() : getBackupRepository().write(backupClaim); } @Override @@ -481,8 +481,13 @@ public class VolatileContentRepository implements ContentRepository { @Override public void write(int b) throws IOException { try { + final long bufferLengthBefore = getBufferLength(); super.write(b); - repoSizeCounter.incrementAndGet(); + final long bufferLengthAfter = getBufferLength(); + final long bufferSpaceAdded = bufferLengthAfter - bufferLengthBefore; + if (bufferSpaceAdded > 0) { + repoSizeCounter.addAndGet(bufferSpaceAdded); + } } catch (final IOException e) { final byte[] buff = new byte[1]; buff[0] = (byte) (b & 0xFF); @@ -498,8 +503,13 @@ public class VolatileContentRepository implements ContentRepository { @Override public void write(byte[] b, int off, int len) throws IOException { try { + final long bufferLengthBefore = getBufferLength(); super.write(b, off, len); - repoSizeCounter.addAndGet(len); + final long bufferLengthAfter = getBufferLength(); + final long bufferSpaceAdded = bufferLengthAfter - bufferLengthBefore; + if (bufferSpaceAdded > 0) { + repoSizeCounter.addAndGet(bufferSpaceAdded); + } } catch (final IOException e) { redirect(b, off, len); }