private HiveLockObject verify(boolean verify, String[] names, HiveLockObjectData data, HiveConf conf) throws LockException { if (!verify) { return new HiveLockObject(names, data); return new HiveLockObject(tab, data); return new HiveLockObject(new DummyPartition(tab, null, partSpec), data); return new HiveLockObject(partn, data); } catch (Exception e) { throw new LockException(e);
/** * @param key object to be locked * Get the name of the last string. For eg. if you need to lock db/T/ds=1=/hr=1, * the last name would be db/T/ds=1/hr=1 **/ private static String getLastObjectName(String parent, HiveLockObject key) { return "/" + parent + "/" + key.getName(); }
@Override public String toString() { return lockMode + "=" + lockObj.getDisplayName() + "(" + lockObj.getData() + ")"; }
private ZooKeeperHiveLock lock (HiveLockObject key, HiveLockMode mode, boolean keepAlive, boolean parentCreated) throws LockException { LOG.debug("Acquiring lock for {} with mode {} {}", key.getName(), mode, key.getData().getLockMode()); console.printError("Unable to acquire " + key.getData().getLockMode() + ", " + mode + " lock " + key.getDisplayName() + " after " + tryNum + " attempts."); printConflictingLocks(key,mode,conflictingLocks);
locks = lockMgr.getLocks(HiveLockObject.createFrom(db, showLocks.getTableName(), showLocks.getPartSpec()), true, isExt); outStream.writeBytes(lock.getHiveLockObject().getDisplayName()); outStream.write(separator); outStream.writeBytes(lock.getHiveLockMode().toString()); if (isExt) { HiveLockObjectData lockData = lock.getHiveLockObject().getData(); if (lockData != null) { outStream.write(terminator);
expectedLocks.add(new ZooKeeperHiveLock("default", new HiveLockObject(), HiveLockMode.SHARED)); expectedLocks.add(new ZooKeeperHiveLock("default.table1", new HiveLockObject(), HiveLockMode.SHARED)); LockedDriverState lDrvState = new LockedDriverState(); LockedDriverState lDrvInp = new LockedDriverState(); Assert.assertEquals(expectedLocks.size(), resultLocks.size()); Assert.assertEquals(expectedLocks.get(0).getHiveLockMode(), resultLocks.get(0).getHiveLockMode()); Assert.assertEquals(expectedLocks.get(0).getHiveLockObject().getName(), resultLocks.get(0).getHiveLockObject().getName()); Assert.assertEquals(expectedLocks.get(1).getHiveLockMode(), resultLocks.get(1).getHiveLockMode()); Assert.assertEquals(expectedLocks.get(0).getHiveLockObject().getName(), resultLocks.get(0).getHiveLockObject().getName());
@Test public void testEqualsAndHashCode() { HiveLockObjectData data1 = new HiveLockObjectData("ID1", "SHARED", "1997-07-01", "select * from mytable", conf); HiveLockObjectData data2 = new HiveLockObjectData("ID1", "SHARED", "1997-07-01", "select * from mytable", conf); Assert.assertEquals(data1, data2); Assert.assertEquals(data1.hashCode(), data2.hashCode()); HiveLockObject obj1 = new HiveLockObject("mytable", data1); HiveLockObject obj2 = new HiveLockObject("mytable", data2); Assert.assertEquals(obj1, obj2); Assert.assertEquals(obj1.hashCode(), obj2.hashCode()); }
@Override public boolean equals(Object o) { if (!(o instanceof SimpleHiveLock)) { return false; } SimpleHiveLock simpleLock = (SimpleHiveLock) o; return lockObj.equals(simpleLock.getHiveLockObject()) && lockMode == simpleLock.getHiveLockMode(); } }
public List<HiveLock> getLocks(HiveLockObject key, boolean verifyTablePartitions, boolean fetchData, HiveConf conf) throws LockException { return root.getLocks(key.getPaths(), verifyTablePartitions, fetchData, conf); }
@Override public int hashCode() { HashCodeBuilder builder = new HashCodeBuilder(); boolean pathPresent = path != null; builder.append(pathPresent); if (pathPresent) { builder.append(path.toCharArray()); } boolean lockObjectPresent = obj != null; builder.append(lockObjectPresent); if (lockObjectPresent) { builder.append(obj.hashCode()); } boolean modePresent = mode != null; builder.append(modePresent); if (modePresent) { builder.append(mode); } return builder.toHashCode(); } }
@Override public int unlockTable(Hive hiveDB, UnlockTableDesc unlockTbl) throws HiveException { HiveLockManager lockMgr = getAndCheckLockManager(); String tabName = unlockTbl.getTableName(); HiveLockObject obj = HiveLockObject.createFrom(hiveDB, tabName, unlockTbl.getPartSpec()); List<HiveLock> locks = lockMgr.getLocks(obj, false, false); if ((locks == null) || (locks.isEmpty())) { throw new HiveException("Table " + tabName + " is not locked "); } Iterator<HiveLock> locksIter = locks.iterator(); while (locksIter.hasNext()) { HiveLock lock = locksIter.next(); lockMgr.unlock(lock); } return 0; }
private ZooKeeperHiveLock lock (HiveLockObject key, HiveLockMode mode, boolean keepAlive, boolean parentCreated) throws LockException { LOG.debug("Acquiring lock for {} with mode {}", key.getName(), key.getData().getLockMode()); console.printError("Unable to acquire " + key.getData().getLockMode() + ", " + mode + " lock " + key.getDisplayName() + " after " + tryNum + " attempts."); printConflictingLocks(key,mode,conflictingLocks);
locks = lockMgr.getLocks(HiveLockObject.createFrom(db, showLocks.getTableName(), showLocks.getPartSpec()), true, isExt); outStream.writeBytes(lock.getHiveLockObject().getDisplayName()); outStream.write(separator); outStream.writeBytes(lock.getHiveLockMode().toString()); if (isExt) { HiveLockObjectData lockData = lock.getHiveLockObject().getData(); if (lockData != null) { outStream.write(terminator);