Re: Problem with PostgreSQL 9.2.7 and make check on AIX 7.1 - Mailing list pgsql-bugs

From Rainer Tammer
Subject Re: Problem with PostgreSQL 9.2.7 and make check on AIX 7.1
Date
Msg-id 530DA4D3.5090001@spg.schulergroup.com
Whole thread Raw
In response to Re: Problem with PostgreSQL 9.2.7 and make check on AIX 7.1  (Tom Lane <tgl@sss.pgh.pa.us>)
List pgsql-bugs
Hello,
OK, at least the first stage is working...

src/backend/storage/lmgr/proc.c

...
static bool
CheckStatementTimeout(void)
{
        TimestampTz now;

        if (!statement_timeout_active)
                return true;                    /* do nothing if not
active */

        elog(FATAL, "enter: CheckStatementTimeout - after
statement_timeout_active check");

        now = GetCurrentTimestamp();
...


gmake check: prepared_xacts.out

...
-- pxtest3 should be locked because of the pending DROP
set statement_timeout to 2000;
SELECT * FROM pxtest3;
FATAL:  enter: CheckStatementTimeout - after statement_timeout_active check
LINE 1: SELECT * FROM pxtest3;
                      ^
FATAL:  enter: CheckStatementTimeout - after statement_timeout_active check
FATAL:  enter: CheckStatementTimeout - after statement_timeout_active check
LINE 1: SELECT * FROM pxtest3;
                      ^
FATAL:  enter: CheckStatementTimeout - after statement_timeout_active check
connection to server was lost
....


Now I have put the output in CheckStatementTimeout:

src/backend/storage/lmgr/proc.c
...
static bool
CheckStatementTimeout(void)
{
        TimestampTz now;

        if (!statement_timeout_active)
                return true;                    /* do nothing if not
active */

        now = GetCurrentTimestamp();

        if (now >= statement_fin_time)
        {
                /* Time to die */
                statement_timeout_active = false;
                cancel_from_timeout = true;
        elog(FATAL, "enter: CheckStatementTimeout - next statement send
kill");
#ifdef HAVE_SETSID
                /* try to signal whole process group */
                kill(-MyProcPid, SIGINT);
#endif
                kill(MyProcPid, SIGINT);
        }
...

gmake check: prepared_xacts.out

...

-- pxtest3 should be locked because of the pending DROP
set statement_timeout to 2000;
SELECT * FROM pxtest3;
FATAL:  enter: CheckStatementTimeout - next statement send kill
LINE 1: SELECT * FROM pxtest3;
                      ^
FATAL:  enter: CheckStatementTimeout - next statement send kill
LINE 1: SELECT * FROM pxtest3;
                      ^
connection to server was lost


So the next thing should be that the backend process (the one hanging in
the SELECT) should receive the SIGINT - correct?

Bye
  Rainer

On 25.02.2014 20:29, Tom Lane wrote:
> Rainer Tammer <pgsql@spg.schulergroup.com> writes:
>> There is a pg_sema.c in src/backend/port.
>> This is linked ti sysv_sema.c, there is also a posix_sema.c.
>> How do you select the one or the other?
> The configure script chooses which to use for a particular platform.
>
> Perhaps it should be making a different choice for AIX?
>
>             regards, tom lane
>
>

pgsql-bugs by date:

Previous
From: Rainer Tammer
Date:
Subject: Re: Problem with PostgreSQL 9.2.7 and make check on AIX 7.1
Next
From: Rainer Tammer
Date:
Subject: Re: Problem with PostgreSQL 9.2.7 and make check on AIX 7.1