List of usage examples for javax.transaction.xa XAException getMessage
public String getMessage()
From source file:com.alibaba.napoli.metamorphosis.client.transaction.TransactionContext.java
/** * XA/*from w ww. j a v a2s . c om*/ * * @param e * @return */ XAException toXAException(final Exception e) { if (e.getCause() != null && e.getCause() instanceof XAException) { final XAException original = (XAException) e.getCause(); final XAException xae = new XAException(original.getMessage()); xae.errorCode = original.errorCode; xae.initCause(original); return xae; } if (e instanceof XAException) { // ((XAException) e).errorCode = XAException.XAER_RMFAIL; return (XAException) e; } final XAException xae = new XAException(e.getMessage()); xae.errorCode = XAException.XAER_RMFAIL; xae.initCause(e); return xae; }
From source file:org.apache.hadoop.hive.metastore.MyXid.java
public boolean createDatabaseByDistributeTransaction(Database db) throws MetaException { if (db.getMetastore() == null) { String slaveURL = getSegmentUrlByDbNameHashCode(db.getName()); db.setMetastore(slaveURL);/*from w w w.j a va 2s .c o m*/ } int hashcode = getHashForDb(db.getName()); db.setName(db.getName().toLowerCase()); boolean success = false; Connection masterConn = null; Connection slaveConn = null; PGXADataSource masterDS = null; PGXADataSource slaveDS = null; masterDS = getXADataSource(globalDbUrl, user, passwd); slaveDS = getXADataSource(db.getMetastore(), user, passwd); XAConnection masterDSXaConn = null; XAConnection slaveDSXaConn = null; XAResource masterSaRes = null; XAResource slaveSaRes = null; int formatID = genFormatID(); Xid masterXid = new MyXid(formatID, new byte[] { 0x01 }, new byte[] { 0x02 }); Xid slaveXid = new MyXid(formatID, new byte[] { 0x11 }, new byte[] { 0x12 }); PreparedStatement masterStmt = null; PreparedStatement slaveStmt = null; try { masterDSXaConn = masterDS.getXAConnection(); slaveDSXaConn = slaveDS.getXAConnection(); masterSaRes = masterDSXaConn.getXAResource(); slaveSaRes = slaveDSXaConn.getXAResource(); masterConn = masterDSXaConn.getConnection(); slaveConn = slaveDSXaConn.getConnection(); masterStmt = masterConn .prepareStatement("insert into router(db_name, seg_addr,hashcode, owner) values(?,?,?,?)"); slaveStmt = slaveConn .prepareStatement("insert into dbs(name, hdfs_schema, description, owner) VALUES(?,?,?,?)"); try { masterSaRes.start(masterXid, XAResource.TMNOFLAGS); masterStmt.setString(1, db.getName()); masterStmt.setString(2, db.getMetastore()); masterStmt.setInt(3, hashcode); masterStmt.setString(4, db.getOwner()); masterStmt.executeUpdate(); masterSaRes.end(masterXid, XAResource.TMSUCCESS); slaveSaRes.start(slaveXid, XAResource.TMNOFLAGS); slaveStmt.setString(1, db.getName()); slaveStmt.setString(2, db.getHdfsscheme()); slaveStmt.setString(3, db.getDescription()); slaveStmt.setString(4, db.getOwner()); slaveStmt.executeUpdate(); slaveSaRes.end(slaveXid, XAResource.TMSUCCESS); int masterRet = masterSaRes.prepare(masterXid); int slaveRet = slaveSaRes.prepare(slaveXid); Warehouse wh = new Warehouse(hiveConf); Path databasePath = wh.getDefaultDatabasePath(db.getName(), db.getHdfsscheme()); if (masterRet == XAResource.XA_OK && slaveRet == XAResource.XA_OK && wh.mkdirs(databasePath)) { masterSaRes.commit(masterXid, false); slaveSaRes.commit(slaveXid, false); success = true; } } catch (XAException e) { LOG.error("XAException create database error, db=" + db.getName() + ", msg=" + e.getMessage()); e.printStackTrace(); throw new MetaException(e.getMessage()); } } catch (SQLException e) { LOG.error("SQLException create database error, db=" + db.getName() + ", msg=" + e.getMessage()); e.printStackTrace(); throw new MetaException(e.getMessage()); } finally { if (!success) { try { masterSaRes.rollback(masterXid); } catch (Exception x) { } try { slaveSaRes.rollback(slaveXid); } catch (Exception x) { } } closeStatement(masterStmt); closeStatement(slaveStmt); closeConnection(masterConn); closeConnection(slaveConn); closeXAConnection(masterDSXaConn); closeXAConnection(slaveDSXaConn); } return success; }
From source file:org.apache.hadoop.hive.metastore.MyXid.java
public boolean dropDatabaseByDistributeTransaction(String name) throws MetaException { boolean success = false; name = name.toLowerCase();/*from w w w. j a v a2 s . c o m*/ Connection masterConn = null; Connection slaveConn = null; PGXADataSource masterDS = null; PGXADataSource slaveDS = null; masterDS = getXADataSource(globalDbUrl, user, passwd); String slaveURL = getSegmentDBURL(name); slaveDS = getXADataSource(slaveURL, user, passwd); XAConnection masterDSXaConn = null; XAConnection slaveDSXaConn = null; int formatID = genFormatID(); Xid masterXid = new MyXid(formatID, new byte[] { 0x01 }, new byte[] { 0x02 }); Xid slaveXid = new MyXid(formatID, new byte[] { 0x11 }, new byte[] { 0x12 }); XAResource masterSaRes = null; XAResource slaveSaRes = null; Statement masterStmt = null; Statement slaveStmt = null; try { masterDSXaConn = masterDS.getXAConnection(); slaveDSXaConn = slaveDS.getXAConnection(); masterSaRes = masterDSXaConn.getXAResource(); slaveSaRes = slaveDSXaConn.getXAResource(); masterConn = masterDSXaConn.getConnection(); slaveConn = slaveDSXaConn.getConnection(); masterStmt = masterConn.createStatement(); slaveStmt = slaveConn.createStatement(); try { masterSaRes.start(masterXid, XAResource.TMNOFLAGS); masterStmt.executeUpdate("delete from router where db_name='" + name + "'"); masterStmt.executeUpdate("delete from dbpriv where db_name='" + name + "'"); masterStmt.executeUpdate("delete from tblpriv where db_name='" + name + "'"); masterSaRes.end(masterXid, XAResource.TMSUCCESS); slaveSaRes.start(slaveXid, XAResource.TMNOFLAGS); slaveStmt.executeUpdate("delete from dbs where name='" + name + "'"); slaveSaRes.end(slaveXid, XAResource.TMSUCCESS); int masterRet = masterSaRes.prepare(masterXid); int slaveRet = slaveSaRes.prepare(slaveXid); Warehouse wh = new Warehouse(hiveConf); if (masterRet == XAResource.XA_OK && slaveRet == XAResource.XA_OK && wh.deleteDir(wh.getDefaultDatabasePath(name), true)) { masterSaRes.commit(masterXid, false); slaveSaRes.commit(slaveXid, false); success = true; } } catch (XAException e) { LOG.error("drop database error, db=" + name + ", msg=" + e.getMessage()); throw new MetaException(e.getMessage()); } } catch (Exception e) { LOG.error("create database error, db=" + name + ", msg=" + e.getMessage()); throw new MetaException(e.getMessage()); } finally { if (!success) { try { masterSaRes.rollback(masterXid); } catch (Exception x) { } try { slaveSaRes.rollback(slaveXid); } catch (Exception x) { } } closeStatement(masterStmt); closeStatement(slaveStmt); closeConnection(masterConn); closeConnection(slaveConn); closeXAConnection(masterDSXaConn); closeXAConnection(slaveDSXaConn); } if (success) { Statement stmt = null; Connection con = null; try { con = getGlobalConnection(); stmt = con.createStatement(); String sql = "delete from dbsensitivity where db_name='" + name + "'"; stmt.executeUpdate(sql); sql = "delete from tblsensitivity where db_name='" + name + "'"; stmt.executeUpdate(sql); } catch (Exception e1) { LOG.error("update tblsenstivity table error, db=" + name + ", msg=" + e1.getMessage()); } finally { closeStatement(stmt); closeConnection(con); } } return success; }
From source file:org.apache.hadoop.hive.metastore.MyXid.java
public boolean dropUserByDistributeTransaction(String userName) throws NoSuchObjectException, MetaException { boolean success = false; Connection masterConn = null; PGXADataSource masterDS = null;/*from ww w. ja v a2s . co m*/ masterDS = getXADataSource(globalDbUrl, user, passwd); Set<String> slaveURLSet = getAllSegments(); int size = slaveURLSet.size(); PGXADataSource[] slaveDSArray = new PGXADataSource[size]; XAConnection[] slaveDSXaConnArray = new XAConnection[size]; XAResource[] slaveSaResArray = new XAResource[size]; Connection[] slaveConArray = new Connection[size]; Statement[] slaveStmtArray = new Statement[size]; Xid[] slaveXidArray = new Xid[size]; int index = 0; for (String slaveURL : slaveURLSet) { slaveDSArray[index] = getXADataSource(slaveURL, user, passwd); index++; } XAConnection masterDSXaConn = null; int formatID = genFormatID(); try { masterDSXaConn = masterDS.getXAConnection(); for (int i = 0; i < size; i++) { slaveDSXaConnArray[i] = slaveDSArray[i].getXAConnection(); slaveSaResArray[i] = slaveDSXaConnArray[i].getXAResource(); slaveConArray[i] = slaveDSXaConnArray[i].getConnection(); slaveStmtArray[i] = slaveConArray[i].createStatement(); byte id1 = (byte) ((i + 2) * 2); byte id2 = (byte) (id1 + 1); slaveXidArray[i] = new MyXid(formatID, new byte[] { id1 }, new byte[] { id2 }); } XAResource masterSaRes = masterDSXaConn.getXAResource(); masterConn = masterDSXaConn.getConnection(); Statement masterStmt = masterConn.createStatement(); Xid masterXid = new MyXid(formatID, new byte[] { 0x01 }, new byte[] { 0x02 }); try { masterSaRes.start(masterXid, XAResource.TMNOFLAGS); masterStmt.executeUpdate("delete from tdwuser where user_name='" + userName.toLowerCase() + "'"); masterSaRes.end(masterXid, XAResource.TMSUCCESS); for (int i = 0; i < size; i++) { slaveSaResArray[i].start(slaveXidArray[i], XAResource.TMNOFLAGS); slaveStmtArray[i] .executeUpdate("delete from dbpriv where user_name='" + userName.toLowerCase() + "'"); slaveStmtArray[i] .executeUpdate("delete from tblpriv where user_name='" + userName.toLowerCase() + "'"); slaveSaResArray[i].end(slaveXidArray[i], XAResource.TMSUCCESS); } boolean isAllPred = true; int masterRet = masterSaRes.prepare(masterXid); if (masterRet == XAResource.XA_OK) { int[] slaveRetArray = new int[size]; for (int i = 0; i < size; i++) { slaveRetArray[i] = slaveSaResArray[i].prepare(slaveXidArray[i]); if (slaveRetArray[i] == XAResource.XA_OK) { continue; } else { isAllPred = false; break; } } if (isAllPred) { masterSaRes.commit(masterXid, false); for (int i = 0; i < size; i++) { slaveSaResArray[i].commit(slaveXidArray[i], false); } success = true; } } } catch (XAException e) { LOG.error("drop user error, user=" + userName + ", msg=" + e.getMessage()); throw new MetaException(e.getMessage()); } } catch (SQLException e) { LOG.error("drop user error, user=" + userName + ", msg=" + e.getMessage()); throw new MetaException(e.getMessage()); } finally { closeConnection(masterConn); closeXAConnection(masterDSXaConn); for (int i = 0; i < size; i++) { closeConnection(slaveConArray[i]); closeXAConnection(slaveDSXaConnArray[i]); } } return success; }
From source file:org.apache.hadoop.hive.metastore.MyXid.java
public List<DbPriv> getAuthOnDbsByDistributeTransaction(String who) throws MetaException { boolean success = false; List<DbPriv> dbPrivs = new ArrayList<DbPriv>(); Set<String> slaveURLSet = getAllSegments(); int size = slaveURLSet.size(); who = who.toLowerCase();/*w w w. j a v a 2s.co m*/ PGXADataSource[] slaveDSArray = new PGXADataSource[size]; XAConnection[] slaveDSXaConnArray = new XAConnection[size]; XAResource[] slaveSaResArray = new XAResource[size]; Connection[] slaveConArray = new Connection[size]; Statement[] slaveStmtArray = new Statement[size]; Xid[] slaveXidArray = new Xid[size]; int index = 0; for (String slaveURL : slaveURLSet) { slaveDSArray[index] = getXADataSource(slaveURL, user, passwd); index++; } int formatID = genFormatID(); try { for (int i = 0; i < size; i++) { slaveDSXaConnArray[i] = slaveDSArray[i].getXAConnection(); slaveSaResArray[i] = slaveDSXaConnArray[i].getXAResource(); slaveConArray[i] = slaveDSXaConnArray[i].getConnection(); slaveStmtArray[i] = slaveConArray[i].createStatement(); byte id1 = (byte) ((i + 2) * 2); byte id2 = (byte) (id1 + 1); slaveXidArray[i] = new MyXid(formatID, new byte[] { id1 }, new byte[] { id2 }); } try { for (int i = 0; i < size; i++) { slaveSaResArray[i].start(slaveXidArray[i], XAResource.TMNOFLAGS); ResultSet dbPrivSet = slaveStmtArray[i] .executeQuery("select alter_priv, create_priv, createview_priv, " + "delete_priv, drop_priv, index_priv, insert_priv, select_priv, " + "showview_priv, update_priv, db_name from dbpriv where user_name='" + who.toLowerCase() + "'"); while (dbPrivSet.next()) { DbPriv dbPriv = new DbPriv(); dbPriv.setAlterPriv(dbPrivSet.getBoolean(1)); dbPriv.setCreatePriv(dbPrivSet.getBoolean(2)); dbPriv.setCreateviewPriv(dbPrivSet.getBoolean(3)); dbPriv.setDeletePriv(dbPrivSet.getBoolean(4)); dbPriv.setDropPriv(dbPrivSet.getBoolean(5)); dbPriv.setIndexPriv(dbPrivSet.getBoolean(6)); dbPriv.setInsertPriv(dbPrivSet.getBoolean(7)); dbPriv.setSelectPriv(dbPrivSet.getBoolean(8)); dbPriv.setShowviewPriv(dbPrivSet.getBoolean(9)); dbPriv.setUpdatePriv(dbPrivSet.getBoolean(10)); dbPriv.setDb(dbPrivSet.getString(11)); dbPriv.setUser(who); dbPrivs.add(dbPriv); } slaveSaResArray[i].end(slaveXidArray[i], XAResource.TMSUCCESS); } boolean isAllPred = true; int[] slaveRetArray = new int[size]; for (int i = 0; i < size; i++) { slaveRetArray[i] = slaveSaResArray[i].prepare(slaveXidArray[i]); if (slaveRetArray[i] == XAResource.XA_OK) { continue; } else { isAllPred = false; break; } } if (isAllPred) { for (int i = 0; i < size; i++) { slaveSaResArray[i].commit(slaveXidArray[i], false); } success = true; } } catch (XAException e) { LOG.error("get user auth on dbs error, user=" + who + ", msg=" + e.getMessage()); throw new MetaException(e.getMessage()); } } catch (SQLException e) { LOG.error("get user auth on dbs error, user=" + who + ", msg=" + e.getMessage()); throw new MetaException(e.getMessage()); } finally { for (int i = 0; i < size; i++) { closeConnection(slaveConArray[i]); closeXAConnection(slaveDSXaConnArray[i]); } } if (success) { return dbPrivs; } else { return null; } }
From source file:org.apache.hadoop.hive.metastore.MyXid.java
public List<DbPriv> getDbAuthAllByDistributeTransaction() throws MetaException { boolean success = false; List<DbPriv> dbPrivs = new ArrayList<DbPriv>(); Set<String> slaveURLSet = getAllSegments(); int size = slaveURLSet.size(); PGXADataSource[] slaveDSArray = new PGXADataSource[size]; XAConnection[] slaveDSXaConnArray = new XAConnection[size]; XAResource[] slaveSaResArray = new XAResource[size]; Connection[] slaveConArray = new Connection[size]; Statement[] slaveStmtArray = new Statement[size]; Xid[] slaveXidArray = new Xid[size]; int index = 0; for (String slaveURL : slaveURLSet) { slaveDSArray[index] = getXADataSource(slaveURL, user, passwd); index++;//from ww w. j a v a 2 s . c o m } int formatID = genFormatID(); try { for (int i = 0; i < size; i++) { slaveDSXaConnArray[i] = slaveDSArray[i].getXAConnection(); slaveSaResArray[i] = slaveDSXaConnArray[i].getXAResource(); slaveConArray[i] = slaveDSXaConnArray[i].getConnection(); slaveStmtArray[i] = slaveConArray[i].createStatement(); byte id1 = (byte) ((i + 2) * 2); byte id2 = (byte) (id1 + 1); slaveXidArray[i] = new MyXid(formatID, new byte[] { id1 }, new byte[] { id2 }); } try { for (int i = 0; i < size; i++) { slaveSaResArray[i].start(slaveXidArray[i], XAResource.TMNOFLAGS); ResultSet dbPrivSet = slaveStmtArray[i] .executeQuery("select alter_priv, create_priv, createview_priv, " + "delete_priv, drop_priv, index_priv, insert_priv, select_priv, " + "showview_priv, update_priv, db_name, user_name from dbpriv "); while (dbPrivSet.next()) { DbPriv dbPriv = new DbPriv(); dbPriv.setAlterPriv(dbPrivSet.getBoolean(1)); dbPriv.setCreatePriv(dbPrivSet.getBoolean(2)); dbPriv.setCreateviewPriv(dbPrivSet.getBoolean(3)); dbPriv.setDeletePriv(dbPrivSet.getBoolean(4)); dbPriv.setDropPriv(dbPrivSet.getBoolean(5)); dbPriv.setIndexPriv(dbPrivSet.getBoolean(6)); dbPriv.setInsertPriv(dbPrivSet.getBoolean(7)); dbPriv.setSelectPriv(dbPrivSet.getBoolean(8)); dbPriv.setShowviewPriv(dbPrivSet.getBoolean(9)); dbPriv.setUpdatePriv(dbPrivSet.getBoolean(10)); dbPriv.setDb(dbPrivSet.getString(11)); dbPriv.setUser(dbPrivSet.getString(12)); dbPrivs.add(dbPriv); } slaveSaResArray[i].end(slaveXidArray[i], XAResource.TMSUCCESS); } boolean isAllPred = true; int[] slaveRetArray = new int[size]; for (int i = 0; i < size; i++) { slaveRetArray[i] = slaveSaResArray[i].prepare(slaveXidArray[i]); if (slaveRetArray[i] == XAResource.XA_OK) { continue; } else { isAllPred = false; break; } } if (isAllPred) { for (int i = 0; i < size; i++) { slaveSaResArray[i].commit(slaveXidArray[i], false); } success = true; } } catch (XAException e) { LOG.error("get all user auth on dbs error, msg=" + e.getMessage()); throw new MetaException(e.getMessage()); } } catch (SQLException e) { LOG.error("get all user auth on dbs error, msg=" + e.getMessage()); e.printStackTrace(); throw new MetaException(e.getMessage()); } finally { for (int i = 0; i < size; i++) { closeConnection(slaveConArray[i]); closeXAConnection(slaveDSXaConnArray[i]); } } if (success) { return dbPrivs; } else { return null; } }
From source file:org.apache.hadoop.hive.metastore.MyXid.java
public boolean dropAuthInDbByDistributeTransaction(String who) throws MetaException { boolean success = false; Set<String> slaveURLSet = getAllSegments(); int size = slaveURLSet.size(); PGXADataSource[] slaveDSArray = new PGXADataSource[size]; XAConnection[] slaveDSXaConnArray = new XAConnection[size]; XAResource[] slaveSaResArray = new XAResource[size]; Connection[] slaveConArray = new Connection[size]; Statement[] slaveStmtArray = new Statement[size]; Xid[] slaveXidArray = new Xid[size]; who = who.toLowerCase();/*from ww w . j a v a2s . c o m*/ int index = 0; for (String slaveURL : slaveURLSet) { slaveDSArray[index] = getXADataSource(slaveURL, user, passwd); index++; } int formatID = genFormatID(); try { for (int i = 0; i < size; i++) { slaveDSXaConnArray[i] = slaveDSArray[i].getXAConnection(); slaveSaResArray[i] = slaveDSXaConnArray[i].getXAResource(); slaveConArray[i] = slaveDSXaConnArray[i].getConnection(); slaveStmtArray[i] = slaveConArray[i].createStatement(); byte id1 = (byte) ((i + 2) * 2); byte id2 = (byte) (id1 + 1); slaveXidArray[i] = new MyXid(formatID, new byte[] { id1 }, new byte[] { id2 }); } try { for (int i = 0; i < size; i++) { slaveSaResArray[i].start(slaveXidArray[i], XAResource.TMNOFLAGS); slaveStmtArray[i] .executeUpdate("delete from dbpriv where user_name='" + who.toLowerCase() + "'"); slaveSaResArray[i].end(slaveXidArray[i], XAResource.TMSUCCESS); } boolean isAllPred = true; int[] slaveRetArray = new int[size]; for (int i = 0; i < size; i++) { slaveRetArray[i] = slaveSaResArray[i].prepare(slaveXidArray[i]); if (slaveRetArray[i] == XAResource.XA_OK) { continue; } else { isAllPred = false; break; } } if (isAllPred) { for (int i = 0; i < size; i++) { slaveSaResArray[i].commit(slaveXidArray[i], false); } success = true; } } catch (XAException e) { LOG.error("drop auth in db error, who=" + who + ", msg=" + e.getMessage()); } } catch (SQLException e) { LOG.error("drop auth in db error, who=" + who + ", msg=" + e.getMessage()); throw new MetaException(e.getMessage()); } finally { for (int i = 0; i < size; i++) { closeConnection(slaveConArray[i]); closeXAConnection(slaveDSXaConnArray[i]); } } return success; }
From source file:org.apache.hadoop.hive.metastore.MyXid.java
public List<TblPriv> getAuthOnTblsByDistributeTransaction(String who) throws MetaException { boolean success = false; List<TblPriv> tblPrivs = new ArrayList<TblPriv>(); Set<String> slaveURLSet = getAllSegments(); int size = slaveURLSet.size(); PGXADataSource[] slaveDSArray = new PGXADataSource[size]; XAConnection[] slaveDSXaConnArray = new XAConnection[size]; XAResource[] slaveSaResArray = new XAResource[size]; Connection[] slaveConArray = new Connection[size]; Statement[] slaveStmtArray = new Statement[size]; Xid[] slaveXidArray = new Xid[size]; who = who.toLowerCase();// ww w .j a v a2 s .c o m int index = 0; for (String slaveURL : slaveURLSet) { slaveDSArray[index] = getXADataSource(slaveURL, user, passwd); index++; } int formatID = genFormatID(); try { for (int i = 0; i < size; i++) { slaveDSXaConnArray[i] = slaveDSArray[i].getXAConnection(); slaveSaResArray[i] = slaveDSXaConnArray[i].getXAResource(); slaveConArray[i] = slaveDSXaConnArray[i].getConnection(); slaveStmtArray[i] = slaveConArray[i].createStatement(); byte id1 = (byte) ((i + 2) * 2); byte id2 = (byte) (id1 + 1); slaveXidArray[i] = new MyXid(formatID, new byte[] { id1 }, new byte[] { id2 }); } try { for (int i = 0; i < size; i++) { slaveSaResArray[i].start(slaveXidArray[i], XAResource.TMNOFLAGS); ResultSet tblPrivSet = slaveStmtArray[i] .executeQuery("select alter_priv, create_priv, delete_priv " + ",drop_priv, index_priv, insert_priv, select_priv, update_priv, db_name, tbl_name" + " from tblpriv where user_name='" + who.toLowerCase() + "'"); while (tblPrivSet.next()) { TblPriv tblPriv = new TblPriv(); tblPriv.setAlterPriv(tblPrivSet.getBoolean(1)); tblPriv.setCreatePriv(tblPrivSet.getBoolean(2)); tblPriv.setDeletePriv(tblPrivSet.getBoolean(3)); tblPriv.setDropPriv(tblPrivSet.getBoolean(4)); tblPriv.setIndexPriv(tblPrivSet.getBoolean(5)); tblPriv.setInsertPriv(tblPrivSet.getBoolean(6)); tblPriv.setSelectPriv(tblPrivSet.getBoolean(7)); tblPriv.setUpdatePriv(tblPrivSet.getBoolean(8)); tblPriv.setDb(tblPrivSet.getString(9)); tblPriv.setTbl(tblPrivSet.getString(10)); tblPriv.setUser(who); tblPrivs.add(tblPriv); } slaveSaResArray[i].end(slaveXidArray[i], XAResource.TMSUCCESS); } boolean isAllPred = true; int[] slaveRetArray = new int[size]; for (int i = 0; i < size; i++) { slaveRetArray[i] = slaveSaResArray[i].prepare(slaveXidArray[i]); if (slaveRetArray[i] == XAResource.XA_OK) { continue; } else { isAllPred = false; break; } } if (isAllPred) { for (int i = 0; i < size; i++) { slaveSaResArray[i].commit(slaveXidArray[i], false); } success = true; } } catch (XAException e) { LOG.error("get user auth on tbls error, user=" + who + ", msg=" + e.getMessage()); throw new MetaException(e.getMessage()); } } catch (SQLException e) { LOG.error("get user auth on tbls error, user=" + who + ", msg=" + e.getMessage()); throw new MetaException(e.getMessage()); } finally { for (int i = 0; i < size; i++) { closeConnection(slaveConArray[i]); closeXAConnection(slaveDSXaConnArray[i]); } } if (success) { return tblPrivs; } else { return null; } }
From source file:org.apache.hadoop.hive.metastore.MyXid.java
public List<TblPriv> getAuthOnAllTblsByDistributeTransaction() throws MetaException { boolean success = false; List<TblPriv> tblPrivs = new ArrayList<TblPriv>(); Set<String> slaveURLSet = getAllSegments(); int size = slaveURLSet.size(); PGXADataSource[] slaveDSArray = new PGXADataSource[size]; XAConnection[] slaveDSXaConnArray = new XAConnection[size]; XAResource[] slaveSaResArray = new XAResource[size]; Connection[] slaveConArray = new Connection[size]; Statement[] slaveStmtArray = new Statement[size]; Xid[] slaveXidArray = new Xid[size]; int index = 0; for (String slaveURL : slaveURLSet) { slaveDSArray[index] = getXADataSource(slaveURL, user, passwd); index++;/*from w ww. ja va 2s. c o m*/ } int formatID = genFormatID(); try { for (int i = 0; i < size; i++) { slaveDSXaConnArray[i] = slaveDSArray[i].getXAConnection(); slaveSaResArray[i] = slaveDSXaConnArray[i].getXAResource(); slaveConArray[i] = slaveDSXaConnArray[i].getConnection(); slaveStmtArray[i] = slaveConArray[i].createStatement(); byte id1 = (byte) ((i + 2) * 2); byte id2 = (byte) (id1 + 1); slaveXidArray[i] = new MyXid(formatID, new byte[] { id1 }, new byte[] { id2 }); } try { for (int i = 0; i < size; i++) { slaveSaResArray[i].start(slaveXidArray[i], XAResource.TMNOFLAGS); ResultSet tblPrivSet = slaveStmtArray[i] .executeQuery("select alter_priv, create_priv, delete_priv " + ",drop_priv, index_priv, insert_priv, select_priv, update_priv, user_name, db_name, tbl_name" + " from tblpriv"); while (tblPrivSet.next()) { TblPriv tblPriv = new TblPriv(); tblPriv.setAlterPriv(tblPrivSet.getBoolean(1)); tblPriv.setCreatePriv(tblPrivSet.getBoolean(2)); tblPriv.setDeletePriv(tblPrivSet.getBoolean(3)); tblPriv.setDropPriv(tblPrivSet.getBoolean(4)); tblPriv.setIndexPriv(tblPrivSet.getBoolean(5)); tblPriv.setInsertPriv(tblPrivSet.getBoolean(6)); tblPriv.setSelectPriv(tblPrivSet.getBoolean(7)); tblPriv.setUpdatePriv(tblPrivSet.getBoolean(8)); tblPriv.setUser(tblPrivSet.getString(9)); tblPriv.setDb(tblPrivSet.getString(10)); tblPriv.setTbl(tblPrivSet.getString(11)); tblPrivs.add(tblPriv); } slaveSaResArray[i].end(slaveXidArray[i], XAResource.TMSUCCESS); } boolean isAllPred = true; int[] slaveRetArray = new int[size]; for (int i = 0; i < size; i++) { slaveRetArray[i] = slaveSaResArray[i].prepare(slaveXidArray[i]); if (slaveRetArray[i] == XAResource.XA_OK) { continue; } else { isAllPred = false; break; } } if (isAllPred) { for (int i = 0; i < size; i++) { slaveSaResArray[i].commit(slaveXidArray[i], false); } success = true; } } catch (XAException e) { LOG.error("get user auth on all tbls error, msg=" + e.getMessage()); throw new MetaException(e.getMessage()); } } catch (SQLException e) { LOG.error("get user auth on all tbls error, msg=" + e.getMessage()); throw new MetaException(e.getMessage()); } finally { for (int i = 0; i < size; i++) { closeConnection(slaveConArray[i]); closeXAConnection(slaveDSXaConnArray[i]); } } if (success) { return tblPrivs; } else { return null; } }
From source file:org.apache.hadoop.hive.metastore.MyXid.java
public boolean dropAuthInTblByDistributeTransaction(String who) throws MetaException { boolean success = false; Set<String> slaveURLSet = getAllSegments(); int size = slaveURLSet.size(); PGXADataSource[] slaveDSArray = new PGXADataSource[size]; XAConnection[] slaveDSXaConnArray = new XAConnection[size]; XAResource[] slaveSaResArray = new XAResource[size]; Connection[] slaveConArray = new Connection[size]; Statement[] slaveStmtArray = new Statement[size]; Xid[] slaveXidArray = new Xid[size]; who = who.toLowerCase();//w w w. j a va2 s . c o m int index = 0; for (String slaveURL : slaveURLSet) { slaveDSArray[index] = getXADataSource(slaveURL, user, passwd); index++; } int formatID = genFormatID(); try { for (int i = 0; i < size; i++) { slaveDSXaConnArray[i] = slaveDSArray[i].getXAConnection(); slaveSaResArray[i] = slaveDSXaConnArray[i].getXAResource(); slaveConArray[i] = slaveDSXaConnArray[i].getConnection(); slaveStmtArray[i] = slaveConArray[i].createStatement(); byte id1 = (byte) ((i + 2) * 2); byte id2 = (byte) (id1 + 1); slaveXidArray[i] = new MyXid(formatID, new byte[] { id1 }, new byte[] { id2 }); } try { for (int i = 0; i < size; i++) { slaveSaResArray[i].start(slaveXidArray[i], XAResource.TMNOFLAGS); slaveStmtArray[i] .executeUpdate("delete from tblpriv where user_name='" + who.toLowerCase() + "'"); slaveSaResArray[i].end(slaveXidArray[i], XAResource.TMSUCCESS); } boolean isAllPred = true; int[] slaveRetArray = new int[size]; for (int i = 0; i < size; i++) { slaveRetArray[i] = slaveSaResArray[i].prepare(slaveXidArray[i]); if (slaveRetArray[i] == XAResource.XA_OK) { continue; } else { isAllPred = false; break; } } if (isAllPred) { for (int i = 0; i < size; i++) { slaveSaResArray[i].commit(slaveXidArray[i], false); } success = true; } } catch (XAException e) { LOG.error("drop auth in tbl error, who=" + who + ", msg=" + e.getMessage()); } } catch (SQLException e) { LOG.error("drop auth in tbl error, who=" + who + ", msg=" + e.getMessage()); throw new MetaException(e.getMessage()); } finally { for (int i = 0; i < size; i++) { closeConnection(slaveConArray[i]); closeXAConnection(slaveDSXaConnArray[i]); } } return success; }