private LockRequest createLockRequest(final String dbName, final String tableName) throws TException { UserGroupInformation loggedInUser = null; String username; try { loggedInUser = UserGroupInformation.getLoginUser(); } catch (IOException e) { LOG.warn("Unable to get logged in user via UGI. err: {}", e.getMessage()); } if (loggedInUser == null) { username = System.getProperty("user.name"); } else { username = loggedInUser.getShortUserName(); } long txnId = getMsc().openTxn(username); String agentInfo = Thread.currentThread().getName(); LockRequestBuilder requestBuilder = new LockRequestBuilder(agentInfo); requestBuilder.setUser(username); requestBuilder.setTransactionId(txnId); LockComponentBuilder lockCompBuilder = new LockComponentBuilder() .setDbName(dbName) .setTableName(tableName) .setIsTransactional(true) .setExclusive() // WriteType is DDL_EXCLUSIVE for MSCK REPAIR so we need NO_TXN. Refer AcidUtils.makeLockComponents .setOperationType(DataOperationType.NO_TXN); requestBuilder.addLockComponent(lockCompBuilder.build()); LOG.info("Created lock(X) request with info - user: {} txnId: {} agentInfo: {} dbName: {} tableName: {}", username, txnId, agentInfo, dbName, tableName); return requestBuilder.build(); }
rqstBuilder.setTransactionId(txnId) .setUser(username);
private static LockRequest createLockRequest(final HiveEndPoint hiveEndPoint, String partNameForLock, String user, long txnId, String agentInfo) { LockRequestBuilder rqstBuilder = agentInfo == null ? new LockRequestBuilder() : new LockRequestBuilder(agentInfo); rqstBuilder.setUser(user); rqstBuilder.setTransactionId(txnId); LockComponentBuilder lockCompBuilder = new LockComponentBuilder() .setDbName(hiveEndPoint.database) .setTableName(hiveEndPoint.table) .setShared() .setOperationType(DataOperationType.INSERT); if (partNameForLock!=null && !partNameForLock.isEmpty() ) { lockCompBuilder.setPartitionName(partNameForLock); } rqstBuilder.addLockComponent(lockCompBuilder.build()); return rqstBuilder.build(); } } // class TransactionBatchImpl
private LockRequest buildLockRequest(Long transactionId) { if (transactionId == null && !sinks.isEmpty()) { throw new IllegalArgumentException("Cannot sink to tables outside of a transaction: sinks=" + asStrings(sinks)); } LockRequestBuilder requestBuilder = new LockRequestBuilder(); for (Table table : tables) { LockComponentBuilder componentBuilder = new LockComponentBuilder().setDbName(table.getDbName()).setTableName( table.getTableName()); //todo: DataOperationType is set conservatively here, we'd really want to distinguish update/delete //and insert/select and if resource (that is written to) is ACID or not if (sinks.contains(table)) { componentBuilder.setSemiShared().setOperationType(DataOperationType.UPDATE).setIsTransactional(true); } else { componentBuilder.setShared().setOperationType(DataOperationType.INSERT).setIsTransactional(true); } LockComponent component = componentBuilder.build(); requestBuilder.addLockComponent(component); } if (transactionId != null) { requestBuilder.setTransactionId(transactionId); } LockRequest request = requestBuilder.setUser(user).build(); return request; }
private static LockRequest createLockRequest(final HiveStreamingConnection connection, String partNameForLock, String user, long txnId, String agentInfo) { LockRequestBuilder requestBuilder = new LockRequestBuilder(agentInfo); requestBuilder.setUser(user); requestBuilder.setTransactionId(txnId); LockComponentBuilder lockCompBuilder = new LockComponentBuilder() .setDbName(connection.getDatabase()) .setTableName(connection.getTable().getTableName()) .setShared() .setOperationType(DataOperationType.INSERT); if (connection.isDynamicPartitioning()) { lockCompBuilder.setIsDynamicPartitionWrite(true); } if (partNameForLock != null && !partNameForLock.isEmpty()) { lockCompBuilder.setPartitionName(partNameForLock); } requestBuilder.addLockComponent(lockCompBuilder.build()); return requestBuilder.build(); }
rqstBuilder.setTransactionId(txnId) .setUser(username);
rqstBuilder.setTransactionId(txnid) .addLockComponent(new LockComponentBuilder() .setDbName("mydb")
private static LockRequest createLockRequest(final HiveEndPoint hiveEndPoint, String partNameForLock, String user, long txnId) { LockRequestBuilder rqstBuilder = new LockRequestBuilder(); rqstBuilder.setUser(user); rqstBuilder.setTransactionId(txnId); LockComponentBuilder lockCompBuilder = new LockComponentBuilder() .setDbName(hiveEndPoint.database) .setTableName(hiveEndPoint.table) .setShared(); if (partNameForLock!=null && !partNameForLock.isEmpty() ) { lockCompBuilder.setPartitionName(partNameForLock); } rqstBuilder.addLockComponent(lockCompBuilder.build()); return rqstBuilder.build(); } } // class TransactionBatchImpl
static LockRequest createLockRequest(final HiveStreamingConnection connection, String partNameForLock, String user, long txnId, String agentInfo) { LockRequestBuilder requestBuilder = new LockRequestBuilder(agentInfo); requestBuilder.setUser(user); requestBuilder.setTransactionId(txnId); LockComponentBuilder lockCompBuilder = new LockComponentBuilder() .setDbName(connection.database) .setTableName(connection.table) .setShared() .setOperationType(DataOperationType.INSERT); if (connection.isDynamicPartitioning()) { lockCompBuilder.setIsDynamicPartitionWrite(true); } if (partNameForLock != null && !partNameForLock.isEmpty()) { lockCompBuilder.setPartitionName(partNameForLock); } requestBuilder.addLockComponent(lockCompBuilder.build()); return requestBuilder.build(); } }
rqstBuilder.setTransactionId(txnId) .setUser(username);