[ https://issues.apache.org/jira/browse/HIVE-10521?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14524355#comment-14524355 ]
Eugene Koifman commented on HIVE-10521: --------------------------------------- [~alangates], if commit is only called once in timeOutTxns(), why break up the delete into multiple statement? The patch works functionally as is, but but wouldn't it be better to read the whole list of txn ids into memory and then commit each abort bach separately? It would probably make deadlocks less likely if transactions are shorter. > TxnHandler.timeOutTxns only times out some of the expired transactions > ---------------------------------------------------------------------- > > Key: HIVE-10521 > URL: https://issues.apache.org/jira/browse/HIVE-10521 > Project: Hive > Issue Type: Bug > Components: Transactions > Affects Versions: 0.14.0, 1.0.0, 1.1.0 > Reporter: Alan Gates > Assignee: Alan Gates > Attachments: HIVE-10521.2.patch, HIVE-10521.3.patch, HIVE-10521.patch > > > {code} > for (int i = 0; i < 20 && rs.next(); i++) deadTxns.add(rs.getLong(1)); > // We don't care whether all of the transactions get deleted or not, > // if some didn't it most likely means someone else deleted them in the > interum > if (deadTxns.size() > 0) abortTxns(dbConn, deadTxns); > {code} > While it makes sense to limit the number of transactions aborted in one pass > (since this get's translated to an IN clause) we should still make sure all > are timed out. Also, 20 seems pretty small as a batch size. -- This message was sent by Atlassian JIRA (v6.3.4#6332)