How to archive started process instance which cannot be stopped via UI or service?

Hi,

we currently have some process instances in started status which cannot be set to stopped via UI or service as they have a database inconsistency.

WM 9.5 with IS_Core_Fix10, Monitor_Fix10 and Monitor_MWS_Fix7 as well as DatabaseScripts_Fix4 applied.

Is there any way to get these archived/deleted without updating the status in the database?

Is the stored procedure able to handle this?

Regards,
Holger

Hi Holger,

Have you tried updating the status of Process instance in Process tables directly?

Regards,
Syed Faraz Ahmed

Hi Syed,

I am aware of this option as a workaround but currently my administrative colleagues prefer an option without having to manipulate the DB directly.

Regards,
Holger

Hi Holger,

There are Built-In services to delete and change the status of process instances will that be helpful to you?
Built-in Service Names: pub.prt.admin:changeProcessStatus / pub.prt.admin:deleteProcess

Regards,
Syed Faraz Ahmed

Hi Syed,

we have already tried these, but they are not working due to the database inconsistency.

The status of process instances is stored in 2 different tables and the services try check the one where the information is missing.

Regards,
Holger

Hi Holger,

Seems strange to me.
Were you able to get the root cause of the issue like why and how the inconsistency is arising?

Can you let me know the table names in which the inconsistency is happening?

Apart from modifying the table either by stored procedure or by sql command i don’t see any other option.
May be someone here might be having some additional info on this.

Regards,
Syed Faraz Ahmed

Hi Syed,

the affected tables are WMPROCESS and WMPROCESSRECENT.

I assume some issues in audit logging mechanism as the root cause.
This means that certain entries were not persisted in the database but got lost between the LWQ Derby Database and the real database.

Regards,
Holger

Hi Holger,

I believe the discrepancy is in WMPROCESSRECENT table?
If you cannot access DB directly then most feasible solution would be to sync the data between the tables by writing stored procedure.

Regards,
Syed Faraz Ahmed

Hi Ahmed, Hi Holger,

Thanks for this explanation. I guess I could delete some process instances. The Service delivers return = success,

But the process instance still shows up in the monitoring screen.

documentation >>>>>>>>>>>>>>>>>>>>>>>>
The Process Audit database remains unaffected, and the
process instance will continue to appear in webMethods Monitor

How can I delete these instances in the Audit database?
I want to clean up some development examples.

Thanks

Hi Jürgen,

which status do the process instances have?
Started and Suspended (bemongst others) are not considered during archiving/deletion.

If they have one of these status you can stop them via MWS Monitor UI.
After that they should be able to be deleted during archive service execution.

Remember to choose a meaningful value for “days to retain”.
Only instances which completed, failed or were stopped before this date are considered.

In my particular case I have some instances which cannot get stopped via UI due to the mentioned database inconsistency.
There is an error message in the IS server.log resp. error log.

Regards,
Holger

Hi Holger, Thanks for your help.

Status: Completed and some are Failed

days to retain is set to 30

I tried to delete such data from the Audit database
Administration / Business / Data Management / Archive Audit Date / – Data Types – select process and press Button
and get following error:

"An error was encountered when starting archiving for your input criteria. Please verify that you have setup your archive database and JDBC pool correctly.

Our Admin checked JDBC pool setup and cannot find a problem.

Hi Jürgen,

you will need a second database schema for the archiving driver tables.
Create the tables with DB Configurator for component archiv to this schema.

Add an addtional database pool for this schema and assign it to Archive function.
Restart the Archive function.

In the new database schema go to the table and execute the following sql script (example is for Oracle, but can be updated to any other database type):


update OPERATION_PARAMETER set PARAMETER_VALUE = '<IS-Schema>' where PARAMETER_CD = 'PROCESS_SCHEMA';
update OPERATION_PARAMETER set PARAMETER_VALUE = '<IS-Schema>' where PARAMETER_CD = 'ISCORE_SCHEMA';
create index wmservice_1ix on WMSERVICE (ROOTCONTEXTID) tablespace WEBMINDX parallel nologging;
create index wmprocess_1ix on WMPROCESS (ROOTCONTEXTID) tablespace WEBMINDX parallel nologging;
create index wmserviceactivitylog_1ix on WMSERVICEACTIVITYLOG (ROOTCONTEXTID) tablespace WEBMINDX parallel nologging;
create index WMPD_DEPLOYMENTTIME on WMPROCESSDEFINITION (DEPLOYMENTTIME) tablespace WEBMINDX parallel nologging;

Create the indices in the original database schema for Integration too.
These are neccessary to increase archive performance. We had the issue that archiving got stuck without these indices esp. when the database schema grows large.

Archiving via MWS UI only works when there is only on IS configured on it as the portlet does not include the server selector portlet to switch between several IS.

Regards,
Holger

1 Like

Hi Jürgen,

Eager to know if this issue is resolved?

Regards,
Syed Faraz Ahmed

Hi Jürgen,

Did you find what kind of database inconsistency do you have?
Can it be solved?

Can you apply any of the DBconfig fixes or do they fail?
Is the fix level of the Process Engine consistent with the DBconfig?

Best Regards,

Hi,

I just encountered a similar issue on my internal test environment recently.

I wanted to stop some old process instances from January 2017, which show as started in Monitor UI.

When clicking on the Stop-Button for the instance there is a soap error message (“SOAPException( Client: [ISS.0088.9134] Exception occurred while processing the body of the message )”) displayed.

While checking the IS server.log the following StackTrace is shown:


[913]2017-05-03 16:51:16 CEST [MON.0119.0905E] Error in resubmitting step pipeline: com.wm.monitor.common.util.MonitorException: [pub.monitor.process.instanceControl:changeInstanceStatus] java.lang.Exception: Process instance dd8f8a80-167a-1986-92a3-b43536c605e9:1 does not exist.
[912]2017-05-03 16:51:16 CEST [ISC.0022.0119E] Message not found for messageKey 22.119
[911]
[910] at java.lang.Thread.run(Thread.java:745)
[909] at com.wm.util.pool.PooledThread.run(PooledThread.java:119)
[908] at com.wm.app.b2b.server.Dispatch.run(Dispatch.java:383)
[907] at com.wm.app.b2b.server.HTTPDispatch.handleRequest(HTTPDispatch.java:173)
[906] at com.wm.app.b2b.server.HTTPSOAPHandler.process(HTTPSOAPHandler.java:147)
[905] at com.wm.app.b2b.server.HTTPSOAPHandler._process(HTTPSOAPHandler.java:521)
[904] at com.wm.app.b2b.server.ServiceManager.invoke(ServiceManager.java:108)
[903] at com.wm.app.b2b.server.ServiceManager.invoke(ServiceManager.java:244)
[902] at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:384)
[901] at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:545)
[900] at com.wm.app.b2b.server.AuditLogManager.process(AuditLogManager.java:369)
[899] at com.wm.app.b2b.server.invoke.DispatchProcessor.process(DispatchProcessor.java:34)
[898] at com.wm.app.b2b.server.ACLManager.process(ACLManager.java:291)
[897] at com.wm.app.b2b.server.invoke.PipelineProcessor.process(PipelineProcessor.java:171)
[896] at com.wm.app.b2b.server.invoke.ValidateProcessor.process(ValidateProcessor.java:49)
[895] at com.wm.app.b2b.server.invoke.ServiceCompletionImpl.process(ServiceCompletionImpl.java:243)
[894] at com.wm.app.b2b.server.invoke.StatisticsProcessor.process(StatisticsProcessor.java:49)
[893] at com.wm.app.b2b.server.util.tspace.ReservationProcessor.process(ReservationProcessor.java:39)
[892] at com.wm.app.b2b.server.invoke.InvokeManager.process(InvokeManager.java:646)
[891] at com.wm.app.b2b.server.JavaService.baseInvoke(JavaService.java:443)
[890] at java.lang.reflect.Method.invoke(Method.java:606)
[889] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[888] at sun.reflect.GeneratedMethodAccessor776.invoke(Unknown Source)
[887] at wm.server.soap.rpc(soap.java:1023)
[886] at com.wm.app.b2b.server.Service.doInvoke(Service.java:644)
[885] at com.wm.app.b2b.server.Service.doInvoke(Service.java:704)
[884] at com.wm.app.b2b.server.ServiceManager.invoke(ServiceManager.java:93)
[883] at com.wm.app.b2b.server.ServiceManager.invoke(ServiceManager.java:244)
[882] at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:384)
[881] at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:545)
[880] at com.wm.app.b2b.server.AuditLogManager.process(AuditLogManager.java:369)
[879] at com.wm.app.b2b.server.invoke.DispatchProcessor.process(DispatchProcessor.java:34)
[878] at com.wm.app.b2b.server.ACLManager.process(ACLManager.java:291)
[877] at com.wm.app.b2b.server.invoke.PipelineProcessor.process(PipelineProcessor.java:171)
[876] at com.wm.app.b2b.server.invoke.ValidateProcessor.process(ValidateProcessor.java:49)
[875] at com.wm.app.b2b.server.invoke.ServiceCompletionImpl.process(ServiceCompletionImpl.java:243)
[874] at com.wm.app.b2b.server.invoke.StatisticsProcessor.process(StatisticsProcessor.java:49)
[873] at com.wm.app.b2b.server.util.tspace.ReservationProcessor.process(ReservationProcessor.java:39)
[872] at com.wm.app.b2b.server.invoke.InvokeManager.process(InvokeManager.java:646)
[871] at com.wm.app.b2b.server.JavaService.baseInvoke(JavaService.java:443)
[870] at java.lang.reflect.Method.invoke(Method.java:606)
[869] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[868] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[867] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[866] at ws.monitor.process.instanceControl.setStatus(instanceControl.java:60)
[865] at com.wm.app.b2b.server.Service.doInvoke(Service.java:644)
[864] at com.wm.app.b2b.server.Service.doInvoke(Service.java:704)
[863] at com.wm.app.b2b.server.ServiceManager.invoke(ServiceManager.java:93)
[862] at com.wm.app.b2b.server.ServiceManager.invoke(ServiceManager.java:244)
[861] at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:384)
[860] at com.wm.app.b2b.server.invoke.InvokeManager.invoke(InvokeManager.java:545)
[859] at com.wm.app.b2b.server.AuditLogManager.process(AuditLogManager.java:369)
[858] at com.wm.app.b2b.server.invoke.DispatchProcessor.process(DispatchProcessor.java:34)
[857] at com.wm.app.b2b.server.ACLManager.process(ACLManager.java:291)
[856] at com.wm.app.b2b.server.invoke.PipelineProcessor.process(PipelineProcessor.java:171)
[855] at com.wm.app.b2b.server.invoke.ValidateProcessor.process(ValidateProcessor.java:49)
[854] at com.wm.app.b2b.server.invoke.ServiceCompletionImpl.process(ServiceCompletionImpl.java:243)
[853] at com.wm.app.b2b.server.invoke.StatisticsProcessor.process(StatisticsProcessor.java:49)
[852] at com.wm.app.b2b.server.util.tspace.ReservationProcessor.process(ReservationProcessor.java:39)
[851] at com.wm.app.b2b.server.invoke.InvokeManager.process(InvokeManager.java:646)
[850] at com.wm.app.b2b.server.JavaService.baseInvoke(JavaService.java:443)
[849] at java.lang.reflect.Method.invoke(Method.java:606)
[848] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[847] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[846] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[845] at pub.monitor.process.instanceControl.changeInstanceStatus(instanceControl.java:106)
[844]2017-05-03 16:51:16 CEST [MOD.0120.0000I] java.lang.Exception: Process instance dd8f8a80-167a-1986-92a3-b43536c605e9:1 does not exist.
[843]2017-05-03 16:51:16 CEST [MON.0119.0022E] Error in publishing process control event to Process Runtime: java.lang.Exception: Process instance dd8f8a80-167a-1986-92a3-b43536c605e9:1 does not exist.

So there is a mismatch between 2 tables of process audit database.
One table is used for displaying data in the Monitor UI, the other onee to handle the control events from Process Engine.
Looks like an audit logging issue:
When the completion event is being processed by the audit logging it gets reflected in one table, but not in the other.
During archiving the table with the “Completed”-Status gets cleaned, but not the table where the status failed to update.

Currently the only option to get this working again is to manually set the status for the instance in the table where the data is existing top stopped and then run archiving again.

Any other ideas are welcome.

Regards,
Holger

Additionally the Error Message ISC.0022.0119 is not defined in error code database.

Even in the current 9.12 Error Messsages Reference the complete ISC.0022 is missing.

Regards,
Holger

Hi Gerardo,
I still have no archive function, so I cannot delete & archive anything.
Like other users we have a big problem with IT support.

Regards
Jürgen