hbase-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jonathan Hsieh (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (HBASE-8341) RestoreSnapshotHandler.prepare() is not called by SnapshotManager
Date Sat, 13 Apr 2013 13:26:15 GMT

    [ https://issues.apache.org/jira/browse/HBASE-8341?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13631039#comment-13631039
] 

Jonathan Hsieh commented on HBASE-8341:
---------------------------------------

Restore/SnapshotManager part looks good to me. (would like test but this is pretty trivial).


Can you explain what problem this code is solving (it is snapshot related but not to restore)?
 Is this supposed to be a separate fix?

{code}
diff --git hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.java
hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.java
index 6d018e5..7d0a621 100644
--- hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.java
+++ hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/TakeSnapshotHandler.java
@@ -43,10 +43,10 @@ import org.apache.hadoop.hbase.executor.EventType;
 import org.apache.hadoop.hbase.master.MasterServices;
 import org.apache.hadoop.hbase.master.MetricsMaster;
 import org.apache.hadoop.hbase.master.SnapshotSentinel;
-import org.apache.hadoop.hbase.monitoring.MonitoredTask;
-import org.apache.hadoop.hbase.monitoring.TaskMonitor;
 import org.apache.hadoop.hbase.master.TableLockManager;
 import org.apache.hadoop.hbase.master.TableLockManager.TableLock;
+import org.apache.hadoop.hbase.monitoring.MonitoredTask;
+import org.apache.hadoop.hbase.monitoring.TaskMonitor;
 import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.SnapshotDescription;
 import org.apache.hadoop.hbase.snapshot.ClientSnapshotDescriptionUtils;
 import org.apache.hadoop.hbase.snapshot.SnapshotDescriptionUtils;
@@ -129,10 +129,18 @@ public abstract class TakeSnapshotHandler extends EventHandler implements
Snapsh
 
   public TakeSnapshotHandler prepare() throws Exception {
     super.prepare();
-    loadTableDescriptor(); // check that .tableinfo is present
+    this.tableLock.acquire(); // after this, you should ensure to release this lock in
+                              // case of exceptions
+    boolean success = false;
+    try {
+      loadTableDescriptor(); // check that .tableinfo is present
+      success = true;
+    } finally {
+      if (!success) {
+        releaseTableLock();
+      }
+    }
 
-    this.tableLock.acquire(); //after this, you should ensure to release this lock in
-                              //case of exceptions
     return this;
   }
{code}
                
> RestoreSnapshotHandler.prepare() is not called by SnapshotManager  
> -------------------------------------------------------------------
>
>                 Key: HBASE-8341
>                 URL: https://issues.apache.org/jira/browse/HBASE-8341
>             Project: HBase
>          Issue Type: Bug
>            Reporter: Enis Soztutar
>            Assignee: Enis Soztutar
>             Fix For: 0.98.0, 0.95.1
>
>         Attachments: hbase-8341_v1.patch
>
>
> In HBASE-7848, we added table lock to enabled/disabled snapshot handlers, and fixed SnapshotManager
to call CloneSnapshotHandler.prepare() in HBASE-7957. It seems that we overlooked the RestoreSnapshotHandler.prepare().
In this issue we should fix that so that we acquire the table lock in restore snapshot. 

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Mime
View raw message