Could someone in this list verify the following
Transactions scenarios? I am concerned on the
validility of the data in TX_2 below.
Here it is...
A is an entity bean instance. 'attr' is an attribute of A.
The underlying database supports isolation level serializable.
TX_1 isolation level is READ COMMITTED.
TX_2 isolation level is SERIALIZABLE
ASSUMPTION: container implements PESSIMISTIC locks on entities.
A.attr = '0' (before transaction TX_1 started)
(begin) (A.attr='1' ) (commit)
TX_1: |--------------****----------|
(begin) (read A.attr) (A.attr = '2') (commit)
TX_2: |--------------***----------****-----------|
--------t1---t2--------t3----t4-----t5----t6------------t7-->
(time)
Here is how I see the above two transactions at different
points in time. Please, confirm if this is valid in the
EJB entity context.
at time t1, TX_1 sees A.attr as '0'
at time t2, TX_2 sees A.attr as '0'
shortly after time t3, TX_1 sees A.attr as '1'
at time t4, TX_2 is blocked, and the TX_2 thread waits for
the pessimistic lock on A to be released
at time t5, TX_1 commits TX, and pessimistic lock on entity
bean A is released.
shortly after time t5, TX_2 thread can proceed, and reads A.attr.
What value does TX_2 read here ? I would expect it to be
'0', NOT '1' because TX_2 is a SERIALIZABLE TRANSACTION.
But I wonder if WebLogic or any other EJB container supports
this, since the isolation levelis delegated to the database.
at time t6, TX_2, updates A.attr to '3', no exception is thrown here
yet, because TX has not commited and ejbStore not called yet.
at time t7, TX_2 tries to update state of A to database calling
ejbStore. But a serializable exception is thrown by underlying
database at time t7. TX_2 cannot be serialized due to TX_1
update/commit of record A after TX_2 started, and before
TX_2 tried to update that same record.
Rubens.
===========================================================================
To unsubscribe, send email to [EMAIL PROTECTED] and include in the body
of the message "signoff EJB-INTEREST". For general help, send email to
[EMAIL PROTECTED] and include in the body of the message "help".