[
https://issues.apache.org/jira/browse/HIVE-13725?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15349028#comment-15349028
]
Eugene Koifman commented on HIVE-13725:
---------------------------------------
TransactionBatchImpl has "this.heartbeaterMSClient = msClient;" this looks
wrong
In DbTxnManager, instead of
bq. private static int heartbeaterMSClientCount = 0;
bq. private static Object heartBeaterClientCountLock = new Object();
can heartbeaterMSClientCount be AtomicInteger?
I also think that doing "LOG.warn("The number of hearbeater metastore client
has ex..." from synchronized block is suboptimal.
I would also modify the message to include both current client count and thread
count. I think it would be more useful.
> ACID: Streaming API should synchronize calls when multiple threads use the
> same endpoint
> ----------------------------------------------------------------------------------------
>
> Key: HIVE-13725
> URL: https://issues.apache.org/jira/browse/HIVE-13725
> Project: Hive
> Issue Type: Bug
> Components: HCatalog, Metastore, Transactions
> Affects Versions: 1.2.1, 2.0.0
> Reporter: Vaibhav Gumashta
> Assignee: Vaibhav Gumashta
> Priority: Critical
> Labels: ACID, Streaming
> Attachments: HIVE-13725.1.patch, HIVE-13725.2.patch,
> HIVE-13725.3.patch, HIVE-13725.4.patch
>
>
> Currently, the streaming endpoint creates a metastore client which gets used
> for RPC. The client itself is not internally thread safe. Therefore, the API
> methods should provide the relevant synchronization so that the methods can
> be called from different threads. A sample use case is as follows:
> 1. Thread 1 creates a streaming endpoint and opens a txn batch.
> 2. Thread 2 heartbeats the txn batch.
> With the current impl, this can result in an "out of sequence response",
> since the response of the calls in thread1 might end up going to thread2 and
> vice-versa.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)