Should loadSalesInvoiceFact be run on return instead of commit?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
5 messages Options
Reply | Threaded
Open this post in threaded view
|

Should loadSalesInvoiceFact be run on return instead of commit?

Paul Foxworthy
Hi all,

Last year the SECA that runs loadSalesInvoiceFact was changed to run async. See https://fisheye6.atlassian.com/browse/ofbiz/trunk/applications/accounting/servicedef/secas_olap.xml?hb=true#to29 .

That makes sense to me, but it's run on commit, (that is, prior to the commit) and I'm getting errors in the log that the invoice doesn't exist. It seems that the async loadSalesInvoiceFact is sometimes running before the transaction is committed on another thread, so it can't see the invoice data.

Should it be run on return rather than commit?

Thanks

Paul Foxworthy
--
Coherent Software Australia Pty Ltd
http://www.coherentsoftware.com.au/

Bonsai ERP, the all-inclusive ERP system
http://www.bonsaierp.com.au/
Reply | Threaded
Open this post in threaded view
|

Re: Should loadSalesInvoiceFact be run on return instead of commit?

Scott Gray-2
+1

Regards
Scott

On 12/10/2011, at 12:09 PM, Paul Foxworthy wrote:

> Hi all,
>
> Last year the SECA that runs loadSalesInvoiceFact was changed to run async.
> See
> https://fisheye6.atlassian.com/browse/ofbiz/trunk/applications/accounting/servicedef/secas_olap.xml?hb=true#to29
> .
>
> That makes sense to me, but it's run on commit, (that is, prior to the
> commit) and I'm getting errors in the log that the invoice doesn't exist. It
> seems that the async loadSalesInvoiceFact is sometimes running before the
> transaction is committed on another thread, so it can't see the invoice
> data.
>
> Should it be run on return rather than commit?
>
> Thanks
>
> Paul Foxworthy
>
>
> --
> View this message in context: http://ofbiz.135035.n4.nabble.com/Should-loadSalesInvoiceFact-be-run-on-return-instead-of-commit-tp3896289p3896289.html
> Sent from the OFBiz - Dev mailing list archive at Nabble.com.


smime.p7s (3K) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Should loadSalesInvoiceFact be run on return instead of commit?

Paul Foxworthy
Thanks Scott.

I see Leon has discovered a similar issue for a different SECA in Jira 4469, but his patch uses global-commit rather than return.

I'm happy to submit a patch, but would Leon's approach be better?

Cheers

Paul Foxworthy

Scott Gray-2 wrote
+1

Regards
Scott

On 12/10/2011, at 12:09 PM, Paul Foxworthy wrote:

> Hi all,
>
> Last year the SECA that runs loadSalesInvoiceFact was changed to run async.
> See
> https://fisheye6.atlassian.com/browse/ofbiz/trunk/applications/accounting/servicedef/secas_olap.xml?hb=true#to29
> .
>
> That makes sense to me, but it's run on commit, (that is, prior to the
> commit) and I'm getting errors in the log that the invoice doesn't exist. It
> seems that the async loadSalesInvoiceFact is sometimes running before the
> transaction is committed on another thread, so it can't see the invoice
> data.
>
> Should it be run on return rather than commit?
>
> Thanks
>
> Paul Foxworthy
>
>
> --
> View this message in context: http://ofbiz.135035.n4.nabble.com/Should-loadSalesInvoiceFact-be-run-on-return-instead-of-commit-tp3896289p3896289.html
> Sent from the OFBiz - Dev mailing list archive at Nabble.com.
--
Coherent Software Australia Pty Ltd
http://www.coherentsoftware.com.au/

Bonsai ERP, the all-inclusive ERP system
http://www.bonsaierp.com.au/
Reply | Threaded
Open this post in threaded view
|

Re: Should loadSalesInvoiceFact be run on return instead of commit?

Martin Kreidenweis
Hi,

> I see Leon has discovered a similar issue for a different SECA in Jira 4469,
> but his patch uses global-commit rather than return.
>
> I'm happy to submit a patch, but would Leon's approach be better?

I think "global-commit" is usually the way to go for async services (usually
"global-commit-post-run" so that the service result is available to the async service).

A SECAs on "return" might also be called way before the actual DB commit if the service in question
is called by another service or SECA that opened the transaction.

Martin
Reply | Threaded
Open this post in threaded view
|

Re: Should loadSalesInvoiceFact be run on return instead of commit?

Paul Foxworthy
Hi all,

I've created a Jira issue 4582 for this problem.

Cheers

Paul Foxworthy

Martin Kreidenweis wrote
Hi,

> I see Leon has discovered a similar issue for a different SECA in Jira 4469,
> but his patch uses global-commit rather than return.
>
> I'm happy to submit a patch, but would Leon's approach be better?

I think "global-commit" is usually the way to go for async services (usually
"global-commit-post-run" so that the service result is available to the async service).

A SECAs on "return" might also be called way before the actual DB commit if the service in question
is called by another service or SECA that opened the transaction.

Martin
--
Coherent Software Australia Pty Ltd
http://www.coherentsoftware.com.au/

Bonsai ERP, the all-inclusive ERP system
http://www.bonsaierp.com.au/