You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@druid.apache.org by gi...@apache.org on 2019/04/04 17:23:05 UTC
[incubator-druid] branch master updated: upgrade to RoaringBitmap
0.8.0 and serialise directly to ByteBuffer (#7408)
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 <ri...@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-unsubscribe@druid.apache.org
For additional commands, e-mail: commits-help@druid.apache.org