Skip site navigation (1) Skip section navigation (2)

Re: pgbouncer y conexiones rotas

From: Emanuel Calvo Franco <postgres(dot)arg(at)gmail(dot)com>
To: Jose Ramon Hermosilla Moreno <jrhermosilla(at)uci(dot)cu>
Cc: "Alejandro D(dot) Burne" <alejandro(dot)dburne(at)gmail(dot)com>, pgsql-es-ayuda(at)postgresql(dot)org
Subject: Re: pgbouncer y conexiones rotas
Date: 2009-06-30 20:47:54
Message-ID: f205bb120906301347p22348b18k218671951866058@mail.gmail.com (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
> #include <iostream>
> #include <pqxx/pqxx>
> #include <vector>
>
> int main() {
>        std::vector<pqxx::connection*> connections;
>
>        for (unsigned int i = 0; i < 100; ++i) {
>                try {
>                        connections.push_back(new pqxx::connection("host=localhost dbname=fcweb port=6432 user=postgres password=postgres"));
>

Con lo poco que averigué, creo que estas utilizando push_back de una
manera incorrecta.

http://blogninja.com/doc/libpqxx-dev/html/Reference/a00266.html#57b422363e6126946a742ab1814f90a3

Fijate que psh_back pertenece a tablewriter. En todo caso tendrías que
almacenar la conexión como una variable aparte, sin ponerla dentro de
esta función AFAIK.

Además estas utilizando push_back unicamente cuando nisiquiera tenés
abierta la conexión. Fijate en este ejemplo:

http://svn.openstreetmap.org/applications/utils/misc/api06_migrate/changeset_synth.cpp


>                        pqxx::work t(*connections[i], "DemoTransaction");
>
>                        t.commit();
>                        connections[i]->disconnect();
>                        delete connections[i];
>                }
>                catch(std::exception &e) {
>                        std::cout << e.what() << std::endl;
>                }
>        }
>        return 0;
> }
>
>
> Para probar que pasaría si se cae la conexión lo que hacemos es parar el gestor de base de datos. Cuando ello sucede no ejecuta nada más luego de la línea:
>
> connections.push_back(new pqxx::connection("host=localhost dbname=fcweb port=6432 user=postgres password=postgres"));
>
> sino que se queda en un ciclo infinito en ella, pero nunca el programa recibe noticias de cual es el problema.
>

Creo que es porque los parametros que debe recibir esa función no son
los que le estas pasando.

>
> Se que no debemos conectarnos directamente con el usuario postgres. Cuando el servidor está corriendo funciona bien.
>

Para pruebas esta bien, luego no te olvides de cambiarlo.


-- 
              Emanuel Calvo Franco
ArPUG [www.arpug.com.ar] / AOSUG Member
        www.emanuelcalvofranco.com.ar

In response to

pgsql-es-ayuda by date

Next:From: Gabriel Hermes Colina ZambraDate: 2009-06-30 21:05:14
Subject: Re: Funciones o Procedimientos escritos en Gambas.
Previous:From: JOSE LUIS RODRIGUEZDate: 2009-06-30 19:00:46
Subject: Re: duda

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group