Re: [INTERFACES] Transaction support in 6.5.3/JDBC

From: Assaf Arkin <arkin(at)exoffice(dot)com>
To: Peter Mount <petermount(at)it(dot)maidstone(dot)gov(dot)uk>
Cc: "'Tom Lane'" <tgl(at)sss(dot)pgh(dot)pa(dot)us>, pgsql-interfaces(at)hub(dot)org
Subject: Re: [INTERFACES] Transaction support in 6.5.3/JDBC
Date: 1999-12-08 19:43:05
Message-ID: 384EB4C9.14B56E88@exoffice.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-interfaces

> Peter Mount <petermount(at)it(dot)maidstone(dot)gov(dot)uk> writes:
> > 1. When a dead-lock occurs trying to update the same row from multiple
> > threads, there does not seem to be any timeout and both connections
> hang
> > forever. Is there any dead-lock detection in 6.5 and will there be on
> in
> > 6.6 or 7.0?
>
> > PM: I'm not sure if there is/will be in the backend. I'm planning on
> > making the OOB abort stuff working for 7.0, but I'm not certain on
> > dead-lock's.
>
> This doesn't seem right to me --- the backend should detect deadlocks
> (not right away, but within a few seconds or a minute at most). If
> it doesn't, that's not JDBC's fault. More details please?
>
> PM: I didn't think it was.

In my opinion the back-end should detect deadlocks, or just connections
that hang too long trying to get something done, and have them properly
terminated.

I have a very simple test. I start two threads, both of them attempt to
do an update on the exact same row in the table, both connections keep
hanging.

> Right. Again, this'd be a backend bug if it didn't happen. The backend
> isn't supposed to rely on correct frontend behavior to ensure database
> integrity.
>
> PM: That's what I thought was the case.

Good.

> This one maybe can be blamed on JDBC. In the 2.0 protocol the BE
> will send a cancel security key --- but I seem to recall that the
> JDBC client still requests protocol 1.0?
>
> PM: In theory 6.5.3 should be requesting the current protocol (I
> remember the patch being submitted to me as part of another fix).
> However, I haven't (yet) had chance to look at it yet - hence not
> knowing about the security key. The bit I want to add is for JDBC2,
> ResultSet would by default use a cursor, and if it's closed while a read
> is in effect, it would send cancel to the backend.

I'll try and see if I can get change the protocol and get the pid/key.

I'm only using the pid/key internally, so I don't see the possibility of
someone else interfering. It's not exposed to the code using the JDBC
driver. While the pid is known, the key is no known so one cannot
terminate an operation without creating the connection first. It's up to
the key to be reasonably unguessable.

arkin

>
> Peter
>
> regards, tom lane
>
> ************
>
> ************

--
____________________________________________________________
Assaf Arkin arkin(at)exoffice(dot)com
CTO http://www.exoffice.com
Exoffice, The ExoLab Company tel: (650) 259-9796

In response to

Browse pgsql-interfaces by date

  From Date Subject
Next Message Joseph Shraibman 1999-12-08 20:28:23 Re: [INTERFACES] sql question
Previous Message Assaf Arkin 1999-12-08 19:41:02 Re: [INTERFACES] Transaction support in 6.5.3/JDBC