Luo Chen has uploaded a new change for review.

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

Change subject: Check write latch usage
......................................................................

Check write latch usage

Change-Id: If34477c84ab07329d5bce5238ee5c4c73aecede5
---
M 
asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java
M 
hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/freepage/VirtualFreePageManager.java
M 
hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/CachedPage.java
M 
hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/ICachedPage.java
M 
hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/VirtualPage.java
5 files changed, 16 insertions(+), 1 deletion(-)


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

diff --git 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java
 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java
index 1a61b8f..38bb7ae 100644
--- 
a/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java
+++ 
b/asterixdb/asterix-common/src/main/java/org/apache/asterix/common/context/DatasetLifecycleManager.java
@@ -154,6 +154,7 @@
 
         // TODO: use fine-grained counters, one for each index instead of a 
single counter per dataset.
         DatasetInfo dsInfo = dsr.getDatasetInfo();
+        System.out.println("Dropping " + resourcePath + " wait for IO");
         dsInfo.waitForIO();
         closeIndex(iInfo);
         dsInfo.removeIndex(resourceID);
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/freepage/VirtualFreePageManager.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/freepage/VirtualFreePageManager.java
index 08c75dc..1ecc111 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/freepage/VirtualFreePageManager.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-am-lsm-common/src/main/java/org/apache/hyracks/storage/am/lsm/common/freepage/VirtualFreePageManager.java
@@ -102,7 +102,9 @@
         bufferCache.unpin(page);
         page = bufferCache.pin(BufferedFileHandle.getDiskPageId(fileId, 
currentPageId.get()), true);
         if (leafFrameFactory != null) {
-            page.acquireWriteLatch();
+            if (!page.tryAcquireWriteLatch()) {
+                throw new IllegalStateException("Try write lock at 
initialization must succeed");
+            }
             ITreeIndexFrame leafFrame = leafFrameFactory.createFrame();
             leafFrame.setPage(page);
             leafFrame.initBuffer((byte) 0);
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/CachedPage.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/CachedPage.java
index bc0a04e..8cbcebc 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/CachedPage.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/CachedPage.java
@@ -126,6 +126,11 @@
     }
 
     @Override
+    public boolean tryAcquireWriteLatch() {
+        return latch.writeLock().tryLock();
+    }
+
+    @Override
     public void releaseReadLatch() {
         latch.readLock().unlock();
     }
diff --git 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/ICachedPage.java
 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/ICachedPage.java
index 16837b9..23c8512 100644
--- 
a/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/ICachedPage.java
+++ 
b/hyracks-fullstack/hyracks/hyracks-storage-common/src/main/java/org/apache/hyracks/storage/common/buffercache/ICachedPage.java
@@ -30,6 +30,8 @@
 
     void acquireWriteLatch();
 
+    boolean tryAcquireWriteLatch();
+
     void releaseWriteLatch(boolean markDirty);
 
     boolean confiscated();
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..43ab501 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
@@ -59,6 +59,11 @@
     }
 
     @Override
+    public boolean tryAcquireWriteLatch() {
+        return latch.writeLock().tryLock();
+    }
+
+    @Override
     public void acquireWriteLatch() {
         latch.writeLock().lock();
     }

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

Gerrit-MessageType: newchange
Gerrit-Change-Id: If34477c84ab07329d5bce5238ee5c4c73aecede5
Gerrit-PatchSet: 1
Gerrit-Project: asterixdb
Gerrit-Branch: master
Gerrit-Owner: Luo Chen <cl...@uci.edu>

Reply via email to