@Test
  public void testUpdateSnapshotIsolation() throws Exception {
    dropTable(new String[] {"tab_acid"});

    driver.run("create table if not exists tab_acid (a int, b int) " +
        "stored as orc TBLPROPERTIES ('transactional'='true')");
    driver.run("insert into tab_acid values(1,2)");
    driver.compileAndRespond("update tab_acid set a=2");

    DbTxnManager txnMgr2 = (DbTxnManager) TxnManagerFactory.getTxnManagerFactory().getTxnManager(conf);
    swapTxnManager(txnMgr2);
    driver2.compileAndRespond("select * from tab_acid");
    swapTxnManager(txnMgr);

    driver.run();
    txnHandler.cleanTxnToWriteIdTable();
    swapTxnManager(txnMgr2);

    driver2.run();
    List<String> res = new ArrayList<>();
    driver2.getFetchTask().fetch(res);
    Assert.assertEquals(1, res.size());
    Assert.assertEquals("1\t2", res.get(0));
  }
T7 is a table with 2 partitions
1. run select from T7
2. run drop partition from T7
concurrently with 1 starting first so that 2 blocks
3. start another concurrent select on T7 - it should block behind waiting X (from drop) - LM should be fair
4. finish #1 so that drop unblocks
5. rollback the drop to release its X lock
6. # should unblock
ql/src/test/org/apache/hadoop/hive/ql/lockmgr/TestDbTxnManager2.java