Re: FastPath blocked when ERROR is thrown - Mailing list pgsql-jdbc

From Yi Lin
Subject Re: FastPath blocked when ERROR is thrown
Date
Msg-id 61065.65.92.138.65.1144804033.squirrel@mail.cs.mcgill.ca
Whole thread Raw
In response to FastPath blocked when ERROR is thrown  ("Yi Lin" <ylin30@cs.mcgill.ca>)
Responses Re: FastPath blocked when ERROR is thrown  (Kris Jurka <books@ejurka.com>)
List pgsql-jdbc
HI Kris Jurka:

>> I used java API FastPath.fastpath(fid, ...) to call a C function
>> PGfn(conn, fid,...) in the kernal. But if there is an exception (i.e.,
>> ERROR messages is thrown in the backend due to elog(ERROR, ...)), the
>> FastPath.fastpath(fid, ..) is blocked and never returns.
>>
>
> The attached code runs fine with the cvs jdbc driver and a 8.0.7 server.
> You haven't mentioned your versions, but this code hasn't changed recently
>  so anything relatively new should be fine.
>

I am using a modified version of Postgresql 7.2. It was modified by adding
Writeset functionality needed by replication such as Postgres-R. The
function Fastpath.fastpath(2075, ..) -> PQfn(conn, 2075, ..) in the
attached codes will trigger a non-standard function putWriteset()
implemented by one previous student in my lab. So I don't think you tested
the attached codes against the PQfn(..) which I am worried about.

It seems to me that the exception caused by elog(ERROR, ..) is not thrown
upto Fastpath.fastpath(2075, ..). But I know so little about the kernal of
postgresql that I can't trace the bug. Could u please give me some hints
(e.g., the functions or files to examinate)? I am going to check if the C
version PQfn(..) will be blocked by ERROR or not.


> How do you know the function is erroring out?  What does the server log
> say?

I intentionally inserted a tuple twice in two separated txns hence the
second insertion txn would cause an ERROR message. And then the function
fastpath(..) gets blocked forever. The error message is sth like:

ERROR: can't insert the same key to index t_a_pk_index twice. Tuple exists
already. To abort the transaction (No Error).

Sorry I don't know how to read server logs at all.

thanks a lot!

Yi

>
> Kris Jurka


=======================================
Yi Lin

Ph.D. candidate
School of Computer Science
McGill University
Montreal, Quebec,Canada
URL: http://www.cs.mcgill.ca/~ylin30/

       \\\ $ ///
         @   @
======o0o==0==o0o======================



pgsql-jdbc by date:

Previous
From: "Wei Wei"
Date:
Subject: Re: Calendar vs. Timestamp
Next
From: "Markus Riehl"
Date:
Subject: Re: No automatic reconnect after network error