[
https://issues.apache.org/jira/browse/SENTRY-1593?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15959800#comment-15959800
]
Alexander Kolbasov commented on SENTRY-1593:
--------------------------------------------
I would suggest a bit different class structure. For the base class used by
various default implementations:
{code}
/**
* General representation of transport connection to Sentry
*/
public interface SentrySocket extends AutoCloseable {
/**
* Connect to the Sentry server
* @throws IOException
*/
void connect() throws IOException;
}
{code}
Specific implementations would loke like this:
{code}
public class SentryGenericServiceClientDefaultImpl
implements SentryGenericServiceClient, SentrySocket {
{code}
The SentryServiceClientTransportDefaultImpl can be renamed to a stand-alone
class
{code}
**
* Generate Thrift transports suitable for talking to Sentry
*/
public final class SentryTransportFactory {
...
public TTransport connect() throws IOException {
// Connect to one of multiple servers
}
{code}
Specific impl classes will the do
{code}
private final SentryTransportFactory transportFactory;
...
// Constructor
transportFactory = new SentryTransportFactory(conf, transportConfig);
...
@Override
public void connect() throws IOException {
if (isOpen()) {
return;
}
transport = transportFactory.connect();
...
@Override
public void close() {
transport.close();
}
{code}
And the RetryClientInvocationHandler will do
{code}
while (retryCount < retries) {
// Connect to a sentry server if not connected yet.
try {
client.connect();
} catch (IOException e) {
// Increase the retry num
// Retry when the exception is caused by connection problem.
retryCount++;
client.close();
continue;
}
...
{code}
> Implement client failover for Generic and NN clients
> ----------------------------------------------------
>
> Key: SENTRY-1593
> URL: https://issues.apache.org/jira/browse/SENTRY-1593
> Project: Sentry
> Issue Type: Sub-task
> Components: Sentry
> Affects Versions: sentry-ha-redesign
> Reporter: Alexander Kolbasov
> Assignee: kalyan kumar kalvagadda
> Priority: Blocker
> Labels: HA
> Fix For: sentry-ha-redesign
>
> Attachments: old_service_client_class_diagram.png,
> SENTRY-1593.001-sentry-ha-redesign.patch,
> SENTRY-1593.002-sentry-ha-redesign.patch,
> SENTRY-1593.003-sentry-ha-redesign.patch,
> SENTRY-1593.004-sentry-ha-redesign.patch,
> SENTRY-1593.005-sentry-ha-redesign.patch,
> SENTRY-1593.006-sentry-ha-redesign.patch, service_client_class_diagram.png
>
>
> We need to have client failover logic for Generic service clients and Name
> Node clients. Currently only db policy clients have it implemented.
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)