[
https://issues.apache.org/jira/browse/HDDS-444?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16626797#comment-16626797
]
Hudson commented on HDDS-444:
-----------------------------
SUCCESS: Integrated in Jenkins build Hadoop-trunk-Commit #15048 (See
[https://builds.apache.org/job/Hadoop-trunk-Commit/15048/])
HDDS-444. Add rest service to the s3gateway. Contributed by Elek Marton.
(bharat: rev 9c3fbbc4f65bb6268811bfb9ed54b89e8569c199)
* (add)
hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/commontypes/KeyMetadata.java
* (add)
hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/bucket/DeleteBucket.java
* (add)
hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/CommonHeadersContainerResponseFilter.java
* (add)
hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/object/TestDeleteObject.java
* (add)
hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/object/ListObject.java
* (add)
hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/object/DeleteObject.java
* (edit)
hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestOzoneRpcClient.java
* (add)
hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/commontypes/package-info.java
* (edit)
hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/web/client/TestBuckets.java
* (edit)
hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/ObjectStore.java
* (add)
hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/S3GatewayConfigKeys.java
* (edit)
hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/OzoneBucket.java
* (add)
hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/package-info.java
* (add)
hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/client/ObjectStoreStub.java
* (edit)
hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/web/ozShell/keys/ListKeyHandler.java
* (edit)
hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/Gateway.java
* (add)
hadoop-ozone/s3gateway/src/main/resources/webapps/s3gateway/WEB-INF/web.xml
* (edit) hadoop-ozone/dist/src/main/compose/ozones3/docker-compose.yaml
* (add)
hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/object/package-info.java
* (add)
hadoop-ozone/s3gateway/src/main/resources/webapps/s3gateway/WEB-INF/beans.xml
* (add)
hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/client/OzoneVolumeStub.java
* (add)
hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/object/PutObject.java
* (edit)
hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/web/ozShell/bucket/ListBucketHandler.java
* (add)
hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/bucket/PutBucket.java
* (add)
hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/commontypes/CommonPrefix.java
* (edit)
hadoop-hdds/common/src/main/java/org/apache/hadoop/hdds/cli/GenericCli.java
* (edit)
hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/web/ozShell/volume/ListVolumeHandler.java
* (add)
hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/object/ListObjectResponse.java
* (add)
hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/client/OzoneBucketStub.java
* (edit) hadoop-ozone/pom.xml
* (add)
hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/bucket/package-info.java
* (add)
hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/bucket/TestGetBucket.java
* (edit)
hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/OzoneVolume.java
* (add)
hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/OzoneClientProducer.java
* (add)
hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/OzoneConfigurationHolder.java
* (add)
hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/bucket/package-info.java
* (add)
hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/client/OzoneClientStub.java
* (edit)
hadoop-ozone/client/src/main/java/org/apache/hadoop/ozone/client/OzoneClient.java
* (add)
hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/object/package-info.java
* (add)
hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/object/HeadObject.java
* (add)
hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/GatewayApplication.java
* (add) hadoop-ozone/s3gateway/src/main/resources/META-INF/beans.xml
* (add)
hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/client/package-info.java
* (edit)
hadoop-ozone/ozonefs/src/main/java/org/apache/hadoop/fs/ozone/OzoneFileSystem.java
* (add)
hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/commontypes/IsoDateAdapter.java
* (add)
hadoop-ozone/s3gateway/src/test/java/org/apache/hadoop/ozone/s3/bucket/TestBucketResponse.java
* (add)
hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/EndpointBase.java
* (add)
hadoop-ozone/s3gateway/src/main/java/org/apache/hadoop/ozone/s3/S3GatewayHttpServer.java
> 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: [email protected]
For additional commands, e-mail: [email protected]