Subject | Re: [firebird-support] Re: firebird deadlock vs isc_tpb_wait/etc. issue, or ? |
---|---|
Author | Dmitry Yemanov |
Post date | 2006-10-18T09:58:59Z |
learntrade wrote:
commits or rolls back and then re-reads the record (including fetching
record data).
engines where writers block readers. I doubt it makes a lot of sense to
use this mode in a MGA engine.
sense for concurrency (aka snapshot) ones.
something in your application logic.
Dmitry
>isc_update_conflict.
> 1)What kind of conflicts?
> Assuming ilReadCommitted and lrWait, does the waiting readIt reads the record header, then waits until the concurrent transaction
> A)(repeatedly) attempt to re-read the same record generation it tried
> before?
commits or rolls back and then re-reads the record (including fetching
record data).
> 2)IBPP (source-code wise, I haven't debug-stepped it)That's a pity. no_rec_version is in fact an emulation of the blocking
> A)does explicitly set isc_tpb_no_rec_version for ilReadCommitted
> (core\transaction.cpp, lines 316 v2-5-2-0, or 308 v2-5-2-2)
engines where writers block readers. I doubt it makes a lot of sense to
use this mode in a MGA engine.
> B)leaves default (docs I've read say should be no_rec_version) whenno_rec_version is used only for read committed transactions. It makes no
> using ilConcurrency
sense for concurrency (aka snapshot) ones.
> But, if I've understood you, with ilReadCommitted, lrWait, andYes, but I cannot say for sure without seeing your code. Maybe I missed
> isc_tp_no_rec_version (repeat - which IBPP _appears_ to be using), I
> _should_ be getting the desired result, and _not_ a deadlock - Correct?
something in your application logic.
Dmitry