This is an automated email from the ASF dual-hosted git repository.
jiangtian pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/tsfile.git
The following commit(s) were added to refs/heads/develop by this push:
new 02727c5a Revert "Correct the retained size calculation for
BinaryColumn and BinaryColumnBuilder"
02727c5a is described below
commit 02727c5a9c98ca754b5a35a2cdf5d2f698934853
Author: DESKTOP-L0L5GPJ\jt <[email protected]>
AuthorDate: Sat Jan 18 12:51:27 2025 +0800
Revert "Correct the retained size calculation for BinaryColumn and
BinaryColumnBuilder"
This reverts commit 3929106a53d15d46fce16d50825a913e8f860969.
---
.../main/java/org/apache/tsfile/utils/RamUsageEstimator.java | 12 ------------
.../java/org/apache/tsfile/file/header/ChunkGroupHeader.java | 2 ++
.../org/apache/tsfile/read/common/block/TsBlockBuilder.java | 4 ++++
.../apache/tsfile/read/common/block/column/BinaryColumn.java | 6 ++++--
.../tsfile/read/common/block/column/BinaryColumnBuilder.java | 5 ++++-
.../apache/tsfile/read/common/block/column/TimeColumn.java | 3 ++-
.../apache/tsfile/read/common/block/column/TsBlockSerde.java | 1 +
7 files changed, 17 insertions(+), 16 deletions(-)
diff --git
a/java/common/src/main/java/org/apache/tsfile/utils/RamUsageEstimator.java
b/java/common/src/main/java/org/apache/tsfile/utils/RamUsageEstimator.java
index d357a42e..3a35d226 100644
--- a/java/common/src/main/java/org/apache/tsfile/utils/RamUsageEstimator.java
+++ b/java/common/src/main/java/org/apache/tsfile/utils/RamUsageEstimator.java
@@ -271,18 +271,6 @@ public final class RamUsageEstimator {
: alignObjectSize(NUM_BYTES_ARRAY_HEADER + (long) Double.BYTES *
arr.length);
}
- public static long sizeOf(Accountable[] arr) {
- if (arr == null) {
- return 0;
- } else {
- long size = shallowSizeOf(arr);
- for (Accountable obj : arr) {
- size += obj != null ? obj.ramBytesUsed() : 0;
- }
- return size;
- }
- }
-
/** Returns the size in bytes of the String[] object. */
public static long sizeOf(String[] arr) {
long size = shallowSizeOf(arr);
diff --git
a/java/tsfile/src/main/java/org/apache/tsfile/file/header/ChunkGroupHeader.java
b/java/tsfile/src/main/java/org/apache/tsfile/file/header/ChunkGroupHeader.java
index ba3371e9..b46f0e0c 100644
---
a/java/tsfile/src/main/java/org/apache/tsfile/file/header/ChunkGroupHeader.java
+++
b/java/tsfile/src/main/java/org/apache/tsfile/file/header/ChunkGroupHeader.java
@@ -53,6 +53,7 @@ public class ChunkGroupHeader {
}
private int getSerializedSize(IDeviceID deviceID) {
+ // TODO: add an interface in IDeviceID
int length = deviceID.serializedSize();
return Byte.BYTES + ReadWriteForEncodingUtils.varIntSize(length) + length;
}
@@ -72,6 +73,7 @@ public class ChunkGroupHeader {
}
}
+ // TODO: add an interface in IDeviceID
final IDeviceID deviceID = deserializeDeviceID(inputStream, versionNumber);
return new ChunkGroupHeader(deviceID);
}
diff --git
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/TsBlockBuilder.java
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/TsBlockBuilder.java
index 028bffc9..918551d9 100644
---
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/TsBlockBuilder.java
+++
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/TsBlockBuilder.java
@@ -104,6 +104,8 @@ public class TsBlockBuilder {
valueColumnBuilders = new ColumnBuilder[types.size()];
for (int i = 0; i < valueColumnBuilders.length; i++) {
+ // TODO use Type interface to encapsulate createColumnBuilder to each
concrete type class
+ // instead of switch-case
switch (types.get(i)) {
case BOOLEAN:
valueColumnBuilders[i] =
@@ -174,6 +176,8 @@ public class TsBlockBuilder {
valueColumnBuilders = new ColumnBuilder[types.size()];
int initialExpectedEntries = timeColumnBuilder.getPositionCount();
for (int i = 0; i < valueColumnBuilders.length; i++) {
+ // TODO use Type interface to encapsulate createColumnBuilder to each
concrete type class
+ // instead of switch-case
switch (types.get(i)) {
case BOOLEAN:
valueColumnBuilders[i] =
diff --git
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BinaryColumn.java
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BinaryColumn.java
index 9b8a82cc..ec36fc4f 100644
---
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BinaryColumn.java
+++
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BinaryColumn.java
@@ -32,8 +32,8 @@ import java.util.Optional;
import static
org.apache.tsfile.read.common.block.column.ColumnUtil.checkArrayRange;
import static
org.apache.tsfile.read.common.block.column.ColumnUtil.checkReadablePosition;
import static
org.apache.tsfile.read.common.block.column.ColumnUtil.checkValidRegion;
-import static org.apache.tsfile.utils.RamUsageEstimator.sizeOf;
import static org.apache.tsfile.utils.RamUsageEstimator.sizeOfBooleanArray;
+import static org.apache.tsfile.utils.RamUsageEstimator.sizeOfObjectArray;
public class BinaryColumn implements Column {
@@ -75,7 +75,9 @@ public class BinaryColumn implements Column {
}
this.valueIsNull = valueIsNull;
- retainedSizeInBytes = INSTANCE_SIZE + sizeOfBooleanArray(positionCount) +
sizeOf(values);
+ // TODO we need to sum up all the Binary's retainedSize here
+ retainedSizeInBytes =
+ INSTANCE_SIZE + sizeOfBooleanArray(positionCount) +
sizeOfObjectArray(positionCount);
}
@Override
diff --git
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BinaryColumnBuilder.java
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BinaryColumnBuilder.java
index d9c560dc..a82d82fc 100644
---
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BinaryColumnBuilder.java
+++
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/BinaryColumnBuilder.java
@@ -32,6 +32,7 @@ import java.util.Arrays;
import static java.lang.Math.max;
import static
org.apache.tsfile.read.common.block.column.ColumnUtil.calculateBlockResetSize;
+import static org.apache.tsfile.utils.RamUsageEstimator.shallowSizeOf;
import static org.apache.tsfile.utils.RamUsageEstimator.sizeOf;
public class BinaryColumnBuilder implements ColumnBuilder {
@@ -128,6 +129,7 @@ public class BinaryColumnBuilder implements ColumnBuilder {
@Override
public long getRetainedSizeInBytes() {
+ // TODO we need to sum up all the Binary's retainedSize here
long size = INSTANCE_SIZE + arraysRetainedSizeInBytes;
if (columnBuilderStatus != null) {
size += ColumnBuilderStatus.INSTANCE_SIZE;
@@ -137,6 +139,7 @@ public class BinaryColumnBuilder implements ColumnBuilder {
@Override
public ColumnBuilder newColumnBuilderLike(ColumnBuilderStatus
columnBuilderStatus) {
+ // TODO we should take retain size into account here
return new BinaryColumnBuilder(columnBuilderStatus,
calculateBlockResetSize(positionCount));
}
@@ -155,6 +158,6 @@ public class BinaryColumnBuilder implements ColumnBuilder {
}
private void updateArraysDataSize() {
- arraysRetainedSizeInBytes = sizeOf(valueIsNull) + sizeOf(values);
+ arraysRetainedSizeInBytes = sizeOf(valueIsNull) + shallowSizeOf(values);
}
}
diff --git
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/TimeColumn.java
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/TimeColumn.java
index df9fa746..3b1880a9 100644
---
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/TimeColumn.java
+++
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/TimeColumn.java
@@ -100,7 +100,8 @@ public class TimeColumn implements Column {
@Override
public boolean[] isNull() {
- throw new UnsupportedOperationException("isNull is not supported for
TimeColumn");
+ // todo
+ return null;
}
@Override
diff --git
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/TsBlockSerde.java
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/TsBlockSerde.java
index e7a503e6..e887a577 100644
---
a/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/TsBlockSerde.java
+++
b/java/tsfile/src/main/java/org/apache/tsfile/read/common/block/column/TsBlockSerde.java
@@ -67,6 +67,7 @@ public class TsBlockSerde {
}
// Time column.
+ // TODO: a TimeColumn will be deserialized as a LongColumn
Column timeColumn =
ColumnEncoderFactory.get(columnEncodings.get(0))
.readColumn(byteBuffer, TSDataType.INT64, positionCount);