[
https://issues.apache.org/jira/browse/HBASE-3787?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13820494#comment-13820494
]
Nick Dimiduk commented on HBASE-3787:
-------------------------------------
RB is broken today. Let me attempt to provide context and comment here.
>From NonceGenerator.
{quote}
Random generation is just bunch of arithmetic and one CAS. Do you suspect there
will be contention from many threads running the increments?
Can you provide more details for impact from benchmark?
{quote}
I'm thinking less of contention and more about the CPU time necessary for the
arithmetic. I haven't investigated the implementation to understand why, so
perhaps my comment is ungrounded. Specifically I'm referring to this comment in
PerfEval#generateData method
{noformat}
/*
* This method takes some time and is done inline uploading data. For
* example, doing the mapfile test, generation of the key and value
* consumes about 30% of CPU time.
* @return Generated random value to insert into a table cell.
*/
{noformat}
In that case, the system is generating ~1k random ints per loop iteration.
You're generating far fewer, so maybe it's a non-issue?
>From TestMultiParallel.
bq. yes, they are. It's assertTrue(false) essentially
Right. As I understand it, JUnit asserts are represented as thrown Exceptions.
Because the source of the exception is within a running thread, those
exceptions must be aggregated and re-thrown in order for the calling context to
respect them.
> Increment is non-idempotent but client retries RPC
> --------------------------------------------------
>
> Key: HBASE-3787
> URL: https://issues.apache.org/jira/browse/HBASE-3787
> Project: HBase
> Issue Type: Bug
> Components: Client
> Affects Versions: 0.94.4, 0.95.2
> Reporter: dhruba borthakur
> Assignee: Sergey Shelukhin
> Priority: Blocker
> Attachments: HBASE-3787-partial.patch, HBASE-3787-v0.patch,
> HBASE-3787-v1.patch, HBASE-3787-v10.patch, HBASE-3787-v2.patch,
> HBASE-3787-v3.patch, HBASE-3787-v4.patch, HBASE-3787-v5.patch,
> HBASE-3787-v5.patch, HBASE-3787-v6.patch, HBASE-3787-v7.patch,
> HBASE-3787-v8.patch, HBASE-3787-v9.patch
>
>
> The HTable.increment() operation is non-idempotent. The client retries the
> increment RPC a few times (as specified by configuration) before throwing an
> error to the application. This makes it possible that the same increment call
> be applied twice at the server.
> For increment operations, is it better to use
> HConnectionManager.getRegionServerWithoutRetries()? Another option would be
> to enhance the IPC module to make the RPC server correctly identify if the
> RPC is a retry attempt and handle accordingly.
--
This message was sent by Atlassian JIRA
(v6.1#6144)