head	1.4;
access;
symbols;
locks; strict;
comment	@# @;


1.4
date	2005.06.18.01.51.03;	author momjian;	state dead;
branches;
next	1.3;

1.3
date	2005.06.05.00.46.13;	author momjian;	state Exp;
branches;
next	1.2;

1.2
date	2003.10.24.03.24.56;	author momjian;	state dead;
branches;
next	1.1;

1.1
date	2003.10.24.03.21.37;	author momjian;	state Exp;
branches;
next	;


desc
@@


1.4
log
@Remove 2phase commit TODO.detail.
@
text
@From pgsql-hackers-owner+M49851=pgman=candle.pha.pa.us@@postgresql.org Sat Feb  7 10:33:51 2004
Return-path: <pgsql-hackers-owner+M49851=pgman=candle.pha.pa.us@@postgresql.org>
Received: from postgresql.org (svr1.postgresql.org [200.46.204.71])
	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id i17HXbr05526
	for <pgman@@candle.pha.pa.us>; Sat, 7 Feb 2004 12:33:50 -0500 (EST)
X-Original-To: pgsql-hackers-postgresql.org@@localhost.postgresql.org
Received: from localhost (unknown [200.46.204.2])
	by svr1.postgresql.org (Postfix) with ESMTP id 0FDCBD1D8A0
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>; Wed,  4 Feb 2004 20:22:23 +0000 (GMT)
Received: from svr1.postgresql.org ([200.46.204.71])
	by localhost (neptune.hub.org [200.46.204.2]) (amavisd-new, port 10024)
	with ESMTP id 35031-10
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>;
	Wed,  4 Feb 2004 16:22:21 -0400 (AST)
Received: from main.gmane.org (main.gmane.org [80.91.224.249])
	by svr1.postgresql.org (Postfix) with ESMTP id D9726D1D85F
	for <pgsql-hackers@@postgresql.org>; Wed,  4 Feb 2004 16:22:20 -0400 (AST)
Received: from list by main.gmane.org with local (Exim 3.35 #1 (Debian))
	id 1AoTXQ-0006tA-00
	for <pgsql-hackers@@postgresql.org>; Wed, 04 Feb 2004 21:22:20 +0100
Received: from kosh.hut.fi ([130.233.228.10])
        by main.gmane.org with esmtp (Gmexim 0.1 (Debian))
        id 1AlnuQ-0007hv-00
        for <pgsql-hackers@@postgresql.org>; Wed Feb  4 20:22:20 2004
Received: from hlinnaka by kosh.hut.fi with local (Gmexim 0.1 (Debian))
        id 1AlnuQ-0007hv-00
        for <pgsql-hackers@@postgresql.org>; Wed Feb  4 20:22:20 2004
X-Injected-Via-Gmane: http://gmane.org/
To: pgsql-hackers@@postgresql.org
From: Heikki Linnakangas <hlinnaka@@iki.fi>
Subject: [HACKERS] Two-phase commit
Date: Wed, 4 Feb 2004 22:22:16 +0200
Lines: 30
Message-ID: <Pine.OSF.4.58.0402042200330.238747@@kosh.hut.fi>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
X-Complaints-To: usenet@@sea.gmane.org
X-Gmane-NNTP-Posting-Host: kosh.hut.fi
X-X-Sender: hlinnaka@@kosh.hut.fi
X-Virus-Scanned: by amavisd-new at postgresql.org
X-Mailing-List: pgsql-hackers
Precedence: bulk
Sender: pgsql-hackers-owner@@postgresql.org
X-Spam-Checker-Version: SpamAssassin 2.61 (1.212.2.1-2003-12-09-exp) on 
	candle.pha.pa.us
X-Spam-Status: No, hits=-4.9 required=5.0 tests=BAYES_00 autolearn=ham 
	version=2.61
Status: ORr

I've been very slowly continuing my work on two-phase commits for a couple
months now, and I now have my original patch updated so that it applies to
the current CVS tip, with some improvements.

The patch introduces three new commands, PREPCOMMIT, COMMITPREPARED and
ABORTPREPARED.

To start a 2PC transaction, you first do a BEGIN and your updates as
usual. At the end of the transaction, you call PREPCOMMIT 'foobar' instead
of COMMIT. Now the transaction is in prepared state, ready to commit at a
later time. 'foobar' is the global transaction identifier assigned for the
transaction.

Later, when you want to finish the second phase, you call
COMMITPREPARED 'foobar';

There is a system view pg_prepared_xacts that gives you all transactions
that are in prepared state waiting for COMMITPREPARED or ABORTPREPARED.

I have also done some work on XA-enabling the JDBC drivers, now that we
have what it takes in the server side. I have succesfully executed
2PC transactions with JBossMQ and Postgres, using JBoss as the
transaction manager, so the basic stuff seems to be working.

Please have a look and comment, the patches can be found here:
http://www.iki.fi/hlinnaka/pgsql/

What is the schedule for 7.5? Any chance of getting this in?

- Heikki


---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
      subscribe-nomail command to majordomo@@postgresql.org so that your
      message can get through to the mailing list cleanly

From pgsql-hackers-owner+M50166=pgman=candle.pha.pa.us@@postgresql.org Sun Feb 15 14:10:46 2004
Return-path: <pgsql-hackers-owner+M50166=pgman=candle.pha.pa.us@@postgresql.org>
Received: from postgresql.org (svr1.postgresql.org [200.46.204.71])
	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id i1FLAir14581
	for <pgman@@candle.pha.pa.us>; Sun, 15 Feb 2004 16:10:45 -0500 (EST)
X-Original-To: pgsql-hackers-postgresql.org@@localhost.postgresql.org
Received: from localhost (unknown [200.46.204.2])
	by svr1.postgresql.org (Postfix) with ESMTP id 297AAD1CAF3
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>; Mon,  9 Feb 2004 20:09:53 +0000 (GMT)
Received: from svr1.postgresql.org ([200.46.204.71])
	by localhost (neptune.hub.org [200.46.204.2]) (amavisd-new, port 10024)
	with ESMTP id 07202-01
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>;
	Mon,  9 Feb 2004 16:09:37 -0400 (AST)
Received: from smtp-4.hut.fi (smtp-4.hut.fi [130.233.228.94])
	by svr1.postgresql.org (Postfix) with ESMTP id 90D81D1C4BC
	for <pgsql-hackers@@postgresql.org>; Mon,  9 Feb 2004 16:09:34 -0400 (AST)
Received: from kosh.hut.fi (kosh.hut.fi [130.233.228.10])
	by smtp-4.hut.fi (8.12.10/8.12.10) with ESMTP id i19K9Y66012417;
	Mon, 9 Feb 2004 22:09:34 +0200
Date: Mon, 9 Feb 2004 22:09:34 +0200 (EET)
From: Heikki Linnakangas <hlinnaka@@iki.fi>
X-X-Sender: hlinnaka@@kosh.hut.fi
To: "Jeroen T. Vermeulen" <jtv@@xs4all.nl>
cc: PostgreSQL Development <pgsql-hackers@@postgresql.org>
Subject: Re: [HACKERS] Two-phase commit
In-Reply-To: <20040208195332.GE25140@@xs4all.nl>
Message-ID: <Pine.OSF.4.58.0402092201460.226205@@kosh.hut.fi>
References: <Pine.OSF.4.58.0402042200330.238747@@kosh.hut.fi>
	<20040208195332.GE25140@@xs4all.nl>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
X-RAVMilter-Version: 8.4.3(snapshot 20030212) (smtp-4.hut.fi)
X-Virus-Scanned: by amavisd-new at postgresql.org
X-Mailing-List: pgsql-hackers
Precedence: bulk
Sender: pgsql-hackers-owner@@postgresql.org
X-Spam-Checker-Version: SpamAssassin 2.61 (1.212.2.1-2003-12-09-exp) on 
	candle.pha.pa.us
X-Spam-Status: No, hits=-4.9 required=5.0 tests=BAYES_00 autolearn=ham 
	version=2.61
Status: OR

On Sun, 8 Feb 2004, Jeroen T. Vermeulen wrote:

> On Wed, Feb 04, 2004 at 10:22:16PM +0200, Heikki Linnakangas wrote:
>
> > There is a system view pg_prepared_xacts that gives you all transactions
> > that are in prepared state waiting for COMMITPREPARED or ABORTPREPARED.
>
> Great to hear that you've gotten so far with this...  One question: can I
> check for this view to see if 2PC is supported before issuing the new
> kind of commit?  I'm interested in supporting 2PC even for some regular
> transactions to reduce their in-doubt window, but I don't want to issue a
> command at the last moment that may fail (and thereby abort) because the
> backend version I'm connected to doesn't support the new command!

Yes, I suppose that would work. Though you would have to use a query that
wouldn't fail in case the view doesn't exist, otherwise you end up
aborting the transaction anyway. This should work:

SELECT COUNT(*) FROM pg_views WHERE schemanem='pg_catalog' AND viewname
='pg_prepared_xacts'

If it returns 1, you can do 2PC, if it returns 0, you have to regular
commit.

However, if this gets into 7.5, I guess you could just check for the
version of the backend instead with "SELECT version()".

- Heikki

---------------------------(end of broadcast)---------------------------
TIP 4: Don't 'kill -9' the postmaster

From pgsql-hackers-owner+M49946=pgman=candle.pha.pa.us@@postgresql.org Mon Feb  9 14:18:20 2004
Return-path: <pgsql-hackers-owner+M49946=pgman=candle.pha.pa.us@@postgresql.org>
Received: from postgresql.org (svr1.postgresql.org [200.46.204.71])
	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id i19LIHr27947
	for <pgman@@candle.pha.pa.us>; Mon, 9 Feb 2004 16:18:18 -0500 (EST)
X-Original-To: pgsql-hackers-postgresql.org@@localhost.postgresql.org
Received: from localhost (unknown [200.46.204.2])
	by svr1.postgresql.org (Postfix) with ESMTP id 5B8CBD1C9E1
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>; Mon,  9 Feb 2004 21:00:06 +0000 (GMT)
Received: from svr1.postgresql.org ([200.46.204.71])
	by localhost (neptune.hub.org [200.46.204.2]) (amavisd-new, port 10024)
	with ESMTP id 25216-09
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>;
	Mon,  9 Feb 2004 16:59:56 -0400 (AST)
Received: from smtp-out4.xs4all.nl (smtp-out4.xs4all.nl [194.109.24.5])
	by svr1.postgresql.org (Postfix) with ESMTP id 0381AD1C4BC
	for <pgsql-hackers@@postgresql.org>; Mon,  9 Feb 2004 16:59:53 -0400 (AST)
Received: from xs1.xs4all.nl (xs1.xs4all.nl [194.109.21.2])
	by smtp-out4.xs4all.nl (8.12.10/8.12.10) with ESMTP id i19Kw1Oh062440;
	Mon, 9 Feb 2004 21:59:41 +0100 (CET)
Received: from xs1.xs4all.nl (jtv@@localhost.xs4all.nl [127.0.0.1])
	by xs1.xs4all.nl (8.12.10/8.12.9) with ESMTP id i19KuUBT033906;
	Mon, 9 Feb 2004 21:56:30 +0100 (CET)
	(envelope-from jtv@@xs4all.nl)
Received: (from jtv@@localhost)
	by xs1.xs4all.nl (8.12.10/8.12.9/Submit) id i19KuUgt033905;
	Mon, 9 Feb 2004 21:56:30 +0100 (CET)
	(envelope-from jtv)
Date: Mon, 9 Feb 2004 21:56:30 +0100
From: "Jeroen T. Vermeulen" <jtv@@xs4all.nl>
To: Heikki Linnakangas <hlinnaka@@iki.fi>
cc: PostgreSQL Development <pgsql-hackers@@postgresql.org>
Subject: Re: [HACKERS] Two-phase commit
Message-ID: <20040209205629.GB13454@@xs4all.nl>
Mail-Followup-To: Heikki Linnakangas <hlinnaka@@iki.fi>,
	PostgreSQL Development <pgsql-hackers@@postgresql.org>
References: <Pine.OSF.4.58.0402042200330.238747@@kosh.hut.fi> <20040208195332.GE25140@@xs4all.nl> <Pine.OSF.4.58.0402092201460.226205@@kosh.hut.fi>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <Pine.OSF.4.58.0402092201460.226205@@kosh.hut.fi>
User-Agent: Mutt/1.4.1i
X-Virus-Scanned: by amavisd-new at postgresql.org
X-Mailing-List: pgsql-hackers
Precedence: bulk
Sender: pgsql-hackers-owner@@postgresql.org
X-Spam-Checker-Version: SpamAssassin 2.61 (1.212.2.1-2003-12-09-exp) on 
	candle.pha.pa.us
X-Spam-Status: No, hits=-4.9 required=5.0 tests=BAYES_00 autolearn=ham 
	version=2.61
Status: OR

On Mon, Feb 09, 2004 at 10:09:34PM +0200, Heikki Linnakangas wrote:
> 
> However, if this gets into 7.5, I guess you could just check for the
> version of the backend instead with "SELECT version()".

Hey, that works?  That's very good news, because I was getting a bit
worried about all the things I want to do in libpqxx that may depend on
the Postgres version...

Thanks!


---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
      subscribe-nomail command to majordomo@@postgresql.org so that your
      message can get through to the mailing list cleanly

From pgsql-hackers-owner+M50540=pgman=candle.pha.pa.us@@postgresql.org Sat Feb 28 14:40:52 2004
Return-path: <pgsql-hackers-owner+M50540=pgman=candle.pha.pa.us@@postgresql.org>
Received: from postgresql.org (svr1.postgresql.org [200.46.204.71])
	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id i1SLeoD13679
	for <pgman@@candle.pha.pa.us>; Sat, 28 Feb 2004 16:40:50 -0500 (EST)
X-Original-To: pgsql-hackers-postgresql.org@@localhost.postgresql.org
Received: from localhost (unknown [200.46.204.2])
	by svr1.postgresql.org (Postfix) with ESMTP id A0F5BD1E1AA
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>; Sun, 22 Feb 2004 02:27:19 +0000 (GMT)
Received: from svr1.postgresql.org ([200.46.204.71])
	by localhost (neptune.hub.org [200.46.204.2]) (amavisd-new, port 10024)
	with ESMTP id 92481-04
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>;
	Sat, 21 Feb 2004 22:27:18 -0400 (AST)
Received: from main.gmane.org (main.gmane.org [80.91.224.249])
	by svr1.postgresql.org (Postfix) with ESMTP id 54A72D1E197
	for <pgsql-hackers@@postgresql.org>; Sat, 21 Feb 2004 22:27:11 -0400 (AST)
Received: from list by main.gmane.org with local (Exim 3.35 #1 (Debian))
	id 1AujKe-0004i5-00
	for <pgsql-hackers@@postgresql.org>; Sun, 22 Feb 2004 03:27:00 +0100
Received: from kosh.hut.fi ([130.233.228.10])
        by main.gmane.org with esmtp (Gmexim 0.1 (Debian))
        id 1AlnuQ-0007hv-00
        for <pgsql-hackers@@postgresql.org>; Sun Feb 22 02:27:00 2004
Received: from hlinnaka by kosh.hut.fi with local (Gmexim 0.1 (Debian))
        id 1AlnuQ-0007hv-00
        for <pgsql-hackers@@postgresql.org>; Sun Feb 22 02:27:00 2004
X-Injected-Via-Gmane: http://gmane.org/
To: pgsql-hackers@@postgresql.org
From: Heikki Linnakangas <hlinnaka@@iki.fi>
Subject: Re: [HACKERS] Two-phase commit
Date: Sun, 22 Feb 2004 04:26:56 +0200
Lines: 70
Message-ID: <Pine.OSF.4.58.0402220324250.126984@@kosh.hut.fi>
References: <Pine.OSF.4.58.0402042200330.238747@@kosh.hut.fi>
	<200402080138.i181cPl15259@@candle.pha.pa.us>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII
X-Complaints-To: usenet@@sea.gmane.org
X-Gmane-NNTP-Posting-Host: kosh.hut.fi
X-X-Sender: hlinnaka@@kosh.hut.fi
In-Reply-To: <200402080138.i181cPl15259@@candle.pha.pa.us>
X-Virus-Scanned: by amavisd-new at postgresql.org
X-Mailing-List: pgsql-hackers
Precedence: bulk
Sender: pgsql-hackers-owner@@postgresql.org
X-Spam-Checker-Version: SpamAssassin 2.61 (1.212.2.1-2003-12-09-exp) on 
	candle.pha.pa.us
X-Spam-Status: No, hits=-4.9 required=5.0 tests=BAYES_00 autolearn=ham 
	version=2.61
Status: OR

On Sat, 7 Feb 2004, Bruce Momjian wrote:

> > Please have a look and comment, the patches can be found here:
> > http://www.iki.fi/hlinnaka/pgsql/
> >
> > What is the schedule for 7.5? Any chance of getting this in?
>
> 7.5 is certainly possible.  We are months away from beta on 7.5 and I
> would like ot see two-phase commit included.  One item that has come up
> in past discussions is a way of recording two-phase commit failures to
> the administrator in cases where you precommit, get a reply, commit,
> then the remote machine disappears.

You would resolve this by opening a new session, and checking if the gid
you specified in PREPARE TRANSACTION is still present in the
pg_prepared_xacts view. It could be done manually by the administrator, or
it could be done automatically by an external transaction manager if
there is one.

The XA interface specifies a function called "recover", that gives you a
list of pending transactions. If we some day have an XA implementation,
the recover call would map directly to "SELECT gid FROM
pg_prepared_xacts". The JDBC XA implementation that I'm working on does
that already.

I have updated my patches, see the URL above. I renamed the commands to
PREPARE TRANSACTION, COMMIT PREPARED and ROLLBACK PREPARED. I think it's
more coherent that way.

I also added documentation entries for the commands, and a basic
regression test.

I went through all the AtCommit_* and AtEOXact* hooks in xact.c to find
any possible problem areas. The following items have not yet been
implemented and throw an error if you try to do 2PC in the same
transaction.

* Notifications (NOTIFY/LISTEN). All pending notifications should be
stored in persistent storage in the prepare phase, and sent in the commit
phase.

* Creation/deletion of relations. I couldn't figure out how the relation
cache invalidation stuff should work with 2PC.

* Modifying GUC variables. I need to study the GUC code more thoroughly
before I can tell what needs to be done.

* Updates to shadow/group files, that is, CREATE USER and friends. Needs
some tricks to delay the writing of pg_pwd/pg_group.

* Large objects. AFAICS, no particular problem here, but I'd like to deal
with them later when the more important stuff are ok.

Plus a couple of minor details:

* Temporary tables. The seem to work somehow, but I haven't tested them
much. I have a feeling that nasty things might happen if you commit the
prepared transaction from another backend etc.

* initdb gives a warning about a missing file. It's harmless, but I
don't see how to detect that you're running under initdb. Also, if you
try to prapare a transaction with a global transaction identifier that's
already in use, you first get a warning and then an error.

I'm going to tackle the above problems later, but I would like to get
this applied to the cvs trunk with the current functionality first, after
discussion of course. The rest are nice to have for the sake of
completeness but probably not necessary for most users.

- Heikki


---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

               http://www.postgresql.org/docs/faqs/FAQ.html

From pgsql-general-owner+M58726=pgman=candle.pha.pa.us@@postgresql.org Fri Mar 19 01:00:58 2004
Return-path: <pgsql-general-owner+M58726=pgman=candle.pha.pa.us@@postgresql.org>
Received: from postgresql.org (svr1.postgresql.org [200.46.204.71])
	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id i2J80ud15620
	for <pgman@@candle.pha.pa.us>; Fri, 19 Mar 2004 03:00:57 -0500 (EST)
X-Original-To: pgsql-general-postgresql.org@@localhost.postgresql.org
Received: from localhost (unknown [200.46.204.2])
	by svr1.postgresql.org (Postfix) with ESMTP id 53189D1BB74
	for <pgsql-general-postgresql.org@@localhost.postgresql.org>; Fri, 19 Mar 2004 07:31:13 +0000 (GMT)
Received: from svr1.postgresql.org ([200.46.204.71])
	by localhost (neptune.hub.org [200.46.204.2]) (amavisd-new, port 10024)
	with ESMTP id 87439-01
	for <pgsql-general-postgresql.org@@localhost.postgresql.org>;
	Fri, 19 Mar 2004 03:31:05 -0400 (AST)
Received: from builder.localdomain (unknown [61.94.124.129])
	by svr1.postgresql.org (Postfix) with SMTP id 12CC3D1B80B
	for <pgsql-general@@postgresql.org>; Fri, 19 Mar 2004 03:30:59 -0400 (AST)
Received: (qmail 11710 invoked from network); 19 Mar 2004 07:30:55 -0000
Received: from unknown (HELO zara.6.isreserved.com) (192.168.0.113)
  by builder.localdomain with SMTP; 19 Mar 2004 07:30:55 -0000
Message-ID: <405AA1B0.3080600@@zara.6.isreserved.com>
Date: Fri, 19 Mar 2004 14:30:56 +0700
From: David Garamond <lists@@zara.6.isreserved.com>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.6b) Gecko/20031208
X-Accept-Language: en-us, en
MIME-Version: 1.0
To: Matthew Hixson <hixson@@poindextrose.org>
cc: pgsql-general@@postgresql.org
Subject: Re: [GENERAL] two phase commit
References: <68FB14C4-7963-11D8-B6BA-000A95D05926@@poindextrose.org>
In-Reply-To: <68FB14C4-7963-11D8-B6BA-000A95D05926@@poindextrose.org>
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
X-Virus-Scanned: by amavisd-new at postgresql.org
X-Mailing-List: pgsql-general
Precedence: bulk
Sender: pgsql-general-owner@@postgresql.org
X-Spam-Checker-Version: SpamAssassin 2.61 (1.212.2.1-2003-12-09-exp) on 
	candle.pha.pa.us
X-Spam-Status: No, hits=-4.9 required=5.0 tests=BAYES_00 autolearn=ham 
	version=2.61
Status: OR

Matthew Hixson wrote:
>  From what I can find with Google it looks like TPC might make it into 
> Postgrs 7.5.  I was wondering if there were any commercial products or 
> open source projects that can provide TPC on top of Postgres.  Or is 
> this something that really needs to be handled by the database itself?

With the 2PC patch submitted, you can interface with it at the SQL level 
(i.e. you prepare, commit, cancel prepare, etc. by issuing ordinary SQL 
commands). This means it will be pretty trivial to make it work with 
other components like TX manager, etc. For example, I'm guessing it will 
be easy to add 2PC support to npgsql (.NET data provider).

PS: It's really nice to see Postgres coming along feature-wise. 2PC and 
nested transaction (aside from native Windows port, of course) are the 
main things Firebird has that Potsgres hasn't. After that, we can pretty 
much leave FB in the dust... :-)

-- 
dave

---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
      subscribe-nomail command to majordomo@@postgresql.org so that your
      message can get through to the mailing list cleanly

From pgsql-hackers-owner+M51632@@postgresql.org Tue Mar 23 10:18:06 2004
Return-path: <pgsql-hackers-owner+M51632@@postgresql.org>
Received: from postgresql.org (svr1.postgresql.org [200.46.204.71])
	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id i2NHI0d16063
	for <pgman@@candle.pha.pa.us>; Tue, 23 Mar 2004 12:18:02 -0500 (EST)
X-Original-To: pgsql-hackers-postgresql.org@@localhost.postgresql.org
Received: from localhost (unknown [200.46.204.2])
	by svr1.postgresql.org (Postfix) with ESMTP
	id BFD64D1EBB0; Tue, 23 Mar 2004 16:11:15 +0000 (GMT)
Received: from svr1.postgresql.org ([200.46.204.71])
	by localhost (neptune.hub.org [200.46.204.2]) (amavisd-new, port 10024)
	with ESMTP id 35500-05; Tue, 23 Mar 2004 12:11:00 -0400 (AST)
Received: from smtp-4.hut.fi (smtp-4.hut.fi [130.233.228.94])
	by svr1.postgresql.org (Postfix) with ESMTP
	id 411C3D1E2D7; Tue, 23 Mar 2004 12:10:58 -0400 (AST)
Received: from kosh.hut.fi (kosh.hut.fi [130.233.228.10])
	by smtp-4.hut.fi (8.12.10/8.12.10) with ESMTP id i2NGAZTZ028569;
	Tue, 23 Mar 2004 18:10:45 +0200
Date: Tue, 23 Mar 2004 18:10:35 +0200 (EET)
From: Heikki Linnakangas <hlinnaka@@iki.fi>
X-X-Sender: hlinnaka@@kosh.hut.fi
To: pgsql-hackers@@postgresql.org
cc: pgsql-patches@@postgresql.org
Subject: Re: [HACKERS] Two-phase commit
In-Reply-To: <Pine.OSF.4.58.0402220324250.126984@@kosh.hut.fi>
Message-ID: <Pine.OSF.4.58.0403231758350.513267@@kosh.hut.fi>
References: <Pine.OSF.4.58.0402042200330.238747@@kosh.hut.fi>
	<200402080138.i181cPl15259@@candle.pha.pa.us> <Pine.OSF.4.58.0402220324250.126984@@kosh.hut.fi>
MIME-Version: 1.0
Content-Type: MULTIPART/MIXED; BOUNDARY="182774146-1920606540-1080058235=:513267"
X-RAVMilter-Version: 8.4.3(snapshot 20030212) (smtp-4.hut.fi)
X-Virus-Scanned: by amavisd-new at postgresql.org
X-Mailing-List: pgsql-hackers
Precedence: bulk
Sender: pgsql-hackers-owner@@postgresql.org
X-Spam-Checker-Version: SpamAssassin 2.61 (1.212.2.1-2003-12-09-exp) on 
	candle.pha.pa.us
X-Spam-Status: No, hits=-4.9 required=5.0 tests=BAYES_00 autolearn=ham 
	version=2.61
Status: ORr

  This message is in MIME format.  The first part should be readable text,
  while the remaining parts are likely unreadable without MIME-aware tools.
  Send mail to mime@@docserver.cac.washington.edu for more info.

--182774146-1920606540-1080058235=:513267
Content-Type: TEXT/PLAIN; charset=US-ASCII

I have again updated my two-phase commit patches. Only minor
modifications.

I haven't received any comments and there hasn't been any discussion on
the implementation, I suppose that nobody has given it a try. :(

There is still some rough edges, but I think it's good enough as a first
cut. I personally consider it ready to be applied to cvs tip, but then
again I'm still a newbie :). Please take a look!

The patch is also available here: http://www.iki.fi/hlinnaka/pgsql/

- Heikki
--182774146-1920606540-1080058235=:513267
Content-Type: APPLICATION/x-gzip; name="twophase_20040321.diff.gz"
Content-Transfer-Encoding: BASE64
Content-ID: <Pine.OSF.4.58.0403231810351.513267@@kosh.hut.fi>
Content-Description: 
Content-Disposition: attachment; filename="twophase_20040321.diff.gz"

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
s8QjQZRUeJkCfgcDmXXXlCq22MOkQ+Z8Q9hxQ7TR0wZ3XP+ug47ZhKFm2IqZ
xPvoBbSa9NkTYE1CSKEEMKEAUgwgmcT9vrXGBhS9G8LV4HIQP0QDtkQl5dr0
ThIjFZd58rg6QKyU75Koi7bPOEzHcvge+jYZcvDjtWUqz5U+oOiO+BfqHYqj
ogHSsiMcOodMhnVjJSGa4w4AuLbuZhAkvovuOWbuQM6TZnwFjNlN4k9UInb+
tN9FaOWIXK2oCHk0BnRI2PFGldFdz+0aM8wHw+lgsk/w3kobMCtvXqe6Ybhw
fZtBsvkJtZgIXiT5BfqxNvnUxkkUjtF5OuXHTr+4AB9wek3KIUfV5wTEvZEa
FPGVN7il1Lcw6WWqGCB7yWR6fU1b9BtZDmsqUMg70w1N4AJiPtIZsWKZTzix
zyapMP6m4CPeLXgBjsGnBh/E8B5AizDTPaBMrPEInRIB31CIHaOcUO/mjxFJ
xafkv5X4XhIuJOh/ByOK36FjDVfGcBfd4eCaTUEJNonGQw4uFukzbAeqqqJJ
9qg57rEqydLDAiORFkOrVtTvA8W9vrsZs8IMv1jjODpShfxS02+pqPgAyn23
2dpvtNoHjeNWu1kn1ZF+Aw2ciUI/QhDGtUFPNMGU3uGRqMY9thcuPPTJDMEa
xj/0oQ6Dpa9rD8TRvKYdWjSGHdq8isuErauokTUY9XU0thYtb+m3fU+mSa+V
oM2yKj4nmA4EuKJTdBRUeqOyW9/ebIkBnIHqtVaoOzj3888/q+b788uTQ4Wm
KWq/0dj/uzo/Uo36ydHxSf3s/LC+mqjWuTpsnF+YlefVA4g4Z8ckYS82Tjm4
yPFhCR7rUCPCAABFoZ5Qr+0BmdJGKPY9pM0UQDG9gUR0C6/rZ4d5C/4WBXCi
JEAzYzi/kaiv4vU70bop7Kc5R49R5TaaCoadPp50kgljqzah1jT29BGn+bTT
i3AUdXKvsTZxzutWdDdqRH0Zlmc2B11s3g7v1d0j0OFrtKoW+8KAv9TFu4vG
+YHYvEjvUIiKYXUQZVP9E+ViPp3zbyIhHuarLi9M1nI2O4l5D+tvL99VSNdB
KQqQUw4a6CHr/KfkHwNr//XEjS5E43/rPl98ozJDb5x6F9mwIX/sOXtT/IS/
/ihXmmPIiAOEYaBk0FuVUrWqVrbgbiOXhgLfPYlhC2xjjJlQwKBDeKGjj69h
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

--182774146-1920606540-1080058235=:513267
Content-Type: text/plain
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
MIME-Version: 1.0


---------------------------(end of broadcast)---------------------------
TIP 9: the planner will ignore your desire to choose an index scan if your
      joining column's datatypes do not match

--182774146-1920606540-1080058235=:513267--

From pgsql-hackers-owner+M51641@@postgresql.org Tue Mar 23 11:32:25 2004
Return-path: <pgsql-hackers-owner+M51641@@postgresql.org>
Received: from postgresql.org (svr1.postgresql.org [200.46.204.71])
	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id i2NIWId29116
	for <pgman@@candle.pha.pa.us>; Tue, 23 Mar 2004 13:32:24 -0500 (EST)
X-Original-To: pgsql-hackers-postgresql.org@@localhost.postgresql.org
Received: from localhost (unknown [200.46.204.2])
	by svr1.postgresql.org (Postfix) with ESMTP id 28F60D1EC42
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>; Tue, 23 Mar 2004 18:28:57 +0000 (GMT)
Received: from svr1.postgresql.org ([200.46.204.71])
	by localhost (neptune.hub.org [200.46.204.2]) (amavisd-new, port 10024)
	with ESMTP id 11478-09
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>;
	Tue, 23 Mar 2004 14:28:55 -0400 (AST)
Received: from alvh.no-ip.org (200.85.202.54.DSL.surnet.cl [200.85.202.54])
	by svr1.postgresql.org (Postfix) with ESMTP id 7D042D1EC0D
	for <pgsql-hackers@@postgresql.org>; Tue, 23 Mar 2004 14:28:54 -0400 (AST)
Received: by alvh.no-ip.org (Postfix, from userid 500)
	id 8877D5759D; Tue, 23 Mar 2004 13:28:43 -0500 (EST)
Date: Tue, 23 Mar 2004 14:28:43 -0400
From: Alvaro Herrera <alvherre@@dcc.uchile.cl>
To: Heikki Linnakangas <hlinnaka@@iki.fi>
cc: pgsql-hackers@@postgresql.org
Subject: Re: [HACKERS] Two-phase commit
Message-ID: <20040323182843.GF3863@@dcc.uchile.cl>
References: <Pine.OSF.4.58.0402042200330.238747@@kosh.hut.fi> <200402080138.i181cPl15259@@candle.pha.pa.us> <Pine.OSF.4.58.0402220324250.126984@@kosh.hut.fi> <Pine.OSF.4.58.0403231758350.513267@@kosh.hut.fi>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <Pine.OSF.4.58.0403231758350.513267@@kosh.hut.fi>
User-Agent: Mutt/1.4.1i
X-Virus-Scanned: by amavisd-new at postgresql.org
X-Mailing-List: pgsql-hackers
Precedence: bulk
Sender: pgsql-hackers-owner@@postgresql.org
X-Spam-Checker-Version: SpamAssassin 2.61 (1.212.2.1-2003-12-09-exp) on 
	candle.pha.pa.us
X-Spam-Status: No, hits=-4.9 required=5.0 tests=BAYES_00 autolearn=ham 
	version=2.61
Status: ORr

On Tue, Mar 23, 2004 at 06:10:35PM +0200, Heikki Linnakangas wrote:
> I have again updated my two-phase commit patches. Only minor
> modifications.
> 
> I haven't received any comments and there hasn't been any discussion on
> the implementation, I suppose that nobody has given it a try. :(

I haven't tried it, but I see it conflicts big time with my
modifications in access/transam/xact.c for subtransactions support.

I am currently writing a proposal for nested transactions which will go
to -hackers, and I will be posting some code to -patches shortly
thereafter which should give you an idea where I am heading.  Maybe then
we can have the opinion from the devel community about both things,
whether they should be applied or not.

-- 
Alvaro Herrera (<alvherre[a]dcc.uchile.cl>)
"El miedo atento y previsor es la madre de la seguridad" (E. Burke)

---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?

               http://archives.postgresql.org

From jtv@@xs4all.nl Tue Jun 29 10:18:43 2004
Return-path: <jtv@@xs4all.nl>
Received: from smtp-out3.xs4all.nl (smtp-out3.xs4all.nl [194.109.24.13])
	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id i5TEIeC19886
	for <pgman@@candle.pha.pa.us>; Tue, 29 Jun 2004 10:18:42 -0400 (EDT)
Received: from xs1.xs4all.nl (xs1.xs4all.nl [194.109.21.2])
	by smtp-out3.xs4all.nl (8.12.10/8.12.10) with ESMTP id i5TEIcdQ066827;
	Tue, 29 Jun 2004 16:18:38 +0200 (CEST)
Received: from xs1.xs4all.nl (jtv@@localhost.xs4all.nl [127.0.0.1])
	by xs1.xs4all.nl (8.12.10/8.12.10) with ESMTP id i5TEIcfr057746;
	Tue, 29 Jun 2004 16:18:38 +0200 (CEST)
	(envelope-from jtv@@xs4all.nl)
Received: (from jtv@@localhost)
	by xs1.xs4all.nl (8.12.10/8.12.9/Submit) id i5TEIcD1057745;
	Tue, 29 Jun 2004 16:18:38 +0200 (CEST)
	(envelope-from jtv)
Date: Tue, 29 Jun 2004 16:18:38 +0200
From: "Jeroen T. Vermeulen" <jtv@@xs4all.nl>
To: pgadmin@@pse-consulting.de, Bruce Momjian <pgman@@candle.pha.pa.us>
Subject: Two-phase commit
Message-ID: <20040629141837.GL56428@@xs4all.nl>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
User-Agent: Mutt/1.4.1i
X-Spam-Checker-Version: SpamAssassin 2.61 (1.212.2.1-2003-12-09-exp) on 
	candle.pha.pa.us
X-Spam-Status: No, hits=-4.9 required=5.0 tests=BAYES_00 autolearn=ham 
	version=2.61
Status: ORr

Hi Andreas, Bruce:

I briefly discussed this with both of you separately.  The 2-phase-commit
patch that's being worked on has the shortcoming that the "supercommit"
is assumed to come over the same connection as the regular database
session, i.e. the transaction manager (the middleware that manages the
two-phase transaction across multibple databases etc.) also has to serve
as a proxy for the regular database session.

A "real" two-phase commit system has the two phases of the transaction
going over separate connections--one between application and database
server, one between middleware and database server.  Andreas quite
sensibly asked me why; and the real answer only just popped back into
my head.

I think the real reason is the same reason why we want 2PC in the first
place.  Connections may be lost _just_ when the middleware is sending out
second-phase commits to the various resource managers.  In that case, it
is absolutely essential that the transaction manager be able to reconnect
to the resource manager (in this case, postgres) and continue where it
left off.  A regular session can't do that, and that's exactly where the
2nd phase is being implemented right now.

The way the current patch does things is more like the Oracle model.
Oracle has a "prepare commit" command (which I think even makes more
sense for this approach than making things look like nested transactions).
However I'm told that Oracle builds on the assumption of a two-tier
system, and it doesn't work very well.  If two-tier were good enough, then
I suspect you might as well use something like my robusttransaction class
which catches the special case of losing connection during commit, then
tries to reconnect and find out whether the commit went through or not.

As I mentioned to Bruce at FOSDEM last year, what I'd really need to get
that right (and the same goes for 2pc) I needed to be able to query the
transaction log in some way, to find out what happened to a transaction.
I've always assumed, and still believe, that what I did here was just a
hack to make the worst case a bit less likely.  It's not what I would call
a solution to the atomicity problem.

On the other hand, of course, at least one traditional argument for 3-tier
setups doesn't apply to us: we don't need connection pooling on the
middleware just to keep the per-connection licensing cost down.  :)


Jeroen

From pgsql-hackers-owner+M59934=pgman=candle.pha.pa.us@@postgresql.org Tue Oct 12 15:27:20 2004
Return-path: <pgsql-hackers-owner+M59934=pgman=candle.pha.pa.us@@postgresql.org>
Received: from svr1.postgresql.org (svr1.postgresql.org [200.46.204.71])
	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id i9CJRJp09792
	for <pgman@@candle.pha.pa.us>; Tue, 12 Oct 2004 15:27:19 -0400 (EDT)
Received: from localhost (unknown [200.46.204.144])
	by svr1.postgresql.org (Postfix) with ESMTP id E0D5B32AD90
	for <pgman@@candle.pha.pa.us>; Tue, 12 Oct 2004 20:27:15 +0100 (BST)
Received: from svr1.postgresql.org ([200.46.204.71])
	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
	with ESMTP id 89028-10 for <pgman@@candle.pha.pa.us>;
	Tue, 12 Oct 2004 19:27:14 +0000 (GMT)
Received: from postgresql.org (svr1.postgresql.org [200.46.204.71])
	by svr1.postgresql.org (Postfix) with ESMTP id 524D832AC81
	for <pgman@@candle.pha.pa.us>; Tue, 12 Oct 2004 20:27:15 +0100 (BST)
X-Original-To: pgsql-hackers-postgresql.org@@localhost.postgresql.org
Received: from localhost (unknown [200.46.204.144])
	by svr1.postgresql.org (Postfix) with ESMTP id 7B81632B6BE
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>; Thu,  7 Oct 2004 12:18:35 +0100 (BST)
Received: from svr1.postgresql.org ([200.46.204.71])
	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
	with ESMTP id 22385-04
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>;
	Thu,  7 Oct 2004 11:17:11 +0000 (GMT)
Received: from smtp-3.hut.fi (smtp-3.hut.fi [130.233.228.93])
	by svr1.postgresql.org (Postfix) with ESMTP id 50FBE32B722
	for <pgsql-hackers@@postgresql.org>; Thu,  7 Oct 2004 12:16:45 +0100 (BST)
Received: from kosh.hut.fi (kosh.hut.fi [130.233.228.10])
	by smtp-3.hut.fi (8.12.10/8.12.10) with ESMTP id i97BFicq021410;
	Thu, 7 Oct 2004 14:15:45 +0300
Date: Thu, 7 Oct 2004 14:15:44 +0300 (EEST)
From: Heikki Linnakangas <hlinnaka@@iki.fi>
X-X-Sender: hlinnaka@@kosh.hut.fi
To: Tom Lane <tgl@@sss.pgh.pa.us>
cc: Heikki Linnakangas <hlinnaka@@iki.fi>, pgsql-hackers@@postgresql.org
Subject: Re: [HACKERS] Two-phase commit
In-Reply-To: <354.1097099170@@sss.pgh.pa.us>
Message-ID: <Pine.OSF.4.61.0410071357420.432862@@kosh.hut.fi>
References: <Pine.OSF.4.58.0402042200330.238747@@kosh.hut.fi>
	<200402080138.i181cPl15259@@candle.pha.pa.us> <Pine.OSF.4.58.0402220324250.126984@@kosh.hut.fi>
	<Pine.OSF.4.58.0403231758350.513267@@kosh.hut.fi> <354.1097099170@@sss.pgh.pa.us>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
X-RAVMilter-Version: 8.4.3(snapshot 20030212) (smtp-3.hut.fi)
X-Virus-Scanned: by amavisd-new at hub.org
X-Mailing-List: pgsql-hackers
Precedence: bulk
Sender: pgsql-hackers-owner@@postgresql.org
X-Virus-Scanned: by amavisd-new at hub.org
X-Spam-Checker-Version: SpamAssassin 2.61 (1.212.2.1-2003-12-09-exp) on 
	candle.pha.pa.us
X-Spam-Status: No, hits=-4.9 required=5.0 tests=BAYES_00 autolearn=ham 
	version=2.61
Status: OR

On Wed, 6 Oct 2004, Tom Lane wrote:

> Quite some time ago, Heikki Linnakangas <hlinnaka@@iki.fi> wrote:
>> I haven't received any comments and there hasn't been any discussion on
>> the implementation, I suppose that nobody has given it a try. :(
>
> I finally got around to taking a close look at this.  There's a good bit
> undone, as you well know, but it seems like it can be the basis for a
> workable feature.  I do have a few comments to make.

Great!

> At the API level, I like the PREPARE/COMMIT/ROLLBACK statements, but I
> think you have missed a bet in that it needs to be possible to issue
> "COMMIT PREPARED gid" for the same gid several times without error.
> Consider a scenario where the transaction monitor crashes during the
> commit phase.  When it recovers, it will be aware that it had committed
> to commit, but it won't know which nodes were successfully committed.
> So it will need to resend the COMMIT commands.  It would be bad for the
> nodes to simply say "yes boss" if they are told to COMMIT a gid they
> have no record of.  So I think the gid's have to stick around after
> COMMIT PREPARED or ROLLBACK PREPARED, and there needs to be a fourth
> command (RELEASE PREPARED?) to actually remove the state data when the
> transaction monitor is satisfied that everything's done.  RELEASE of
> an unknown gid is okay to be a no-op.

Hmm. I don't see a problem with the "yes boss" approach. Some kind of a 
warning is appropriate, of course, but I don't see a reason for an 
additional step. After all, you would still fall back to the "yes boss" 
approach on the RELEASE PREPARED command.

The transaction monitor knows if the 1st phase succeeded or not, so if the 
COMMIT PREPARED doesn't find the transaction anymore, the monitor knows 
that it's previous commit/rollback succeeded.

> Implementation-wise, I really dislike storing the info in a shared hash
> table, because I don't see any reasonable bound on the size of the hash
> table (your existing code uses 100 which is about as arbitrary as it
> gets).  Plus the actual content of each entry is not fixed-size either.
> This is not very workable given our fixed-size shared memory mechanism.

I fully agree, I'm very dissatisfied with that part.

> The idea that occurs to me instead is to not use WAL or shared memory at
> all for keeping the prepared-transaction state info.  Instead, suppose
> that we store the status information in a file named after the GID,
> "$PGDATA/pg_twophase/gid".  We could write the file with a CRC similarly
> to what's done for pg_control.  Once such a file is written and fsync'd,
> it's equally as reliable as a WAL record would be, so it seems safe
> enough to me to report the PREPARE as done.  COMMIT, ROLLBACK, and the
> pg_prepared_xacts system view would look into the pg_twophase directory
> to find out all about active prepared transactions; RELEASE PREPARED
> would simply delete the appropriate file.  (Note: commit or rollback
> would need to take the transaction XID from the GID file and then look
> in pg_clog to find out if the transaction were already committed.  These
> operations do not change the pg_twophase file, but they do write a
> normal transaction-commit or -abort WAL record and update pg_clog.)

That sounds like a clever idea! I thought about using a single file 
myself, but the multi-file approach is much simpler.

> I think this would offer better performance as well as being more
> scalable, because the implementation you have looks like it would have
> some contention for the shared GID hashtable.

I guess the performance would depend a lot on how good/bad the filesystem 
is at creating and deleting a lot of small files.

> I would be inclined to require GIDs to be numbers (probably int8's)
> instead of strings, so that we don't have any problems with funny
> characters in the file names.  That's negotiable though, as we could
> certainly uuencode the strings or something to avoid that trap.

I'm afraid we have to support arbitrary strings. I think at least the Java 
Transaction API requires that, I'm not sure though if that could be 
worked around in the JDBC driver.

> You were concerned about how to mark prepared transactions in pg_clog,
> given that Alvaro had already commandeered state '11' for
> subtransactions.  Since only a toplevel transaction can be prepared,
> it might work to allow state '11' with a zero pg_subtrans parent link
> to mean a prepared transaction.  This would imply factoring prepared
> XIDs into GlobalXmin (so that pg_subtrans entries don't get recycled
> too soon) but we probably have to do that anyway.  AFAICS, prepared
> but uncommitted XIDs have to be considered still InProgress, so if
> they are less than GlobalXmin we'd lose.

Yes, they must be considered InProgress. The snapshot code needs to be 
modified to handle an arbitrary number of in progress transactions.


I've been thinking if it would be useful to have the COMMIT
PREPARED/ROLLBACK PREPARED commands under transaction control themselves. 
You could for example do "BEGIN; COMMIT PREPARED mygid; COMMIT PREPARED 
mygid2; COMMIT;" to atomically commit two already-prepared transactions, 
and even chain the 2PC transactions like "BEGIN; COMMIT PREPARED mygid; 
PREPARE TRANSACTION mygid2". It seems feasible to implement, just postpone 
the actual 2nd phase commit to the end of the commit of the enclosing 
transaction.

- Heikki

---------------------------(end of broadcast)---------------------------
TIP 7: don't forget to increase your free space map settings

From pgsql-hackers-owner+M59924=pgman=candle.pha.pa.us@@postgresql.org Tue Oct 12 15:25:43 2004
Return-path: <pgsql-hackers-owner+M59924=pgman=candle.pha.pa.us@@postgresql.org>
Received: from svr1.postgresql.org (svr1.postgresql.org [200.46.204.71])
	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id i9CJPfp08866
	for <pgman@@candle.pha.pa.us>; Tue, 12 Oct 2004 15:25:42 -0400 (EDT)
Received: from localhost (unknown [200.46.204.144])
	by svr1.postgresql.org (Postfix) with ESMTP id C0C3D32BB7C
	for <pgman@@candle.pha.pa.us>; Tue, 12 Oct 2004 20:25:37 +0100 (BST)
Received: from svr1.postgresql.org ([200.46.204.71])
	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
	with ESMTP id 86781-07 for <pgman@@candle.pha.pa.us>;
	Tue, 12 Oct 2004 19:25:36 +0000 (GMT)
Received: from postgresql.org (svr1.postgresql.org [200.46.204.71])
	by svr1.postgresql.org (Postfix) with ESMTP id 2F57A32BB46
	for <pgman@@candle.pha.pa.us>; Tue, 12 Oct 2004 20:25:37 +0100 (BST)
X-Original-To: pgsql-hackers-postgresql.org@@localhost.postgresql.org
Received: from localhost (unknown [200.46.204.144])
	by svr1.postgresql.org (Postfix) with ESMTP id B4BAD32A071
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>; Sat,  9 Oct 2004 12:48:23 +0100 (BST)
Received: from svr1.postgresql.org ([200.46.204.71])
	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
	with ESMTP id 38695-06
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>;
	Sat,  9 Oct 2004 11:48:09 +0000 (GMT)
Received: from smtp-3.hut.fi (smtp-3.hut.fi [130.233.228.93])
	by svr1.postgresql.org (Postfix) with ESMTP id A887832A4FE
	for <pgsql-hackers@@postgresql.org>; Sat,  9 Oct 2004 12:48:10 +0100 (BST)
Received: from kosh.hut.fi (kosh.hut.fi [130.233.228.10])
	by smtp-3.hut.fi (8.12.10/8.12.10) with ESMTP id i99Bm9UD031611
	for <pgsql-hackers@@postgresql.org>; Sat, 9 Oct 2004 14:48:09 +0300
Date: Sat, 9 Oct 2004 14:48:09 +0300 (EEST)
From: Heikki Linnakangas <hlinnaka@@iki.fi>
X-X-Sender: hlinnaka@@kosh.hut.fi
To: pgsql-hackers@@postgresql.org
Subject: [HACKERS] Two-phase commit patch updated
In-Reply-To: <354.1097099170@@sss.pgh.pa.us>
Message-ID: <Pine.OSF.4.61.0410091429320.339489@@kosh.hut.fi>
References: <Pine.OSF.4.58.0402042200330.238747@@kosh.hut.fi>
	<200402080138.i181cPl15259@@candle.pha.pa.us> <Pine.OSF.4.58.0402220324250.126984@@kosh.hut.fi>
	<Pine.OSF.4.58.0403231758350.513267@@kosh.hut.fi> <354.1097099170@@sss.pgh.pa.us>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
X-RAVMilter-Version: 8.4.3(snapshot 20030212) (smtp-3.hut.fi)
X-Virus-Scanned: by amavisd-new at hub.org
X-Mailing-List: pgsql-hackers
Precedence: bulk
Sender: pgsql-hackers-owner@@postgresql.org
X-Virus-Scanned: by amavisd-new at hub.org
X-Spam-Checker-Version: SpamAssassin 2.61 (1.212.2.1-2003-12-09-exp) on 
	candle.pha.pa.us
X-Spam-Status: No, hits=-4.9 required=5.0 tests=BAYES_00 autolearn=ham 
	version=2.61
Status: OR

I brought the 2PC patch up to date:

http://www.hut.fi/~hlinnaka/pgsql/

There's no new functionality, I just fixed all the bit rot so that it 
applies to the current CVS tip.

- Heikki

---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
    (send "unregister YourEmailAddressHere" to majordomo@@postgresql.org)

From pgsql-hackers-owner+M60193=pgman=candle.pha.pa.us@@postgresql.org Wed Oct 20 11:43:40 2004
Return-path: <pgsql-hackers-owner+M60193=pgman=candle.pha.pa.us@@postgresql.org>
Received: from svr1.postgresql.org (svr1.postgresql.org [200.46.204.71])
	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id i9KFhdf10906
	for <pgman@@candle.pha.pa.us>; Wed, 20 Oct 2004 11:43:40 -0400 (EDT)
Received: from localhost (unknown [200.46.204.144])
	by svr1.postgresql.org (Postfix) with ESMTP id 6358632A158
	for <pgman@@candle.pha.pa.us>; Wed, 20 Oct 2004 16:43:37 +0100 (BST)
Received: from svr1.postgresql.org ([200.46.204.71])
	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
	with ESMTP id 60338-02 for <pgman@@candle.pha.pa.us>;
	Wed, 20 Oct 2004 15:43:36 +0000 (GMT)
Received: from postgresql.org (svr1.postgresql.org [200.46.204.71])
	by svr1.postgresql.org (Postfix) with ESMTP id 01CF832A12A
	for <pgman@@candle.pha.pa.us>; Wed, 20 Oct 2004 16:43:37 +0100 (BST)
X-Original-To: pgsql-hackers-postgresql.org@@localhost.postgresql.org
Received: from localhost (unknown [200.46.204.144])
	by svr1.postgresql.org (Postfix) with ESMTP id 0A2B932B107
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>; Wed, 20 Oct 2004 16:41:15 +0100 (BST)
Received: from svr1.postgresql.org ([200.46.204.71])
	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
	with ESMTP id 74851-10
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>;
	Wed, 20 Oct 2004 15:41:08 +0000 (GMT)
Received: from mailsrvr2.bull.com (mailsrvr2.bull.com [192.90.162.8])
	by svr1.postgresql.org (Postfix) with ESMTP id 58BB532AF80
	for <pgsql-hackers@@postgresql.org>; Wed, 20 Oct 2004 16:41:07 +0100 (BST)
Received: from us-phx1.az05.bull.com (us-phx1.az05.bull.com [141.112.40.1])
	by mailsrvr2.bull.com (8.13.1/8.13.1) with ESMTP id i9KFeskm013495
	for <pgsql-hackers@@postgresql.org>; Wed, 20 Oct 2004 08:40:54 -0700
To: pgsql-hackers@@postgresql.org
Subject: [HACKERS] 2PC support
MIME-Version: 1.0
X-Mailer: Lotus Notes Release 6.5.1 January 21, 2004
Message-ID: <OFC4281B9F.ABCA4E46-ON07256F33.0054BD37-07256F33.00562470@@us-phx1.az05.bull.com>
From: Michael.Giroux@@objectweb.org
Date: Wed, 20 Oct 2004 08:40:53 -0700
X-MIMETrack: Serialize by Router on US-PHX1/US/BULL(Release 6.5.1|January 21, 2004) at
	10/20/2004 08:40:54 AM,
	Serialize complete at 10/20/2004 08:40:54 AM
Content-Type: text/plain; charset="US-ASCII"
X-BullServices-MailScanner-Information: Please contact the ISP for more information
X-BullServices-MailScanner: Not scanned: please contact your Internet E-Mail Service Provider for details
X-MailScanner-From: michael.giroux@@objectweb.org
X-Virus-Scanned: by amavisd-new at hub.org
X-Mailing-List: pgsql-hackers
Precedence: bulk
Sender: pgsql-hackers-owner@@postgresql.org
X-Virus-Scanned: by amavisd-new at hub.org
Status: OR

Hi,
I've read a few of the recent posts about 2-phase-commit support.  I 
noticed some discussion related to persisting the state of in-doubt 
transactions, and thought you might be able to take advantage of work that 
has been going on in the area of transaction logs. 

I'm working on a project (howl.objectweb.org) to implement a journal 
designed specifically to support transaction managers 2PC protocol.  The 
project was concieved during a meeting between ObjectWeb and Apache 
Geronimo developers last year at ApacheCon 2003.  The journal is currently 
used by the Apache Geronimo TM, Codehaus ActiveMQ, and ObjectWeb JOTM 
projects.

Although the main objective is to support TM 2PC protocol, it could be 
used as a database before-image journal as well.  The code is BSD 
licensed.  More at http://howl.objectweb.org.

Also, with respect to the requirements for the 2PC protocol, there is an 
excellent discussion by Mike Spille.  Mike wrote a series of articles 
titled "XA Exposed".  You can review the articles at 
http://www.theserverside.com.  Search for "xa exposed".

If any of you will be at ApacheCon 2004 next month, I'm giving a paper on 
the HOWL journal.  I'll be happy to talk with you there.

Michael Giroux,  objectweb.org

---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
      subscribe-nomail command to majordomo@@postgresql.org so that your
      message can get through to the mailing list cleanly

From pgsql-hackers-owner+M63326=pgman=candle.pha.pa.us@@postgresql.org Wed Jan 19 13:02:04 2005
Return-path: <pgsql-hackers-owner+M63326=pgman=candle.pha.pa.us@@postgresql.org>
Received: from svr1.postgresql.org (svr1.postgresql.org [200.46.204.71])
	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id j0JJ23w15071
	for <pgman@@candle.pha.pa.us>; Wed, 19 Jan 2005 14:02:03 -0500 (EST)
Received: from localhost (unknown [200.46.204.144])
	by svr1.postgresql.org (Postfix) with ESMTP id 86EA13A438A
	for <pgman@@candle.pha.pa.us>; Wed, 19 Jan 2005 19:02:00 +0000 (GMT)
Received: from svr1.postgresql.org ([200.46.204.71])
	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
	with ESMTP id 39979-07 for <pgman@@candle.pha.pa.us>;
	Wed, 19 Jan 2005 19:01:58 +0000 (GMT)
Received: from postgresql.org (svr1.postgresql.org [200.46.204.71])
	by svr1.postgresql.org (Postfix) with ESMTP id DC7E53A4447
	for <pgman@@candle.pha.pa.us>; Wed, 19 Jan 2005 19:01:45 +0000 (GMT)
X-Original-To: pgsql-hackers-postgresql.org@@localhost.postgresql.org
Received: from localhost (unknown [200.46.204.144])
	by svr1.postgresql.org (Postfix) with ESMTP id E30A83A43DE
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>; Wed, 19 Jan 2005 18:59:59 +0000 (GMT)
Received: from svr1.postgresql.org ([200.46.204.71])
	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
	with ESMTP id 39733-06
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>;
	Wed, 19 Jan 2005 18:59:49 +0000 (GMT)
Received: from smtp-3.hut.fi (smtp-3.hut.fi [130.233.228.93])
	by svr1.postgresql.org (Postfix) with ESMTP id 83C883A42C9
	for <pgsql-hackers@@postgresql.org>; Wed, 19 Jan 2005 18:59:48 +0000 (GMT)
Received: from localhost (putosiko.hut.fi [130.233.228.114])
	by smtp-3.hut.fi (8.12.10/8.12.10) with ESMTP id j0JIxkeL013491
	for <pgsql-hackers@@postgresql.org>; Wed, 19 Jan 2005 20:59:46 +0200
Received: from smtp-3.hut.fi ([130.233.228.93])
	by localhost (putosiko.hut.fi [130.233.228.114]) (amavisd-new, port 10024)
	with LMTP id 17639-01-10 for <pgsql-hackers@@postgresql.org>;
	Wed, 19 Jan 2005 20:59:45 +0200 (EET)
Received: from kosh.hut.fi (kosh.hut.fi [130.233.228.10])
	by smtp-3.hut.fi (8.12.10/8.12.10) with ESMTP id j0JItvEJ011614
	for <pgsql-hackers@@postgresql.org>; Wed, 19 Jan 2005 20:55:57 +0200
Date: Wed, 19 Jan 2005 20:55:57 +0200 (EET)
From: Heikki Linnakangas <hlinnaka@@iki.fi>
X-X-Sender: hlinnaka@@kosh.hut.fi
To: pgsql-hackers@@postgresql.org
Subject: [HACKERS] Two-phase commit for 8.1
Message-ID: <Pine.OSF.4.61.0501192055310.62540@@kosh.hut.fi>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
X-TKK-Virus-Scanned: by amavisd-new-2.1.2-hutcc at putosiko.hut.fi
X-Virus-Scanned: by amavisd-new at hub.org
X-Mailing-List: pgsql-hackers
Precedence: bulk
Sender: pgsql-hackers-owner@@postgresql.org
X-Virus-Scanned: by amavisd-new at hub.org
X-Spam-Checker-Version: SpamAssassin 2.61 (1.212.2.1-2003-12-09-exp) on 
	candle.pha.pa.us
X-Spam-Status: No, hits=-4.9 required=5.0 tests=BAYES_00 autolearn=ham 
	version=2.61
Status: OR

Hi,

Now that we got 8.0 out of the door, I'm submitting my two-phase commit patch 
again for discussion.

http://www.hut.fi/~hlinnaka/pgsql/

Do we want it in 8.1, if we want a short development cycle? It needs a new 
pg_twophase subdirectory, and it introduces a new system view, so I guess it 
requires an initdb (or pg_upgrade).

Any comments on the implementation or the new commands?

I would appreciate help testing the JDBC driver with an application server that 
does XA recovery properly.

- Heikki

---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
    (send "unregister YourEmailAddressHere" to majordomo@@postgresql.org)

From pgsql-hackers-owner+M63328=pgman=candle.pha.pa.us@@postgresql.org Wed Jan 19 15:00:49 2005
Return-path: <pgsql-hackers-owner+M63328=pgman=candle.pha.pa.us@@postgresql.org>
Received: from svr1.postgresql.org (svr1.postgresql.org [200.46.204.71])
	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id j0JL0lw26408
	for <pgman@@candle.pha.pa.us>; Wed, 19 Jan 2005 16:00:47 -0500 (EST)
Received: from localhost (unknown [200.46.204.144])
	by svr1.postgresql.org (Postfix) with ESMTP id AA4F63A44F7
	for <pgman@@candle.pha.pa.us>; Wed, 19 Jan 2005 21:00:43 +0000 (GMT)
Received: from svr1.postgresql.org ([200.46.204.71])
	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
	with ESMTP id 69508-07 for <pgman@@candle.pha.pa.us>;
	Wed, 19 Jan 2005 21:00:41 +0000 (GMT)
Received: from postgresql.org (svr1.postgresql.org [200.46.204.71])
	by svr1.postgresql.org (Postfix) with ESMTP id 954C03A4493
	for <pgman@@candle.pha.pa.us>; Wed, 19 Jan 2005 21:00:42 +0000 (GMT)
X-Original-To: pgsql-hackers-postgresql.org@@localhost.postgresql.org
Received: from localhost (unknown [200.46.204.144])
	by svr1.postgresql.org (Postfix) with ESMTP id AEE2A3A4447
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>; Wed, 19 Jan 2005 20:59:06 +0000 (GMT)
Received: from svr1.postgresql.org ([200.46.204.71])
	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
	with ESMTP id 69310-05
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>;
	Wed, 19 Jan 2005 20:58:55 +0000 (GMT)
Received: from hub.org (hub.org [200.46.204.220])
	by svr1.postgresql.org (Postfix) with ESMTP id BD0E03A43DA
	for <pgsql-hackers@@postgresql.org>; Wed, 19 Jan 2005 20:58:56 +0000 (GMT)
Received: from ganymede.hub.org (blk-224-186-245.eastlink.ca [24.224.186.245])
	by hub.org (Postfix) with ESMTP id 864D2129256;
	Wed, 19 Jan 2005 16:58:54 -0400 (AST)
Received: by ganymede.hub.org (Postfix, from userid 1000)
	id B19BA5E34A; Wed, 19 Jan 2005 16:58:55 -0400 (AST)
Received: from localhost (localhost [127.0.0.1])
	by ganymede.hub.org (Postfix) with ESMTP id AD3675DCBC;
	Wed, 19 Jan 2005 16:58:55 -0400 (AST)
Date: Wed, 19 Jan 2005 16:58:55 -0400 (AST)
From: "Marc G. Fournier" <scrappy@@postgresql.org>
X-X-Sender: scrappy@@ganymede.hub.org
To: Heikki Linnakangas <hlinnaka@@iki.fi>
cc: pgsql-hackers@@postgresql.org
Subject: Re: [HACKERS] Two-phase commit for 8.1
In-Reply-To: <Pine.OSF.4.61.0501192055310.62540@@kosh.hut.fi>
Message-ID: <20050119165747.U47533@@ganymede.hub.org>
References: <Pine.OSF.4.61.0501192055310.62540@@kosh.hut.fi>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
X-Virus-Scanned: by amavisd-new at hub.org
X-Mailing-List: pgsql-hackers
Precedence: bulk
Sender: pgsql-hackers-owner@@postgresql.org
X-Virus-Scanned: by amavisd-new at hub.org
X-Spam-Checker-Version: SpamAssassin 2.61 (1.212.2.1-2003-12-09-exp) on 
	candle.pha.pa.us
X-Spam-Status: No, hits=-4.9 required=5.0 tests=BAYES_00 autolearn=ham 
	version=2.61
Status: OR


If the patch is ready to be committed early in the cycle, I'd say most 
definitely ... just depends on how late in the cycle its ready ...

I *believe* that 8.1, we're looking at a 2mo cycle before beta, so figure 
beta for ~April 1st (no april fools jokes, eh?) ...

On Wed, 19 Jan 2005, Heikki Linnakangas wrote:

> Hi,
>
> Now that we got 8.0 out of the door, I'm submitting my two-phase commit patch 
> again for discussion.
>
> http://www.hut.fi/~hlinnaka/pgsql/
>
> Do we want it in 8.1, if we want a short development cycle? It needs a new 
> pg_twophase subdirectory, and it introduces a new system view, so I guess it 
> requires an initdb (or pg_upgrade).
>
> Any comments on the implementation or the new commands?
>
> I would appreciate help testing the JDBC driver with an application server 
> that does XA recovery properly.
>
> - Heikki
>
> ---------------------------(end of broadcast)---------------------------
> TIP 2: you can get off all lists at once with the unregister command
>   (send "unregister YourEmailAddressHere" to majordomo@@postgresql.org)
>

----
Marc G. Fournier           Hub.Org Networking Services (http://www.hub.org)
Email: scrappy@@hub.org           Yahoo!: yscrappy              ICQ: 7615664

---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

               http://www.postgresql.org/docs/faqs/FAQ.html

From pgsql-hackers-owner+M63331=pgman=candle.pha.pa.us@@postgresql.org Wed Jan 19 18:45:25 2005
Return-path: <pgsql-hackers-owner+M63331=pgman=candle.pha.pa.us@@postgresql.org>
Received: from svr1.postgresql.org (svr1.postgresql.org [200.46.204.71])
	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id j0K0jOw15340
	for <pgman@@candle.pha.pa.us>; Wed, 19 Jan 2005 19:45:24 -0500 (EST)
Received: from localhost (unknown [200.46.204.144])
	by svr1.postgresql.org (Postfix) with ESMTP id 40B203A45A5
	for <pgman@@candle.pha.pa.us>; Thu, 20 Jan 2005 00:45:20 +0000 (GMT)
Received: from svr1.postgresql.org ([200.46.204.71])
	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
	with ESMTP id 91025-08 for <pgman@@candle.pha.pa.us>;
	Thu, 20 Jan 2005 00:45:16 +0000 (GMT)
Received: from postgresql.org (svr1.postgresql.org [200.46.204.71])
	by svr1.postgresql.org (Postfix) with ESMTP id 46A8F3A459D
	for <pgman@@candle.pha.pa.us>; Thu, 20 Jan 2005 00:45:19 +0000 (GMT)
X-Original-To: pgsql-hackers-postgresql.org@@localhost.postgresql.org
Received: from localhost (unknown [200.46.204.144])
	by svr1.postgresql.org (Postfix) with ESMTP id 042FE3A4340;
	Thu, 20 Jan 2005 00:42:14 +0000 (GMT)
Received: from svr1.postgresql.org ([200.46.204.71])
	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
	with ESMTP id 91212-03; Thu, 20 Jan 2005 00:42:05 +0000 (GMT)
Received: from sss.pgh.pa.us (sss.pgh.pa.us [66.207.139.130])
	by svr1.postgresql.org (Postfix) with ESMTP id 493723A42C9;
	Thu, 20 Jan 2005 00:42:08 +0000 (GMT)
Received: from sss2.sss.pgh.pa.us (tgl@@localhost [127.0.0.1])
	by sss.pgh.pa.us (8.13.1/8.13.1) with ESMTP id j0K0g4GY001116;
	Wed, 19 Jan 2005 19:42:04 -0500 (EST)
To: "Marc G. Fournier" <scrappy@@postgresql.org>
cc: Heikki Linnakangas <hlinnaka@@iki.fi>, pgsql-hackers@@postgresql.org
Subject: Re: [HACKERS] Two-phase commit for 8.1 
In-Reply-To: <20050119165747.U47533@@ganymede.hub.org> 
References: <Pine.OSF.4.61.0501192055310.62540@@kosh.hut.fi> <20050119165747.U47533@@ganymede.hub.org>
Comments: In-reply-to "Marc G. Fournier" <scrappy@@postgresql.org>
	message dated "Wed, 19 Jan 2005 16:58:55 -0400"
Date: Wed, 19 Jan 2005 19:42:03 -0500
Message-ID: <1115.1106181723@@sss.pgh.pa.us>
From: Tom Lane <tgl@@sss.pgh.pa.us>
X-Virus-Scanned: by amavisd-new at hub.org
X-Mailing-List: pgsql-hackers
Precedence: bulk
Sender: pgsql-hackers-owner@@postgresql.org
X-Virus-Scanned: by amavisd-new at hub.org
Status: OR

"Marc G. Fournier" <scrappy@@postgresql.org> writes:
> If the patch is ready to be committed early in the cycle, I'd say most 
> definitely ... just depends on how late in the cycle its ready ...

My recollection is that it's quite far from being complete.  I had hoped
to spend some time during the 8.1 cycle helping Heikki finish it up,
but if we stick to the 2-month-dev-cycle idea I'm afraid there's no way
it'll be done in time.  I thought that "some time" would probably amount
to a solid man-month or so, and there's no way I can spend half my time
on just one feature for this cycle.

If Heikki wants this in for 8.1, the right thing to do is vote against
the short-dev-cycle idea.  But we need a plausible answer about what to
do about ARC to make that credible...

			regards, tom lane

---------------------------(end of broadcast)---------------------------
TIP 6: Have you searched our list archives?

               http://archives.postgresql.org

From pgsql-hackers-owner+M63432=pgman=candle.pha.pa.us@@postgresql.org Sun Jan 23 05:41:58 2005
Return-path: <pgsql-hackers-owner+M63432=pgman=candle.pha.pa.us@@postgresql.org>
Received: from svr1.postgresql.org (svr1.postgresql.org [200.46.204.71])
	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id j0NBfvw06363
	for <pgman@@candle.pha.pa.us>; Sun, 23 Jan 2005 06:41:58 -0500 (EST)
Received: from localhost (unknown [200.46.204.144])
	by svr1.postgresql.org (Postfix) with ESMTP id D0CA53A3BE7
	for <pgman@@candle.pha.pa.us>; Sun, 23 Jan 2005 11:41:55 +0000 (GMT)
Received: from svr1.postgresql.org ([200.46.204.71])
	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
	with ESMTP id 51743-08 for <pgman@@candle.pha.pa.us>;
	Sun, 23 Jan 2005 11:41:52 +0000 (GMT)
Received: from postgresql.org (svr1.postgresql.org [200.46.204.71])
	by svr1.postgresql.org (Postfix) with ESMTP id E67533A51E4
	for <pgman@@candle.pha.pa.us>; Sun, 23 Jan 2005 11:41:10 +0000 (GMT)
X-Original-To: pgsql-hackers-postgresql.org@@localhost.postgresql.org
Received: from localhost (unknown [200.46.204.144])
	by svr1.postgresql.org (Postfix) with ESMTP id CB87F3A525A
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>; Sun, 23 Jan 2005 11:39:49 +0000 (GMT)
Received: from svr1.postgresql.org ([200.46.204.71])
	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
	with ESMTP id 51345-07
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>;
	Sun, 23 Jan 2005 11:39:32 +0000 (GMT)
Received: from smtp-3.hut.fi (smtp-3.hut.fi [130.233.228.93])
	by svr1.postgresql.org (Postfix) with ESMTP id 5F3223A1AA3
	for <pgsql-hackers@@postgresql.org>; Sun, 23 Jan 2005 11:38:50 +0000 (GMT)
Received: from localhost (katosiko.hut.fi [130.233.228.115])
	by smtp-3.hut.fi (8.12.10/8.12.10) with ESMTP id j0NBcmeL011515;
	Sun, 23 Jan 2005 13:38:48 +0200
Received: from smtp-3.hut.fi ([130.233.228.93])
	by localhost (katosiko.hut.fi [130.233.228.115]) (amavisd-new, port 10024)
	with LMTP id 04384-02-2; Sun, 23 Jan 2005 13:38:47 +0200 (EET)
Received: from kosh.hut.fi (kosh.hut.fi [130.233.228.10])
	by smtp-3.hut.fi (8.12.10/8.12.10) with ESMTP id j0NBbUEJ011361;
	Sun, 23 Jan 2005 13:37:30 +0200
Date: Sun, 23 Jan 2005 13:37:30 +0200 (EET)
From: Heikki Linnakangas <hlinnaka@@iki.fi>
X-X-Sender: hlinnaka@@kosh.hut.fi
To: =?ISO-8859-1?Q?Hans-J=FCrgen_Sch=F6nig?= <postgres@@cybertec.at>
cc: pgsql-hackers@@postgresql.org
Subject: Re: [HACKERS] Two-phase commit for 8.1
In-Reply-To: <41F3699B.2060608@@cybertec.at>
Message-ID: <Pine.OSF.4.61.0501231147320.64318@@kosh.hut.fi>
References: <Pine.OSF.4.61.0501192055310.62540@@kosh.hut.fi>
	<20050119165747.U47533@@ganymede.hub.org> <1115.1106181723@@sss.pgh.pa.us>
	<Pine.OSF.4.61.0501212033520.352045@@kosh.hut.fi> <41F3699B.2060608@@cybertec.at>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8BIT
X-TKK-Virus-Scanned: by amavisd-new-2.1.2-hutcc at katosiko.hut.fi
X-Virus-Scanned: by amavisd-new at hub.org
X-Mailing-List: pgsql-hackers
Precedence: bulk
Sender: pgsql-hackers-owner@@postgresql.org
X-Virus-Scanned: by amavisd-new at hub.org
X-Spam-Checker-Version: SpamAssassin 2.61 (1.212.2.1-2003-12-09-exp) on 
	candle.pha.pa.us
X-Spam-Status: No, hits=-4.9 required=5.0 tests=BAYES_00 autolearn=ham 
	version=2.61
Status: OR

On Sun, 23 Jan 2005, Hans-Jrgen Schnig wrote:

> Heikki,
>
> What is still missing to complete the 2PC patch?.

Here's my TODO on things that need to be done:

     * large objects
     * guc variables
     * notify/listen

Large objects and notify/listen should be quite straightforward. GUC 
variables need some thinking, but shouldn't be much work.

As the patch gets more attention, I'm sure more issues will come up.

- Heikki

---------------------------(end of broadcast)---------------------------
TIP 9: the planner will ignore your desire to choose an index scan if your
      joining column's datatypes do not match

From pgsql-hackers-owner+M63434=pgman=candle.pha.pa.us@@postgresql.org Sun Jan 23 09:15:24 2005
Return-path: <pgsql-hackers-owner+M63434=pgman=candle.pha.pa.us@@postgresql.org>
Received: from svr1.postgresql.org (svr1.postgresql.org [200.46.204.71])
	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id j0NFFMw25305
	for <pgman@@candle.pha.pa.us>; Sun, 23 Jan 2005 10:15:23 -0500 (EST)
Received: from localhost (unknown [200.46.204.144])
	by svr1.postgresql.org (Postfix) with ESMTP id 3A5DA3A3BE7
	for <pgman@@candle.pha.pa.us>; Sun, 23 Jan 2005 15:15:16 +0000 (GMT)
Received: from svr1.postgresql.org ([200.46.204.71])
	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
	with ESMTP id 99539-08 for <pgman@@candle.pha.pa.us>;
	Sun, 23 Jan 2005 15:15:11 +0000 (GMT)
Received: from postgresql.org (svr1.postgresql.org [200.46.204.71])
	by svr1.postgresql.org (Postfix) with ESMTP id 4A7C43A1A03
	for <pgman@@candle.pha.pa.us>; Sun, 23 Jan 2005 15:15:15 +0000 (GMT)
X-Original-To: pgsql-hackers-postgresql.org@@localhost.postgresql.org
Received: from localhost (unknown [200.46.204.144])
	by svr1.postgresql.org (Postfix) with ESMTP id 08EA83A5242
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>; Sun, 23 Jan 2005 15:13:52 +0000 (GMT)
Received: from svr1.postgresql.org ([200.46.204.71])
	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
	with ESMTP id 00254-02
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>;
	Sun, 23 Jan 2005 15:13:46 +0000 (GMT)
Received: from sunsite.dcc.uchile.cl (sunsite.dcc.uchile.cl [192.80.24.2])
	by svr1.postgresql.org (Postfix) with ESMTP id AF7C83A520D
	for <pgsql-hackers@@postgresql.org>; Sun, 23 Jan 2005 15:13:48 +0000 (GMT)
Received: from anakena.dcc.uchile.cl ([192.80.24.3])
	by sunsite.dcc.uchile.cl (8.12.11/8.12.11) with ESMTP id j0NFDbu4014311;
	Sun, 23 Jan 2005 12:13:42 -0300 (CLST)
Received: by anakena.dcc.uchile.cl (Postfix, from userid 4151)
	id 666A5527DA; Sun, 23 Jan 2005 12:13:37 -0300 (CLST)
Date: Sun, 23 Jan 2005 12:13:37 -0300
From: Alvaro Herrera <alvherre@@dcc.uchile.cl>
To: Heikki Linnakangas <hlinnaka@@iki.fi>
cc: =?iso-8859-1?Q?Hans-J=FCrgen_Sch=F6nig?= <postgres@@cybertec.at>,
   pgsql-hackers@@postgresql.org
Subject: Re: [HACKERS] Two-phase commit for 8.1
Message-ID: <20050123151337.GD4406@@dcc.uchile.cl>
References: <Pine.OSF.4.61.0501192055310.62540@@kosh.hut.fi> <20050119165747.U47533@@ganymede.hub.org> <1115.1106181723@@sss.pgh.pa.us> <Pine.OSF.4.61.0501212033520.352045@@kosh.hut.fi> <41F3699B.2060608@@cybertec.at> <Pine.OSF.4.61.0501231147320.64318@@kosh.hut.fi>
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <Pine.OSF.4.61.0501231147320.64318@@kosh.hut.fi>
User-Agent: Mutt/1.5.6i
X-Virus-Scanned: by amavisd-new at hub.org
X-Mailing-List: pgsql-hackers
Precedence: bulk
Sender: pgsql-hackers-owner@@postgresql.org
X-Virus-Scanned: by amavisd-new at hub.org
X-Spam-Checker-Version: SpamAssassin 2.61 (1.212.2.1-2003-12-09-exp) on 
	candle.pha.pa.us
X-Spam-Status: No, hits=-4.9 required=5.0 tests=BAYES_00 autolearn=ham 
	version=2.61
Status: OR

On Sun, Jan 23, 2005 at 01:37:30PM +0200, Heikki Linnakangas wrote:

> As the patch gets more attention, I'm sure more issues will come up.

I see the changes to the lock manager are huge.  Can you explain what's
the idea behind those?  Do you release the locks and then reacquire
them, or do you reassign them to a pseudo process?  Are there
possibilities of deadlock somewhere?

-- 
Alvaro Herrera (<alvherre[@@]dcc.uchile.cl>)
Thou shalt study thy libraries and strive not to reinvent them without
cause, that thy code may be short and readable and thy days pleasant
and productive. (7th Commandment for C Programmers)

---------------------------(end of broadcast)---------------------------
TIP 3: if posting/reading through Usenet, please send an appropriate
      subscribe-nomail command to majordomo@@postgresql.org so that your
      message can get through to the mailing list cleanly

From pgsql-hackers-owner+M63438=pgman=candle.pha.pa.us@@postgresql.org Sun Jan 23 11:36:40 2005
Return-path: <pgsql-hackers-owner+M63438=pgman=candle.pha.pa.us@@postgresql.org>
Received: from svr1.postgresql.org (svr1.postgresql.org [200.46.204.71])
	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id j0NHaaw11289
	for <pgman@@candle.pha.pa.us>; Sun, 23 Jan 2005 12:36:37 -0500 (EST)
Received: from localhost (unknown [200.46.204.144])
	by svr1.postgresql.org (Postfix) with ESMTP id 7A1633A4A77
	for <pgman@@candle.pha.pa.us>; Sun, 23 Jan 2005 17:36:32 +0000 (GMT)
Received: from svr1.postgresql.org ([200.46.204.71])
	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
	with ESMTP id 13791-10 for <pgman@@candle.pha.pa.us>;
	Sun, 23 Jan 2005 17:36:31 +0000 (GMT)
Received: from postgresql.org (svr1.postgresql.org [200.46.204.71])
	by svr1.postgresql.org (Postfix) with ESMTP id 852863A49EC
	for <pgman@@candle.pha.pa.us>; Sun, 23 Jan 2005 17:36:31 +0000 (GMT)
X-Original-To: pgsql-hackers-postgresql.org@@localhost.postgresql.org
Received: from localhost (unknown [200.46.204.144])
	by svr1.postgresql.org (Postfix) with ESMTP id 252743A4B01
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>; Sun, 23 Jan 2005 17:35:26 +0000 (GMT)
Received: from svr1.postgresql.org ([200.46.204.71])
	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
	with ESMTP id 13880-08
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>;
	Sun, 23 Jan 2005 17:35:17 +0000 (GMT)
Received: from smtp-1.hut.fi (smtp-1.hut.fi [130.233.228.91])
	by svr1.postgresql.org (Postfix) with ESMTP id 5B7633A19A5
	for <pgsql-hackers@@postgresql.org>; Sun, 23 Jan 2005 17:35:12 +0000 (GMT)
Received: from localhost (katosiko.hut.fi [130.233.228.115])
	by smtp-1.hut.fi (8.12.10/8.12.10) with ESMTP id j0NHYwms014946;
	Sun, 23 Jan 2005 19:34:58 +0200
Received: from smtp-1.hut.fi ([130.233.228.91])
	by localhost (katosiko.hut.fi [130.233.228.115]) (amavisd-new, port 10024)
	with LMTP id 04068-01; Sun, 23 Jan 2005 19:34:57 +0200 (EET)
Received: from kosh.hut.fi (kosh.hut.fi [130.233.228.10])
	by smtp-1.hut.fi (8.12.10/8.12.10) with ESMTP id j0NHWt0g014723;
	Sun, 23 Jan 2005 19:32:55 +0200
Date: Sun, 23 Jan 2005 19:32:55 +0200 (EET)
From: Heikki Linnakangas <hlinnaka@@iki.fi>
X-X-Sender: hlinnaka@@kosh.hut.fi
To: Alvaro Herrera <alvherre@@dcc.uchile.cl>
cc: =?ISO-8859-1?Q?Hans-J=FCrgen_Sch=F6nig?= <postgres@@cybertec.at>,
   pgsql-hackers@@postgresql.org
Subject: Re: [HACKERS] Two-phase commit for 8.1
In-Reply-To: <20050123151337.GD4406@@dcc.uchile.cl>
Message-ID: <Pine.OSF.4.61.0501231916520.414393@@kosh.hut.fi>
References: <Pine.OSF.4.61.0501192055310.62540@@kosh.hut.fi>
	<20050119165747.U47533@@ganymede.hub.org> <1115.1106181723@@sss.pgh.pa.us>
	<Pine.OSF.4.61.0501212033520.352045@@kosh.hut.fi> <41F3699B.2060608@@cybertec.at>
	<Pine.OSF.4.61.0501231147320.64318@@kosh.hut.fi> <20050123151337.GD4406@@dcc.uchile.cl>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
X-TKK-Virus-Scanned: by amavisd-new-2.1.2-hutcc at katosiko.hut.fi
X-Virus-Scanned: by amavisd-new at hub.org
X-Mailing-List: pgsql-hackers
Precedence: bulk
Sender: pgsql-hackers-owner@@postgresql.org
X-Virus-Scanned: by amavisd-new at hub.org
X-Spam-Checker-Version: SpamAssassin 2.61 (1.212.2.1-2003-12-09-exp) on 
	candle.pha.pa.us
X-Spam-Status: No, hits=-4.9 required=5.0 tests=BAYES_00 autolearn=ham 
	version=2.61
Status: OR

On Sun, 23 Jan 2005, Alvaro Herrera wrote:

> On Sun, Jan 23, 2005 at 01:37:30PM +0200, Heikki Linnakangas wrote:
>
>> As the patch gets more attention, I'm sure more issues will come up.

> I see the changes to the lock manager are huge.  Can you explain what's
> the idea behind those?  Do you release the locks and then reacquire
> them, or do you reassign them to a pseudo process?

I reassign them to a pseudo process (persistedLocksProc).

Much of the changes in lock.c are just about moving code around. 
Some copy-paste code has been put in functions. LockAcquire has been
changed to take PGPROC as an argument, so that locks can be acquired on 
behalf of the pseudo process.

Then there's completely new code for persisting locks on PREPARE 
TRANSACTION and reacquiring them on recovery.

If it helps, I could try to split it into two patches, one with code 
rearrangements that don't change current behaviour, and then the actual 
2PC stuff on top of that.

> Are there possibilities of deadlock somewhere?

Not that I know of.

- Heikki

---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

               http://www.postgresql.org/docs/faq

From pgsql-hackers-owner+M63788=pgman=candle.pha.pa.us@@postgresql.org Mon Jan 31 09:35:11 2005
Return-path: <pgsql-hackers-owner+M63788=pgman=candle.pha.pa.us@@postgresql.org>
Received: from svr1.postgresql.org (svr1.postgresql.org [200.46.204.71])
	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id j0VFZAw06420
	for <pgman@@candle.pha.pa.us>; Mon, 31 Jan 2005 10:35:10 -0500 (EST)
Received: from localhost (unknown [200.46.204.144])
	by svr1.postgresql.org (Postfix) with ESMTP id 46B838B9C28
	for <pgman@@candle.pha.pa.us>; Mon, 31 Jan 2005 15:35:07 +0000 (GMT)
Received: from svr1.postgresql.org ([200.46.204.71])
	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
	with ESMTP id 86064-08 for <pgman@@candle.pha.pa.us>;
	Mon, 31 Jan 2005 15:35:03 +0000 (GMT)
Received: from postgresql.org (svr1.postgresql.org [200.46.204.71])
	by svr1.postgresql.org (Postfix) with ESMTP id 5D6918B9E6A
	for <pgman@@candle.pha.pa.us>; Mon, 31 Jan 2005 15:23:48 +0000 (GMT)
X-Original-To: pgsql-hackers-postgresql.org@@localhost.postgresql.org
Received: from localhost (unknown [200.46.204.144])
	by svr1.postgresql.org (Postfix) with ESMTP id E92DF8B9CC6
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>; Mon, 31 Jan 2005 15:21:14 +0000 (GMT)
Received: from svr1.postgresql.org ([200.46.204.71])
	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
	with ESMTP id 83005-03
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>;
	Mon, 31 Jan 2005 15:21:04 +0000 (GMT)
Received: from sunsite.dcc.uchile.cl (sunsite.dcc.uchile.cl [192.80.24.2])
	by svr1.postgresql.org (Postfix) with ESMTP id A315B8B9D3E
	for <pgsql-hackers@@postgresql.org>; Mon, 31 Jan 2005 15:01:43 +0000 (GMT)
Received: from anakena.dcc.uchile.cl ([192.80.24.3])
	by sunsite.dcc.uchile.cl (8.12.11/8.12.11) with ESMTP id j0VF1KCf026107;
	Mon, 31 Jan 2005 12:01:24 -0300 (CLST)
Received: by anakena.dcc.uchile.cl (Postfix, from userid 4151)
	id F287A52515; Mon, 31 Jan 2005 12:01:19 -0300 (CLST)
Date: Mon, 31 Jan 2005 12:01:19 -0300
From: Alvaro Herrera <alvherre@@dcc.uchile.cl>
To: Heikki Linnakangas <hlinnaka@@iki.fi>
cc: =?iso-8859-1?Q?Hans-J=FCrgen_Sch=F6nig?= <postgres@@cybertec.at>,
   pgsql-hackers@@postgresql.org
Subject: Re: [HACKERS] Two-phase commit for 8.1
Message-ID: <20050131150119.GI22141@@dcc.uchile.cl>
References: <Pine.OSF.4.61.0501192055310.62540@@kosh.hut.fi> <20050119165747.U47533@@ganymede.hub.org> <1115.1106181723@@sss.pgh.pa.us> <Pine.OSF.4.61.0501212033520.352045@@kosh.hut.fi> <41F3699B.2060608@@cybertec.at> <Pine.OSF.4.61.0501231147320.64318@@kosh.hut.fi> <20050123151337.GD4406@@dcc.uchile.cl> <Pine.OSF.4.61.0501231916520.414393@@kosh.hut.fi>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Disposition: inline
Content-Transfer-Encoding: 8bit
In-Reply-To: <Pine.OSF.4.61.0501231916520.414393@@kosh.hut.fi>
User-Agent: Mutt/1.5.6i
X-Virus-Scanned: by amavisd-new at hub.org
X-Mailing-List: pgsql-hackers
Precedence: bulk
Sender: pgsql-hackers-owner@@postgresql.org
X-Virus-Scanned: by amavisd-new at hub.org
X-Spam-Checker-Version: SpamAssassin 2.61 (1.212.2.1-2003-12-09-exp) on 
	candle.pha.pa.us
X-Spam-Status: No, hits=-4.9 required=5.0 tests=BAYES_00 autolearn=ham 
	version=2.61
Status: OR

On Sun, Jan 23, 2005 at 07:32:55PM +0200, Heikki Linnakangas wrote:

> If it helps, I could try to split it into two patches, one with code 
> rearrangements that don't change current behaviour, and then the actual 
> 2PC stuff on top of that.

I think that'd be a good idea, because such a patch could be merged
right now, and the actual 2PC stuff would be smaller and easier to
review.

You'd only need a committer to actually commit the initial patch ...

-- 
Alvaro Herrera (<alvherre[@@]dcc.uchile.cl>)
"No hay cielo posible sin hundir nuestras races
 en la profundidad de la tierra"                        (Malucha Pinto)

---------------------------(end of broadcast)---------------------------
TIP 9: the planner will ignore your desire to choose an index scan if your
      joining column's datatypes do not match

From pgsql-hackers-owner+M66050@@postgresql.org Wed Apr  6 10:04:39 2005
Return-path: <pgsql-hackers-owner+M66050@@postgresql.org>
Received: from svr1.postgresql.org (svr1.postgresql.org [200.46.204.71])
	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id j36E4cO20150
	for <pgman@@candle.pha.pa.us>; Wed, 6 Apr 2005 10:04:38 -0400 (EDT)
Received: from localhost (unknown [200.46.204.144])
	by svr1.postgresql.org (Postfix) with ESMTP id 248C2537FE
	for <pgman@@candle.pha.pa.us>; Wed,  6 Apr 2005 15:04:32 +0100 (BST)
Received: from svr1.postgresql.org ([200.46.204.71])
	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
	with ESMTP id 64844-06 for <pgman@@candle.pha.pa.us>;
	Wed,  6 Apr 2005 14:04:32 +0000 (GMT)
Received: from postgresql.org (svr1.postgresql.org [200.46.204.71])
	by svr1.postgresql.org (Postfix) with ESMTP id D2EB5537F8
	for <pgman@@candle.pha.pa.us>; Wed,  6 Apr 2005 15:04:31 +0100 (BST)
X-Original-To: pgsql-hackers-postgresql.org@@localhost.postgresql.org
Received: from localhost (unknown [200.46.204.144])
	by svr1.postgresql.org (Postfix) with ESMTP id AA7FE539FA
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>; Wed,  6 Apr 2005 15:01:33 +0100 (BST)
Received: from svr1.postgresql.org ([200.46.204.71])
	by localhost (av.hub.org [200.46.204.144]) (amavisd-new, port 10024)
	with ESMTP id 62842-09
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>;
	Wed,  6 Apr 2005 14:01:26 +0000 (GMT)
Received: from smtp-1.hut.fi (smtp-1.hut.fi [130.233.228.91])
	by svr1.postgresql.org (Postfix) with ESMTP id F02FD538C8
	for <pgsql-hackers@@postgresql.org>; Wed,  6 Apr 2005 15:01:22 +0100 (BST)
Received: from localhost (katosiko.hut.fi [130.233.228.115])
	by smtp-1.hut.fi (8.12.10/8.12.10) with ESMTP id j36E11Yl028611;
	Wed, 6 Apr 2005 17:01:01 +0300
Received: from smtp-1.hut.fi ([130.233.228.91])
	by localhost (katosiko.hut.fi [130.233.228.115]) (amavisd-new, port 10024)
	with LMTP id 22125-05; Wed,  6 Apr 2005 17:01:00 +0300 (EEST)
Received: from kosh.hut.fi (kosh.hut.fi [130.233.228.10])
	by smtp-1.hut.fi (8.12.10/8.12.10) with ESMTP id j36DxlPJ028376;
	Wed, 6 Apr 2005 16:59:48 +0300
Date: Wed, 6 Apr 2005 16:59:47 +0300 (EEST)
From: Heikki Linnakangas <hlinnaka@@iki.fi>
X-X-Sender: hlinnaka@@kosh.hut.fi
To: Alvaro Herrera <alvherre@@dcc.uchile.cl>
cc: pgsql-hackers@@postgresql.org
Subject: Re: [HACKERS] Two phase commit
In-Reply-To: <20050405230731.GA26960@@surnet.cl>
Message-ID: <Pine.OSF.4.61.0504061652300.502110@@kosh.hut.fi>
References: <20050405230731.GA26960@@surnet.cl>
MIME-Version: 1.0
Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed
X-TKK-Virus-Scanned: by amavisd-new-2.1.2-hutcc at katosiko.hut.fi
X-Virus-Scanned: by amavisd-new at hub.org
X-Mailing-List: pgsql-hackers
Precedence: bulk
Sender: pgsql-hackers-owner@@postgresql.org
X-Virus-Scanned: by amavisd-new at hub.org
Status: OR

On Tue, 5 Apr 2005, Alvaro Herrera wrote:

> What happenned to your two phase commit patch?  Are you still working on
> it?  Have you got something done from the last time we heard from you?

I've kept it up-to-date by doing "cvs update" every now and then and 
fixing possible conflicts.

It would be nice if you hackers could take a serious look at it and tell 
what needs to be done to get it finally committed.

I've been busy with other things and haven't had the time to push it.

I try to update my "project page" every time I update the patch:

http://www.hut.fi/~hlinnaka/pgsql/

There isn't any big issues left as far as I know.

- Heikki

---------------------------(end of broadcast)---------------------------
TIP 2: you can get off all lists at once with the unregister command
    (send "unregister YourEmailAddressHere" to majordomo@@postgresql.org)

@


1.3
log
@Add 2phase TODO.detail.
@
text
@@


1.2
log
@Move 2phase discussion to 7.5 queue, not TODO.detail.
@
text
@d1 5
a5 8
From pgsql-hackers-owner+M45196@@postgresql.org Thu Oct  9 21:02:52 2003
Return-path: <pgsql-hackers-owner+M45196@@postgresql.org>
Received: from www.postgresql.com (www.postgresql.com [64.117.225.209] (may be forged))
	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id h9A12Sd24438
	for <pgman@@candle.pha.pa.us>; Thu, 9 Oct 2003 21:02:51 -0400 (EDT)
Received: from postgresql.org (svr1.postgresql.org [64.117.224.193])
	by www.postgresql.com (Postfix) with ESMTP
	id 65DB0CF4A2C; Thu,  9 Oct 2003 22:02:19 -0300 (ADT)
d7 6
a12 6
Received: from localhost (unknown [64.117.224.130])
	by svr1.postgresql.org (Postfix) with ESMTP id F01F8D1B50F
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>; Fri, 10 Oct 2003 01:02:07 +0000 (GMT)
Received: from svr1.postgresql.org ([64.117.224.193])
	by localhost (neptune.hub.org [64.117.224.130]) (amavisd-new, port 10024)
	with ESMTP id 76113-08
d14 21
a34 19
	Thu,  9 Oct 2003 22:01:21 -0300 (ADT)
Received: from ganymede.hub.org (u173n10.eastlink.ca [24.224.173.10])
	by svr1.postgresql.org (Postfix) with ESMTP id 1C741D1B4EE
	for <pgsql-hackers@@postgresql.org>; Thu,  9 Oct 2003 22:01:18 -0300 (ADT)
Received: by ganymede.hub.org (Postfix, from userid 1000)
	id 585F835332; Thu,  9 Oct 2003 22:00:10 -0300 (ADT)
Received: from localhost (localhost [127.0.0.1])
	by ganymede.hub.org (Postfix) with ESMTP
	id 4CD8F35320; Thu,  9 Oct 2003 22:00:10 -0300 (ADT)
Date: Thu, 9 Oct 2003 22:00:10 -0300 (ADT)
From: "Marc G. Fournier" <scrappy@@postgresql.org>
X-X-Sender: scrappy@@ganymede.hub.org
To: Tatsuo Ishii <t-ishii@@sra.co.jp>
cc: andrew@@libertyrms.info, pgsql-hackers@@postgresql.org
Subject: Re: [HACKERS] 2-phase commit
In-Reply-To: <20031010.094635.104030040.t-ishii@@sra.co.jp>
Message-ID: <20031009215935.S28590@@ganymede.hub.org>
References: <20031009160718.GC14394@@libertyrms.info> <1065723448.1821.2288.camel@@camel>
	<20031009204141.GS14394@@libertyrms.info> <20031010.094635.104030040.t-ishii@@sra.co.jp>
d37 3
d44 29
a72 1
Status: OR
d74 2
d77 1
d79 1
a79 14
On Fri, 10 Oct 2003, Tatsuo Ishii wrote:

> > Yes.  I don't think that 2PC is a solution for robustness in face of
> > network failure.  It's too slow, to begin with.  Some sort of
> > multi-master system is very desirable for network failures, &c., but
> > I don't think anybody does active/hot standby with 2PC any more; the
> > performance is too bad.
>
> I'm tired of this kind of "2PC is too slow" arguments. I think
> Satoshi, the only guy who made a trial implementation of 2PC for
> PostgreSQL, has already showed that 2PC is not that slow.

Where does Satoshi's implementation sit right now?  Will it patch to v7.4?
Can it provide us with a base to work from, or is it complete?
d87 5
a91 8
From pgsql-hackers-owner+M45212@@postgresql.org Fri Oct 10 00:22:09 2003
Return-path: <pgsql-hackers-owner+M45212@@postgresql.org>
Received: from svr4.postgresql.org (svr4.postgresql.org [64.117.224.192])
	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id h9A4M7d22170
	for <pgman@@candle.pha.pa.us>; Fri, 10 Oct 2003 00:22:07 -0400 (EDT)
Received: from postgresql.org (svr1.postgresql.org [64.117.224.193])
	by svr4.postgresql.org (Postfix) with ESMTP
	id 3EE8D1CB47E5; Fri, 10 Oct 2003 04:22:02 +0000 (GMT)
d93 6
a98 6
Received: from localhost (unknown [64.117.224.130])
	by svr1.postgresql.org (Postfix) with ESMTP id D3959D1B517
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>; Fri, 10 Oct 2003 04:21:49 +0000 (GMT)
Received: from svr1.postgresql.org ([64.117.224.193])
	by localhost (neptune.hub.org [64.117.224.130]) (amavisd-new, port 10024)
	with ESMTP id 22978-01
d100 17
a116 21
	Fri, 10 Oct 2003 01:21:04 -0300 (ADT)
Received: from news.hub.org (unknown [64.117.224.194])
	by svr1.postgresql.org (Postfix) with ESMTP id D9041D1B52E
	for <pgsql-hackers@@postgresql.org>; Fri, 10 Oct 2003 01:21:03 -0300 (ADT)
Received: from news.hub.org (host-64-117-224-194.altec1.com [64.117.224.194] (may be forged))
	by news.hub.org (8.12.9/8.12.9) with ESMTP id h9A4L3Qh008720
	for <pgsql-hackers@@postgresql.org>; Fri, 10 Oct 2003 04:21:03 GMT
	(envelope-from news@@news.hub.org)
Received: (from news@@localhost)
	by news.hub.org (8.12.9/8.12.9/Submit) id h9A4CJ7w007607
	for pgsql-hackers@@postgresql.org; Fri, 10 Oct 2003 04:12:19 GMT
X-Newsgroups: comp.databases.postgresql.hackers
Subject: Re: [HACKERS] 2-phase commit
References: <20031009160718.GC14394@@libertyrms.info> <1065723448.1821.2288.camel@@camel> <20031009204141.GS14394@@libertyrms.info> <20031010.094635.104030040.t-ishii@@sra.co.jp>
From: Christopher Browne <cbbrowne@@acm.org>
X-message-flag: Outlook is rather hackable, isn't it?
X-Home-Page: http://www.cbbrowne.com/info/
X-Affero: http://svcs.affero.net/rm.php?r=cbbrowne
Message-ID: <m31xtl4uk5.fsf@@wolfe.cbbrowne.com>
User-Agent: Gnus/5.1003 (Gnus v5.10.3) XEmacs/21.4 (Reasonable Discussion, linux)
Cancel-Lock: sha1:Bu9MHyjwMgreAAWr2UkPGXHzz04=
d118 2
a119 6
Content-Type: text/plain; charset=us-ascii
Lines: 40
Date: Thu, 09 Oct 2003 23:53:46 -0400
X-Complaints-To: abuse@@sympatico.ca
Organization: Bell Sympatico
To: pgsql-hackers@@postgresql.org
d124 4
d130 28
a157 40
The world rejoiced as t-ishii@@sra.co.jp (Tatsuo Ishii) wrote:
> I'm tired of this kind of "2PC is too slow" arguments. I think
> Satoshi, the only guy who made a trial implementation of 2PC for
> PostgreSQL, has already showed that 2PC is not that slow.

I'm tired of it for a different reason, namely that there are "use
cases" where speed is not _relevant_.  The REAL problem that is taking
place is that people are talking past each other.

- Some say, "It's too slow; no point in doing it."

  The fact that it may be too slow _for them_ means they probably
  shouldn't use it.  I somehow doubt that there are Vastly Faster
  alternatives waiting in the wings.

- The other problem that gets pointed out:  "2PC is inherently
  fragile, and prone to deadlock."

  Again, those that _need_ to use 2PC will forcibly need to address
  those concerns in the way they manage their systems.

  Those that can't afford the fragility are not 'customers' for use of
  2PC.  And, pointing back to the speed controversy, it is not at all
  obvious that there is any other alternative for handling distributed
  processing that _totally addresses_ the concerns about fragility.

Those that can't afford these costs associated with 2PC will simply
Not Use It.

Probably in much the same way that most people _aren't_ using
replication.  And most people _aren't_ using PL/R.  And most people
_aren't_ using any number of the contributed things.

If 2PC gets implemented, that simply means that there will be another
module that some will be interested in, and which many people won't
bother using.  Which shouldn't seem to be a particularly big deal.
-- 
"aa454","@@","freenet.carleton.ca"
http://www.ntlug.org/~cbbrowne/
The way to a man's heart is with a broadsword.
d160 1
a160 3
TIP 5: Have you checked our extensive FAQ?

               http://www.postgresql.org/docs/faqs/FAQ.html
d162 2
a163 5
From pgsql-hackers-owner+M45350@@postgresql.org Tue Oct 14 12:34:46 2003
Return-path: <pgsql-hackers-owner+M45350@@postgresql.org>
Received: from svr5.postgresql.org (182.204.46.200.psinetpa.net [200.46.204.182] (may be forged))
	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id h9EGYid02191
	for <pgman@@candle.pha.pa.us>; Tue, 14 Oct 2003 12:34:45 -0400 (EDT)
d165 2
a166 2
	by svr5.postgresql.org (Postfix) with ESMTP
	id 3DE8872EE24; Tue, 14 Oct 2003 16:33:48 +0000 (GMT)
d168 6
a173 6
Received: from localhost (unknown [64.117.224.130])
	by svr1.postgresql.org (Postfix) with ESMTP id 4C2BAD1B541
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>; Fri, 10 Oct 2003 05:33:39 +0000 (GMT)
Received: from svr1.postgresql.org ([64.117.224.193])
	by localhost (neptune.hub.org [64.117.224.130]) (amavisd-new, port 10024)
	with ESMTP id 26706-05
d175 24
a198 16
	Fri, 10 Oct 2003 02:32:51 -0300 (ADT)
Received: from mx-00.sil.at (mx-00.sil.at [62.116.68.196])
	by svr1.postgresql.org (Postfix) with ESMTP id 274E4D1B517
	for <pgsql-hackers@@postgresql.org>; Fri, 10 Oct 2003 02:32:49 -0300 (ADT)
Received: (qmail-ldap/ctrl 40676 invoked from network); 10 Oct 2003 05:32:48 -0000
Received: from unknown (HELO waste.silverserver.co.at) ([194.152.178.7]) (envelope-sender <hs@@cybertec.at>)
          by mx-00.sil.at (qmail-ldap-1.03) with SMTP
          for <pgsql-hackers@@postgresql.org>; 10 Oct 2003 05:32:48 -0000
Received: from cybertec.at (vie-213-129-225-105.async.sil.at [213.129.225.105])
	by waste.silverserver.co.at (8.12.10/8.12.10) with ESMTP id h9A5WhNj032622;
	Fri, 10 Oct 2003 07:32:44 +0200
Message-ID: <3F86460B.6030905@@cybertec.at>
Date: Fri, 10 Oct 2003 07:39:23 +0200
From: =?ISO-8859-1?Q?Hans-J=FCrgen_Sch=F6nig?= <hs@@cybertec.at>
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.1) Gecko/20020826
X-Accept-Language: en-us, en
d200 4
a203 7
To: "Marc G. Fournier" <scrappy@@postgresql.org>
cc: Tatsuo Ishii <t-ishii@@sra.co.jp>, andrew@@libertyrms.info,
   pgsql-hackers@@postgresql.org
Subject: Re: [HACKERS] 2-phase commit
References: <20031009160718.GC14394@@libertyrms.info> <1065723448.1821.2288.camel@@camel> <20031009204141.GS14394@@libertyrms.info> <20031010.094635.104030040.t-ishii@@sra.co.jp> <20031009215935.S28590@@ganymede.hub.org>
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
d208 4
d214 1
a214 4
>>I'm tired of this kind of "2PC is too slow" arguments. I think
>>Satoshi, the only guy who made a trial implementation of 2PC for
>>PostgreSQL, has already showed that 2PC is not that slow.
> 
d216 2
a217 2
> Where does Satoshi's implementation sit right now?  Will it patch to v7.4?
> Can it provide us with a base to work from, or is it complete?
d219 3
d223 1
a223 2
It is not ready yet.
You can find it at ...
a224 1
http://snaga.org/pgsql/
d226 4
a229 1
It is based on 7.3
d231 51
a281 3
     * the 2-phase commit protocol (precommit and commit)
     * the multi-master replication using 2PC
     * distributed transaction (distributed query)
d283 1
a283 1
current work
d285 66
a350 3
     * restarting (from 2nd phase) when the session is disconnected in 
2nd phase (XLOG stuffs)
     * XA compliance
d352 1
a352 1
future work
a353 2
     * hot failover and recovery in PostgreSQL cluster
     * data partitioning on different servers
d355 2
d358 1
a358 2
I have compiled it a while ago.
Seems to be pretty nice :).
d360 42
a401 1
	Hans
d403 16
d421 1
a421 6
Cybertec Geschwinde u Schoenig
Ludo-Hartmannplatz 1/14, A-1160 Vienna, Austria
Tel: +43/2952/30706 or +43/660/816 40 77
www.cybertec.at, www.postgresql.at, kernel.cybertec.at


d424 3
a426 1
TIP 1: subscribe and unsubscribe commands go to majordomo@@postgresql.org
d428 2
a429 5
From pgsql-hackers-owner+M45361@@postgresql.org Tue Oct 14 12:36:29 2003
Return-path: <pgsql-hackers-owner+M45361@@postgresql.org>
Received: from svr5.postgresql.org (182.204.46.200.psinetpa.net [200.46.204.182] (may be forged))
	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id h9EGaOd02587
	for <pgman@@candle.pha.pa.us>; Tue, 14 Oct 2003 12:36:27 -0400 (EDT)
d431 2
a432 2
	by svr5.postgresql.org (Postfix) with ESMTP
	id DE0D872EF5B; Tue, 14 Oct 2003 16:35:20 +0000 (GMT)
d434 22
a455 23
Received: from localhost (unknown [64.117.224.130])
	by svr1.postgresql.org (Postfix) with ESMTP id 1E506D1B528
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>; Fri, 10 Oct 2003 05:41:53 +0000 (GMT)
Received: from svr1.postgresql.org ([64.117.224.193])
	by localhost (neptune.hub.org [64.117.224.130]) (amavisd-new, port 10024)
	with ESMTP id 33519-04
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>;
	Fri, 10 Oct 2003 02:41:05 -0300 (ADT)
Received: from mx-00.sil.at (mx-00.sil.at [62.116.68.196])
	by svr1.postgresql.org (Postfix) with ESMTP id 15845D1B541
	for <pgsql-hackers@@postgresql.org>; Fri, 10 Oct 2003 02:41:00 -0300 (ADT)
Received: (qmail-ldap/ctrl 41629 invoked from network); 10 Oct 2003 05:40:59 -0000
Received: from unknown (HELO waste.silverserver.co.at) ([194.152.178.7]) (envelope-sender <hs@@cybertec.at>)
          by mx-00.sil.at (qmail-ldap-1.03) with SMTP
          for <pgsql-hackers@@postgresql.org>; 10 Oct 2003 05:40:59 -0000
Received: from cybertec.at (vie-213-129-225-110.async.sil.at [213.129.225.110])
	by waste.silverserver.co.at (8.12.10/8.12.10) with ESMTP id h9A5etNj000228;
	Fri, 10 Oct 2003 07:40:56 +0200
Message-ID: <3F8647F7.7000509@@cybertec.at>
Date: Fri, 10 Oct 2003 07:47:35 +0200
From: =?ISO-8859-1?Q?Hans-J=FCrgen_Sch=F6nig?= <hs@@cybertec.at>
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.0.1) Gecko/20020826
X-Accept-Language: en-us, en
d457 2
a458 7
To: Bruce Momjian <pgman@@candle.pha.pa.us>
cc: Peter Eisentraut <peter_e@@gmx.net>,
   Andrew Sullivan <andrew@@libertyrms.info>, pgsql-hackers@@postgresql.org
Subject: Re: [HACKERS] 2-phase commit
References: <200310091442.h99Eg3R29404@@candle.pha.pa.us>
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
d463 12
a474 1
Status: OR
d476 2
a477 10
>>Why would you spent time on implementing a mechanism whose ultimate
>>benefit is supposed to be increasing reliability and performance, when you
>>already realize that it will have to lock up at the slightest sight of
>>trouble?  There are better mechanisms out there that you can use instead.
> 
> 
> If you want cross-server transactions, what other methods are there that
> are more reliable?  It seems network unreliability is going to be a
> problem no matter what method you use.
> 
d479 2
d482 3
a484 13
I guess we need something like PITR to make this work because otherwise 
I cannot see a way to get in sync again.
Maybe I should call the desired mechanism "Entire cluster back to 
transaction X recovery".
Did anybody hear about PITR recently?

How else would you recover from any kind of problem?
No matter what you are doing network reliability will be a problem so we 
have to live with it.
Having some "going back to something consistent" is necessary anyway.
People might argue now that committed transactions might be lost. If 
people knew which ones, its ok. 90% of all people will understand that 
in case of a crash something evil might happen.
d486 1
a486 1
	Hans
d488 546
a1033 5
-- 
Cybertec Geschwinde u Schoenig
Ludo-Hartmannplatz 1/14, A-1160 Vienna, Austria
Tel: +43/2952/30706 or +43/660/816 40 77
www.cybertec.at, www.postgresql.at, kernel.cybertec.at
d1035 5
d1046 4
a1049 5
From pgsql-hackers-owner+M45354@@postgresql.org Tue Oct 14 12:35:50 2003
Return-path: <pgsql-hackers-owner+M45354@@postgresql.org>
Received: from svr4.postgresql.org (70.204.46.200.psinetpa.net [200.46.204.70] (may be forged))
	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id h9EGZmd02374
	for <pgman@@candle.pha.pa.us>; Tue, 14 Oct 2003 12:35:49 -0400 (EDT)
d1051 2
a1052 2
	by svr4.postgresql.org (Postfix) with ESMTP
	id A59181CB4CC8; Tue, 14 Oct 2003 16:35:03 +0000 (GMT)
d1054 6
a1059 6
Received: from localhost (unknown [64.117.224.130])
	by svr1.postgresql.org (Postfix) with ESMTP id 3AFC7D1B4E2
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>; Sun, 12 Oct 2003 15:41:02 +0000 (GMT)
Received: from svr1.postgresql.org ([64.117.224.193])
	by localhost (neptune.hub.org [64.117.224.130]) (amavisd-new, port 10024)
	with ESMTP id 87949-06
d1061 13
a1073 23
	Sun, 12 Oct 2003 12:40:28 -0300 (ADT)
Received: from main.gmane.org (main.gmane.org [80.91.224.249])
	by svr1.postgresql.org (Postfix) with ESMTP id C8021D1B4EF
	for <pgsql-hackers@@postgresql.org>; Sun, 12 Oct 2003 12:40:11 -0300 (ADT)
Received: from root by main.gmane.org with local (Exim 3.35 #1 (Debian))
	id 1A8iKO-0003GE-00
	for <pgsql-hackers@@postgresql.org>; Sun, 12 Oct 2003 17:40:16 +0200
X-Injected-Via-Gmane: http://gmane.org/
To: pgsql-hackers@@postgresql.org
Received: from sea.gmane.org ([80.91.224.252])
	by main.gmane.org with esmtp (Exim 3.35 #1 (Debian))
	id 1A7sHs-0001ff-00
	for <gmane-comp-db-postgresql-devel-general@@m.gmane.org>; Fri, 10 Oct 2003 10:06:12 +0200
Received: from news by sea.gmane.org with local (Exim 3.35 #1 (Debian))
	id 1A7sHs-0006Wa-00
	for <gmane-comp-db-postgresql-devel-general@@m.gmane.org>; Fri, 10 Oct 2003 10:06:12 +0200
From: Heikki Linnakangas <hlinnaka@@iki.fi>
Subject: Re: [HACKERS] 2-phase commit
Date: Fri, 10 Oct 2003 11:06:11 +0300
Lines: 13
Message-ID: <Pine.OSF.4.58.0310101101400.188711@@kosh.hut.fi>
References: <20031010.094635.104030040.t-ishii@@sra.co.jp>
	<200310100053.h9A0rkl23681@@candle.pha.pa.us>
d1075 4
a1078 4
Content-Type: TEXT/PLAIN; charset=US-ASCII
X-Complaints-To: usenet@@sea.gmane.org
X-X-Sender: hlinnaka@@kosh.hut.fi
In-Reply-To: <200310100053.h9A0rkl23681@@candle.pha.pa.us>
d1083 21
a1103 1
Status: OR
d1105 3
a1107 1
On Thu, 9 Oct 2003, Bruce Momjian wrote:
d1109 2
a1110 3
> Agreed.  Let's get it into 7.5 and see it in action.  If we need to
> adjust it, we can, but right now, we need something for distributed
> transactions, and this seems like the logical direction.
d1112 1
a1112 2
I've started working on two-phase commits last week, and the very
basic stuff is now working. Still a lot of bugs though.
d1114 73
a1186 2
I posted the stuff I've put together to patches-list. I'd appreciate any
comments.
a1187 1
- Heikki
d1189 1
d1191 15
a1205 11
---------------------------(end of broadcast)---------------------------
TIP 8: explain analyze is your friend

From pgsql-hackers-owner+M45235@@postgresql.org Fri Oct 10 15:27:57 2003
Return-path: <pgsql-hackers-owner+M45235@@postgresql.org>
Received: from svr4.postgresql.org (svr4.postgresql.org [64.117.224.192])
	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id h9AJRud06174
	for <pgman@@candle.pha.pa.us>; Fri, 10 Oct 2003 15:27:57 -0400 (EDT)
Received: from postgresql.org (svr1.postgresql.org [64.117.224.193])
	by svr4.postgresql.org (Postfix) with ESMTP
	id E57971CB4834; Fri, 10 Oct 2003 19:27:46 +0000 (GMT)
d1207 6
a1212 6
Received: from localhost (unknown [64.117.224.130])
	by svr1.postgresql.org (Postfix) with ESMTP id E3E14D1B502
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>; Fri, 10 Oct 2003 19:27:28 +0000 (GMT)
Received: from svr1.postgresql.org ([64.117.224.193])
	by localhost (neptune.hub.org [64.117.224.130]) (amavisd-new, port 10024)
	with ESMTP id 91104-06
d1214 18
a1231 19
	Fri, 10 Oct 2003 16:26:40 -0300 (ADT)
Received: from ns1.oak.forus.or.jp (ns1.oak.forus.or.jp [210.190.22.53])
	by svr1.postgresql.org (Postfix) with ESMTP id D3222D1B528
	for <pgsql-hackers@@postgresql.org>; Fri, 10 Oct 2003 16:26:36 -0300 (ADT)
Received: from athena (W173177.ppp.dion.ne.jp [210.198.173.177])
	by ns1.oak.forus.or.jp (8.12.8p1/8.11.3) with SMTP id h9B4dDdV008901;
	Sat, 11 Oct 2003 13:39:14 +0900
Date: Sat, 11 Oct 2003 04:26:26 +0900
From: Satoshi Nagayasu <pgsql@@snaga.org>
To: Andrew Sullivan <andrew@@libertyrms.info>
cc: pgsql-hackers@@postgresql.org
Subject: Re: [HACKERS] 2-phase commit
Message-ID: <20031011042626.6019bff2.pgsql@@snaga.org>
In-Reply-To: <20031010190255.GT16336@@libertyrms.info>
References: <20031009160718.GC14394@@libertyrms.info>
	<1065723448.1821.2288.camel@@camel>
	<20031009204141.GS14394@@libertyrms.info>
	<20031010.094635.104030040.t-ishii@@sra.co.jp>
	<20031010190255.GT16336@@libertyrms.info>
d1233 3
a1235 3
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
X-Virus-Scanned: by amavisd-new at postgresql.org
d1239 5
d1246 1
d1248 97
a1344 7
Andrew Sullivan <andrew@@libertyrms.info> wrote:
> On Fri, Oct 10, 2003 at 09:46:35AM +0900, Tatsuo Ishii wrote:
> > Satoshi, the only guy who made a trial implementation of 2PC for
> > PostgreSQL, has already showed that 2PC is not that slow.
> 
> If someone has a fast implementation, so much the better.  I'm not
> opposed to fast implementations! 
d1346 1
a1346 2
The pgbench results of my experimental 2PC implementation
and plain postgresql are available.
d1348 2
a1349 2
PostgreSQL 7.3
  http://snaga.org/pgsql/pgbench/pgbench-REL7_3.log
d1351 53
a1403 2
Experimental 2PC in PostgreSQL 7.3
  http://snaga.org/pgsql/pgbench/pgbench-TPC0_0_2.log
d1405 1
a1405 16
I can't see a grave overhead from this comparison.

> 
> A
> 
> -- 
> ----
> Andrew Sullivan                         204-4141 Yonge Street
> Afilias Canada                        Toronto, Ontario Canada
> <andrew@@libertyrms.info>                              M2P 2A8
>                                          +1 416 646 3304 x110
> 
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 8: explain analyze is your friend
> 
d1407 1
d1409 2
a1410 2
-- 
NAGAYASU Satoshi <snaga@@snaga.org>
d1412 1
d1415 2
a1416 1
TIP 6: Have you searched our list archives?
d1418 15
a1432 10
               http://archives.postgresql.org

From pgsql-hackers-owner+M45240@@postgresql.org Fri Oct 10 18:29:40 2003
Return-path: <pgsql-hackers-owner+M45240@@postgresql.org>
Received: from svr4.postgresql.org (svr4.postgresql.org [64.117.224.192])
	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id h9AMTdd18233
	for <pgman@@candle.pha.pa.us>; Fri, 10 Oct 2003 18:29:40 -0400 (EDT)
Received: from postgresql.org (svr1.postgresql.org [64.117.224.193])
	by svr4.postgresql.org (Postfix) with ESMTP
	id 504471CB4652; Fri, 10 Oct 2003 22:29:32 +0000 (GMT)
d1434 6
a1439 6
Received: from localhost (unknown [64.117.224.130])
	by svr1.postgresql.org (Postfix) with ESMTP id 4DADED1B53E
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>; Fri, 10 Oct 2003 22:29:13 +0000 (GMT)
Received: from svr1.postgresql.org ([64.117.224.193])
	by localhost (neptune.hub.org [64.117.224.130]) (amavisd-new, port 10024)
	with ESMTP id 15392-08
d1441 9
a1449 6
	Fri, 10 Oct 2003 19:28:29 -0300 (ADT)
Received: from voyager.corporate.connx.com (voyager.corporate.connx.com [65.212.159.131])
	by svr1.postgresql.org (Postfix) with ESMTP id A857CD1B4E9
	for <pgsql-hackers@@postgresql.org>; Fri, 10 Oct 2003 19:28:25 -0300 (ADT)
Content-Class: urn:content-classes:message
Subject: Re: [HACKERS] 2-phase commit
d1451 12
a1462 12
Content-Type: text/plain;
	charset="us-ascii"
Date: Fri, 10 Oct 2003 15:28:05 -0700
Message-ID: <D90A5A6C612A39408103E6ECDD77B829408BF2@@voyager.corporate.connx.com>
X-MimeOLE: Produced By Microsoft Exchange V6.0.6249.0
Thread-Topic: [HACKERS] 2-phase commit
Thread-Index: AcOPezZr87PXbIlLRH6225JV2yf6zgAAc1Ig
From: "Dann Corbit" <DCorbit@@connx.com>
To: "Satoshi Nagayasu" <pgsql@@snaga.org>,
   "Andrew Sullivan" <andrew@@libertyrms.info>
cc: <pgsql-hackers@@postgresql.org>
X-Virus-Scanned: by amavisd-new at postgresql.org
d1466 1
a1466 2
Content-Transfer-Encoding: 8bit
X-MIME-Autoconverted: from quoted-printable to 8bit by candle.pha.pa.us id h9AMTdd18233
d1469 21
a1489 25
> -----Original Message-----
> From: Satoshi Nagayasu [mailto:pgsql@@snaga.org] 
> Sent: Friday, October 10, 2003 12:26 PM
> To: Andrew Sullivan
> Cc: pgsql-hackers@@postgresql.org
> Subject: Re: [HACKERS] 2-phase commit
> 
> Andrew Sullivan <andrew@@libertyrms.info> wrote:
> > On Fri, Oct 10, 2003 at 09:46:35AM +0900, Tatsuo Ishii wrote:
> > > Satoshi, the only guy who made a trial implementation of 2PC for 
> > > PostgreSQL, has already showed that 2PC is not that slow.
> > 
> > If someone has a fast implementation, so much the better.  I'm not 
> > opposed to fast implementations!
> 
> The pgbench results of my experimental 2PC implementation
> and plain postgresql are available.
> 
> PostgreSQL 7.3
>   http://snaga.org/pgsql/pgbench/pgbench-REL7_3.log
> 
> Experimental 2PC in PostgreSQL 7.3
>   http://snaga.org/pgsql/pgbench/pgbench-TPC0_0_2.log
> 
> I can't see a grave overhead from this comparison.
d1491 2
a1492 12
2PC is absolutely essential when you have to have both parts of the
transaction complete for a logical unit of work.  For a project that
needs it, if you don't have it you will be forced to go to another tool,
or perform lots of custom programming to work around it.

If you have 2PC and it is ten times slower than without it, you will
still need it for projects requiring that capability.

Now, a good model to start with is a very good idea.  So some discussion
and analysis is a good thing.  From the looks of it, Satoshi Nagayasu
has done a very good job.  Having a functional 2PC would be a huge
feather in the cap of PostgreSQL.
d1494 1
a1494 1
IMO-YMMV
d1497 3
a1499 1
TIP 4: Don't 'kill -9' the postmaster
d1501 15
a1515 8
From pgsql-hackers-owner+M45242@@postgresql.org Fri Oct 10 23:22:31 2003
Return-path: <pgsql-hackers-owner+M45242@@postgresql.org>
Received: from svr5.postgresql.org (svr5.postgresql.org [64.117.225.181])
	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id h9B3MUd13414
	for <pgman@@candle.pha.pa.us>; Fri, 10 Oct 2003 23:22:30 -0400 (EDT)
Received: from postgresql.org (svr1.postgresql.org [64.117.224.193])
	by svr5.postgresql.org (Postfix) with ESMTP
	id 9C48072DCAF; Sat, 11 Oct 2003 03:22:23 +0000 (GMT)
d1517 6
a1522 6
Received: from localhost (unknown [64.117.224.130])
	by svr1.postgresql.org (Postfix) with ESMTP id 547CED1B55D
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>; Sat, 11 Oct 2003 03:21:58 +0000 (GMT)
Received: from svr1.postgresql.org ([64.117.224.193])
	by localhost (neptune.hub.org [64.117.224.130]) (amavisd-new, port 10024)
	with ESMTP id 74332-03
d1524 20
a1543 21
	Sat, 11 Oct 2003 00:21:15 -0300 (ADT)
Received: from news.hub.org (unknown [64.117.224.194])
	by svr1.postgresql.org (Postfix) with ESMTP id EB54CD1B51D
	for <pgsql-hackers@@postgresql.org>; Sat, 11 Oct 2003 00:21:10 -0300 (ADT)
Received: from news.hub.org (host-64-117-224-194.altec1.com [64.117.224.194] (may be forged))
	by news.hub.org (8.12.9/8.12.9) with ESMTP id h9B3LAQh017763
	for <pgsql-hackers@@postgresql.org>; Sat, 11 Oct 2003 03:21:10 GMT
	(envelope-from news@@news.hub.org)
Received: (from news@@localhost)
	by news.hub.org (8.12.9/8.12.9/Submit) id h9B3JDdq017363
	for pgsql-hackers@@postgresql.org; Sat, 11 Oct 2003 03:19:13 GMT
X-Newsgroups: comp.databases.postgresql.hackers
Subject: Re: [HACKERS] 2-phase commit
References: <D90A5A6C612A39408103E6ECDD77B829408BF2@@voyager.corporate.connx.com>
From: Christopher Browne <cbbrowne@@acm.org>
X-message-flag: Outlook is rather hackable, isn't it?
X-Home-Page: http://www.cbbrowne.com/info/
X-Affero: http://svcs.affero.net/rm.php?r=cbbrowne
Message-ID: <m3u16gzdp4.fsf@@wolfe.cbbrowne.com>
User-Agent: Gnus/5.1003 (Gnus v5.10.3) XEmacs/21.4 (Reasonable Discussion, linux)
Cancel-Lock: sha1:YeipjZkXVBbpujQ/QjmB13rksFQ=
d1545 3
a1547 7
Content-Type: text/plain; charset=us-ascii
Lines: 52
Date: Fri, 10 Oct 2003 22:54:31 -0400
X-Complaints-To: abuse@@sympatico.ca
Organization: Bell Sympatico
To: pgsql-hackers@@postgresql.org
X-Virus-Scanned: by amavisd-new at postgresql.org
d1551 5
d1558 1
a1558 10
Martha Stewart called it a Good Thing whenDCorbit@@connx.com ("Dann Corbit")wrote:
>> I can't see a grave overhead from this comparison.
>
> 2PC is absolutely essential when you have to have both parts of the
> transaction complete for a logical unit of work.  For a project that
> needs it, if you don't have it you will be forced to go to another
> tool, or perform lots of custom programming to work around it.
>
> If you have 2PC and it is ten times slower than without it, you will
> still need it for projects requiring that capability.
d1560 2
a1561 1
Just so.
d1563 1
a1563 3
I would be completely unsurprised if an attempt to use 2PC to support
generalized "multimaster replication" would involve 10-fold slowdowns
as compared to having all the activity take place on one database.
d1565 3
a1567 3
Which would imply that 2PC is not a tool that may be appropriately
used to naively do replication.  But that should not come as any grand
surprise.
d1569 1
a1569 1
To each tool the right job, and to each job the right tool...
d1571 2
a1572 3
There seems to be enough room for there to be evidence both of 2PC
being useful for improving performance, and for it to cut
performance:
d1574 1
a1574 25
 - TPC benchmarks often specify the inclusion of Tuxedo as a
   component; the combination of vendors would surely NOT put it
   on the list if it were not an aid to performance;

 - There is also indication that there can be a cost, notably in the
   form of the concerns of deadlock, but it should also be obvious
   that slow network links would lead to _hideous_ increases in
   latency.

As you say, even if there is a substantial cost, it's still worthwhile
if a project needs it.

> Now, a good model to start with is a very good idea.  So some
> discussion and analysis is a good thing.  From the looks of it,
> Satoshi Nagayasu has done a very good job.  Having a functional 2PC
> would be a huge feather in the cap of PostgreSQL.

It would seem so.  I look forward to seeing how this progresses.
-- 
wm(X,Y):-write(X),write('@@'),write(Y). wm('cbbrowne','acm.org').
http://cbbrowne.com/info/linuxdistributions.html
"XFS might  (or might not)  come out before  the year 3000.  As far as
kernel patches go,  SGI are brilliant.  As far as graphics, especially
OpenGL,  go,  SGI is  untouchable.  As  far as   filing  systems go, a
concussed doormouse in a tarpit would move faster."  -- jd on Slashdot
d1577 2
a1578 1
TIP 7: don't forget to increase your free space map settings
d1580 15
a1594 8
From pgsql-hackers-owner+M45243@@postgresql.org Sat Oct 11 00:39:02 2003
Return-path: <pgsql-hackers-owner+M45243@@postgresql.org>
Received: from svr5.postgresql.org (svr5.postgresql.org [64.117.225.181])
	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id h9B4d0d19644
	for <pgman@@candle.pha.pa.us>; Sat, 11 Oct 2003 00:39:01 -0400 (EDT)
Received: from postgresql.org (svr1.postgresql.org [64.117.224.193])
	by svr5.postgresql.org (Postfix) with ESMTP
	id 141E272E6B5; Sat, 11 Oct 2003 04:38:54 +0000 (GMT)
d1596 6
a1601 6
Received: from localhost (unknown [64.117.224.130])
	by svr1.postgresql.org (Postfix) with ESMTP id 90A3AD1B4E3
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>; Sat, 11 Oct 2003 04:38:35 +0000 (GMT)
Received: from svr1.postgresql.org ([64.117.224.193])
	by localhost (neptune.hub.org [64.117.224.130]) (amavisd-new, port 10024)
	with ESMTP id 76273-09
d1603 21
a1623 6
	Sat, 11 Oct 2003 01:37:54 -0300 (ADT)
Received: from voyager.corporate.connx.com (voyager.corporate.connx.com [65.212.159.131])
	by svr1.postgresql.org (Postfix) with ESMTP id 0C599D1B4FE
	for <pgsql-hackers@@postgresql.org>; Sat, 11 Oct 2003 01:37:49 -0300 (ADT)
Content-Class: urn:content-classes:message
Subject: Re: [HACKERS] 2-phase commit
d1625 2
a1626 10
Content-Type: text/plain;
	charset="us-ascii"
Date: Fri, 10 Oct 2003 21:37:53 -0700
X-MimeOLE: Produced By Microsoft Exchange V6.0.6249.0
Message-ID: <D90A5A6C612A39408103E6ECDD77B8294CE1EC@@voyager.corporate.connx.com>
Thread-Topic: [HACKERS] 2-phase commit
Thread-Index: AcOPp2jLw1yNPbdnRFGP5HwssCpXCwACbcFw
From: "Dann Corbit" <DCorbit@@connx.com>
To: "Christopher Browne" <cbbrowne@@acm.org>, <pgsql-hackers@@postgresql.org>
X-Virus-Scanned: by amavisd-new at postgresql.org
d1630 5
a1634 2
Content-Transfer-Encoding: 8bit
X-MIME-Autoconverted: from quoted-printable to 8bit by candle.pha.pa.us id h9B4d0d19644
a1636 2
Why not apply the effort to something already done and compatibly
licensed?
d1638 2
a1639 2
This:
http://dog.intalio.com/ots.html
d1641 2
a1642 2
Appears to be a Berkeley style licensed:
http://dog.intalio.com/license.html
d1644 1
a1644 43
Transaction monitor.

"Overview
The OpenORB Transaction Service is a very scalable transaction monitor
which also provides several extensions like XA management, a management
interface to control all transaction processes and a high reliable
recovery system. 

By coordinating OpenORB and OpenORB Transaction Service, you provide a
reliable and powerful foundation for building large scalable distributed
applications. 

Datasheet
The OpenORB Transaction Service is a fully compliant implementation of
the OMG Transaction Service specification. 
The OpenORB Transaction Service features are :  
  Management of distributed transactions with a two phase commit
protocol 
 Sub Transactions management ( nested transactions ) 
 Propagation of the transaction context between CORBA objects 
 Management of distributed transactions propagation through databases
with the XA protocol 
 Automatic logs to be able to make recovery in case of failures 
 Can be used as a transaction initiator or subordinate 
 High-performance, multiple thread architecture 
 Developed with POA 
 Provides a management interface to control all transactions 
 Full support of JTA 
 JDBC pooling and automatic resource enlistment 


Download
To download the OpenORB Transaction Service, do one of the following :  
  CVS : you can use CVS to grab the sources directly.  
 FTP : you get either a CVS snapshot or a prebuilt version 
To use one of these possibilities, go to the Download Services page. 

ChangeLog
August 15th 2001. Version 1.2.0.  
  Changed the transaction client side to support late binding to the
transaction monitor. 
 Bug fixed in the transactional client interceptor. This bug was due to
a change in the OpenORB behavior concerning the slot 
d1646 22
d1669 3
a1671 2
To get previous change log, please refer to the CHANGELOG file available
within this service distribution."
d1678 15
a1692 8
From pgsql-hackers-owner+M45244@@postgresql.org Sat Oct 11 01:23:16 2003
Return-path: <pgsql-hackers-owner+M45244@@postgresql.org>
Received: from svr5.postgresql.org (svr5.postgresql.org [64.117.225.181])
	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id h9B5NFd23659
	for <pgman@@candle.pha.pa.us>; Sat, 11 Oct 2003 01:23:15 -0400 (EDT)
Received: from postgresql.org (svr1.postgresql.org [64.117.224.193])
	by svr5.postgresql.org (Postfix) with ESMTP
	id A052972E6E6; Sat, 11 Oct 2003 05:23:07 +0000 (GMT)
d1694 23
a1716 25
Received: from localhost (unknown [64.117.224.130])
	by svr1.postgresql.org (Postfix) with ESMTP id 7E090D1B4E1
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>; Sat, 11 Oct 2003 05:22:45 +0000 (GMT)
Received: from svr1.postgresql.org ([64.117.224.193])
	by localhost (neptune.hub.org [64.117.224.130]) (amavisd-new, port 10024)
	with ESMTP id 87418-02
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>;
	Sat, 11 Oct 2003 02:22:03 -0300 (ADT)
Received: from voyager.corporate.connx.com (voyager.corporate.connx.com [65.212.159.131])
	by svr1.postgresql.org (Postfix) with ESMTP id 1756CD1B4FC
	for <pgsql-hackers@@postgresql.org>; Sat, 11 Oct 2003 02:21:58 -0300 (ADT)
Content-Class: urn:content-classes:message
Subject: Re: [HACKERS] 2-phase commit
MIME-Version: 1.0
Content-Type: text/plain;
	charset="us-ascii"
Date: Fri, 10 Oct 2003 22:22:03 -0700
X-MimeOLE: Produced By Microsoft Exchange V6.0.6249.0
Message-ID: <D90A5A6C612A39408103E6ECDD77B8294CE1EE@@voyager.corporate.connx.com>
Thread-Topic: [HACKERS] 2-phase commit
Thread-Index: AcOPp2jLw1yNPbdnRFGP5HwssCpXCwACbcFwAAGb7AA=
From: "Dann Corbit" <DCorbit@@connx.com>
To: "Dann Corbit" <DCorbit@@connx.com>, "Christopher Browne" <cbbrowne@@acm.org>,
   <pgsql-hackers@@postgresql.org>
X-Virus-Scanned: by amavisd-new at postgresql.org
d1720 1
a1720 2
Content-Transfer-Encoding: 8bit
X-MIME-Autoconverted: from quoted-printable to 8bit by candle.pha.pa.us id h9B5NFd23659
d1723 14
a1736 2
Here is a sourceforge version of the same thing
http://openorb.sourceforge.net/
d1738 1
a1738 70
> -----Original Message-----
> From: Dann Corbit 
> Sent: Friday, October 10, 2003 9:38 PM
> To: Christopher Browne; pgsql-hackers@@postgresql.org
> Subject: Re: [HACKERS] 2-phase commit
> 
> 
> Why not apply the effort to something already done and 
> compatibly licensed?
> 
> This:
> http://dog.intalio.com/ots.html
> 
> Appears to be a Berkeley style licensed: 
> http://dog.intalio.com/license.html
> 
> Transaction monitor.
> 
> "Overview
> The OpenORB Transaction Service is a very scalable 
> transaction monitor which also provides several extensions 
> like XA management, a management interface to control all 
> transaction processes and a high reliable recovery system. 
> 
> By coordinating OpenORB and OpenORB Transaction Service, you 
> provide a reliable and powerful foundation for building large 
> scalable distributed applications. 
> 
> Datasheet
> The OpenORB Transaction Service is a fully compliant 
> implementation of the OMG Transaction Service specification. 
> The OpenORB Transaction Service features are :  
>   Management of distributed transactions with a two phase 
> commit protocol 
>  Sub Transactions management ( nested transactions ) 
>  Propagation of the transaction context between CORBA objects 
>  Management of distributed transactions propagation through 
> databases with the XA protocol 
>  Automatic logs to be able to make recovery in case of failures 
>  Can be used as a transaction initiator or subordinate 
>  High-performance, multiple thread architecture 
>  Developed with POA 
>  Provides a management interface to control all transactions 
>  Full support of JTA 
>  JDBC pooling and automatic resource enlistment 
> 
> 
> Download
> To download the OpenORB Transaction Service, do one of the 
> following :  
>   CVS : you can use CVS to grab the sources directly.  
>  FTP : you get either a CVS snapshot or a prebuilt version 
> To use one of these possibilities, go to the Download Services page. 
> 
> ChangeLog
> August 15th 2001. Version 1.2.0.  
>   Changed the transaction client side to support late binding 
> to the transaction monitor. 
>  Bug fixed in the transactional client interceptor. This bug 
> was due to a change in the OpenORB behavior concerning the slot 
> 
> 
> To get previous change log, please refer to the CHANGELOG 
> file available within this service distribution."
> 
> ---------------------------(end of 
> broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
> 
               http://www.postgresql.org/docs/faqs/FAQ.html
d1741 3
a1743 2
TIP 9: the planner will ignore your desire to choose an index scan if your
      joining column's datatypes do not match
d1745 15
a1759 8
From pgsql-hackers-owner+M45247@@postgresql.org Sat Oct 11 08:38:03 2003
Return-path: <pgsql-hackers-owner+M45247@@postgresql.org>
Received: from svr4.postgresql.org (svr4.postgresql.org [64.117.224.192])
	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id h9BCc1d20782
	for <pgman@@candle.pha.pa.us>; Sat, 11 Oct 2003 08:38:01 -0400 (EDT)
Received: from postgresql.org (svr1.postgresql.org [64.117.224.193])
	by svr4.postgresql.org (Postfix) with ESMTP
	id E4FAE1CB46A9; Sat, 11 Oct 2003 12:37:48 +0000 (GMT)
d1761 6
a1766 6
Received: from localhost (unknown [64.117.224.130])
	by svr1.postgresql.org (Postfix) with ESMTP id 8A364D1B4EF
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>; Sat, 11 Oct 2003 12:37:37 +0000 (GMT)
Received: from svr1.postgresql.org ([64.117.224.193])
	by localhost (neptune.hub.org [64.117.224.130]) (amavisd-new, port 10024)
	with ESMTP id 48999-05
d1768 24
a1791 24
	Sat, 11 Oct 2003 09:36:55 -0300 (ADT)
Received: from smtpzilla2.xs4all.nl (smtpzilla2.xs4all.nl [194.109.127.138])
	by svr1.postgresql.org (Postfix) with ESMTP id 0F175D1B4E1
	for <pgsql-hackers@@postgresql.org>; Sat, 11 Oct 2003 09:36:47 -0300 (ADT)
Received: from xs1.xs4all.nl (xs1.xs4all.nl [194.109.3.11])
	by smtpzilla2.xs4all.nl (8.12.9/8.12.9) with ESMTP id h9BCaQMW052048;
	Sat, 11 Oct 2003 14:36:30 +0200 (CEST)
Received: from xs1.xs4all.nl (jtv@@localhost.xs4all.nl [127.0.0.1])
	by xs1.xs4all.nl (8.12.10/8.12.9) with ESMTP id h9BCaPpX097890;
	Sat, 11 Oct 2003 14:36:25 +0200 (CEST)
	(envelope-from jtv@@xs4all.nl)
Received: (from jtv@@localhost)
	by xs1.xs4all.nl (8.12.10/8.12.9/Submit) id h9BCaPPT097880;
	Sat, 11 Oct 2003 14:36:25 +0200 (CEST)
	(envelope-from jtv)
Date: Sat, 11 Oct 2003 14:36:25 +0200
From: "Jeroen T. Vermeulen" <jtv@@xs4all.nl>
To: Dann Corbit <DCorbit@@connx.com>
cc: Christopher Browne <cbbrowne@@acm.org>, pgsql-hackers@@postgresql.org
Subject: Re: [HACKERS] 2-phase commit
Message-ID: <20031011123624.GA97612@@xs4all.nl>
Mail-Followup-To: Dann Corbit <DCorbit@@connx.com>,
	Christopher Browne <cbbrowne@@acm.org>, pgsql-hackers@@postgresql.org
References: <D90A5A6C612A39408103E6ECDD77B8294CE1EC@@voyager.corporate.connx.com>
d1793 4
a1796 5
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
In-Reply-To: <D90A5A6C612A39408103E6ECDD77B8294CE1EC@@voyager.corporate.connx.com>
User-Agent: Mutt/1.4.1i
X-Virus-Scanned: by amavisd-new at postgresql.org
d1800 5
d1807 1
a1807 11
On Fri, Oct 10, 2003 at 09:37:53PM -0700, Dann Corbit wrote:
> Why not apply the effort to something already done and compatibly
> licensed?
> 
> This:
> http://dog.intalio.com/ots.html
> 
> Appears to be a Berkeley style licensed:
> http://dog.intalio.com/license.html
> 
> Transaction monitor.
d1809 3
a1811 2
I'd say this is complementary, not an alternative to 2PC implementation
issues.  
d1813 1
a1813 2
The transaction monitor lives on the other side of the problem.  2PC is
needed in the database _so that_ the transaction monitor can do its job.
d1815 3
a1817 2
That said, having a 3-tier model is probably a good idea if distributed
transaction management is what we want.  :-)
d1819 2
d1822 1
a1822 1
Jeroen
d1824 1
d1827 2
a1828 3
TIP 3: if posting/reading through Usenet, please send an appropriate
      subscribe-nomail command to majordomo@@postgresql.org so that your
      message can get through to the mailing list cleanly
d1830 12
a1841 5
From pgsql-hackers-owner+M45298@@postgresql.org Mon Oct 13 15:55:48 2003
Return-path: <pgsql-hackers-owner+M45298@@postgresql.org>
Received: from www.postgresql.com (209.204.46.200.psinetpa.net [200.46.204.209] (may be forged))
	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id h9DJtkd05408
	for <pgman@@candle.pha.pa.us>; Mon, 13 Oct 2003 15:55:47 -0400 (EDT)
d1843 2
a1844 2
	by www.postgresql.com (Postfix) with ESMTP
	id B7324CF5197; Mon, 13 Oct 2003 16:55:34 -0300 (ADT)
d1846 3
a1848 3
Received: from localhost (unknown [200.46.204.2])
	by svr1.postgresql.org (Postfix) with ESMTP id CCFF7D1B4FE
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>; Mon, 13 Oct 2003 19:55:32 +0000 (GMT)
d1850 2
a1851 2
	by localhost (neptune.hub.org [200.46.204.2]) (amavisd-new, port 10024)
	with ESMTP id 16288-06
d1853 17
a1869 7
	Mon, 13 Oct 2003 16:55:01 -0300 (ADT)
Received: from voyager.corporate.connx.com (voyager.corporate.connx.com [65.212.159.131])
	by svr1.postgresql.org (Postfix) with ESMTP id 0636BD1B532
	for <pgsql-hackers@@postgresql.org>; Mon, 13 Oct 2003 16:54:58 -0300 (ADT)
Content-Class: urn:content-classes:message
Subject: Re: [HACKERS] 2-phase commit
Date: Mon, 13 Oct 2003 12:54:53 -0700
d1871 5
a1875 10
Content-Type: text/plain;
	charset="us-ascii"
Message-ID: <D90A5A6C612A39408103E6ECDD77B829408BF5@@voyager.corporate.connx.com>
X-MimeOLE: Produced By Microsoft Exchange V6.0.6249.0
Thread-Topic: [HACKERS] 2-phase commit
Thread-Index: AcOP9Fpw1EtLlhHkTKKwePp/YkaQTgBzmnCQ
From: "Dann Corbit" <DCorbit@@connx.com>
To: "Jeroen T. Vermeulen" <jtv@@xs4all.nl>
cc: "Christopher Browne" <cbbrowne@@acm.org>, <pgsql-hackers@@postgresql.org>
X-Virus-Scanned: by amavisd-new at postgresql.org
d1879 5
a1883 2
Content-Transfer-Encoding: 8bit
X-MIME-Autoconverted: from quoted-printable to 8bit by candle.pha.pa.us id h9DJtkd05408
d1886 3
a1888 22
> -----Original Message-----
> From: Jeroen T. Vermeulen [mailto:jtv@@xs4all.nl] 
> Sent: Saturday, October 11, 2003 5:36 AM
> To: Dann Corbit
> Cc: Christopher Browne; pgsql-hackers@@postgresql.org
> Subject: Re: [HACKERS] 2-phase commit
> 
> 
> On Fri, Oct 10, 2003 at 09:37:53PM -0700, Dann Corbit wrote:
> > Why not apply the effort to something already done and compatibly 
> > licensed?
> > 
> > This:
> > http://dog.intalio.com/ots.html
> > 
> > Appears to be a Berkeley style licensed: 
> > http://dog.intalio.com/license.html
> > 
> > Transaction monitor.
> 
> I'd say this is complementary, not an alternative to 2PC 
> implementation issues.  
d1890 4
a1893 22
My notion is that the specification has been created that describes how
the system should operate, what the API's are, etc.  I think that most
of the work is involved in that area.  The notion is that if you program
to this spec, it will already have been well thought out and it should
be standards based when completed.
 
> The transaction monitor lives on the other side of the 
> problem.  2PC is needed in the database _so that_ the 
> transaction monitor can do its job.

Theoretically, if any database in the chain supports 2PC, you could make
all connected systems 2PC compliant by using the one functional system
as a persistent store.  But you are right.  PostgreSQL still would need
the "I promise to commit when you ask" method if it is to really support
it.

I think another way it could be handled is with nested transactions.
Just have the promise phase be an inner transaction commit but have an
outer transaction bracket that one for the actual commit.
 
> That said, having a 3-tier model is probably a good idea if 
> distributed transaction management is what we want.  :-)
d1895 5
a1899 1
In real life, I think it is _always_ done this way.
d1902 3
a1904 1
TIP 4: Don't 'kill -9' the postmaster
d1906 12
a1917 5
From pgsql-hackers-owner+M45310@@postgresql.org Mon Oct 13 20:18:25 2003
Return-path: <pgsql-hackers-owner+M45310@@postgresql.org>
Received: from www.postgresql.com (209.204.46.200.psinetpa.net [200.46.204.209] (may be forged))
	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id h9E0IMd02430
	for <pgman@@candle.pha.pa.us>; Mon, 13 Oct 2003 20:18:23 -0400 (EDT)
d1919 2
a1920 2
	by www.postgresql.com (Postfix) with ESMTP
	id 16454CF7280; Mon, 13 Oct 2003 21:18:12 -0300 (ADT)
d1922 3
a1924 3
Received: from localhost (unknown [200.46.204.2])
	by svr1.postgresql.org (Postfix) with ESMTP id F411ED1B538
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>; Tue, 14 Oct 2003 00:18:09 +0000 (GMT)
d1926 2
a1927 2
	by localhost (neptune.hub.org [200.46.204.2]) (amavisd-new, port 10024)
	with ESMTP id 73033-02
d1929 26
a1954 17
	Mon, 13 Oct 2003 21:17:39 -0300 (ADT)
Received: from mail.hive.nj2.inquent.com (mc.carriermail.com [205.178.180.9])
	by svr1.postgresql.org (Postfix) with SMTP id BA9E8D1B575
	for <pgsql-hackers@@postgresql.org>; Mon, 13 Oct 2003 21:17:37 -0300 (ADT)
Received: (qmail 6743 invoked from network); 14 Oct 2003 00:10:32 -0000
Received: from unknown (HELO ?192.168.1.199?) (134.22.69.154)
  by 205.178.180.9 with SMTP; 14 Oct 2003 00:10:32 -0000
Subject: Re: [HACKERS] 2-phase commit
From: Rod Taylor <rbt@@rbt.ca>
To: Dann Corbit <DCorbit@@connx.com>
cc: "Jeroen T. Vermeulen" <jtv@@xs4all.nl>,
   Christopher Browne <cbbrowne@@acm.org>,
   PostgreSQL Development <pgsql-hackers@@postgresql.org>
In-Reply-To: <D90A5A6C612A39408103E6ECDD77B829408BF5@@voyager.corporate.connx.com>
References:  <D90A5A6C612A39408103E6ECDD77B829408BF5@@voyager.corporate.connx.com>
Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="=-b4H+7106Ap3EF98tkvjh"
Message-ID: <1066090267.46588.14.camel@@jester>
d1956 3
a1958 3
X-Mailer: Ximian Evolution 1.4.5 
Date: Mon, 13 Oct 2003 20:11:08 -0400
X-Virus-Scanned: by amavisd-new at postgresql.org
d1962 5
d1969 16
a1984 3
--=-b4H+7106Ap3EF98tkvjh
Content-Type: text/plain
Content-Transfer-Encoding: quoted-printable
d1986 2
a1987 3
> I think another way it could be handled is with nested transactions.
> Just have the promise phase be an inner transaction commit but have an
> outer transaction bracket that one for the actual commit.
d1989 3
a1991 2
Not really. In the event of a crash, most 2PC systems will expect the
participant to come back in the same state it crashed in.
d1993 1
a1993 2
Our nested-transaction implementation (like our standard transaction
implementation) aborts all transactions on crash.
d1995 1
a1995 3
--=-b4H+7106Ap3EF98tkvjh
Content-Type: application/pgp-signature; name=signature.asc
Content-Description: This is a digitally signed message part
d1997 1
a1997 2
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (FreeBSD)
d1999 2
a2000 4
iD8DBQA/iz8a6DETLow6vwwRAs9mAJ0VLew5oH18eL/7BArqWj0H7pYJAwCePLbQ
hpvlKlmUIzIA38T5R62+Ts8=
=xuTB
-----END PGP SIGNATURE-----
d2002 1
a2002 1
--=-b4H+7106Ap3EF98tkvjh--
d2004 12
a2015 5
From pgsql-hackers-owner+M45319@@postgresql.org Mon Oct 13 22:15:41 2003
Return-path: <pgsql-hackers-owner+M45319@@postgresql.org>
Received: from svr4.postgresql.org (70.204.46.200.psinetpa.net [200.46.204.70] (may be forged))
	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id h9E2Fbd17197
	for <pgman@@candle.pha.pa.us>; Mon, 13 Oct 2003 22:15:38 -0400 (EDT)
d2017 2
a2018 2
	by svr4.postgresql.org (Postfix) with ESMTP
	id B2DC01CB4910; Tue, 14 Oct 2003 02:15:27 +0000 (GMT)
d2020 3
a2022 3
Received: from localhost (unknown [200.46.204.2])
	by svr1.postgresql.org (Postfix) with ESMTP id 22899D1B538
	for <pgsql-hackers-postgresql.org@@localhost.postgresql.org>; Tue, 14 Oct 2003 02:15:24 +0000 (GMT)
d2024 2
a2025 2
	by localhost (neptune.hub.org [200.46.204.2]) (amavisd-new, port 10024)
	with ESMTP id 92845-02
d2027 17
a2043 17
	Mon, 13 Oct 2003 23:14:54 -0300 (ADT)
Received: from snipe.mail.pas.earthlink.net (snipe.mail.pas.earthlink.net [207.217.120.62])
	by svr1.postgresql.org (Postfix) with ESMTP id 6C8F3D1B515
	for <pgsql-hackers@@postgresql.org>; Mon, 13 Oct 2003 23:14:52 -0300 (ADT)
Received: from dialup-65.58.151.117.dial1.pittsburgh1.level3.net ([65.58.151.117])
	by snipe.mail.pas.earthlink.net with esmtp (Exim 3.33 #1)
	id 1A9Ehw-0004TJ-00; Mon, 13 Oct 2003 19:14:45 -0700
From: Jordan Henderson <jordan_henders@@yahoo.com>
To: Rod Taylor <rbt@@rbt.ca>, Dann Corbit <DCorbit@@connx.com>
Subject: Re: [HACKERS] 2-phase commit
Date: Mon, 13 Oct 2003 22:13:53 -0400
User-Agent: KMail/1.5.3
cc: "Jeroen T. Vermeulen" <jtv@@xs4all.nl>,
   Christopher Browne <cbbrowne@@acm.org>,
   PostgreSQL Development <pgsql-hackers@@postgresql.org>
References: <D90A5A6C612A39408103E6ECDD77B829408BF5@@voyager.corporate.connx.com> <1066090267.46588.14.camel@@jester>
In-Reply-To: <1066090267.46588.14.camel@@jester>
d2045 1
a2045 3
Content-Type: text/plain;
  charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
d2047 4
a2050 2
Message-ID: <200310132213.53751.jordan_henders@@yahoo.com>
X-Virus-Scanned: by amavisd-new at postgresql.org
d2054 5
d2061 1
a2061 8
On Monday 13 October 2003 20:11, Rod Taylor wrote:
> > I think another way it could be handled is with nested transactions.
> > Just have the promise phase be an inner transaction commit but have an
> > outer transaction bracket that one for the actual commit.
>
> Not really. In the event of a crash, most 2PC systems will expect the
> participant to come back in the same state it crashed in.
>
d2063 3
a2065 10
Yes, this is correct.  There are certain phases of the protocol in which the 
transaction state must be re-instated from the log file after a crash of the 
DB server.  The re-instatement must occur prior to any connections being 
accepted by the server.  Additionally, the coordinator must be fully 
recoverable as well.  The coordinator may, depending on the phase of the 
commit/abort, contact child servers after it crashes.  The requirement is 
that during log replay, the transaction structures might have to be fully 
reconstructed and remain in-place after log replay has completed, until the 
disposition of the (sub)transaction is settled by the coordinator.  All 
dependent on the phase of course.
d2067 3
a2069 2
> Our nested-transaction implementation (like our standard transaction
> implementation) aborts all transactions on crash.
d2071 1
a2071 1
Jordan Henderson
d2073 4
d2079 2
a2080 1
TIP 8: explain analyze is your friend
d2082 45
a2126 16
From JanWieck@@Yahoo.com Tue Oct 14 00:21:11 2003
Return-path: <JanWieck@@Yahoo.com>
Received: from smtp017.mail.yahoo.com (smtp017.mail.yahoo.com [216.136.174.114])
	by candle.pha.pa.us (8.11.6/8.11.6) with SMTP id h9E4L8d06728
	for <pgman@@candle.pha.pa.us>; Tue, 14 Oct 2003 00:21:09 -0400 (EDT)
Received: from pcp01341166pcs.wilog301.pa.comcast.net (HELO europa.janwieck.net) (janwieck@@68.80.245.191 with login)
  by smtp.mail.vip.sc5.yahoo.com with SMTP; 14 Oct 2003 04:21:03 -0000
Received: from Yahoo.com (pcp01341166pcs.wilog301.pa.comcast.net [68.80.245.191])
	(authenticated)
	by europa.janwieck.net (8.11.6/8.11.6) with ESMTP id h9E4L1311359;
	Tue, 14 Oct 2003 00:21:01 -0400
Message-ID: <3F8B7990.60207@@Yahoo.com>
Date: Tue, 14 Oct 2003 00:20:32 -0400
From: Jan Wieck <JanWieck@@Yahoo.com>
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624
X-Accept-Language: en-us, en
d2128 7
a2134 8
To: Bruce Momjian <pgman@@candle.pha.pa.us>
cc: Tatsuo Ishii <t-ishii@@sra.co.jp>, andrew@@libertyrms.info,
   pgsql-hackers@@postgresql.org
Subject: Re: [HACKERS] 2-phase commit
References: <200310100053.h9A0rkl23681@@candle.pha.pa.us>
In-Reply-To: <200310100053.h9A0rkl23681@@candle.pha.pa.us>
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Transfer-Encoding: 7bit
d2137 1
a2137 1
Bruce Momjian wrote:
d2139 2
a2140 15
> Tatsuo Ishii wrote:
>> > Yes.  I don't think that 2PC is a solution for robustness in face of
>> > network failure.  It's too slow, to begin with.  Some sort of
>> > multi-master system is very desirable for network failures, &c., but
>> > I don't think anybody does active/hot standby with 2PC any more; the
>> > performance is too bad.
>> 
>> I'm tired of this kind of "2PC is too slow" arguments. I think
>> Satoshi, the only guy who made a trial implementation of 2PC for
>> PostgreSQL, has already showed that 2PC is not that slow.
> 
> Agreed.  Let's get it into 7.5 and see it in action.  If we need to
> adjust it, we can, but right now, we need something for distributed
> transactions, and this seems like the logical direction.
> 
d2142 2
a2143 1
Are you guy's kidding or what?
d2145 2
a2146 5
2PC is not too slow in normal operations when everything is purring like 
little kittens and you're just wasting your excess bandwidth on it. The 
point is that it behaves horrible and like a dirty backstreet cat at the 
time when things go wrong ... basically it's a neat thing to have, but 
from the second you need it it becomes useless.
d2148 1
d2150 1
a2150 1
Jan
d2152 1
a2152 32
-- 
#======================================================================#
# It's easier to get forgiveness for being wrong than for being right. #
# Let's break this rule - forgive me.                                  #
#================================================== JanWieck@@Yahoo.com #

From peter.galbavy@@knowtion.net Tue Oct 14 05:00:23 2003
Return-path: <peter.galbavy@@knowtion.net>
Received: from mailstore-1.mail.knowledge.com ([213.170.2.69])
	by candle.pha.pa.us (8.11.6/8.11.6) with ESMTP id h9E90Ld00955
	for <pgman@@candle.pha.pa.us>; Tue, 14 Oct 2003 05:00:23 -0400 (EDT)
Received: from [213.155.153.61] (helo=MBLOXD98BTT0J)
	by mailstore-1.mail.knowledge.com with asmtp (Exim 3.36 #1)
	id 1A9L2A-0004lK-00; Tue, 14 Oct 2003 10:00:02 +0100
Message-ID: <004601c39231$8db3f5e0$2f28a8c0@@cblan.mblox.com>
From: "Peter Galbavy" <peter.galbavy@@knowtion.net>
To: "Jan Wieck" <JanWieck@@Yahoo.com>, "Bruce Momjian" <pgman@@candle.pha.pa.us>
cc: "Tatsuo Ishii" <t-ishii@@sra.co.jp>, <andrew@@libertyrms.info>,
   <pgsql-hackers@@postgresql.org>
References: <200310100053.h9A0rkl23681@@candle.pha.pa.us> <3F8B7990.60207@@Yahoo.com>
Subject: Re: [HACKERS] 2-phase commit
Date: Tue, 14 Oct 2003 09:59:58 +0100
Organization: Knowtion Ltd.
MIME-Version: 1.0
Content-Type: text/plain;
	charset="Windows-1252"
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2800.1158
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1165
Status: OR
d2154 1
a2154 6
Jan Wieck wrote:
> 2PC is not too slow in normal operations when everything is purring
> like little kittens and you're just wasting your excess bandwidth on
> it. The point is that it behaves horrible and like a dirty backstreet
> cat at the time when things go wrong ... basically it's a neat thing
> to have, but from the second you need it it becomes useless.
d2156 1
a2156 2
I can't see anyone being forced to use it once it maybe/is supported. Like
many tools, "ouch!" is a good reaction when used untrained/incorrectly.
d2158 3
a2160 1
Peter
@


1.1
log
@Add 2-phase TODO.detail.
@
text
@@

