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
Views: Raw Message | Whole Thread | Download mbox | Resend email
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

Browse pgsql-es-ayuda by date

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