>From Wail Alkowaileet <[email protected]>:

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


Change subject: [ASTERIXDB-3407][STO] Increment page counter for valid pages
......................................................................

[ASTERIXDB-3407][STO] Increment page counter for valid pages

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

Details:
When reading a valid page from the buffer cache,
the page counter in CloudMegaPageReadContext should
be incremented.

Change-Id: I7cfa419d216cf875a4e403c8b90b5a0007bf9bfc
---
M 
hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/cloud/buffercache/read/CloudMegaPageReadContext.java
M 
hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/compression/file/CompressedFileManager.java
2 files changed, 42 insertions(+), 10 deletions(-)



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

diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/cloud/buffercache/read/CloudMegaPageReadContext.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/cloud/buffercache/read/CloudMegaPageReadContext.java
index 0f0b0b9..f1b2fd4 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/cloud/buffercache/read/CloudMegaPageReadContext.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-btree-column/src/main/java/org/apache/hyracks/storage/am/lsm/btree/column/cloud/buffercache/read/CloudMegaPageReadContext.java
@@ -68,7 +68,7 @@
     @Override
     public void onPin(ICachedPage page) throws HyracksDataException {
         CloudCachedPage cachedPage = (CloudCachedPage) page;
-        if (gapStream != null && cachedPage.skipCloudStream()) {
+        if (cachedPage.skipCloudStream()) {
             /*
              * This page is requested but the buffer cache has a valid copy in 
memory. Also, the page itself was
              * requested to be read from the cloud. Since this page is valid, 
no buffer cache read() will be performed.
@@ -76,14 +76,8 @@
              * up writing the bytes of this page in the position of another 
page. Therefore, we should skip the bytes
              * for this particular page to avoid placing the bytes of this 
page into another page's position.
              */
-            try {
-                long remaining = cachedPage.getCompressedPageSize();
-                while (remaining > 0) {
-                    remaining -= gapStream.skip(remaining);
-                }
-            } catch (IOException e) {
-                throw HyracksDataException.create(e);
-            }
+            skipCloudBytes(cachedPage);
+            pageCounter++;
         }
     }

@@ -187,16 +181,32 @@
             return gapStream;
         }

-        LOGGER.info("Cloud stream read for {} pages", numberOfContiguousPages 
- pageCounter);
         int requiredNumOfPages = numberOfContiguousPages - pageCounter;
         long offset = cPage.getCompressedPageOffset();
         int pageId = BufferedFileHandle.getPageId(cPage.getDiskPageId());
         long length = fileHandle.getPagesTotalSize(pageId, requiredNumOfPages);

+        LOGGER.info("Cloud stream read for {} pages [{}, {}]", 
numberOfContiguousPages - pageCounter, pageId,
+                pageId + requiredNumOfPages);
         ICloudIOManager cloudIOManager = (ICloudIOManager) ioManager;
         gapStream = cloudIOManager.cloudRead(fileHandle.getFileHandle(), 
offset, length);

         return gapStream;
     }

+    private void skipCloudBytes(CloudCachedPage cachedPage) throws 
HyracksDataException {
+        if (gapStream == null) {
+            return;
+        }
+
+        try {
+            long remaining = cachedPage.getCompressedPageSize();
+            while (remaining > 0) {
+                remaining -= gapStream.skip(remaining);
+            }
+        } catch (IOException e) {
+            throw HyracksDataException.create(e);
+        }
+    }
+
 }
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/compression/file/CompressedFileManager.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/compression/file/CompressedFileManager.java
index 365b92d..da908b1 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/compression/file/CompressedFileManager.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/compression/file/CompressedFileManager.java
@@ -258,6 +258,10 @@
     }

     public long getTotalCompressedSize(int startPageId, int numberOfPages) 
throws HyracksDataException {
+        if (startPageId + numberOfPages > totalNumOfPages) {
+            throw new IndexOutOfBoundsException(startPageId + " + " + 
numberOfPages + " > " + totalNumOfPages);
+        }
+
         int lafPageId = -1;
         ICachedPage lafPage = null;
         long totalSize = 0;

--
To view, visit https://asterix-gerrit.ics.uci.edu/c/asterixdb/+/18323
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: I7cfa419d216cf875a4e403c8b90b5a0007bf9bfc
Gerrit-Change-Number: 18323
Gerrit-PatchSet: 1
Gerrit-Owner: Wail Alkowaileet <[email protected]>
Gerrit-MessageType: newchange

Reply via email to