public void takeSnapshot(SnapshotDescription snapshot) throws IOException {
    this.takingSnapshotLock.readLock().lock();
    try {
      takeSnapshotInternal(snapshot);
    } finally {
      this.takingSnapshotLock.readLock().unlock();
    }
  }
Take a snapshot based on the enabled/disabled state of the table.
@throws HBaseSnapshotException when a snapshot specific exception occurs.
@throws IOException            when some sort of generic IO exception occurs.
hbase-server/src/main/java/org/apache/hadoop/hbase/master/snapshot/SnapshotManager.java