Hello all,
During some chasing after some locks issues, I have encountered some commands 
that are not using the transaction framework properly (IMHO).

For example,


ExportRepoImageCommand - has no annotation indicating it should not be run in 
transaction.
It contains IMHO a classic flow of -

a. get from db (and potential update)
b. send a call to VDSM -> this may be long !!!
c. update results in DB.

IMHO,
ExportRepoImageCommand should be annotated with 
@NonTransactive(forceCompensation=true) and should include compensation code.

If I am wrong with the specific command, please add a nice comment indicating 
why this was not done, so the next person who reads the code and deals with 
locks, transactions and all these 
interesting issues should be aware.

Transactions should be kept as short as possible, as they are an expensive , 
limited resource.


This is not the first time I encountered this issue with developers in the last 
weeks, and maybe I sound angry or something - this is not the intention, I 
can't say I know all engine code myself (and even around the infra side), and I 
think that one of the good things in the way we work is we can learn from each 
other.


If any of of you feel like they need some "reminding" on our transactions 
framework (and yes, I believe there is room to improvement in it, I already 
spoke with Oved about at least one idea) - feel free to address me, with enough 
audience I might even run a session when I visit TLV (I would have done it form 
home, but my internet condition is pretty bad, I'm afraid).


Cheers,
Yair


_______________________________________________
Devel mailing list
Devel@ovirt.org
http://lists.ovirt.org/mailman/listinfo/devel

Reply via email to