Merge lp:~brianaker/gearmand/fix-exceptions into lp:gearmand

Proposed by Brian Aker
Status: Merged
Merged at revision: 841
Proposed branch: lp:~brianaker/gearmand/fix-exceptions
Merge into: lp:gearmand
Diff against target: 248 lines (+26/-29)
5 files modified
libgearman-server/server.cc (+20/-21)
libgearman/job.cc (+0/-6)
libtest/run-ci.gdb (+1/-1)
tests/burnin.cc (+4/-0)
tests/stress.am (+1/-1)
To merge this branch: bzr merge lp:~brianaker/gearmand/fix-exceptions
Reviewer Review Type Date Requested Status
Tangent Trunk Pending
Review via email: mp+176294@code.launchpad.net
To post a comment you must log in.

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'libgearman-server/server.cc'
--- libgearman-server/server.cc 2013-07-16 20:59:59 +0000
+++ libgearman-server/server.cc 2013-07-22 21:50:44 +0000
@@ -71,13 +71,14 @@
71/**71/**
72 * Queue an error packet.72 * Queue an error packet.
73 */73 */
74static gearmand_error_t _server_error_packet(gearman_server_con_st *server_con,74static gearmand_error_t _server_error_packet(const char *position_, const char *func_,
75 gearman_server_con_st *server_con,
75 gearman_return_t client_return_code, const char *error_string, const size_t error_string_length)76 gearman_return_t client_return_code, const char *error_string, const size_t error_string_length)
76{77{
77 const char* error_code_string= gearman_strerror(client_return_code);78 const char* error_code_string= gearman_strerror(client_return_code);
78 error_code_string+= 8;79 error_code_string+= 8;
7980
80 gearmand_log_error(GEARMAN_DEFAULT_LOG_PARAM, "%s:%.*s", gearman_strerror(client_return_code), int(error_string_length), error_string);81 gearmand_log_error(position_, func_, "%s:%.*s", gearman_strerror(client_return_code), int(error_string_length), error_string);
8182
82 return gearman_server_io_packet_add(server_con, false, GEARMAN_MAGIC_RESPONSE,83 return gearman_server_io_packet_add(server_con, false, GEARMAN_MAGIC_RESPONSE,
83 GEARMAN_COMMAND_ERROR, error_code_string,84 GEARMAN_COMMAND_ERROR, error_code_string,
@@ -107,12 +108,12 @@
107108
108 if (packet->magic == GEARMAN_MAGIC_RESPONSE)109 if (packet->magic == GEARMAN_MAGIC_RESPONSE)
109 {110 {
110 return _server_error_packet(server_con, GEARMAN_INVALID_MAGIC, gearman_literal_param("Request magic expected"));111 return _server_error_packet(GEARMAN_DEFAULT_LOG_PARAM, server_con, GEARMAN_INVALID_MAGIC, gearman_literal_param("Request magic expected"));
111 }112 }
112113
113 if (uint32_t(packet->command) >= uint32_t(GEARMAN_COMMAND_MAX))114 if (uint32_t(packet->command) >= uint32_t(GEARMAN_COMMAND_MAX))
114 {115 {
115 return _server_error_packet(server_con, GEARMAN_INVALID_COMMAND, gearman_literal_param("Invalid command expected"));116 return _server_error_packet(GEARMAN_DEFAULT_LOG_PARAM, server_con, GEARMAN_INVALID_COMMAND, gearman_literal_param("Invalid command expected"));
116 }117 }
117118
118 gearmand_log_debug(GEARMAN_DEFAULT_LOG_PARAM,119 gearmand_log_debug(GEARMAN_DEFAULT_LOG_PARAM,
@@ -153,7 +154,7 @@
153 {154 {
154 gearman_server_client_free(server_client);155 gearman_server_client_free(server_client);
155 gearmand_gerror("unique value too large", GEARMAND_ARGUMENT_TOO_LARGE);156 gearmand_gerror("unique value too large", GEARMAND_ARGUMENT_TOO_LARGE);
156 return _server_error_packet(server_con, GEARMAN_ARGUMENT_TOO_LARGE, gearman_literal_param("Unique value too large"));157 return _server_error_packet(GEARMAN_DEFAULT_LOG_PARAM, server_con, GEARMAN_ARGUMENT_TOO_LARGE, gearman_literal_param("Unique value too large"));
157 }158 }
158159
159 gearman_job_priority_t map_priority= GEARMAN_JOB_PRIORITY_NORMAL;160 gearman_job_priority_t map_priority= GEARMAN_JOB_PRIORITY_NORMAL;
@@ -173,13 +174,13 @@
173 else if (ret == GEARMAND_JOB_QUEUE_FULL)174 else if (ret == GEARMAND_JOB_QUEUE_FULL)
174 {175 {
175 gearman_server_client_free(server_client);176 gearman_server_client_free(server_client);
176 return _server_error_packet(server_con, GEARMAN_QUEUE_ERROR, gearman_literal_param("Job queue is full"));177 return _server_error_packet(GEARMAN_DEFAULT_LOG_PARAM, server_con, GEARMAN_QUEUE_ERROR, gearman_literal_param("Job queue is full"));
177 }178 }
178 else if (ret != GEARMAND_JOB_EXISTS)179 else if (ret != GEARMAND_JOB_EXISTS)
179 {180 {
180 gearman_server_client_free(server_client);181 gearman_server_client_free(server_client);
181 gearmand_gerror("gearman_server_job_add", ret);182 gearmand_gerror("gearman_server_job_add", ret);
182 return _server_error_packet(server_con, GEARMAN_QUEUE_ERROR, gearmand_strerror(ret), strlen(gearmand_strerror(ret)));183 return _server_error_packet(GEARMAN_DEFAULT_LOG_PARAM, server_con, GEARMAN_QUEUE_ERROR, gearmand_strerror(ret), strlen(gearmand_strerror(ret)));
183 }184 }
184185
185 /* Queue the job created packet. */186 /* Queue the job created packet. */
@@ -275,7 +276,7 @@
275 {276 {
276 gearmand_gerror("unique value too large", GEARMAND_ARGUMENT_TOO_LARGE);277 gearmand_gerror("unique value too large", GEARMAND_ARGUMENT_TOO_LARGE);
277 gearman_server_client_free(server_client);278 gearman_server_client_free(server_client);
278 return _server_error_packet(server_con, GEARMAN_ARGUMENT_TOO_LARGE, gearman_literal_param("Unique value too large"));279 return _server_error_packet(GEARMAN_DEFAULT_LOG_PARAM, server_con, GEARMAN_ARGUMENT_TOO_LARGE, gearman_literal_param("Unique value too large"));
279 }280 }
280281
281 /* Schedule job. */282 /* Schedule job. */
@@ -293,13 +294,13 @@
293 else if (ret == GEARMAND_JOB_QUEUE_FULL)294 else if (ret == GEARMAND_JOB_QUEUE_FULL)
294 {295 {
295 gearman_server_client_free(server_client);296 gearman_server_client_free(server_client);
296 return _server_error_packet(server_con, GEARMAN_QUEUE_ERROR, gearman_literal_param("Job queue is full"));297 return _server_error_packet(GEARMAN_DEFAULT_LOG_PARAM, server_con, GEARMAN_QUEUE_ERROR, gearman_literal_param("Job queue is full"));
297 }298 }
298 else if (ret != GEARMAND_JOB_EXISTS)299 else if (ret != GEARMAND_JOB_EXISTS)
299 {300 {
300 gearman_server_client_free(server_client);301 gearman_server_client_free(server_client);
301 gearmand_gerror("gearman_server_job_add", ret);302 gearmand_gerror("gearman_server_job_add", ret);
302 return _server_error_packet(server_con, GEARMAN_QUEUE_ERROR, gearmand_strerror(ret), strlen(gearmand_strerror(ret)));303 return _server_error_packet(GEARMAN_DEFAULT_LOG_PARAM, server_con, GEARMAN_QUEUE_ERROR, gearmand_strerror(ret), strlen(gearmand_strerror(ret)));
303 }304 }
304305
305 /* Queue the job created packet. */306 /* Queue the job created packet. */
@@ -492,7 +493,7 @@
492 if (option_length >= GEARMAND_OPTION_SIZE || option_length < 0)493 if (option_length >= GEARMAND_OPTION_SIZE || option_length < 0)
493 {494 {
494 gearmand_log_error(GEARMAN_DEFAULT_LOG_PARAM, "snprintf(%d)", option_length);495 gearmand_log_error(GEARMAN_DEFAULT_LOG_PARAM, "snprintf(%d)", option_length);
495 return _server_error_packet(server_con, GEARMAN_UNKNOWN_OPTION,496 return _server_error_packet(GEARMAN_DEFAULT_LOG_PARAM, server_con, GEARMAN_UNKNOWN_OPTION,
496 gearman_literal_param("Server does not recognize given option"));497 gearman_literal_param("Server does not recognize given option"));
497 }498 }
498499
@@ -503,7 +504,7 @@
503 }504 }
504 else505 else
505 {506 {
506 return _server_error_packet(server_con, GEARMAN_UNKNOWN_OPTION,507 return _server_error_packet(GEARMAN_DEFAULT_LOG_PARAM, server_con, GEARMAN_UNKNOWN_OPTION,
507 gearman_literal_param("Server does not recognize given option"));508 gearman_literal_param("Server does not recognize given option"));
508 }509 }
509510
@@ -707,7 +708,7 @@
707 server_con);708 server_con);
708 if (server_job == NULL)709 if (server_job == NULL)
709 {710 {
710 return _server_error_packet(server_con, GEARMAN_JOB_NOT_FOUND, gearman_literal_param("Job does not exist on server"));711 return _server_error_packet(GEARMAN_DEFAULT_LOG_PARAM, server_con, GEARMAN_JOB_NOT_FOUND, gearman_literal_param("Job does not exist on server"));
711 }712 }
712713
713 /* Queue the data/warning packet for all clients. */714 /* Queue the data/warning packet for all clients. */
@@ -728,7 +729,7 @@
728 server_con);729 server_con);
729 if (server_job == NULL)730 if (server_job == NULL)
730 {731 {
731 return _server_error_packet(server_con, GEARMAN_JOB_NOT_FOUND,732 return _server_error_packet(GEARMAN_DEFAULT_LOG_PARAM, server_con, GEARMAN_JOB_NOT_FOUND,
732 gearman_literal_param("Job given in work result not found"));733 gearman_literal_param("Job given in work result not found"));
733 }734 }
734735
@@ -778,7 +779,7 @@
778 server_con);779 server_con);
779 if (server_job == NULL)780 if (server_job == NULL)
780 {781 {
781 return _server_error_packet(server_con, GEARMAN_JOB_NOT_FOUND, gearman_literal_param("Job given in work result not found"));782 return _server_error_packet(GEARMAN_DEFAULT_LOG_PARAM, server_con, GEARMAN_JOB_NOT_FOUND, gearman_literal_param("Job given in work result not found"));
782 }783 }
783784
784 /* Queue the complete packet for all clients. */785 /* Queue the complete packet for all clients. */
@@ -820,7 +821,7 @@
820 server_job->function->function_name_size, server_job->function->function_name, server_job->function->function_name_size);821 server_job->function->function_name_size, server_job->function->function_name, server_job->function->function_name_size);
821 if (server_job == NULL)822 if (server_job == NULL)
822 {823 {
823 return _server_error_packet(server_con, GEARMAN_JOB_NOT_FOUND, 824 return _server_error_packet(GEARMAN_DEFAULT_LOG_PARAM, server_con, GEARMAN_JOB_NOT_FOUND,
824 gearman_literal_param("An exception was received for a job that does not exist"));825 gearman_literal_param("An exception was received for a job that does not exist"));
825 }826 }
826827
@@ -831,7 +832,6 @@
831 return gearmand_gerror("_server_queue_work_data", ret);832 return gearmand_gerror("_server_queue_work_data", ret);
832 }833 }
833834
834#if 0
835 /* Remove from persistent queue if one exists. */835 /* Remove from persistent queue if one exists. */
836 if (server_job->job_queued)836 if (server_job->job_queued)
837 {837 {
@@ -849,7 +849,6 @@
849849
850 /* Job is done, remove it. */850 /* Job is done, remove it. */
851 gearman_server_job_free(server_job);851 gearman_server_job_free(server_job);
852#endif
853 }852 }
854853
855 break;854 break;
@@ -864,7 +863,7 @@
864863
865 if (job_handle_length >= GEARMAND_JOB_HANDLE_SIZE || job_handle_length < 0)864 if (job_handle_length >= GEARMAND_JOB_HANDLE_SIZE || job_handle_length < 0)
866 {865 {
867 return _server_error_packet(server_con, GEARMAN_ARGUMENT_TOO_LARGE,866 return _server_error_packet(GEARMAN_DEFAULT_LOG_PARAM, server_con, GEARMAN_ARGUMENT_TOO_LARGE,
868 gearman_literal_param("Error occured due to GEARMAND_JOB_HANDLE_SIZE being too small from snprintf"));867 gearman_literal_param("Error occured due to GEARMAND_JOB_HANDLE_SIZE being too small from snprintf"));
869 }868 }
870869
@@ -872,7 +871,7 @@
872 server_con);871 server_con);
873 if (server_job == NULL)872 if (server_job == NULL)
874 {873 {
875 return _server_error_packet(server_con, GEARMAN_JOB_NOT_FOUND,874 return _server_error_packet(GEARMAN_DEFAULT_LOG_PARAM, server_con, GEARMAN_JOB_NOT_FOUND,
876 gearman_literal_param("Job given in work result not found"));875 gearman_literal_param("Job given in work result not found"));
877 }876 }
878877
@@ -937,7 +936,7 @@
937 case GEARMAN_COMMAND_MAX:936 case GEARMAN_COMMAND_MAX:
938 case GEARMAN_COMMAND_STATUS_RES_UNIQUE:937 case GEARMAN_COMMAND_STATUS_RES_UNIQUE:
939 default:938 default:
940 return _server_error_packet(server_con, GEARMAN_INVALID_COMMAND, gearman_literal_param("Command not expected"));939 return _server_error_packet(GEARMAN_DEFAULT_LOG_PARAM, server_con, GEARMAN_INVALID_COMMAND, gearman_literal_param("Command not expected"));
941 }940 }
942941
943 return GEARMAND_SUCCESS;942 return GEARMAND_SUCCESS;
944943
=== modified file 'libgearman/job.cc'
--- libgearman/job.cc 2013-07-16 20:59:59 +0000
+++ libgearman/job.cc 2013-07-22 21:50:44 +0000
@@ -204,10 +204,6 @@
204 }204 }
205 }205 }
206206
207 job->options.assigned_in_use= false;
208 job->options.work_in_use= false;
209 job->options.finished= false;
210
211 job->reducer= NULL;207 job->reducer= NULL;
212 job->_error_code= GEARMAN_UNKNOWN_STATE;208 job->_error_code= GEARMAN_UNKNOWN_STATE;
213209
@@ -542,9 +538,7 @@
542 {538 {
543 return job->error_code();539 return job->error_code();
544 }540 }
545#if 0
546 job->finished(true);541 job->finished(true);
547#endif
548 }542 }
549543
550 return GEARMAN_SUCCESS;544 return GEARMAN_SUCCESS;
551545
=== modified file 'libtest/run-ci.gdb'
--- libtest/run-ci.gdb 2013-05-03 06:03:28 +0000
+++ libtest/run-ci.gdb 2013-07-22 21:50:44 +0000
@@ -1,7 +1,7 @@
1set logging on1set logging on
2set logging overwrite on2set logging overwrite on
3set environment LIBTEST_IN_GDB=13set environment LIBTEST_IN_GDB=1
4set ASAN_OPTIONS=abort_on_error=14#set ASAN_OPTIONS=abort_on_error=1
5run5run
6thread apply all bt6thread apply all bt
7quit7quit
88
=== modified file 'tests/burnin.cc'
--- tests/burnin.cc 2013-07-14 23:20:12 +0000
+++ tests/burnin.cc 2013-07-22 21:50:44 +0000
@@ -74,6 +74,10 @@
74 Error << "gearman_job_send_exception(" << gearman_strerror(ret) << ")";74 Error << "gearman_job_send_exception(" << gearman_strerror(ret) << ")";
75 return GEARMAN_WORK_ERROR;75 return GEARMAN_WORK_ERROR;
76 }76 }
77 else
78 {
79 return ret;
80 }
77 }81 }
7882
79 // We will pass back wrong responses from time to time.83 // We will pass back wrong responses from time to time.
8084
=== modified file 'tests/stress.am'
--- tests/stress.am 2013-07-03 03:54:06 +0000
+++ tests/stress.am 2013-07-22 21:50:44 +0000
@@ -19,7 +19,7 @@
19t_stress_LDADD+= libgearman/libgearman.la19t_stress_LDADD+= libgearman/libgearman.la
20t_stress_LDADD+= libtest/libtest.la20t_stress_LDADD+= libtest/libtest.la
21t_stress_LDADD+= tests/libstartworker.la21t_stress_LDADD+= tests/libstartworker.la
22check_PROGRAMS+=t/stress22#check_PROGRAMS+=t/stress
23noinst_PROGRAMS+=t/stress23noinst_PROGRAMS+=t/stress
2424
25test-stress: t/stress gearmand/gearmand25test-stress: t/stress gearmand/gearmand

Subscribers

People subscribed via source and target branches

to all changes: