You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hawq.apache.org by nh...@apache.org on 2015/11/13 02:22:11 UTC
incubator-hawq git commit: HAWQ-102. Change error message when PXF
webapp is down
Repository: incubator-hawq
Updated Branches:
refs/heads/master e74af5450 -> 939769288
HAWQ-102. Change error message when PXF webapp is down
Project: http://git-wip-us.apache.org/repos/asf/incubator-hawq/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-hawq/commit/93976928
Tree: http://git-wip-us.apache.org/repos/asf/incubator-hawq/tree/93976928
Diff: http://git-wip-us.apache.org/repos/asf/incubator-hawq/diff/93976928
Branch: refs/heads/master
Commit: 9397692880228fe2faf0406fc472509a1cc121e0
Parents: e74af54
Author: Noa Horn <nh...@pivotal.io>
Authored: Thu Nov 12 17:21:59 2015 -0800
Committer: Noa Horn <nh...@pivotal.io>
Committed: Thu Nov 12 17:21:59 2015 -0800
----------------------------------------------------------------------
.gitignore | 1 +
src/backend/access/external/libchurl.c | 55 ++++++++++++++++-------------
2 files changed, 32 insertions(+), 24 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/93976928/.gitignore
----------------------------------------------------------------------
diff --git a/.gitignore b/.gitignore
index 7699cfe..827e838 100644
--- a/.gitignore
+++ b/.gitignore
@@ -40,6 +40,7 @@ objfiles.txt
.project
.pydevproject
.cproject
+.settings
# Generated files
GNUmakefile
http://git-wip-us.apache.org/repos/asf/incubator-hawq/blob/93976928/src/backend/access/external/libchurl.c
----------------------------------------------------------------------
diff --git a/src/backend/access/external/libchurl.c b/src/backend/access/external/libchurl.c
index b91a0ff..5af0ea9 100644
--- a/src/backend/access/external/libchurl.c
+++ b/src/backend/access/external/libchurl.c
@@ -115,7 +115,7 @@ size_t header_callback(char *buffer, size_t size, size_t nitems, void *userp);
void free_http_response(churl_context* context);
void compact_internal_buffer(churl_buffer* buffer);
void realloc_internal_buffer(churl_buffer* buffer, size_t required);
-bool handle_special_error(long response);
+bool handle_special_error(long response, StringInfo err);
char* get_http_error_msg(long http_ret_code, char* msg, char* curl_error_buffer);
char* build_header_str(const char* format, const char* key, const char* value);
void print_http_headers(CHURL_HEADERS headers);
@@ -834,42 +834,49 @@ void check_response_code(churl_context* context)
}
else if (response_code != 200 && response_code != 100)
{
- if (!handle_special_error(response_code))
- {
- StringInfoData err;
- char *http_error_msg;
- char *addr;
+ StringInfoData err;
+ char *http_error_msg;
+ char *addr;
- initStringInfo(&err);
+ initStringInfo(&err);
- /* prepare response text if any */
- if (context->download_buffer->ptr)
- {
- context->download_buffer->ptr[context->download_buffer->top] = '\0';
- response_text = context->download_buffer->ptr + context->download_buffer->bot;
- }
+ /* prepare response text if any */
+ if (context->download_buffer->ptr)
+ {
+ context->download_buffer->ptr[context->download_buffer->top] = '\0';
+ response_text = context->download_buffer->ptr + context->download_buffer->bot;
+ }
- /* add remote http error code */
- appendStringInfo(&err, "remote component error (%ld)", response_code);
+ /* add remote http error code */
+ appendStringInfo(&err, "remote component error (%ld)", response_code);
- addr = get_dest_address(context->curl_handle);
- if (strlen(addr) != 0)
- appendStringInfo(&err, " from %s", addr);
- pfree(addr);
+ addr = get_dest_address(context->curl_handle);
+ if (strlen(addr) != 0)
+ {
+ appendStringInfo(&err, " from %s", addr);
+ }
+ pfree(addr);
+ if (!handle_special_error(response_code, &err))
+ {
/*
* add detailed error message from the http response. response_text
* could be NULL in some cases. get_http_error_msg checks for that.
*/
http_error_msg = get_http_error_msg(response_code, response_text, context->curl_error_buffer);
/* check for a specific confusing error, and replace with a clearer one */
- if(strstr(http_error_msg, "instance does not contain any root resource classes") != NULL)
+ if (strstr(http_error_msg, "instance does not contain any root resource classes") != NULL)
+ {
appendStringInfo(&err, " : PXF not correctly installed in CLASSPATH");
+ }
else
+ {
appendStringInfo(&err, ": %s", http_error_msg);
-
- elog(ERROR, "%s", err.data);
+ }
}
+
+ elog(ERROR, "%s", err.data);
+
}
free_http_response(context);
@@ -1069,12 +1076,12 @@ void realloc_internal_buffer(churl_buffer* buffer, size_t required)
buffer->max = n;
}
-bool handle_special_error(long response)
+bool handle_special_error(long response, StringInfo err)
{
switch (response)
{
case 404:
- elog(ERROR, "GPHD component not found");
+ appendStringInfo(err, ": PXF service could not be reached. PXF is not running in the tomcat container");
break;
default:
return false;