Re[2]: [HACKERS] Connect from background worker thread to database

From: Олексій Васильєв <leopard_ne(at)inbox(dot)ru>
To: Andres Freund <andres(at)anarazel(dot)de>
Cc: pgsql-hackers(at)postgresql(dot)org
Subject: Re[2]: [HACKERS] Connect from background worker thread to database
Date: 2013-11-24 13:40:47
Message-ID: 1385300447.791900649@f254.i.mail.ru
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

If I remove comment from BackgroundWorkerInitializeConnection  https://github.com/le0pard/pg_web/blob/master/src/pg_web.c#L179  and comment InitPostgres  https://github.com/le0pard/pg_web/blob/master/src/pg_web.c#L98 , I have the same errors in log:

2013-11-24 13:35:24 UTC ERROR:  stack depth limit exceeded
2013-11-24 13:35:24 UTC HINT:  Increase the configuration parameter "max_stack_depth" (currently 2048kB), after ensuring the platform's stack depth limit is adequate.
2013-11-24 13:35:24 UTC CONTEXT:  SQL statement "SELECT COUNT(*) FROM pg_class;"
2013-11-24 13:35:25 UTC LOG:  worker process: pg_web (PID 1957) exited with exit code 1
2013-11-24 13:35:26 UTC LOG:  starting background worker process "pg_web"
2013-11-24 13:35:26 UTC INFO:  Start web server on port 8080
If I change InitPostgres to BackgroundWorkerInitializeConnection and leave BackgroundWorkerInitializeConnection in bgw_main, I will have this error:

2013-11-24 13:39:58 UTC ERROR:  invalid processing mode in background worker
2013-11-24 13:39:58 UTC LOG:  worker process: pg_web (PID 2719) exited with exit code 1
2013-11-24 13:39:59 UTC LOG:  starting background worker process "pg_web"
Воскресенье, 24 ноября 2013, 14:06 +01:00 от Andres Freund <andres(at)anarazel(dot)de>:
>Hi,
>
>On 2013-11-24 16:27:06 +0400, Олексій Васильєв wrote:
>> This is part where I try to connect to database:  https://github.com/le0pard/pg_web/blob/master/src/pg_web.c#L92-L132 , but SPI functions give error in log (it is commented):
>>
>> 2013-11-24 02:57:43 UTC ERROR:  stack depth limit exceeded
>> 2013-11-24 02:57:43 UTC HINT:  Increase the configuration parameter "max_stack_depth" (currently 2048kB), after ensuring the platform's stack depth limit is adequate.
>> 2013-11-24 02:57:43 UTC CONTEXT:  SQL statement "SELECT COUNT(*) FROM pg_class;"
>>
>> Because I doing something in wrong way. I will appreciate for any help: where I doing wrong, link to the article how to do it, just a tip, pull request - anything. Google search and PostgreSQL sources reading  so far helped me to this point.
>
>At the very least you're calling InitPostgres() instead of
>BackgroundWorkerInitializeConnection() which you have commented out. And
>the latter should only be called once in every worker.
>
>Greetings,
>
>Andres Freund

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Simon Riggs 2013-11-24 14:42:48 Re: pre-commit triggers
Previous Message Peter Eisentraut 2013-11-24 13:11:58 Re: [PATCH] Report exit code from external recovery commands properly