You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@falcon.apache.org by "Srikanth Sundarrajan (JIRA)" <ji...@apache.org> on 2014/11/04 07:55:40 UTC

[jira] [Commented] (FALCON-211) REST API returns html when there is an exception instead of requested media type

    [ https://issues.apache.org/jira/browse/FALCON-211?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14195809#comment-14195809 ] 

Srikanth Sundarrajan commented on FALCON-211:
---------------------------------------------

There is an implicit and incorrect assumption both within the FalconClient and HttpChannel code that Entity object returned in response to a call to a REST API would be of type APIResult (or its sub class). We ought to do the following with this.

1. Customize the error-page in web.xml to provide formatted non-html content
2. Inspect the response status family and fall back to String Entity when response status isn't informational or successful.

> REST API returns html when there is an exception instead of requested media type
> --------------------------------------------------------------------------------
>
>                 Key: FALCON-211
>                 URL: https://issues.apache.org/jira/browse/FALCON-211
>             Project: Falcon
>          Issue Type: Bug
>            Reporter: Venkatesh Seetharam
>            Assignee: Jean-Baptiste Onofré
>
> bin/falcon entity -type process -suspend -name ingest-process
> {code}
> Nov 19, 2013 11:53:15 AM com.sun.jersey.api.client.ClientResponse getEntity
> SEVERE: A message body reader for Java class org.apache.falcon.resource.APIResult, and Java type class org.apache.falcon.resource.APIResult, and MIME media type text/html; charset=iso-8859-1 was not found
> Nov 19, 2013 11:53:15 AM com.sun.jersey.api.client.ClientResponse getEntity
> SEVERE: The registered message body readers compatible with the MIME media type are:
> */* ->
>   com.sun.jersey.core.impl.provider.entity.FormProvider
>   com.sun.jersey.json.impl.provider.entity.JSONJAXBElementProvider$General
>   com.sun.jersey.json.impl.provider.entity.JSONArrayProvider$General
>   com.sun.jersey.json.impl.provider.entity.JSONObjectProvider$General
>   com.sun.jersey.core.impl.provider.entity.StringProvider
>   com.sun.jersey.core.impl.provider.entity.ByteArrayProvider
>   com.sun.jersey.core.impl.provider.entity.FileProvider
>   com.sun.jersey.core.impl.provider.entity.InputStreamProvider
>   com.sun.jersey.core.impl.provider.entity.DataSourceProvider
>   com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$General
>   com.sun.jersey.core.impl.provider.entity.ReaderProvider
>   com.sun.jersey.core.impl.provider.entity.DocumentProvider
>   com.sun.jersey.core.impl.provider.entity.SourceProvider$StreamSourceReader
>   com.sun.jersey.core.impl.provider.entity.SourceProvider$SAXSourceReader
>   com.sun.jersey.core.impl.provider.entity.SourceProvider$DOMSourceReader
>   com.sun.jersey.json.impl.provider.entity.JSONRootElementProvider$General
>   com.sun.jersey.json.impl.provider.entity.JSONListElementProvider$General
>   com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$General
>   com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$General
>   com.sun.jersey.core.impl.provider.entity.XMLRootObjectProvider$General
>   com.sun.jersey.core.impl.provider.entity.EntityHolderReader
> Nov 19, 2013 11:53:15 AM com.sun.jersey.api.client.ClientResponse getEntity
> SEVERE: A message body reader for Java class org.apache.falcon.resource.InstancesResult, and Java type class org.apache.falcon.resource.InstancesResult, and MIME media type text/html; charset=iso-8859-1 was not found
> Nov 19, 2013 11:53:15 AM com.sun.jersey.api.client.ClientResponse getEntity
> SEVERE: The registered message body readers compatible with the MIME media type are:
> */* ->
>   com.sun.jersey.core.impl.provider.entity.FormProvider
>   com.sun.jersey.json.impl.provider.entity.JSONJAXBElementProvider$General
>   com.sun.jersey.json.impl.provider.entity.JSONArrayProvider$General
>   com.sun.jersey.json.impl.provider.entity.JSONObjectProvider$General
>   com.sun.jersey.core.impl.provider.entity.StringProvider
>   com.sun.jersey.core.impl.provider.entity.ByteArrayProvider
>   com.sun.jersey.core.impl.provider.entity.FileProvider
>   com.sun.jersey.core.impl.provider.entity.InputStreamProvider
>   com.sun.jersey.core.impl.provider.entity.DataSourceProvider
>   com.sun.jersey.core.impl.provider.entity.XMLJAXBElementProvider$General
>   com.sun.jersey.core.impl.provider.entity.ReaderProvider
>   com.sun.jersey.core.impl.provider.entity.DocumentProvider
>   com.sun.jersey.core.impl.provider.entity.SourceProvider$StreamSourceReader
>   com.sun.jersey.core.impl.provider.entity.SourceProvider$SAXSourceReader
>   com.sun.jersey.core.impl.provider.entity.SourceProvider$DOMSourceReader
>   com.sun.jersey.json.impl.provider.entity.JSONRootElementProvider$General
>   com.sun.jersey.json.impl.provider.entity.JSONListElementProvider$General
>   com.sun.jersey.core.impl.provider.entity.XMLRootElementProvider$General
>   com.sun.jersey.core.impl.provider.entity.XMLListElementProvider$General
>   com.sun.jersey.core.impl.provider.entity.XMLRootObjectProvider$General
>   com.sun.jersey.core.impl.provider.entity.EntityHolderReader
> Error: <html>
> <head>
> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
> <title>Error 400 Remote user header can't be superusers:[oozie, mapred, falcon, hdfs]</title>
> </head>
> <body><h2>HTTP ERROR 400</h2>
> <p>Problem accessing /api/entities/suspend/process/ingest-process. Reason:
> <pre>    Remote user header can't be superusers:[oozie, mapred, falcon, hdfs]</pre></p><hr /><i><small>Powered by Jetty://</small></i><br/>
> <br/>
> <br/>
> <br/>
> <br/>
> <br/>
> <br/>
> <br/>
> <br/>
> <br/>
> <br/>
> <br/>
> <br/>
> <br/>
> <br/>
> <br/>
> <br/>
> <br/>
> <br/>
> <br/>
> </body>
> </html>
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)