From 9e0f3758d2615f45f9aaccd7fcd70652f021762e Mon Sep 17 00:00:00 2001 From: Uwe Schindler Date: Tue, 5 Oct 2021 14:02:22 +0200 Subject: [PATCH] LUCENE-10143: Delegate primitive writes in RateLimitedIndexOutput (#352) --- lucene/CHANGES.txt | 3 +++ .../lucene/store/RateLimitedIndexOutput.java | 21 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/lucene/CHANGES.txt b/lucene/CHANGES.txt index eeb993f1482..01d05b585a7 100644 --- a/lucene/CHANGES.txt +++ b/lucene/CHANGES.txt @@ -292,6 +292,9 @@ Improvements * LUCENE-10125: Optimize primitive writes in OutputStreamIndexOutput. (Uwe Schindler, Robert Muir, Adrien Grand) +* LUCENE-10143: Delegate primitive writes in RateLimitedIndexOutput. + (Uwe Schindler, Robert Muir, Adrien Grand) + Bug fixes * LUCENE-9686: Fix read past EOF handling in DirectIODirectory. (Zach Chen, diff --git a/lucene/core/src/java/org/apache/lucene/store/RateLimitedIndexOutput.java b/lucene/core/src/java/org/apache/lucene/store/RateLimitedIndexOutput.java index 38190d2f0a5..76fa7d6056a 100644 --- a/lucene/core/src/java/org/apache/lucene/store/RateLimitedIndexOutput.java +++ b/lucene/core/src/java/org/apache/lucene/store/RateLimitedIndexOutput.java @@ -73,6 +73,27 @@ public final class RateLimitedIndexOutput extends IndexOutput { delegate.writeBytes(b, offset, length); } + @Override + public void writeInt(int i) throws IOException { + bytesSinceLastPause += Integer.BYTES; + checkRate(); + delegate.writeInt(i); + } + + @Override + public void writeShort(short i) throws IOException { + bytesSinceLastPause += Short.BYTES; + checkRate(); + delegate.writeShort(i); + } + + @Override + public void writeLong(long i) throws IOException { + bytesSinceLastPause += Long.BYTES; + checkRate(); + delegate.writeLong(i); + } + private void checkRate() throws IOException { if (bytesSinceLastPause > currentMinPauseCheckBytes) { rateLimiter.pause(bytesSinceLastPause);