Re: [Prevayler-discussion] Question about method prevayler.execute
Brought to you by:
jsampson,
klauswuestefeld
From: Justin T. S. <ju...@kr...> - 2006-08-10 05:26:12
|
Yes, that's right. You're seeing Prevayler's rollback support in action. The mechanism is known as the "food taster" (or sometimes we call it the "strict transaction censor"). When this feature is turned on, every transaction is executed twice -- once on a shadow copy (the "food taster") of the prevalent system, and then again on the live system (the "king"). It is only journaled once. If a transaction throws a RuntimeException when executed against the food taster, it is not journaled at all, and it is not executed against the king, and the food taster itself is rolled back to the current state of the king (by deep-copying the king). This feature is active by default. It can be turned off for performance (or conceptual purity) using the setTransactionFiltering method of PrevaylerFactory. But it is very important to understand what it is doing, and to understand that you must not in general perform any externally-observable actions during transaction execution, even when the food taster is turned off. Cheers, Justin P.S. All this should be on the website of course, which we're getting back up and running real soon now! On 8/9/06, blackboy zabaha <bla...@ya...> wrote: > Hi, > When I test my app, I found something I don't > understand, at first I > think I make the mistake my own, but when I try on the > demo, it's result > the same thing. > I found that when I call > prevayler.execute(new > NumberStorageTransaction(primeCandidate)); > > this look like that it will always call > NumberStorageTransaction.executeOn(Object > prevalentSystem, Date ignored) > 2 times (I just print out some text there.), is this > intend to be so and > nothing to worry about (but I think this might affect > logging)? or I > misunderstand something? > > ... > Primes found: 820. Largest: 6301 > executeOn.. > <------------- I log > in NumberStorageTransaction.executeOn > keep.... > <------------- > I log in NumberKeeper.keep > executeOn.. > <------------- the > 2nd of NumberStorageTransaction.executeOn!!! > keep.... > <------------- > the 2nd of NumberKeeper.keep!!! > Primes found: 821. Largest: 6311 > executeOn.. > keep.... > executeOn.. > keep.... > Primes found: 822. Largest: 6317 > ... |