You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ofbiz.apache.org by "Gil Portenseigne (Jira)" <ji...@apache.org> on 2019/09/19 15:59:00 UTC

[jira] [Created] (OFBIZ-11204) Remove unwanted error log by `ServiceSemaphore` waiting process

Gil Portenseigne created OFBIZ-11204:
----------------------------------------

             Summary: Remove unwanted error log by `ServiceSemaphore` waiting process
                 Key: OFBIZ-11204
                 URL: https://issues.apache.org/jira/browse/OFBIZ-11204
             Project: OFBiz
          Issue Type: Improvement
          Components: framework
    Affects Versions: Trunk
            Reporter: Gil Portenseigne
            Assignee: Gil Portenseigne


When a lot of semaphore configured service instances are running in a short period, multiple errors of this type are logged :
{code:none}
// | 2019-09-19 14:47:44.000 | 2019-09-19 16:47:44,692 |OFBiz-JobQueue-2     |GenericDelegator              |E| Failure in create operation for entity [ServiceSemaphore]: org.apache.ofbiz.entity.GenericEntityException: Error while inserting: [GenericEntity:ServiceSemaphore][createdStamp,2019-09-19 16:47:44.678(java.sql.Timestamp)][createdTxStamp,2019-09-19 16:47:44.678(java.sql.Timestamp)][lastUpdatedStamp,2019-09-19 16:47:44.678(java.sql.Timestamp)][lastUpdatedTxStamp,2019-09-19 16:47:44.678(java.sql.Timestamp)][lockThread,OFBiz-JobQueue-2(java.lang.String)][lockTime,2019-09-19 16:47:44.676(java.sql.Timestamp)][lockedByInstanceId,emb-ofbiz-prd-technical-asg-20171209-01-eu-west-1b(java.lang.String)][serviceName,xxx(java.lang.String)] (SQL Exception while executing the following:INSERT INTO public.SERVICE_SEMAPHORE (SERVICE_NAME, LOCKED_BY_INSTANCE_ID, LOCK_THREAD, LOCK_TIME, LAST_UPDATED_STAMP, LAST_UPDATED_TX_STAMP, CREATED_STAMP, CREATED_TX_STAMP) VALUES (?, ?, ?, ?, ?, ?, ?, ?) (ERROR: duplicate key value violates unique constraint "pk_service_semaphore"   Detail: Key (service_name)=(xxx) already exists.)). Rolling back transaction.                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      |
| 2019-09-19 14:47:44.000 | 2019-09-19 16:47:44,692 |OFBiz-JobQueue-2     |ServiceSemaphore              |E| null 
|
| 2019-09-19 14:47:44.000 | org.apache.ofbiz.entity.GenericEntityException: org.apache.ofbiz.entity.GenericEntityException: Error while inserting: [GenericEntity:ServiceSemaphore][createdStamp,2019-09-19 16:47:44.678(java.sql.Timestamp)][createdTxStamp,2019-09-19 16:47:44.678(java.sql.Timestamp)][lastUpdatedStamp,2019-09-19 16:47:44.678(java.sql.Timestamp)][lastUpdatedTxStamp,2019-09-19 16:47:44.678(java.sql.Timestamp)][lockThread,OFBiz-JobQueue-2(java.lang.String)][lockTime,2019-09-19 16:47:44.676(java.sql.Timestamp)][lockedByInstanceId,emb-ofbiz-prd-technical-asg-20171209-01-eu-west-1b(java.lang.String)][serviceName,xxx(java.lang.String)] (SQL Exception while executing the following:INSERT INTO public.SERVICE_SEMAPHORE (SERVICE_NAME, LOCKED_BY_INSTANCE_ID, LOCK_THREAD, LOCK_TIME, LAST_UPDATED_STAMP, LAST_UPDATED_TX_STAMP, CREATED_STAMP, CREATED_TX_STAMP) VALUES (?, ?, ?, ?, ?, ?, ?, ?) (ERROR: duplicate key value violates unique constraint "pk_service_semaphore"   Detail: Key (service_name)=(xxx) already exists.)) (Error while inserting: [GenericEntity:ServiceSemaphore][createdStamp,2019-09-19 16:47:44.678(java.sql.Timestamp)][createdTxStamp,2019-09-19 16:47:44.678(java.sql.Timestamp)][lastUpdatedStamp,2019-09-19 16:47:44.678(java.sql.Timestamp)][lastUpdatedTxStamp,2019-09-19 16:47:44.678(java.sql.Timestamp)][lockThread,OFBiz-JobQueue-2(java.lang.String)][lockTime,2019-09-19 16:47:44.676(java.sql.Timestamp)][lockedByInstanceId,emb-ofbiz-prd-technical-asg-20171209-01-eu-west-1b(java.lang.String)][serviceName,xxx(java.lang.String)] (SQL Exception while executing the following:INSERT INTO public.SERVICE_SEMAPHORE (SERVICE_NAME, LOCKED_BY_INSTANCE_ID, LOCK_THREAD, LOCK_TIME, LAST_UPDATED_STAMP, LAST_UPDATED_TX_STAMP, CREATED_STAMP, CREATED_TX_STAMP) VALUES (?, ?, ?, ?, ?, ?, ?, ?) (ERROR: duplicate key value violates unique constraint "pk_service_semaphore"   Detail: Key (service_name)=(xxx) already exists.)))  at org.apache.ofbiz.entity.GenericDelegator.create(GenericDelegator.java:896) ~[ofbiz.jar:?]  at org.apache.ofbiz.entity.GenericValue.create(GenericValue.java:76) ~[ofbiz.jar:?]  at org.apache.ofbiz.service.semaphore.ServiceSemaphore.dbWrite(ServiceSemaphore.java:172) [ofbiz.jar:?]  at org.apache.ofbiz.service.semaphore.ServiceSemaphore.checkLockNeedToWait(ServiceSemaphore.java:137) [ofbiz.jar:?]  at org.apache.ofbiz.service.semaphore.ServiceSemaphore.acquire(ServiceSemaphore.java:70) [ofbiz.jar:?]  at org.apache.ofbiz.service.ServiceDispatcher.runSync(ServiceDispatcher.java:284) [ofbiz.jar:?]  at org.apache.ofbiz.service.ServiceDispatcher.runSync(ServiceDispatcher.java:240) [ofbiz.jar:?]  at org.apache.ofbiz.service.GenericDispatcherFactory$GenericDispatcher.runSync(GenericDispatcherFactory.java:88) [ofbiz.jar:?]  at org.apache.ofbiz.service.job.GenericServiceJob.exec(GenericServiceJob.java:70) [ofbiz.jar:?]  at org.apache.ofbiz.service.job.AbstractJob.run(AbstractJob.java:87) [ofbiz.jar:?]  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [?:1.8.0_222]  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [?:1.8.0_222]  at java.lang.Thread.run(Thread.java:748) [?:1.8.0_222] |

{code}
With lot of activity this can spam the logs reducing visibility of real errors in production logs.

For this, i proposed to add a last check within the synchronized method before inserting the lock, on which the fk constraint error is thrown.

This avoiding the error, if no other method in OFBiz insert data in `ServiceSemaphore` table...

A second patch is provided to add javadoc and trivial refoctoring

 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)