[
https://issues.apache.org/jira/browse/HIVE-8711?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14198675#comment-14198675
]
Alan Gates commented on HIVE-8711:
----------------------------------
bq. 1. TxnHandler.detectDeadlock() - I think it makes sense to implement it
like getDbTime() so that checks only what is expected for a given DB type. For
example, if Oracle throws 40001, current code will assume it's a deadlock.
Makes sense, will do.
bq. 2. DeadLockCreator - it seems that it can easily guarantee deadlock by
calling updateTxns(conn1), updateLocks(conn2), updateLocks(conn1). It could
then be enabled permanently.
I tried that first, but on both mysql and derby it didn't generate a deadlock.
It died with a lock timeout, and took over a minute to do so. With the current
two thread test both dbs detect the deadlock and throw an exception within a
few seconds.
bq.3. Nit: why are constants in TxnHandler, such as LOCK_ACQUIRED 'protected'
They are only used in test code which is the same package as TxnHandler.
Personal preference. "protected" says to me that this still belongs to this
class. With package level I'm never sure if I meant to make it package level
or just forgot to put a modifier.
4. This not related to this bug, but MetaStoreThread.BooleanPointer() has
multiple threads reading/writing a boolean variable which is not volatile or
AtomicBoolean... this looks like a recipe for trouble
We can file a separate JIRA for that. In practice, it's only written in tests
and read in production code, so I don't expect to see any issues, but it's best
to fix it before someone forgets the original intent and writes to it in
production code.
> DB deadlocks not handled in TxnHandler for Postgres, Oracle, and SQLServer
> --------------------------------------------------------------------------
>
> Key: HIVE-8711
> URL: https://issues.apache.org/jira/browse/HIVE-8711
> Project: Hive
> Issue Type: Bug
> Components: Transactions
> Affects Versions: 0.14.0
> Reporter: Alan Gates
> Assignee: Alan Gates
> Priority: Critical
> Fix For: 0.14.0
>
> Attachments: HIVE-8711.patch
>
>
> TxnHandler.detectDeadlock has code to catch deadlocks in MySQL and Derby.
> But it does not detect a deadlock for Postgres, Oracle, or SQLServer
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)