hadoop-hdfs-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bharat Viswanadham (JIRA)" <j...@apache.org>
Subject [jira] [Comment Edited] (HDDS-444) Add rest service to the s3gateway
Date Tue, 25 Sep 2018 05:00:00 GMT

    [ https://issues.apache.org/jira/browse/HDDS-444?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16626771#comment-16626771

Bharat Viswanadham edited comment on HDDS-444 at 9/25/18 4:59 AM:

I will commit this patch shortly.

Will fix the jenkins issue during committing the patch.

Test failures are not related to this patch.

was (Author: bharatviswa):
I will commit this patch shortly.

Will fix the jenkins issue during committing the patch.

> Add rest service to the s3gateway
> ---------------------------------
>                 Key: HDDS-444
>                 URL: https://issues.apache.org/jira/browse/HDDS-444
>             Project: Hadoop Distributed Data Store
>          Issue Type: Sub-task
>            Reporter: Elek, Marton
>            Assignee: Elek, Marton
>            Priority: Major
>              Labels: newbie
>         Attachments: HDDS-444.001.patch, HDDS-444.002.patch, HDDS-444.003.patch, HDDS-444.004.patch,
> The next step is after HDDS-441 is to add a rest server to the s3gateway service.
> For the http server the obvious choice is to use org.apache.hadoop.http.HttpServer2.
We also have a org.apache.hadoop.hdds.server.BaseHttpServer which helps to create the HttpServer2.
> In hadoop usually the jersey 1.19 is used. I prefer to exclude jersey dependency from
the s3gateway and add the latest jersey2. Hopefully it also could be initialized easily, similar
to HttpServer2.addJerseyResourcePackage
> The trickiest part is the resource handling. By default the input parameter of the jersey
is the JAX-RS resource class and jersey creates new instances from the specified resource
> But with this approach we can't inject other components (such as the OzoneClient) to
the resource classes. In Hadoop usually a singleton is used or the reference object is injected
to the ServletContext. Both of these are just workaround and make the testing harder.
> I propose to use some lightweight managed dependency injection:
>  # If we can use and JettyApi to instantiate the resource classes, that would be the
easiest one.
>  # Using a simple CDI framework like dagger, also would help. Dagger is very lightweight,
it doesn't support request scoped objects just simple @Inject annotations, but hopefully we
won't need fancy new features.
>  # The most complex solution would be to use CDI or Guice. CDI seems to be more nature
choice for the JAX-RS. It can be checked how easy is to integrate Weld to the Jetty + Jersey
> The expected end result of this task is a new HttpServer subcomponent inside the s3gateway
which could be started/stopped. We need an example simple service (for exampe a /health endpoint
which returns with an 'OK' string) which can demonstrate how our own utilitites (such as OzoneClient)
could be injected to the REST resources.

This message was sent by Atlassian JIRA

To unsubscribe, e-mail: hdfs-issues-unsubscribe@hadoop.apache.org
For additional commands, e-mail: hdfs-issues-help@hadoop.apache.org

View raw message