Re: Postvayler

Naveen Chawla <[email protected]> Mon, 2 Dec 2013 20:51:29 +0000
Newsgroups gmane.comp.java.prevayler
Message-ID <CAGs7EcV8r=JqYZVMzOrA6k8s5xLBontYUbF--v5q9-fXjwFrpw@mail.gmail.com>
Hakan, Congratulations for carving out the time to attempt this.

How easy do you think it would be to instrument the object, when it is
passed in, to simply journal all changes to non-transient fields, and batch
them into single journal entries when they occur during a synchronized lock
over the prevalent object?

Can it all be done with run-time instrumentation from start to finish, such
that no annotations are necessary?


On 1 December 2013 23:12, hakan eryargi <[email protected]> wrote:

> i'm experimenting with the idea. so far not bad. just put what I've done
> to GitHub. any suggestions, critics and contributions are welcome:)
> https://github.com/raftAtGit/Postvayler
>
> apologies for the name, it sounded like a nice word play:)
>
> to run the sample, run the Compiler class
> with raft.postvayler.samples.bank.Bank argument and then run
> raft.postvayler.samples.bank.Main
>
> how it works:
> compiler injects bytecode to root class and all @Persistent classes that
> can be accesible* from root.
>
> root class contains an injected object pool, where each @Persistent class
> is assigned a Long id and put into this object pool when created. this pool
> will be* a WeakValueMap so objects which are not attached to root will be
> garbage collected at some time.
>
> each @Persist method in a @Persistent class is instrumented like this:
> @Persist
> ReturnType doSomething(someParams) {..}
>
> doSomehing is copied to __postvayler__doSomething(..). the original doSomehing
> becomes:
>
> ReturnType doSomething(someParams) {
>     if (!there is postvayler context)
>         return __postvayler__doSomething(..);
>     if (we are in a prevayler transaction)
>         return __postvayler__doSomething(..);
>     return prevayler.execute(new MethodTransaction(..));
> }
>
> the arguments to doSomehing(..) is transformed in MethodTransaction such
> that references to @Persistent objects are replaced with Reference's,
> which will later be restored from object pool. seems as this also solves
> the Baptism problem.
>
> looks good to me for now:)
>
> cheers,
> *r a f t*
>
> * not implemented yet
>
> On Wed, Nov 27, 2013 at 11:07 AM, Naveen Chawla <[email protected]>wrote:
>
>> Sure, here:
>> http://docs.oracle.com/javase/tutorial/java/generics/methods.html
>>
>> As for consistency, any multi-changes explicitly synchronized over
>> prevalentObject can be auto-batched.
>>
>>
>> On 27 November 2013 00:25, Klaus Wuestefeld <[email protected]> wrote:
>>
>>> > It is ordinary generic method syntax.
>>>
>>> Could you point me to some doc on this syntax? I couldnt find it here:
>>> http://docs.oracle.com/javase/tutorial/extra/generics/methods.html
>>>
>>> > The beginning and end of a transaction would simply be any change to
>>> any
>>> > non-transient field.
>>>
>>> Suppose a transaction needs to update two fields to be correct but the
>>> system crashes after the first. Will the system not be inconsistent on
>>> recovery?
>>>
>>> Klaus
>>>
>>>
>>> ------------------------------------------------------------------------------
>>> Rapidly troubleshoot problems before they affect your business. Most IT
>>> organizations don't have a clear picture of how application performance
>>> affects their revenue. With AppDynamics, you get 100% visibility into
>>> your
>>> Java,.NET, & PHP application. Start your 15-day FREE TRIAL of
>>> AppDynamics Pro!
>>>
>>> http://pubads.g.doubleclick.net/gampad/clk?id=84349351&iu=/4140/ostg.clktrk
>>> _______________________________________________
>>> To unsubscribe go to the end of this page:
>>> http://lists.sourceforge.net/lists/listinfo/prevayler-discussion
>>> _______________________________________________
>>> "Databases in Memoriam" -- http://www.prevayler.org
>>>
>>
>>
>>
>> ------------------------------------------------------------------------------
>> Rapidly troubleshoot problems before they affect your business. Most IT
>> organizations don't have a clear picture of how application performance
>> affects their revenue. With AppDynamics, you get 100% visibility into your
>> Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics
>> Pro!
>>
>> http://pubads.g.doubleclick.net/gampad/clk?id=84349351&iu=/4140/ostg.clktrk
>> _______________________________________________
>> To unsubscribe go to the end of this page:
>> http://lists.sourceforge.net/lists/listinfo/prevayler-discussion
>> _______________________________________________
>> "Databases in Memoriam" -- http://www.prevayler.org
>>
>>
>
>
> ------------------------------------------------------------------------------
> Rapidly troubleshoot problems before they affect your business. Most IT
> organizations don't have a clear picture of how application performance
> affects their revenue. With AppDynamics, you get 100% visibility into your
> Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics
> Pro!
> http://pubads.g.doubleclick.net/gampad/clk?id=84349351&iu=/4140/ostg.clktrk
> _______________________________________________
> To unsubscribe go to the end of this page:
> http://lists.sourceforge.net/lists/listinfo/prevayler-discussion
> _______________________________________________
> "Databases in Memoriam" -- http://www.prevayler.org
>
>

------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349351&iu=/4140/ostg.clktrk

_______________________________________________
To unsubscribe go to the end of this page: http://lists.sourceforge.net/lists/listinfo/prevayler-discussion
_______________________________________________
"Databases in Memoriam" -- http://www.prevayler.org