]> granicus.if.org Git - pgbouncer/commitdiff
move ->admin flag from pool to db
authorMarko Kreen <markokr@gmail.com>
Fri, 18 Jan 2008 07:44:11 +0000 (07:44 +0000)
committerMarko Kreen <markokr@gmail.com>
Fri, 18 Jan 2008 07:44:11 +0000 (07:44 +0000)
include/bouncer.h
src/admin.c
src/client.c
src/janitor.c
src/main.c
src/objects.c
src/server.c
src/takeover.c

index dffbb0e2c4d457497579930d8de339980bdb3cc0..85065c68c258b2ea50c4eeba0ac5b53aa89668d3 100644 (file)
@@ -177,7 +177,6 @@ struct PgPool {
        usec_t last_connect_time;
        unsigned last_connect_failed:1;
 
-       unsigned admin:1;
        unsigned welcome_msg_ready:1;
 };
 
@@ -216,10 +215,11 @@ struct PgUser {
  */
 struct PgDatabase {
        List head;
-       char name[MAX_DBNAME];
+       char name[MAX_DBNAME];  /* db name for clients */
 
        bool db_paused;         /* PAUSE <db>; was issued */
        bool db_dead;           /* used on RELOAD/SIGHUP to later detect removed dbs */
+       bool admin;             /* internal console db */
 
        uint8_t startup_params[256]; /* partial StartupMessage (without user) be sent to server */
        unsigned startup_params_len;
@@ -231,7 +231,7 @@ struct PgDatabase {
 
        int pool_size;          /* max server connections in one pool */
 
-       const char *dbname;     /* pointer to inside startup_msg */
+       const char *dbname;     /* server-side name, pointer to inside startup_msg */
 };
 
 /*
index 0c940fa71ca40f1bb1d1a1188b69d67961b61cef..4df9c9439be0f8feffd72381a4c0f541c98fc832 100644 (file)
@@ -375,7 +375,7 @@ static bool admin_show_fds(PgSocket *admin, const char *arg)
 
        statlist_for_each(item, &pool_list) {
                pool = container_of(item, PgPool, head);
-               if (pool->admin)
+               if (pool->db->admin)
                        continue;
                res = res && show_fds_from_list(admin, &pool->active_client_list);
                res = res && show_fds_from_list(admin, &pool->waiting_client_list);
@@ -1119,14 +1119,14 @@ void admin_setup(void)
        db->addr.port = cf_listen_port;
        db->addr.is_unix = 1;
        db->pool_size = 2;
+       db->admin = 1;
        if (!force_user(db, "pgbouncer", ""))
                fatal("no mem on startup - cannot alloc pgbouncer user");
 
-       /* fake pool, tag the it as special */
+       /* fake pool */
        pool = get_pool(db, db->forced_user);
        if (!pool)
                fatal("cannot create admin pool?");
-       pool->admin = 1;
        admin_pool = pool;
 
        /* fake user, with disabled psw */
index a8016806a8ffff60fd2f93fd22da7ec32ec72623..5bd508743856acf8a557cf59a2e99f250ea995ce 100644 (file)
@@ -220,7 +220,7 @@ static bool handle_client_startup(PgSocket *client, PktHdr *pkt)
                if (!decide_startup_pool(client, pkt))
                        return false;
 
-               if (client->pool->admin) {
+               if (client->pool->db->admin) {
                        if (!admin_pre_login(client))
                                return false;
                }
@@ -304,7 +304,7 @@ static bool handle_client_work(PgSocket *client, PktHdr *pkt)
                        client->query_start = get_cached_time();
                }
 
-               if (client->pool->admin)
+               if (client->pool->db->admin)
                        return admin_handle_client(client, pkt);
 
                /* aquire server */
index 301e0900c73c6ccac5144758df7eb7ec89782120..29640844f67f2c7829712a64fabbe2b12dd29c49 100644 (file)
@@ -107,7 +107,7 @@ static void resume_sockets(void)
 
        statlist_for_each(item, &pool_list) {
                pool = container_of(item, PgPool, head);
-               if (pool->admin)
+               if (pool->db->admin)
                        continue;
                resume_socket_list(&pool->active_client_list);
                resume_socket_list(&pool->active_server_list);
@@ -207,7 +207,7 @@ static int per_loop_pause(PgPool *pool)
 {
        int active = 0;
 
-       if (pool->admin)
+       if (pool->db->admin)
                return 0;
 
        close_server_list(&pool->idle_server_list, "pause mode");
@@ -227,7 +227,7 @@ static int per_loop_suspend(PgPool *pool, bool force_suspend)
 {
        int active = 0;
 
-       if (pool->admin)
+       if (pool->db->admin)
                return 0;
 
        active += suspend_socket_list(&pool->active_client_list, force_suspend);
@@ -268,7 +268,7 @@ void per_loop_maint(void)
 
        statlist_for_each(item, &pool_list) {
                pool = container_of(item, PgPool, head);
-               if (pool->admin)
+               if (pool->db->admin)
                        continue;
                switch (cf_pause_mode) {
                case P_NONE:
@@ -484,7 +484,7 @@ static void do_full_maint(int sock, short flags, void *arg)
 
        statlist_for_each(item, &pool_list) {
                pool = container_of(item, PgPool, head);
-               if (pool->admin)
+               if (pool->db->admin)
                        continue;
                pool_server_maint(pool);
                pool_client_maint(pool);
index 3c5d368e21d87c40aba426ecd68c57d2d5c83d99..7235872c61e56e8994184fe60b49009c5782f3d9 100644 (file)
@@ -230,7 +230,7 @@ static void set_dbs_dead(bool flag)
 
        statlist_for_each(item, &database_list) {
                db = container_of(item, PgDatabase, head);
-               if (strcmp(db->name, "pgbouncer") == 0)
+               if (db->admin)
                        continue;
                db->db_dead = flag;
        }
index 7e155493cb3a5b19173e93fa7615ce699f03b309..733589239af12b5f5d8d4b520b040b8f5651131d 100644 (file)
@@ -844,7 +844,7 @@ found:
                disconnect_client(req, false, "cancel request for idle client");
 
                /* let administrative cancel be handled elsewhere */
-               if (main_client->pool->admin) {
+               if (main_client->pool->db->admin) {
                        admin_handle_cancel(main_client);
                        return;
                }
index bd6f1ee65c905ffc4c1d5ecf9f880f782d65e8ed..8ceb0634209a8a113df929682a64f3de66acf100 100644 (file)
@@ -126,7 +126,7 @@ static bool handle_server_startup(PgSocket *server, PktHdr *pkt)
                res = release_server(server);
 
                /* let the takeover process handle it */
-               if (res && server->pool->admin)
+               if (res && server->pool->db->admin)
                        res = takeover_login(server);
                break;
 
@@ -159,7 +159,7 @@ static bool handle_server_work(PgSocket *server, PktHdr *pkt)
        SBuf *sbuf = &server->sbuf;
        PgSocket *client = server->link;
 
-       Assert(!server->pool->admin);
+       Assert(!server->pool->db->admin);
 
        switch (pkt->type) {
        default:
@@ -385,7 +385,7 @@ bool server_proto(SBuf *sbuf, SBufEvent evtype, MBuf *data, void *arg)
                slog_warning(server, "SBUF_EV_PKT_CALLBACK with state=%d", server->state);
                break;
        }
-       if (!res && pool->admin)
+       if (!res && pool->db->admin)
                takeover_login_failed();
        return res;
 }
index ea7cad04dad588792c3d999c7d900b1d8ea4331f..85332974613ebe65292db661ec9811f4e25d0ecd 100644 (file)
@@ -174,7 +174,7 @@ static void takeover_postprocess_fds(void)
 
        statlist_for_each(item, &pool_list) {
                pool = container_of(item, PgPool, head);
-               if (pool->admin)
+               if (pool->db->admin)
                        continue;
                statlist_for_each(item2, &pool->active_client_list) {
                        client = container_of(item2, PgSocket, head);