← Back to team overview

c2c-oerpscenario team mailing list archive

[Bug 746620] Re: serialized transaction architecture flaw PLEASE COLLABORATE

 

Open ERP uses serialised transactions which has the highest level of
isolation between transactions. As the word serialised itself indicates,
transactions seem to work as though they were executed one after the
other and this is completely true in the case of writes to the database.

The problem with such an architecture is when there are concurrent
transactions which wait for a specific transaction to complete before it
can modify a record. For example Transaction A starts and calls get_id
of the sequence ( which updates the sequence next number) and goes on
for the next operation while the transaction remains uncommitted. In the
meantime somebody else does an operation which starts a different
transaction B, but the transaction will have to wait until transaction A
completes because of the serialised nature. This causes
OperationalError: could not obtain lock on row in relation
"ir_sequence". Since version 6.0 of openerp it uses NOWAIT which means
do not wait for the transaction which has a lock to complete, but just
fail. This is not the ideal behaviour for a concurrent software.

** Summary changed:

- Enterpise system NOT Enterprise capable, Only one concurrent transaction possible!
+ serialized transaction architecture flaw PLEASE COLLABORATE

-- 
You received this bug notification because you are a member of C2C
OERPScenario, which is subscribed to the OpenERP Project Group.
https://bugs.launchpad.net/bugs/746620

Title:
  serialized transaction architecture flaw PLEASE COLLABORATE

Status in OpenERP Server:
  New

Bug description:
  OpenERP is classified as an Enterprise class software package. Meaning
  that more than one person, at least 2 should be able to use the system
  simultaneously. Like packers shipping products, taking orders,
  reserving products. I find that in fact, it is not possible for
  creation of stock moves simultaneously.

   Say I am importing orders from a shop. It is creating stock moves  because the order is paid. 
  At the same time I am shipping products which is normal for an ERP system.
  I might also import orders from a separate shop say a POS system.
  It is not possible!
  [2011-03-31 13:10:47,657][midwestsupplies] WARNING:stock.location:Failed attempt to reserve 1.0 x product 1669, li
  kely due to another transaction already in progress. Next attempt is likely to work. Detailed error available at D
  EBUG level.  
  OperationalError: could not obtain lock on row in relation "ir_sequence"
  Two different errors.
  I  can only perform one action at a time!
  What happens is that any time the program calls for a stock_move it will lock the stock_move table so no other process can access it which means that you cant do hardly anything unless its done individually. Now say with a MS system, or any Enterprise system would be able to handle many simultaneous actions but this program has a serious architecture flaw to not be able to support this.


References