Package org.apache.hcatalog.hbase.snapshot.lock

Examples of org.apache.hcatalog.hbase.snapshot.lock.WriteLock


    throws IOException {

    refreshTransactionList(transaction.getTableName());
    transaction.keepAliveTransaction();
    String lockPath = prepareLockNode(transaction.getTableName());
    WriteLock wLock = new WriteLock(zkUtil.getSession(), lockPath,
      Ids.OPEN_ACL_UNSAFE);
    RMLockListener myLockListener = new RMLockListener();
    wLock.setLockListener(myLockListener);
    try {
      boolean lockGrabbed = wLock.lock();
      if (lockGrabbed == false) {
        //TO DO : Let this request queue up and try obtaining lock.
        throw new IOException(
          "Unable to obtain lock for keep alive of transaction. "
            + transaction.toString());
      } else {
        String tableName = transaction.getTableName();
        List<String> colFamilies = transaction.getColumnFamilies();
        FamilyRevision revisionData = transaction.getFamilyRevisionInfo();
        for (String cfamily : colFamilies) {
          String path = PathUtil.getRunningTxnInfoPath(
            baseDir, tableName, cfamily);
          zkUtil.updateData(path, revisionData,
            ZKUtil.UpdateMode.KEEP_ALIVE);
        }

      }
    } catch (KeeperException e) {
      throw new IOException("Exception while obtaining lock.", e);
    } catch (InterruptedException e) {
      throw new IOException("Exception while obtaining lock.", e);
    } finally {
      wLock.unlock();
    }

  }
View Full Code Here


    return zkUtil.getTransactionList(path);
  }

  private void refreshTransactionList(String tableName) throws IOException {
    String lockPath = prepareLockNode(tableName);
    WriteLock wLock = new WriteLock(zkUtil.getSession(), lockPath,
      Ids.OPEN_ACL_UNSAFE);
    RMLockListener myLockListener = new RMLockListener();
    wLock.setLockListener(myLockListener);
    try {
      boolean lockGrabbed = wLock.lock();
      if (lockGrabbed == false) {
        //TO DO : Let this request queue up and try obtaining lock.
        throw new IOException(
          "Unable to obtain lock while refreshing transactions of table "
            + tableName + ".");
      } else {
        List<String> cfPaths = zkUtil
          .getColumnFamiliesOfTable(tableName);
        for (String cf : cfPaths) {
          String runningDataPath = PathUtil.getRunningTxnInfoPath(
            baseDir, tableName, cf);
          zkUtil.refreshTransactions(runningDataPath);
        }

      }
    } catch (KeeperException e) {
      throw new IOException("Exception while obtaining lock.", e);
    } catch (InterruptedException e) {
      throw new IOException("Exception while obtaining lock.", e);
    } finally {
      wLock.unlock();
    }

  }
View Full Code Here

   *
   * @return revision ID
   * @throws IOException
   */
  public long obtainID() throws IOException {
    WriteLock wLock = new WriteLock(zookeeper, zNodeLockBasePath, Ids.OPEN_ACL_UNSAFE);
    wLock.setLockListener(this);
    try {
      boolean lockGrabbed = wLock.lock();
      if (lockGrabbed == false) {
        //TO DO : Let this request queue up and try obtaining lock.
        throw new IOException("Unable to obtain lock to obtain id.");
      } else {
        id = incrementAndReadCounter();
      }
    } catch (KeeperException e) {
      LOG.warn("Exception while obtaining lock for ID.", e);
      throw new IOException("Exception while obtaining lock for ID.", e);
    } catch (InterruptedException e) {
      LOG.warn("Exception while obtaining lock for ID.", e);
      throw new IOException("Exception while obtaining lock for ID.", e);
    } finally {
      wLock.unlock();
    }
    return id;
  }
View Full Code Here

TOP

Related Classes of org.apache.hcatalog.hbase.snapshot.lock.WriteLock

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.