[ https://issues.apache.org/jira/browse/OFBIZ-11204?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17114744#comment-17114744 ] Ravi Lodhi commented on OFBIZ-11204: ------------------------------------ Hello Team, I tried to test the mentioned fix by backporting to release17.12 and release18.12 branch and found that the error still appears. To test the changes I have created a test service with the *semaphore* attribute set to *wait* in the service definition. I called this service asynchronously from a loop to create a large number of JobSandbox records (I called that service 100,000 times in a loop). Once the async jobs start executing I closely watched the console logs. Though the frequency was low, still that error (Failure in create operation for entity ServiceSemaphore) comes during the execution. > 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 > Priority: Minor > Fix For: Trunk > > Attachments: OFBIZ-11204.patch, OFBIZ-11204.patch > > > 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) |
Free forum by Nabble | Edit this page |