This is an automated email from the ASF dual-hosted git repository. gian pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-druid.git
The following commit(s) were added to refs/heads/master by this push: new d29a320 upgrade to RoaringBitmap 0.8.0 and serialise directly to ByteBuffer (#7408) d29a320 is described below commit d29a32062f4955226e37ca3fe62bdabc553c0590 Author: Richard Startin <rich...@openkappa.co.uk> AuthorDate: Thu Apr 4 18:22:50 2019 +0100 upgrade to RoaringBitmap 0.8.0 and serialise directly to ByteBuffer (#7408) --- pom.xml | 2 +- .../collections/bitmap/RoaringBitmapFactory.java | 12 ++-- .../bitmap/WrappedImmutableRoaringBitmap.java | 8 +-- .../collections/bitmap/WrappedRoaringBitmap.java | 66 +++------------------- 4 files changed, 15 insertions(+), 73 deletions(-) diff --git a/pom.xml b/pom.xml index 1239bee..13c34e7 100644 --- a/pom.xml +++ b/pom.xml @@ -706,7 +706,7 @@ <dependency> <groupId>org.roaringbitmap</groupId> <artifactId>RoaringBitmap</artifactId> - <version>0.7.36</version> + <version>0.8.0</version> </dependency> <dependency> <groupId>org.ow2.asm</groupId> diff --git a/processing/src/main/java/org/apache/druid/collections/bitmap/RoaringBitmapFactory.java b/processing/src/main/java/org/apache/druid/collections/bitmap/RoaringBitmapFactory.java index 7b1d2dc..90b848d 100644 --- a/processing/src/main/java/org/apache/druid/collections/bitmap/RoaringBitmapFactory.java +++ b/processing/src/main/java/org/apache/druid/collections/bitmap/RoaringBitmapFactory.java @@ -25,8 +25,6 @@ import org.roaringbitmap.RoaringBitmap; import org.roaringbitmap.buffer.BufferFastAggregation; import org.roaringbitmap.buffer.ImmutableRoaringBitmap; -import java.io.ByteArrayOutputStream; -import java.io.DataOutputStream; import java.nio.ByteBuffer; import java.util.Collection; import java.util.Iterator; @@ -43,12 +41,10 @@ public class RoaringBitmapFactory implements BitmapFactory static { try { final RoaringBitmap roaringBitmap = new RoaringBitmap(); - final ByteArrayOutputStream out = new ByteArrayOutputStream(); - roaringBitmap.serialize(new DataOutputStream(out)); - final byte[] bytes = out.toByteArray(); - - ByteBuffer buf = ByteBuffer.wrap(bytes); - EMPTY_IMMUTABLE_BITMAP = new ImmutableRoaringBitmap(buf); + final ByteBuffer buffer = ByteBuffer.allocate(roaringBitmap.serializedSizeInBytes()); + roaringBitmap.serialize(buffer); + buffer.flip(); + EMPTY_IMMUTABLE_BITMAP = new ImmutableRoaringBitmap(buffer); } catch (Exception e) { throw new RuntimeException(e); diff --git a/processing/src/main/java/org/apache/druid/collections/bitmap/WrappedImmutableRoaringBitmap.java b/processing/src/main/java/org/apache/druid/collections/bitmap/WrappedImmutableRoaringBitmap.java index 6091921..98c45b6 100644 --- a/processing/src/main/java/org/apache/druid/collections/bitmap/WrappedImmutableRoaringBitmap.java +++ b/processing/src/main/java/org/apache/druid/collections/bitmap/WrappedImmutableRoaringBitmap.java @@ -22,8 +22,6 @@ package org.apache.druid.collections.bitmap; import org.roaringbitmap.IntIterator; import org.roaringbitmap.buffer.ImmutableRoaringBitmap; -import java.io.ByteArrayOutputStream; -import java.io.DataOutputStream; import java.nio.ByteBuffer; public class WrappedImmutableRoaringBitmap implements ImmutableBitmap @@ -57,9 +55,9 @@ public class WrappedImmutableRoaringBitmap implements ImmutableBitmap public byte[] toBytes() { try { - final ByteArrayOutputStream out = new ByteArrayOutputStream(); - bitmap.serialize(new DataOutputStream(out)); - return out.toByteArray(); + ByteBuffer buffer = ByteBuffer.allocate(bitmap.serializedSizeInBytes()); + bitmap.serialize(buffer); + return buffer.array(); } catch (Exception e) { throw new RuntimeException(e); diff --git a/processing/src/main/java/org/apache/druid/collections/bitmap/WrappedRoaringBitmap.java b/processing/src/main/java/org/apache/druid/collections/bitmap/WrappedRoaringBitmap.java index 33f43e9..c3ab977 100644 --- a/processing/src/main/java/org/apache/druid/collections/bitmap/WrappedRoaringBitmap.java +++ b/processing/src/main/java/org/apache/druid/collections/bitmap/WrappedRoaringBitmap.java @@ -24,10 +24,6 @@ import org.roaringbitmap.RoaringBitmap; import org.roaringbitmap.RoaringBitmapWriter; import org.roaringbitmap.buffer.MutableRoaringBitmap; -import java.io.ByteArrayOutputStream; -import java.io.DataOutputStream; -import java.io.IOException; -import java.io.OutputStream; import java.nio.ByteBuffer; public class WrappedRoaringBitmap implements MutableBitmap @@ -73,13 +69,13 @@ public class WrappedRoaringBitmap implements MutableBitmap public byte[] toBytes() { try { - final ByteArrayOutputStream out = new ByteArrayOutputStream(); MutableRoaringBitmap bitmap = writer.get(); if (compressRunOnSerialization) { bitmap.runOptimize(); } - bitmap.serialize(new DataOutputStream(out)); - return out.toByteArray(); + ByteBuffer buffer = ByteBuffer.allocate(bitmap.serializedSizeInBytes()); + bitmap.serialize(buffer); + return buffer.array(); } catch (Exception e) { throw new RuntimeException(e); @@ -125,59 +121,11 @@ public class WrappedRoaringBitmap implements MutableBitmap public void serialize(ByteBuffer buffer) { - try { - MutableRoaringBitmap bitmap = writer.get(); - if (compressRunOnSerialization) { - bitmap.runOptimize(); - } - bitmap.serialize( - new DataOutputStream( - new OutputStream() - { - ByteBuffer mBB; - - OutputStream init(ByteBuffer mbb) - { - mBB = mbb; - return this; - } - - @Override - public void close() - { - // unnecessary - } - - @Override - public void flush() - { - // unnecessary - } - - @Override - public void write(int b) - { - mBB.put((byte) b); - } - - @Override - public void write(byte[] b) - { - mBB.put(b); - } - - @Override - public void write(byte[] b, int off, int l) - { - mBB.put(b, off, l); - } - }.init(buffer) - ) - ); - } - catch (IOException e) { - throw new RuntimeException(e); // impossible in theory + MutableRoaringBitmap bitmap = writer.get(); + if (compressRunOnSerialization) { + bitmap.runOptimize(); } + bitmap.serialize(buffer); } @Override --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@druid.apache.org For additional commands, e-mail: commits-h...@druid.apache.org