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]>