phoenix-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Vincent Poon (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (PHOENIX-4130) Avoid server retries for mutable indexes
Date Fri, 01 Dec 2017 23:49:00 GMT

     [ https://issues.apache.org/jira/browse/PHOENIX-4130?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]

Vincent Poon updated PHOENIX-4130:
----------------------------------
    Attachment: PHOENIX-4130.v1.master.patch

[~jamestaylor] Here's a v1 patch

The server-server index write rpc is only tried once.  If there's a failure, the indexDisableTimestamp
is set but the index is left PENDING_ACTIVE, and the IndexWriteException is thrown back to
the client.  The HBase client will try up to its configured number of retries.  After those
are exhausted, in MutationState the exception is handled and the index is disabled there.

Note that we have existing config options for disableIndexOnWriteFailure and throwExceptionOnWriteFailure,
but since the client disables the index by receiving the write exception from the server,
it no longer makes sense to have the combination:
disableIndexOnWriteFailure=true , throwExceptionOnWriteFailure = false

LMK what you think

> Avoid server retries for mutable indexes
> ----------------------------------------
>
>                 Key: PHOENIX-4130
>                 URL: https://issues.apache.org/jira/browse/PHOENIX-4130
>             Project: Phoenix
>          Issue Type: Improvement
>            Reporter: Lars Hofhansl
>            Assignee: Vincent Poon
>             Fix For: 4.14.0
>
>         Attachments: PHOENIX-4130.v1.master.patch
>
>
> Had some discussions with [~jamestaylor], [~samarthjain], and [~vincentpoon], during
which I suggested that we can possibly eliminate retry loops happening at the server that
cause the handler threads to be stuck potentially for quite a while (at least multiple seconds
to ride over common scenarios like splits).
> Instead we can do the retries at the Phoenix client that.
> So:
> # The index updates are not retried on the server. (retries = 0)
> # A failed index update would set the failed index timestamp but leave the index enabled.
> # Now the handler thread is done, it throws an appropriate exception back to the client.
> # The Phoenix client can now retry. When those retries fail the index is disabled (if
the policy dictates that) and throw the exception back to its caller.
> So no more waiting is needed on the server, handler threads are freed immediately.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Mime
View raw message