diff options
author | Marko Kreen | 2011-06-28 13:38:47 +0000 |
---|---|---|
committer | Marko Kreen | 2011-06-29 07:11:05 +0000 |
commit | c63c5f332fd6c033ff89b49c919e3f232479822b (patch) | |
tree | ed66edfac11b16c5c0ed267ca8246ab4cd5ce9e1 | |
parent | c3374f5e733dfbf20e31feaa83203d531a77e5b9 (diff) |
pgq_coop.register_subconsumer: make sure main consumer exists
-rw-r--r-- | sql/pgq_coop/functions/pgq_coop.register_subconsumer.sql | 4 | ||||
-rw-r--r-- | sql/pgq_coop/sql/pgq_coop_test.sql | 3 |
2 files changed, 5 insertions, 2 deletions
diff --git a/sql/pgq_coop/functions/pgq_coop.register_subconsumer.sql b/sql/pgq_coop/functions/pgq_coop.register_subconsumer.sql index 422e2a51..1a2de406 100644 --- a/sql/pgq_coop/functions/pgq_coop.register_subconsumer.sql +++ b/sql/pgq_coop/functions/pgq_coop.register_subconsumer.sql @@ -26,7 +26,9 @@ declare r record; begin _subcon_name := i_consumer_name || '.' || i_subconsumer_name; - -- er... shouldn't we lock the subscription table? + + -- make sure main consumer exists + perform pgq.register_consumer(i_queue_name, i_consumer_name); -- just go and register the subconsumer as a regular consumer _subcon_result := pgq.register_consumer(i_queue_name, _subcon_name); diff --git a/sql/pgq_coop/sql/pgq_coop_test.sql b/sql/pgq_coop/sql/pgq_coop_test.sql index 651e9667..2a6ae616 100644 --- a/sql/pgq_coop/sql/pgq_coop_test.sql +++ b/sql/pgq_coop/sql/pgq_coop_test.sql @@ -9,7 +9,7 @@ select pgq.create_queue('testqueue'); update pgq.queue set queue_ticker_max_count = 1 where queue_name = 'testqueue'; -- register -select pgq.register_consumer('testqueue', 'maincons'); +select pgq_coop.register_subconsumer('testqueue', 'maincons', 'subcons1'); select pgq_coop.register_subconsumer('testqueue', 'maincons', 'subcons1'); select pgq_coop.register_subconsumer('testqueue', 'maincons', 'subcons1'); select pgq_coop.register_subconsumer('testqueue', 'maincons', 'subcons2'); @@ -35,6 +35,7 @@ select pgq_coop.next_batch('testqueue', 'maincons', 'subcons2'); select pgq_coop.finish_batch(2); -- test takeover +select pgq_coop.next_batch('testqueue', 'maincons', 'subcons2', '1 hour'); update pgq.subscription set sub_active = '2005-01-01' where sub_batch is not null; select pgq_coop.next_batch('testqueue', 'maincons', 'subcons2', '1 hour'); |