hadoop-hdfs-issues mailing list archives

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

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

Jitendra Nath Pandey updated HDDS-444:
--------------------------------------
    Fix Version/s: 0.3.0

> 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
>             Fix For: 0.3.0
>
>         Attachments: HDDS-444.001.patch, HDDS-444.002.patch, HDDS-444.003.patch, HDDS-444.004.patch,
HDDS-444.005.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
classes.
> 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
combo.
> 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
(v7.6.3#76005)

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


Mime
View raw message