abdullah alamoudi has uploaded a new change for review.

  https://asterix-gerrit.ics.uci.edu/2343

Change subject: Validate pages of deleted vbc files are not latched
......................................................................

Validate pages of deleted vbc files are not latched

Change-Id: If91ac3a2fa9265f929867e0dc75bbe0b7fa0aed1
---
M 
hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/VirtualBufferCache.java
M 
hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/VirtualPage.java
2 files changed, 14 insertions(+), 3 deletions(-)


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

diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/VirtualBufferCache.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/VirtualBufferCache.java
index d192351..ba3e16e 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/VirtualBufferCache.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/impls/VirtualBufferCache.java
@@ -46,7 +46,7 @@
 
 public class VirtualBufferCache implements IVirtualBufferCache {
     private static final Logger LOGGER = LogManager.getLogger();
-
+    private static final boolean DEBUG = true;
     private final ICacheMemoryAllocator allocator;
     private final IFileMapManager fileMapManager;
     private final int pageSize;
@@ -199,6 +199,11 @@
         // 1. not a large page
         // 2. allocation is not above budget
         if (used.get() < pageBudget && !page.isLargePage()) {
+            if (DEBUG) {
+                if (page.isReadLatched() || page.isWriteLatched()) {
+                    throw new IllegalStateException("Attempt to delete a file 
with latched pages");
+                }
+            }
             page.reset();
             freePages.offer(page);
         }
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/VirtualPage.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/VirtualPage.java
index 139a3c4..82bd9b4 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/VirtualPage.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/VirtualPage.java
@@ -19,11 +19,10 @@
 package org.apache.hyracks.storage.common.buffercache;
 
 import java.nio.ByteBuffer;
-import java.util.concurrent.locks.ReadWriteLock;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 
 public class VirtualPage implements ICachedPage {
-    private final ReadWriteLock latch;
+    private final ReentrantReadWriteLock latch;
     private final int pageSize;
     private ByteBuffer buffer;
     private volatile long dpid;
@@ -131,4 +130,11 @@
         return multiplier > 1;
     }
 
+    public boolean isReadLatched() {
+        return latch.getReadLockCount() > 0;
+    }
+
+    public boolean isWriteLatched() {
+        return latch.isWriteLocked();
+    }
 }

-- 
To view, visit https://asterix-gerrit.ics.uci.edu/2343
To unsubscribe, visit https://asterix-gerrit.ics.uci.edu/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: If91ac3a2fa9265f929867e0dc75bbe0b7fa0aed1
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: abdullah alamoudi <[email protected]>

Reply via email to