Change in asterixdb[master]: [ASTERIXDB-3360][STO] Honor limit when writing compressed pages

2024-05-06 Thread AsterixDB Code Review
>From Wail Alkowaileet :

Wail Alkowaileet has abandoned this change. ( 
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18176 )

Change subject: [ASTERIXDB-3360][STO] Honor limit when writing compressed pages
..


Abandoned
--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18176
To unsubscribe, or for help writing mail filters, visit 
https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I9465a20d8f938320aff844bb313a5ee65331ba83
Gerrit-Change-Number: 18176
Gerrit-PatchSet: 1
Gerrit-Owner: Wail Alkowaileet 
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins 
Gerrit-MessageType: abandon


Change in asterixdb[master]: [ASTERIXDB-3360][STO] Honor limit when writing compressed pages

2024-02-23 Thread AsterixDB Code Review
Attention is currently required from: Wail Alkowaileet.
Anon. E. Moose #1000171 has posted comments on this change. ( 
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18176 )

Change subject: [ASTERIXDB-3360][STO] Honor limit when writing compressed pages
..


Patch Set 1: Contrib+1

Analytics Compatibility Tests Successful
https://cbjenkins.page.link/GvzzNFTnZdyRS3cXA : SUCCESS


--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18176
To unsubscribe, or for help writing mail filters, visit 
https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I9465a20d8f938320aff844bb313a5ee65331ba83
Gerrit-Change-Number: 18176
Gerrit-PatchSet: 1
Gerrit-Owner: Wail Alkowaileet 
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins 
Gerrit-Attention: Wail Alkowaileet 
Gerrit-Comment-Date: Fri, 23 Feb 2024 17:48:26 +
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment


Change in asterixdb[master]: [ASTERIXDB-3360][STO] Honor limit when writing compressed pages

2024-02-22 Thread AsterixDB Code Review
Attention is currently required from: Wail Alkowaileet.
Anon. E. Moose #1000171 has posted comments on this change. ( 
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18176 )

Change subject: [ASTERIXDB-3360][STO] Honor limit when writing compressed pages
..


Patch Set 1: Contrib-2

Analytics Compatibility Tests Failed
https://cbjenkins.page.link/Qe2x4E5npSTHrfYB7 : UNSTABLE


--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18176
To unsubscribe, or for help writing mail filters, visit 
https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I9465a20d8f938320aff844bb313a5ee65331ba83
Gerrit-Change-Number: 18176
Gerrit-PatchSet: 1
Gerrit-Owner: Wail Alkowaileet 
Gerrit-Reviewer: Anon. E. Moose #1000171
Gerrit-Reviewer: Jenkins 
Gerrit-Attention: Wail Alkowaileet 
Gerrit-Comment-Date: Fri, 23 Feb 2024 01:31:14 +
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment


Change in asterixdb[master]: [ASTERIXDB-3360][STO] Honor limit when writing compressed pages

2024-02-22 Thread AsterixDB Code Review
>From Jenkins :

Jenkins has posted comments on this change. ( 
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18176 )

Change subject: [ASTERIXDB-3360][STO] Honor limit when writing compressed pages
..


Patch Set 1: Integration-Tests+1

Integration Tests Successful

https://asterix-jenkins.ics.uci.edu/job/asterix-gerrit-trigger/157/ : SUCCESS


--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18176
To unsubscribe, or for help writing mail filters, visit 
https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I9465a20d8f938320aff844bb313a5ee65331ba83
Gerrit-Change-Number: 18176
Gerrit-PatchSet: 1
Gerrit-Owner: Wail Alkowaileet 
Gerrit-Reviewer: Jenkins 
Gerrit-CC: Anon. E. Moose #1000171
Gerrit-Comment-Date: Fri, 23 Feb 2024 00:06:26 +
Gerrit-HasComments: No
Gerrit-Has-Labels: Yes
Gerrit-MessageType: comment


Change in asterixdb[master]: [ASTERIXDB-3360][STO] Honor limit when writing compressed pages

2024-02-22 Thread AsterixDB Code Review
Anon. E. Moose #1000171 has posted comments on this change. ( 
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18176 )

Change subject: [ASTERIXDB-3360][STO] Honor limit when writing compressed pages
..


Patch Set 1:

Analytics Compatibility Compilation Successful
https://cbjenkins.page.link/dibMcAwfp4Xt2fhY6 : SUCCESS


--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18176
To unsubscribe, or for help writing mail filters, visit 
https://asterix-gerrit.ics.uci.edu/settings

Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Change-Id: I9465a20d8f938320aff844bb313a5ee65331ba83
Gerrit-Change-Number: 18176
Gerrit-PatchSet: 1
Gerrit-Owner: Wail Alkowaileet 
Gerrit-CC: Anon. E. Moose #1000171
Gerrit-CC: Jenkins 
Gerrit-Comment-Date: Thu, 22 Feb 2024 23:02:50 +
Gerrit-HasComments: No
Gerrit-Has-Labels: No
Gerrit-MessageType: comment


Change in asterixdb[master]: [ASTERIXDB-3360][STO] Honor limit when writing compressed pages

2024-02-22 Thread AsterixDB Code Review
>From Wail Alkowaileet :

Wail Alkowaileet has uploaded this change for review. ( 
https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18176 )


Change subject: [ASTERIXDB-3360][STO] Honor limit when writing compressed pages
..

[ASTERIXDB-3360][STO] Honor limit when writing compressed pages

- user model changes: no
- storage format changes: yes
- interface changes: no

Details:
Compressed page writer should not reset the written page buffer
to be a whole page. Instead, it should honor the provided limit.

Change-Id: I9465a20d8f938320aff844bb313a5ee65331ba83
---
M 
hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/file/CompressedBufferedFileHandle.java
M 
asterixdb/asterix-column/src/main/java/org/apache/asterix/column/values/writer/ColumnBatchWriter.java
M 
hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/impls/lsm/tuples/ColumnMultiBufferProvider.java
M 
asterixdb/asterix-column/src/main/java/org/apache/asterix/column/bytes/stream/out/MultiPersistentBufferBytesOutputStream.java
4 files changed, 45 insertions(+), 10 deletions(-)



  git pull ssh://asterix-gerrit.ics.uci.edu:29418/asterixdb 
refs/changes/76/18176/1

diff --git 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/bytes/stream/out/MultiPersistentBufferBytesOutputStream.java
 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/bytes/stream/out/MultiPersistentBufferBytesOutputStream.java
index c910131..90aacc7 100644
--- 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/bytes/stream/out/MultiPersistentBufferBytesOutputStream.java
+++ 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/bytes/stream/out/MultiPersistentBufferBytesOutputStream.java
@@ -38,6 +38,12 @@
 @Override
 protected void preReset() throws HyracksDataException {
 if (allocatedBytes > 0) {
+/*
+ * Ensure limit is set to current position and position is set to 
0. This to ensure no unrelated bytes are
+ * persisted to disk. Unrelated bytes are bytes that were in the 
ByteBuffer (when the column writer
+ * confiscated it from the buffer cache) but those byte do not 
belong to the column that to be written.
+ */
+currentBuf.flip();
 //Persist all buffers before resetting the stream
 multiPageOpRef.getValue().persist();
 allocatedBytes = 0;
diff --git 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/values/writer/ColumnBatchWriter.java
 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/values/writer/ColumnBatchWriter.java
index 6fbdc27..d5f7270 100644
--- 
a/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/values/writer/ColumnBatchWriter.java
+++ 
b/asterixdb/asterix-column/src/main/java/org/apache/asterix/column/values/writer/ColumnBatchWriter.java
@@ -119,7 +119,15 @@
 }

 private boolean hasEnoughSpace(int bufferPosition, IColumnValuesWriter 
columnWriter) {
-//Estimated size mostly overestimate the size
+if (bufferPosition == 0) {
+// if the current buffer is empty, then use it
+return true;
+} else if (tolerance == 1.0d) {
+// if tolerance is 100%, then it should avoid doing any 
calculations and start a with a new page
+return false;
+}
+
+// Estimated size mostly overestimate the size
 int columnSize = columnWriter.getEstimatedSize();
 float remainingPercentage = (pageSize - bufferPosition) / (float) 
pageSize;
 if (columnSize > pageSize) {
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/impls/lsm/tuples/ColumnMultiBufferProvider.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/impls/lsm/tuples/ColumnMultiBufferProvider.java
index 34ec856..2e0ccfb 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/impls/lsm/tuples/ColumnMultiBufferProvider.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/impls/lsm/tuples/ColumnMultiBufferProvider.java
@@ -61,9 +61,14 @@
 startOffset = offset % multiPageOp.getPageSize();
 //Duplicate as the buffer could be shared by more than one column
 ByteBuffer firstPage = readNext().duplicate();
+// Set the limit to read the length of the column
+firstPage.limit(startOffset + Integer.BYTES);
+// Set position at the start of column
 firstPage.position(startOffset);
-//Read the length
+// Read the length of