Walter,
thanks very much for the communication effort but... do we really need
to communicate with Si thru you?
That is funny.
Jacopo
Walter Vaughan wrote:
-------- Original Message --------
Subject: Re: [Fwd: Re: Transaction related error in log when the]
Date: Wed, 12 Dec 2007 08:03:42 -0800
From: Si Chen <[EMAIL PROTECTED]>
Reply-To: [EMAIL PROTECTED]
Organization: Open Source Strategies, Inc.
To: Walter Vaughan <[EMAIL PROTECTED]>
References: <[EMAIL PROTECTED]>
Interesting. My opinion (and feel free to pass it along) is that they
should wrap their minilang find in a transaction and not use a
transaction for the get inventory service. This service doesn't
actually store data and wrapping a transaction uses resources
unnecessarily and could create database locks.
Walter Vaughan wrote:
-------- Original Message --------
Subject: Re: Transaction related error in log when the
Date: Tue, 11 Dec 2007 11:05:57 -0700
From: David E Jones <[EMAIL PROTECTED]>
Reply-To: [email protected]
To: [email protected]
References: <[EMAIL PROTECTED]>
<[EMAIL PROTECTED]>
<[EMAIL PROTECTED]>
It would be good to hear Si's comment on that, but my vote is
definitely for removing it.
A service should only really have use-transaction set to false if it
is doing it's own transaction management internally, like manually or
in sub-services only.
-David
On Dec 11, 2007, at 11:00 AM, Jacopo Cappellato wrote:
David,
thanks for the explanation.
So I guess that it is ok to remove the use-transaction="false" for
these services, right?
Jacopo
David E Jones wrote:
This is an important error message. The problem is that the Entity
Engine can't just create a transaction for these because it can't
commit or rollback the transaction because the connection and
ResultSet stay open until the EntityListIterator is closed, which
is done by the code calling the EE and so the transaction must be
managed outside the EE.
It is not correct that read only operations don't need a
transaction. Part of the definition of transaction isolation
definitely involves reading as well as writing.
-David
On Dec 11, 2007, at 8:13 AM, Jacopo Cappellato wrote:
The following error is logged (even if the service works as
expected) when the service "getInventoryAvailableByFacility" is
called:
= =
====================================================================
2007-12-11 15:54:57,906 (default-invoker-Thread-6) [
GenericDelegator.java:2031:ERROR] ---- exception report
---------------------------------------------------------- ERROR:
Cannot do a find that returns an EntityListIterator with no
transaction in place. Wrap this call in a transaction. Exception:
java.lang.Exception Message: Stack Trace ---- stack trace
---------------------------------------------------------------
java.lang.Exception: Stack Trace
org.ofbiz.entity.GenericDelegator.find(GenericDelegator.java:2030)
org .ofbiz .entity .GenericDelegator
.findListIteratorByCondition(GenericDelegator.java:2008)
org.ofbiz.minilang.method.entityops.FindByAnd.exec(FindByAnd.java:
88) org.ofbiz.minilang.SimpleMethod.runSubOps(SimpleMethod.java:
931) org.ofbiz.minilang.method.ifops.IfCompare.exec(IfCompare.java:
121) org.ofbiz.minilang.SimpleMethod.runSubOps(SimpleMethod.java:
931) org.ofbiz.minilang.SimpleMethod.exec(SimpleMethod.java:568)
org.ofbiz.minilang.SimpleMethod.runSimpleMethod(SimpleMethod.java:
105)
org.ofbiz.minilang.SimpleMethod.runSimpleService(SimpleMethod.java:
87) org .ofbiz .minilang
.SimpleServiceEngine.serviceInvoker(SimpleServiceEngine.java:76)
org .ofbiz
.minilang.SimpleServiceEngine.runSync(SimpleServiceEngine.java:51)
org.ofbiz.service.ServiceDispatcher.runSync(ServiceDispatcher.java:
375)
org.ofbiz.service.ServiceDispatcher.runSync(ServiceDispatcher.java:
208)
org.ofbiz.service.GenericDispatcher.runSync(GenericDispatcher.java:
136)
= =
====================================================================
I think this is caused by the service definition that has:
use-transaction="false"
I've noticed that this flag has been set by Si in rev. r438286:
"Turned off transactions for all the getInventory_ services --
they do not store anything and should not require them. Also
added marketing package ATP/QOH to the
getProductInventorySummaryForItems service which searches across
all facilities"
Is there a reason for setting this flag? Should we remove it? Or
is the error a fake error that should be fixed instead?
Jacopo