diff --git a/libgearman-server/io.cc b/libgearman-server/io.cc index bd63706..62985eb 100644 --- a/libgearman-server/io.cc +++ b/libgearman-server/io.cc @@ -188,13 +188,7 @@ static size_t _connection_read(gearman_server_con_st *con, void *data, size_t da switch (local_errno) { case EAGAIN: - ret= gearmand_io_set_events(con, POLLIN); - if (gearmand_failed(ret)) - { - gearmand_perror(local_errno, "recv"); - return 0; - } - + usleep(10000); ret= GEARMAND_IO_WAIT; return 0; @@ -375,11 +369,7 @@ static gearmand_error_t _connection_flush(gearman_server_con_st *con) #endif case EAGAIN: { - gearmand_error_t gret= gearmand_io_set_events(con, POLLOUT); - if (gret != GEARMAND_SUCCESS) - { - return gret; - } + usleep(10000); return GEARMAND_IO_WAIT; } diff --git a/libgearman-server/server.cc b/libgearman-server/server.cc index cc9be0b..b88be9a 100644 --- a/libgearman-server/server.cc +++ b/libgearman-server/server.cc @@ -579,18 +579,6 @@ gearmand_error_t gearman_server_run_command(gearman_server_con_st *server_con, /* Remove any timeouts while sleeping */ gearman_server_con_delete_timeout(server_con); } - else - { - /* If there are jobs that could be run, queue a NOOP packet to wake the - worker up. This could be the result of a race codition. */ - ret= gearman_server_io_packet_add(server_con, false, - GEARMAN_MAGIC_RESPONSE, - GEARMAN_COMMAND_NOOP, NULL); - if (gearmand_failed(ret)) - { - return gearmand_gerror("gearman_server_io_packet_add", ret); - } - } } break; diff --git a/libgearman/connection.cc b/libgearman/connection.cc index de3c7d5..ca597f1 100644 --- a/libgearman/connection.cc +++ b/libgearman/connection.cc @@ -896,6 +896,7 @@ gearman_return_t gearman_connection_st::flush() return gret; } + usleep(10000); continue; } case EPIPE: @@ -1207,6 +1208,7 @@ size_t gearman_connection_st::recv_socket(void *data, size_t data_size, gearman_ return 0; } + usleep(10000); continue; } else if (errno == EINTR)