[
https://issues.apache.org/jira/browse/HIVE-1482?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12895344#action_12895344
]
John Sichi commented on HIVE-1482:
----------------------------------
Yes, synchronized is the way to go.
I think the synchronization has to be at the connection level. For example,
HiveStatement also needs to make calls on the thrift interface. It's not just
DatabaseMetaData.
So we should add a new data member to HiveConnection:
Object connectionMutex = new Object();
Then pass connectionMutex to constructors of sub-objects which need to
participate in synchronization. They can then do
synchronized(connectionMutex) {
...
}
around their critical sections.
Creating a separate object for this purpose allows us to keep control over
synchronization (e.g. so it doesn't get mixed up with user-level or
thrift-level synchronization code later). We'll also need to be able to skip
synchronization in the case of asynchronous cancel, but that's a separate task.
We should also review to see if there is any client-side state which needs
protection.
> Not all jdbc calls are threadsafe.
> ----------------------------------
>
> Key: HIVE-1482
> URL: https://issues.apache.org/jira/browse/HIVE-1482
> Project: Hadoop Hive
> Issue Type: Bug
> Components: Drivers
> Affects Versions: 0.7.0
> Reporter: Bennie Schut
> Fix For: 0.7.0
>
>
> As per jdbc spec they should be threadsafe:
> http://download.oracle.com/docs/cd/E17476_01/javase/1.3/docs/guide/jdbc/spec/jdbc-spec.frame9.html
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.