1 diff -Nur a/libgearman-server/constants.h b/libgearman-server/constants.h
2 --- a/libgearman-server/constants.h 2012-05-04 05:51:48.000000000 +0200
3 +++ b/libgearman-server/constants.h 2013-05-14 13:07:37.421132652 +0200
5 gearman_queue_add_fn *add_fn,
8 +typedef gearmand_error_t (gearman_queue_shutdown_fn)(gearman_server_st *server,
11 typedef gearmand_error_t (gearmand_connection_add_fn)(gearman_server_con_st *con);
13 typedef void (gearman_log_server_fn)(const char *line, gearmand_verbose_t verbose,
14 diff -Nur a/libgearman-server/gearmand.cc b/libgearman-server/gearmand.cc
15 --- a/libgearman-server/gearmand.cc 2012-05-04 05:51:48.000000000 +0200
16 +++ b/libgearman-server/gearmand.cc 2013-05-14 13:07:37.421132652 +0200
17 @@ -1071,6 +1071,10 @@
18 gearman_server_client_st *client;
19 gearman_server_worker_st *worker;
21 + gearmand_debug("shutdown queue: begin");
22 + gearman_server_queue_shutdown(server);
23 + gearmand_debug("shutdown queue: end");
25 /* All threads should be cleaned up before calling this. */
26 assert(server->thread_list == NULL);
28 diff -Nur a/libgearman-server/plugins/queue/drizzle/queue.cc b/libgearman-server/plugins/queue/drizzle/queue.cc
29 --- a/libgearman-server/plugins/queue/drizzle/queue.cc 2012-05-04 05:51:48.000000000 +0200
30 +++ b/libgearman-server/plugins/queue/drizzle/queue.cc 2013-05-14 13:07:37.421132652 +0200
32 drizzle_result_free(queue->result());
35 - gearman_server_set_queue(server, queue, _libdrizzle_add, _libdrizzle_flush, _libdrizzle_done, _libdrizzle_replay);
36 + gearman_server_set_queue(server, queue, _libdrizzle_add, _libdrizzle_flush, _libdrizzle_done, _libdrizzle_replay, NULL);
38 return GEARMAN_SUCCESS;
40 diff -Nur a/libgearman-server/plugins/queue/include.am b/libgearman-server/plugins/queue/include.am
41 --- a/libgearman-server/plugins/queue/include.am 2012-05-04 05:51:48.000000000 +0200
42 +++ b/libgearman-server/plugins/queue/include.am 2013-05-14 13:07:37.421132652 +0200
44 include libgearman-server/plugins/queue/sqlite/include.am
45 include libgearman-server/plugins/queue/tokyocabinet/include.am
46 include libgearman-server/plugins/queue/mysql/include.am
47 +include libgearman-server/plugins/queue/retention/include.am
48 diff -Nur a/libgearman-server/plugins/queue/libmemcached/queue.cc b/libgearman-server/plugins/queue/libmemcached/queue.cc
49 --- a/libgearman-server/plugins/queue/libmemcached/queue.cc 2012-05-04 05:51:48.000000000 +0200
50 +++ b/libgearman-server/plugins/queue/libmemcached/queue.cc 2013-05-14 13:07:37.421132652 +0200
52 memcached_server_push(&queue->memc, servers);
53 memcached_server_list_free(servers);
55 - gearman_server_set_queue(server, queue, _libmemcached_add, _libmemcached_flush, _libmemcached_done, _libmemcached_replay);
56 + gearman_server_set_queue(server, queue, _libmemcached_add, _libmemcached_flush, _libmemcached_done, _libmemcached_replay, NULL);
58 return GEARMAN_SUCCESS;
60 diff -Nur a/libgearman-server/plugins/queue/mysql/queue.cc b/libgearman-server/plugins/queue/mysql/queue.cc
61 --- a/libgearman-server/plugins/queue/mysql/queue.cc 2012-05-04 05:51:48.000000000 +0200
62 +++ b/libgearman-server/plugins/queue/mysql/queue.cc 2013-05-14 13:07:37.425110631 +0200
65 gearmand_log_info(GEARMAN_DEFAULT_LOG_PARAM,"Initializing MySQL module");
67 - gearman_server_set_queue(server, queue, _mysql_queue_add, _mysql_queue_flush, _mysql_queue_done, _mysql_queue_replay);
68 + gearman_server_set_queue(server, queue, _mysql_queue_add, _mysql_queue_flush, _mysql_queue_done, _mysql_queue_replay, NULL);
70 queue->con= mysql_init(queue->con);
72 diff -Nur a/libgearman-server/plugins/queue/postgres/queue.cc b/libgearman-server/plugins/queue/postgres/queue.cc
73 --- a/libgearman-server/plugins/queue/postgres/queue.cc 2012-05-04 05:51:48.000000000 +0200
74 +++ b/libgearman-server/plugins/queue/postgres/queue.cc 2013-05-14 13:07:37.425110631 +0200
77 gearmand_info("Initializing libpq module");
79 - gearman_server_set_queue(server, queue, _libpq_add, _libpq_flush, _libpq_done, _libpq_replay);
80 + gearman_server_set_queue(server, queue, _libpq_add, _libpq_flush, _libpq_done, _libpq_replay, NULL);
82 queue->con= PQconnectdb(queue->postgres_connect_string.c_str());
84 diff -Nur a/libgearman-server/plugins/queue/redis/queue.cc b/libgearman-server/plugins/queue/redis/queue.cc
85 --- a/libgearman-server/plugins/queue/redis/queue.cc 2012-05-04 05:51:48.000000000 +0200
86 +++ b/libgearman-server/plugins/queue/redis/queue.cc 2013-05-14 13:07:37.425110631 +0200
89 gearmand_info("Initializing hiredis module");
91 - gearman_server_set_queue(&Gearmand()->server, this, _hiredis_add, _hiredis_flush, _hiredis_done, _hiredis_replay);
92 + gearman_server_set_queue(&Gearmand()->server, this, _hiredis_add, _hiredis_flush, _hiredis_done, _hiredis_replay, NULL);
94 return GEARMAN_SUCCESS;
96 diff -Nur a/libgearman-server/plugins/queue/retention/include.am b/libgearman-server/plugins/queue/retention/include.am
97 --- a/libgearman-server/plugins/queue/retention/include.am 1970-01-01 01:00:00.000000000 +0100
98 +++ b/libgearman-server/plugins/queue/retention/include.am 2013-05-14 13:07:37.425110631 +0200
102 +# Copyright (C) 2012 Data Differential, http://datadifferential.com/
103 +# Copyright (C) 2012 Sven Nierlein, sven@consol.de
104 +# All rights reserved.
106 +# Use and distribution licensed under the BSD license. See
107 +# the COPYING file in the parent directory for full text.
109 +# All paths should be given relative to the root
112 +noinst_HEADERS+= libgearman-server/plugins/queue/retention/queue.h
114 +libgearman_server_libgearman_server_la_SOURCES+= libgearman-server/plugins/queue/retention/queue.cc
115 diff -Nur a/libgearman-server/plugins/queue/retention/queue.cc b/libgearman-server/plugins/queue/retention/queue.cc
116 --- a/libgearman-server/plugins/queue/retention/queue.cc 1970-01-01 01:00:00.000000000 +0100
117 +++ b/libgearman-server/plugins/queue/retention/queue.cc 2013-05-14 13:09:45.801123926 +0200
119 +/* vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
121 + * Gearmand client and server library.
123 + * Copyright (C) 2012 Data Differential, http://datadifferential.com/
124 + * Copyright (C) 2012 Sven Nierlein, sven@consol.de
125 + * All rights reserved.
132 + * @brief Retention Queue Storage Definitions
136 +#include <libgearman-server/common.h>
138 +#include <libgearman-server/plugins/queue/retention/queue.h>
139 +#include <libgearman-server/plugins/queue/base.h>
143 +namespace gearmand { namespace plugins { namespace queue { class Retention; }}}
145 +#pragma GCC diagnostic ignored "-Wold-style-cast"
146 +static gearmand_error_t _initialize(gearman_server_st *server, gearmand::plugins::queue::Retention *queue);
148 +namespace gearmand {
152 +class Retention : public gearmand::plugins::Queue {
156 + gearmand_error_t initialize();
157 + std::string retention_file;
162 +Retention::Retention() :
165 + command_line_options().add_options()
166 + ("retention-file", boost::program_options::value(&retention_file)->default_value("/tmp/retention.dat"), "retention file to save jobs on shutdown");
168 +Retention::~Retention()
172 +gearmand_error_t Retention::initialize()
174 + return _initialize(&Gearmand()->server, this);
178 +void initialize_retention()
180 + static Retention local_instance;
183 +} // namespace queue
184 +} // namespace plugins
185 +} // namespace gearmand
190 + * @addtogroup gearman_queue_retention_static Static retention Queue Storage Definitions
191 + * @ingroup gearman_queue_retention
195 +/* Queue callback functions. */
196 +static gearmand_error_t __add(gearman_server_st *server __attribute__((unused)),
197 + void *context __attribute__((unused)),
198 + const char *unique __attribute__((unused)), size_t unique_size __attribute__((unused)),
199 + const char *function_name __attribute__((unused)),
200 + size_t function_name_size __attribute__((unused)),
201 + const void *data __attribute__((unused)), size_t data_size __attribute__((unused)),
202 + gearmand_job_priority_t priority __attribute__((unused)),
203 + int64_t when __attribute__((unused)))
205 + gearmand_debug(__func__);
206 + return GEARMAN_SUCCESS;
210 +static gearmand_error_t __flush(gearman_server_st *server __attribute__((unused)),
211 + void *context __attribute__((unused)))
213 + gearmand_debug(__func__);
214 + return GEARMAN_SUCCESS;
217 +static gearmand_error_t __done(gearman_server_st *server __attribute__((unused)),
218 + void *context __attribute__((unused)),
219 + const char *unique __attribute__((unused)),
220 + size_t unique_size __attribute__((unused)),
221 + const char *function_name __attribute__((unused)),
222 + size_t function_name_size __attribute__((unused)))
224 + gearmand_debug(__func__);
225 + return GEARMAN_SUCCESS;
229 +static gearmand_error_t __replay(gearman_server_st *server,
231 + gearman_queue_add_fn *add_fn,
246 + gearmand_job_priority_t priority= (gearmand_job_priority_t)0;
247 + gearmand_error_t ret = GEARMAN_SUCCESS;
248 + gearmand::plugins::queue::Retention *queue= (gearmand::plugins::queue::Retention *)context;
250 + gearmand_debug(__func__);
251 + gearmand_log_debug(GEARMAN_DEFAULT_LOG_PARAM, "trying to open retention file: %s", queue->retention_file.c_str());
253 + fp = fopen(queue->retention_file.c_str(), "r");
255 + return GEARMAN_SUCCESS;
257 + gearmand_log_debug(GEARMAN_DEFAULT_LOG_PARAM, "reading retention file: %s", queue->retention_file.c_str());
262 + if(fgets(line, 2048, fp) == NULL)
263 + break; // empty files
265 + data_dup = strdup(line);
266 + line_start = data_dup;
268 + function = strsep( &data_dup, ";" );
269 + unique = strsep( &data_dup, ";" );
270 + prio_s = strsep( &data_dup, ";" );
273 + priority = (gearmand_job_priority_t) atoi(prio_s);
274 + when = atoi(strsep( &data_dup, ";" ));
275 + size = atoi(strsep( &data_dup, "\n" ));
277 + data = (char*)malloc(size+1);
279 + gearmand_perror("malloc failed");
280 + return GEARMAN_MEMORY_ALLOCATION_FAILURE;
282 + read = fread(data, size, 1, fp);
283 + ret= (*add_fn)(server, add_context,
284 + unique, (size_t) strlen(unique),
285 + function, (size_t) strlen(function),
289 + if (ret != GEARMAN_SUCCESS && ret != GEARMAN_JOB_EXISTS)
295 + // complete rest of line till newline
296 + if(fgets(line, 2048, fp) == NULL)
297 + break; // no more jobs
302 + // cleanup retention file
303 + if(unlink(queue->retention_file.c_str()) == -1)
304 + perror(queue->retention_file.c_str());
306 + gearmand_log_info(GEARMAN_DEFAULT_LOG_PARAM, "read %d jobs from retention file: %s", jobs_read, queue->retention_file.c_str());
308 + return GEARMAN_SUCCESS;
311 +static gearmand_error_t __shutdown(gearman_server_st *server,
316 + gearmand::plugins::queue::Retention *queue= (gearmand::plugins::queue::Retention *)context;
318 + gearmand_debug(__func__);
320 + fp = fopen(queue->retention_file.c_str(), "w+");
322 + gearmand_perror(queue->retention_file.c_str());
323 + return GEARMAN_ERRNO;
327 + for (uint32_t key= 0; key < GEARMAND_JOB_HASH_SIZE; key++) {
328 + if(server->job_hash[key] != NULL) {
329 + gearman_server_job_st *server_job = server->job_hash[key];
330 + fprintf(fp, "%s;%s;%i;%" PRId64 ";%i\n%.*s\n",
331 + server_job->function->function_name,
332 + server_job->unique,
333 + (int)server_job->priority,
335 + server_job->data_size,
336 + server_job->data_size, (const char*)server_job->data);
338 + while (server_job->unique_next != NULL) {
339 + server_job = server_job->unique_next;
340 + fprintf(fp, "%s;%s;%i;%" PRId64 ";%i\n%.*s\n",
341 + server_job->function->function_name,
342 + server_job->unique,
343 + (int)server_job->priority,
345 + server_job->data_size,
346 + server_job->data_size, (const char*)server_job->data);
354 + gearmand_log_info(GEARMAN_DEFAULT_LOG_PARAM, "wrote %i jobs into retention file %s", jobs_written, queue->retention_file.c_str());
356 + return GEARMAN_SUCCESS;
359 +gearmand_error_t _initialize(gearman_server_st *server, gearmand::plugins::queue::Retention *queue)
361 + gearman_server_set_queue(server, queue, __add, __flush, __done, __replay, __shutdown);
363 + return GEARMAN_SUCCESS;
365 diff -Nur a/libgearman-server/plugins/queue/retention/queue.h b/libgearman-server/plugins/queue/retention/queue.h
366 --- a/libgearman-server/plugins/queue/retention/queue.h 1970-01-01 01:00:00.000000000 +0100
367 +++ b/libgearman-server/plugins/queue/retention/queue.h 2013-05-14 13:07:37.425110631 +0200
369 +/* vim:expandtab:shiftwidth=2:tabstop=2:smarttab:
371 + * Gearmand client and server library.
373 + * Copyright (C) 2012 Data Differential, http://datadifferential.com/
374 + * Copyright (C) 2012 Sven Nierlein, sven@consol.de
375 + * All rights reserved.
382 +namespace gearmand {
386 +void initialize_retention();
388 +} // namespace queue
389 +} // namespace plugin
390 +} // namespace gearmand
391 diff -Nur a/libgearman-server/plugins/queue/sqlite/queue.cc b/libgearman-server/plugins/queue/sqlite/queue.cc
392 --- a/libgearman-server/plugins/queue/sqlite/queue.cc 2012-05-04 05:51:48.000000000 +0200
393 +++ b/libgearman-server/plugins/queue/sqlite/queue.cc 2013-05-14 13:07:37.425110631 +0200
395 queue->set_epoch_support(false);
398 - gearman_server_set_queue(server, queue, _sqlite_add, _sqlite_flush, _sqlite_done, _sqlite_replay);
399 + gearman_server_set_queue(server, queue, _sqlite_add, _sqlite_flush, _sqlite_done, _sqlite_replay, NULL);
401 return GEARMAN_SUCCESS;
403 diff -Nur a/libgearman-server/plugins/queue/tokyocabinet/queue.cc b/libgearman-server/plugins/queue/tokyocabinet/queue.cc
404 --- a/libgearman-server/plugins/queue/tokyocabinet/queue.cc 2012-05-04 05:51:48.000000000 +0200
405 +++ b/libgearman-server/plugins/queue/tokyocabinet/queue.cc 2013-05-14 13:07:37.425110631 +0200
410 - gearman_server_set_queue(server, queue, _libtokyocabinet_add, _libtokyocabinet_flush, _libtokyocabinet_done, _libtokyocabinet_replay);
411 + gearman_server_set_queue(server, queue, _libtokyocabinet_add, _libtokyocabinet_flush, _libtokyocabinet_done, _libtokyocabinet_replay, NULL);
413 return GEARMAN_SUCCESS;
415 diff -Nur a/libgearman-server/plugins/queue.h b/libgearman-server/plugins/queue.h
416 --- a/libgearman-server/plugins/queue.h 2012-05-04 05:51:48.000000000 +0200
417 +++ b/libgearman-server/plugins/queue.h 2013-05-14 13:07:37.425110631 +0200
419 #include <libgearman-server/plugins/queue/redis/queue.h>
421 #include <libgearman-server/plugins/queue/mysql/queue.h>
423 +#include <libgearman-server/plugins/queue/retention/queue.h>
424 \ No newline at end of file
425 diff -Nur a/libgearman-server/plugins.cc b/libgearman-server/plugins.cc
426 --- a/libgearman-server/plugins.cc 2012-05-04 05:51:48.000000000 +0200
427 +++ b/libgearman-server/plugins.cc 2013-05-14 13:07:37.425110631 +0200
429 queue::initialize_postgres();
432 + queue::initialize_retention();
435 #ifdef HAVE_LIBHIREDIS
436 queue::initialize_redis();
437 diff -Nur a/libgearman-server/server.c b/libgearman-server/server.c
438 --- a/libgearman-server/server.c 2012-05-04 05:51:48.000000000 +0200
439 +++ b/libgearman-server/server.c 2013-05-14 13:07:37.425110631 +0200
444 +gearmand_error_t gearman_queue_shutdown(gearman_server_st *server)
446 + gearmand_error_t ret;
448 + if(server->queue._shutdown_fn == NULL)
449 + return GEARMAN_SUCCESS;
451 + ret= (*(server->queue._shutdown_fn))(server, (void *)server->queue._context);
456 +gearmand_error_t gearman_server_queue_shutdown(gearman_server_st *server)
458 + gearmand_error_t ret= gearman_queue_shutdown(server);
462 void *gearman_server_queue_context(const gearman_server_st *server)
464 return (void *)server->queue._context;
465 @@ -768,13 +786,15 @@
466 gearman_queue_add_fn *add,
467 gearman_queue_flush_fn *flush,
468 gearman_queue_done_fn *done,
469 - gearman_queue_replay_fn *replay)
470 + gearman_queue_replay_fn *replay,
471 + gearman_queue_shutdown_fn *shutdown)
473 server->queue._context= context;
474 server->queue._add_fn= add;
475 server->queue._flush_fn= flush;
476 server->queue._done_fn= done;
477 server->queue._replay_fn= replay;
478 + server->queue._shutdown_fn= shutdown;
482 diff -Nur a/libgearman-server/server.h b/libgearman-server/server.h
483 --- a/libgearman-server/server.h 2012-05-04 05:51:48.000000000 +0200
484 +++ b/libgearman-server/server.h 2013-05-14 13:07:37.425110631 +0200
487 gearmand_error_t gearman_server_queue_replay(gearman_server_st *server);
490 + * shutdown the persistent queue to save all remaining jobs.
491 + * should only be run at shutdown.
492 + * @param server Server structure previously initialized with
493 + * gearman_server_create.
494 + * @return Standard gearman return value.
497 +gearmand_error_t gearman_server_queue_shutdown(gearman_server_st *server);
500 * Get persistent queue context.
503 gearman_queue_add_fn *add,
504 gearman_queue_flush_fn *flush,
505 gearman_queue_done_fn *done,
506 - gearman_queue_replay_fn *replay);
507 + gearman_queue_replay_fn *replay,
508 + gearman_queue_shutdown_fn *shutdown);
512 diff -Nur a/libgearman-server/struct/server.h b/libgearman-server/struct/server.h
513 --- a/libgearman-server/struct/server.h 2012-05-04 05:51:48.000000000 +0200
514 +++ b/libgearman-server/struct/server.h 2013-05-14 13:07:37.425110631 +0200
516 gearman_queue_flush_fn *_flush_fn;
517 gearman_queue_done_fn *_done_fn;
518 gearman_queue_replay_fn *_replay_fn;
519 + gearman_queue_shutdown_fn *_shutdown_fn;
521 pthread_mutex_t proc_lock;
522 pthread_cond_t proc_cond;
523 diff -Nur a/Makefile.in b/Makefile.in
524 --- a/Makefile.in 2013-05-14 10:59:45.005101449 +0200
525 +++ b/Makefile.in 2013-05-14 13:07:37.429101335 +0200
531 +# Copyright (C) 2012 Data Differential, http://datadifferential.com/
532 +# Copyright (C) 2012 Sven Nierlein, sven@consol.de
533 +# All rights reserved.
535 +# Use and distribution licensed under the BSD license. See
536 +# the COPYING file in the parent directory for full text.
538 +# All paths should be given relative to the root
542 # Gearman server and library
543 # Copyright (C) 2011 Data Differential, http://datadifferential.com/
544 # Copyright (C) 2009-2010 Brian Aker, Eric Day, Monty Taylor All rights
546 $(srcdir)/libgearman-server/plugins/queue/mysql/include.am \
547 $(srcdir)/libgearman-server/plugins/queue/postgres/include.am \
548 $(srcdir)/libgearman-server/plugins/queue/redis/include.am \
549 + $(srcdir)/libgearman-server/plugins/queue/retention/include.am \
550 $(srcdir)/libgearman-server/plugins/queue/sqlite/include.am \
551 $(srcdir)/libgearman-server/plugins/queue/tokyocabinet/include.am \
552 $(srcdir)/libgearman-server/struct/include.am \
554 libgearman-server/plugins/queue/sqlite/queue.cc \
555 libgearman-server/plugins/queue/tokyocabinet/queue.cc \
556 libgearman-server/plugins/queue/mysql/queue.cc \
557 + libgearman-server/plugins/queue/retention/queue.cc \
558 libgearman-server/text.cc libgearman-server/byteorder.cc \
559 libgearman-server/client.cc libgearman-server/connection.c \
560 libgearman-server/connection_list.cc libgearman-server/fifo.c \
562 $(am__objects_1) $(am__objects_2) $(am__objects_3) \
563 $(am__objects_4) $(am__objects_5) $(am__objects_6) \
565 + libgearman-server/plugins/queue/retention/libgearman_server_libgearman_server_la-queue.lo \
566 libgearman-server/libgearman_server_libgearman_server_la-text.lo \
567 libgearman-server/libgearman_server_libgearman_server_la-byteorder.lo \
568 libgearman-server/libgearman_server_libgearman_server_la-client.lo \
569 @@ -1598,6 +1613,7 @@
570 libgearman-server/plugins/queue/sqlite/queue.h \
571 libgearman-server/plugins/queue/tokyocabinet/queue.h \
572 libgearman-server/plugins/queue/mysql/queue.h \
573 + libgearman-server/plugins/queue/retention/queue.h \
574 libgearman-server/text.h libgearman-server/byte.h \
575 libgearman-server/byteorder.h libgearman-server/client.h \
576 libgearman-server/common.h libgearman-server/connection.h \
577 @@ -1939,9 +1955,10 @@
578 libgearman-server/plugins/protocol/http/method.cc \
579 $(am__append_26) $(am__append_30) $(am__append_34) \
580 $(am__append_38) $(am__append_40) $(am__append_44) \
581 - $(am__append_46) libgearman-server/text.cc \
582 - libgearman-server/byteorder.cc libgearman-server/client.cc \
583 - libgearman-server/connection.c \
585 + libgearman-server/plugins/queue/retention/queue.cc \
586 + libgearman-server/text.cc libgearman-server/byteorder.cc \
587 + libgearman-server/client.cc libgearman-server/connection.c \
588 libgearman-server/connection_list.cc libgearman-server/fifo.c \
589 libgearman-server/function.cc libgearman-server/gearmand.cc \
590 libgearman-server/gearmand_con.c \
591 @@ -2150,7 +2167,7 @@
592 .SUFFIXES: .c .cc .lo .o .obj
595 -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/libtest/include.am $(srcdir)/libhostile/include.am $(srcdir)/benchmark/include.am $(srcdir)/bin/include.am $(srcdir)/examples/include.am $(srcdir)/gearmand/include.am $(srcdir)/libgearman-server/include.am $(srcdir)/libgearman-server/struct/include.am $(srcdir)/libgearman-server/error/include.am $(srcdir)/libgearman-server/plugins/include.am $(srcdir)/libgearman-server/plugins/protocol/include.am $(srcdir)/libgearman-server/plugins/protocol/http/include.am $(srcdir)/libgearman-server/plugins/queue/include.am $(srcdir)/libgearman-server/plugins/queue/drizzle/include.am $(srcdir)/libgearman-server/plugins/queue/libmemcached/include.am $(srcdir)/libgearman-server/plugins/queue/postgres/include.am $(srcdir)/libgearman-server/plugins/queue/redis/include.am $(srcdir)/libgearman-server/plugins/queue/sqlite/include.am $(srcdir)/libgearman-server/plugins/queue/tokyocabinet/include.am $(srcdir)/libgearman-server/plugins/queue/mysql/include.am $(srcdir)/libgearman/include.am $(srcdir)/libgearman-1.0/include.am $(srcdir)/libgearman-1.0/t/include.am $(srcdir)/util/include.am $(srcdir)/tests/include.am $(srcdir)/tests/libgearman-1.0/include.am $(srcdir)/tests/ephemeral.am $(srcdir)/tests/libdrizzle.am $(srcdir)/tests/libmemcached.am $(srcdir)/tests/postgres.am $(srcdir)/tests/sqlite.am $(srcdir)/tests/tokyocabinet.am $(srcdir)/tests/redis.am $(srcdir)/tests/httpd.am $(srcdir)/support/include.am $(srcdir)/docs/include.am $(am__configure_deps)
596 +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/libtest/include.am $(srcdir)/libhostile/include.am $(srcdir)/benchmark/include.am $(srcdir)/bin/include.am $(srcdir)/examples/include.am $(srcdir)/gearmand/include.am $(srcdir)/libgearman-server/include.am $(srcdir)/libgearman-server/struct/include.am $(srcdir)/libgearman-server/error/include.am $(srcdir)/libgearman-server/plugins/include.am $(srcdir)/libgearman-server/plugins/protocol/include.am $(srcdir)/libgearman-server/plugins/protocol/http/include.am $(srcdir)/libgearman-server/plugins/queue/include.am $(srcdir)/libgearman-server/plugins/queue/drizzle/include.am $(srcdir)/libgearman-server/plugins/queue/libmemcached/include.am $(srcdir)/libgearman-server/plugins/queue/postgres/include.am $(srcdir)/libgearman-server/plugins/queue/redis/include.am $(srcdir)/libgearman-server/plugins/queue/sqlite/include.am $(srcdir)/libgearman-server/plugins/queue/tokyocabinet/include.am $(srcdir)/libgearman-server/plugins/queue/mysql/include.am $(srcdir)/libgearman-server/plugins/queue/retention/include.am $(srcdir)/libgearman/include.am $(srcdir)/libgearman-1.0/include.am $(srcdir)/libgearman-1.0/t/include.am $(srcdir)/util/include.am $(srcdir)/tests/include.am $(srcdir)/tests/libgearman-1.0/include.am $(srcdir)/tests/ephemeral.am $(srcdir)/tests/libdrizzle.am $(srcdir)/tests/libmemcached.am $(srcdir)/tests/postgres.am $(srcdir)/tests/sqlite.am $(srcdir)/tests/tokyocabinet.am $(srcdir)/tests/redis.am $(srcdir)/tests/httpd.am $(srcdir)/support/include.am $(srcdir)/docs/include.am $(am__configure_deps)
598 case '$(am__configure_deps)' in \
600 @@ -2354,6 +2371,15 @@
601 libgearman-server/plugins/queue/mysql/libgearman_server_libgearman_server_la-queue.lo: \
602 libgearman-server/plugins/queue/mysql/$(am__dirstamp) \
603 libgearman-server/plugins/queue/mysql/$(DEPDIR)/$(am__dirstamp)
604 +libgearman-server/plugins/queue/retention/$(am__dirstamp):
605 + @$(MKDIR_P) libgearman-server/plugins/queue/retention
606 + @: > libgearman-server/plugins/queue/retention/$(am__dirstamp)
607 +libgearman-server/plugins/queue/retention/$(DEPDIR)/$(am__dirstamp):
608 + @$(MKDIR_P) libgearman-server/plugins/queue/retention/$(DEPDIR)
609 + @: > libgearman-server/plugins/queue/retention/$(DEPDIR)/$(am__dirstamp)
610 +libgearman-server/plugins/queue/retention/libgearman_server_libgearman_server_la-queue.lo: \
611 + libgearman-server/plugins/queue/retention/$(am__dirstamp) \
612 + libgearman-server/plugins/queue/retention/$(DEPDIR)/$(am__dirstamp)
613 libgearman-server/$(am__dirstamp):
614 @$(MKDIR_P) libgearman-server
615 @: > libgearman-server/$(am__dirstamp)
616 @@ -3268,6 +3294,8 @@
617 -rm -f libgearman-server/plugins/queue/postgres/libgearman_server_libgearman_server_la-queue.lo
618 -rm -f libgearman-server/plugins/queue/redis/libgearman_server_libgearman_server_la-queue.$(OBJEXT)
619 -rm -f libgearman-server/plugins/queue/redis/libgearman_server_libgearman_server_la-queue.lo
620 + -rm -f libgearman-server/plugins/queue/retention/libgearman_server_libgearman_server_la-queue.$(OBJEXT)
621 + -rm -f libgearman-server/plugins/queue/retention/libgearman_server_libgearman_server_la-queue.lo
622 -rm -f libgearman-server/plugins/queue/sqlite/libgearman_server_libgearman_server_la-queue.$(OBJEXT)
623 -rm -f libgearman-server/plugins/queue/sqlite/libgearman_server_libgearman_server_la-queue.lo
624 -rm -f libgearman-server/plugins/queue/tokyocabinet/libgearman_server_libgearman_server_la-queue.$(OBJEXT)
625 @@ -3573,6 +3601,7 @@
626 @AMDEP_TRUE@@am__include@ @am__quote@libgearman-server/plugins/queue/mysql/$(DEPDIR)/libgearman_server_libgearman_server_la-queue.Plo@am__quote@
627 @AMDEP_TRUE@@am__include@ @am__quote@libgearman-server/plugins/queue/postgres/$(DEPDIR)/libgearman_server_libgearman_server_la-queue.Plo@am__quote@
628 @AMDEP_TRUE@@am__include@ @am__quote@libgearman-server/plugins/queue/redis/$(DEPDIR)/libgearman_server_libgearman_server_la-queue.Plo@am__quote@
629 +@AMDEP_TRUE@@am__include@ @am__quote@libgearman-server/plugins/queue/retention/$(DEPDIR)/libgearman_server_libgearman_server_la-queue.Plo@am__quote@
630 @AMDEP_TRUE@@am__include@ @am__quote@libgearman-server/plugins/queue/sqlite/$(DEPDIR)/libgearman_server_libgearman_server_la-queue.Plo@am__quote@
631 @AMDEP_TRUE@@am__include@ @am__quote@libgearman-server/plugins/queue/tokyocabinet/$(DEPDIR)/libgearman_server_libgearman_server_la-queue.Plo@am__quote@
632 @AMDEP_TRUE@@am__include@ @am__quote@libgearman/$(DEPDIR)/libgearman_libgearman_la-actions.Plo@am__quote@
633 @@ -4002,6 +4031,14 @@
634 @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
635 @am__fastdepCXX_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgearman_server_libgearman_server_la_CXXFLAGS) $(CXXFLAGS) -c -o libgearman-server/plugins/queue/mysql/libgearman_server_libgearman_server_la-queue.lo `test -f 'libgearman-server/plugins/queue/mysql/queue.cc' || echo '$(srcdir)/'`libgearman-server/plugins/queue/mysql/queue.cc
637 +libgearman-server/plugins/queue/retention/libgearman_server_libgearman_server_la-queue.lo: libgearman-server/plugins/queue/retention/queue.cc
638 +@am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgearman_server_libgearman_server_la_CXXFLAGS) $(CXXFLAGS) -MT libgearman-server/plugins/queue/retention/libgearman_server_libgearman_server_la-queue.lo -MD -MP -MF libgearman-server/plugins/queue/retention/$(DEPDIR)/libgearman_server_libgearman_server_la-queue.Tpo -c -o libgearman-server/plugins/queue/retention/libgearman_server_libgearman_server_la-queue.lo `test -f 'libgearman-server/plugins/queue/retention/queue.cc' || echo '$(srcdir)/'`libgearman-server/plugins/queue/retention/queue.cc
639 +@am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) libgearman-server/plugins/queue/retention/$(DEPDIR)/libgearman_server_libgearman_server_la-queue.Tpo libgearman-server/plugins/queue/retention/$(DEPDIR)/libgearman_server_libgearman_server_la-queue.Plo
640 +@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@
641 +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='libgearman-server/plugins/queue/retention/queue.cc' object='libgearman-server/plugins/queue/retention/libgearman_server_libgearman_server_la-queue.lo' libtool=yes @AMDEPBACKSLASH@
642 +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
643 +@am__fastdepCXX_FALSE@ $(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgearman_server_libgearman_server_la_CXXFLAGS) $(CXXFLAGS) -c -o libgearman-server/plugins/queue/retention/libgearman_server_libgearman_server_la-queue.lo `test -f 'libgearman-server/plugins/queue/retention/queue.cc' || echo '$(srcdir)/'`libgearman-server/plugins/queue/retention/queue.cc
645 libgearman-server/libgearman_server_libgearman_server_la-text.lo: libgearman-server/text.cc
646 @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(LIBTOOL) $(AM_V_lt) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libgearman_server_libgearman_server_la_CXXFLAGS) $(CXXFLAGS) -MT libgearman-server/libgearman_server_libgearman_server_la-text.lo -MD -MP -MF libgearman-server/$(DEPDIR)/libgearman_server_libgearman_server_la-text.Tpo -c -o libgearman-server/libgearman_server_libgearman_server_la-text.lo `test -f 'libgearman-server/text.cc' || echo '$(srcdir)/'`libgearman-server/text.cc
647 @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) libgearman-server/$(DEPDIR)/libgearman_server_libgearman_server_la-text.Tpo libgearman-server/$(DEPDIR)/libgearman_server_libgearman_server_la-text.Plo
648 @@ -5566,6 +5603,7 @@
649 -rm -rf libgearman-server/plugins/queue/mysql/.libs libgearman-server/plugins/queue/mysql/_libs
650 -rm -rf libgearman-server/plugins/queue/postgres/.libs libgearman-server/plugins/queue/postgres/_libs
651 -rm -rf libgearman-server/plugins/queue/redis/.libs libgearman-server/plugins/queue/redis/_libs
652 + -rm -rf libgearman-server/plugins/queue/retention/.libs libgearman-server/plugins/queue/retention/_libs
653 -rm -rf libgearman-server/plugins/queue/sqlite/.libs libgearman-server/plugins/queue/sqlite/_libs
654 -rm -rf libgearman-server/plugins/queue/tokyocabinet/.libs libgearman-server/plugins/queue/tokyocabinet/_libs
655 -rm -rf libgearman/function/.libs libgearman/function/_libs
656 @@ -6092,6 +6130,8 @@
657 -rm -f libgearman-server/plugins/queue/postgres/$(am__dirstamp)
658 -rm -f libgearman-server/plugins/queue/redis/$(DEPDIR)/$(am__dirstamp)
659 -rm -f libgearman-server/plugins/queue/redis/$(am__dirstamp)
660 + -rm -f libgearman-server/plugins/queue/retention/$(DEPDIR)/$(am__dirstamp)
661 + -rm -f libgearman-server/plugins/queue/retention/$(am__dirstamp)
662 -rm -f libgearman-server/plugins/queue/sqlite/$(DEPDIR)/$(am__dirstamp)
663 -rm -f libgearman-server/plugins/queue/sqlite/$(am__dirstamp)
664 -rm -f libgearman-server/plugins/queue/tokyocabinet/$(DEPDIR)/$(am__dirstamp)
665 @@ -6128,7 +6168,7 @@
667 distclean: distclean-am
668 -rm -f $(am__CONFIG_DISTCLEAN_FILES)
669 - -rm -rf benchmark/$(DEPDIR) bin/$(DEPDIR) docs/libgearman/examples/$(DEPDIR) examples/$(DEPDIR) gearmand/$(DEPDIR) libgearman-1.0/t/$(DEPDIR) libgearman-server/$(DEPDIR) libgearman-server/error/$(DEPDIR) libgearman-server/plugins/protocol/http/$(DEPDIR) libgearman-server/plugins/queue/drizzle/$(DEPDIR) libgearman-server/plugins/queue/libmemcached/$(DEPDIR) libgearman-server/plugins/queue/mysql/$(DEPDIR) libgearman-server/plugins/queue/postgres/$(DEPDIR) libgearman-server/plugins/queue/redis/$(DEPDIR) libgearman-server/plugins/queue/sqlite/$(DEPDIR) libgearman-server/plugins/queue/tokyocabinet/$(DEPDIR) libgearman/$(DEPDIR) libgearman/function/$(DEPDIR) libgearman/protocol/$(DEPDIR) libhostile/$(DEPDIR) libtest/$(DEPDIR) tests/$(DEPDIR) tests/libgearman-1.0/$(DEPDIR) util/$(DEPDIR)
670 + -rm -rf benchmark/$(DEPDIR) bin/$(DEPDIR) docs/libgearman/examples/$(DEPDIR) examples/$(DEPDIR) gearmand/$(DEPDIR) libgearman-1.0/t/$(DEPDIR) libgearman-server/$(DEPDIR) libgearman-server/error/$(DEPDIR) libgearman-server/plugins/protocol/http/$(DEPDIR) libgearman-server/plugins/queue/drizzle/$(DEPDIR) libgearman-server/plugins/queue/libmemcached/$(DEPDIR) libgearman-server/plugins/queue/mysql/$(DEPDIR) libgearman-server/plugins/queue/postgres/$(DEPDIR) libgearman-server/plugins/queue/redis/$(DEPDIR) libgearman-server/plugins/queue/retention/$(DEPDIR) libgearman-server/plugins/queue/sqlite/$(DEPDIR) libgearman-server/plugins/queue/tokyocabinet/$(DEPDIR) libgearman/$(DEPDIR) libgearman/function/$(DEPDIR) libgearman/protocol/$(DEPDIR) libhostile/$(DEPDIR) libtest/$(DEPDIR) tests/$(DEPDIR) tests/libgearman-1.0/$(DEPDIR) util/$(DEPDIR)
672 distclean-am: clean-am distclean-compile distclean-generic \
673 distclean-hdr distclean-libtool distclean-tags
674 @@ -6178,7 +6218,7 @@
675 maintainer-clean: maintainer-clean-am
676 -rm -f $(am__CONFIG_DISTCLEAN_FILES)
677 -rm -rf $(top_srcdir)/autom4te.cache
678 - -rm -rf benchmark/$(DEPDIR) bin/$(DEPDIR) docs/libgearman/examples/$(DEPDIR) examples/$(DEPDIR) gearmand/$(DEPDIR) libgearman-1.0/t/$(DEPDIR) libgearman-server/$(DEPDIR) libgearman-server/error/$(DEPDIR) libgearman-server/plugins/protocol/http/$(DEPDIR) libgearman-server/plugins/queue/drizzle/$(DEPDIR) libgearman-server/plugins/queue/libmemcached/$(DEPDIR) libgearman-server/plugins/queue/mysql/$(DEPDIR) libgearman-server/plugins/queue/postgres/$(DEPDIR) libgearman-server/plugins/queue/redis/$(DEPDIR) libgearman-server/plugins/queue/sqlite/$(DEPDIR) libgearman-server/plugins/queue/tokyocabinet/$(DEPDIR) libgearman/$(DEPDIR) libgearman/function/$(DEPDIR) libgearman/protocol/$(DEPDIR) libhostile/$(DEPDIR) libtest/$(DEPDIR) tests/$(DEPDIR) tests/libgearman-1.0/$(DEPDIR) util/$(DEPDIR)
679 + -rm -rf benchmark/$(DEPDIR) bin/$(DEPDIR) docs/libgearman/examples/$(DEPDIR) examples/$(DEPDIR) gearmand/$(DEPDIR) libgearman-1.0/t/$(DEPDIR) libgearman-server/$(DEPDIR) libgearman-server/error/$(DEPDIR) libgearman-server/plugins/protocol/http/$(DEPDIR) libgearman-server/plugins/queue/drizzle/$(DEPDIR) libgearman-server/plugins/queue/libmemcached/$(DEPDIR) libgearman-server/plugins/queue/mysql/$(DEPDIR) libgearman-server/plugins/queue/postgres/$(DEPDIR) libgearman-server/plugins/queue/redis/$(DEPDIR) libgearman-server/plugins/queue/retention/$(DEPDIR) libgearman-server/plugins/queue/sqlite/$(DEPDIR) libgearman-server/plugins/queue/tokyocabinet/$(DEPDIR) libgearman/$(DEPDIR) libgearman/function/$(DEPDIR) libgearman/protocol/$(DEPDIR) libhostile/$(DEPDIR) libtest/$(DEPDIR) tests/$(DEPDIR) tests/libgearman-1.0/$(DEPDIR) util/$(DEPDIR)
681 maintainer-clean-am: distclean-am maintainer-clean-generic