FAQ update about transaction interleaving

Поиск
Список
Период
Сортировка
Искать

FAQ update about transaction interleaving

От:
Heikki Linnakangas <heikki@enterprisedb.com>
Дата:
Our FAQ entry on XA support is quite vague; most users don't know what 
transaction interleaving is or why they should care.

Here's an updated version based on a response I gave earlier to a post 
asking about it:

-----------------
1.1. Does the driver have XA support?

Yes, starting with the 8.1dev-403 driver. However, the transaction 
interleaving is not supported.

1.2. What is "transaction interleaving"?

Transaction interleaving means that one database connection can be used 
for multiple transactions at the same time, switching between the 
transactions.

Transaction interleaving is mostly useless, but it's a required part of 
the JTA specification. Some application servers use it to allow a bit 
more concurrency without allocating a bigger jdbc connection pool.

Few JDBC drivers support transaction interleaving properly. Some fake it 
by issuing early prepare commands, risking transaction integrity, some 
give strange error messages, some fail in other, subtle ways. The 
PostgreSQL JDBC driver does it's best to detect interleaving and throws 
a proper error message when it can't do what's requested.

Because of the lack of driver support, all of the popular application 
servers use provide options to work around it, or don't use it at all. 
Therefore, lack of transaction interleaving shouldn't affect your 
application or data integrity.

See the JTA specification, section 3.4.4, or search the pgsql-jdbc 
mailing list archives for more information.
 
1.3. How to configure application server XXX to work with the PostgreSQL 
JDBC driver

[We need some examples...]

Please read the documentation of your application server for details. 
You might need to set a flag to disable transaction interleaving. In 
JBoss, for example, set the "track-connection-by-tx" parameter.

-- 
  Heikki Linnakangas
  EnterpriseDB   http://www.enterprisedb.com

Re: FAQ update about transaction interleaving

От:
"Mikael Carneholm" <Mikael.Carneholm@WirelessCar.com>
Дата:
> 1.3. How to configure application server XXX to work with the
PostgreSQL JDBC driver

> [We need some examples...]

Here's a PG XA datasource config for a JBoss app (figured out the
xa-datasource-property names by looking at the source code of the
driver):



  
    AppFooXADS
    
    false
 
org.postgresql.xa.PGXADataSource
    postgres.host
    applications
    appFooUser1
    secret
    5432
    20
    100
    60000
  


/Mikael

FAQ