Start process smart service triggers another process twice

Certified Senior Developer

background information:

  • We are working on Appian 20.2 on premise.

  • the application we are talking has a lot of processes. around 300 started in 30 minutes, which are working fine. Another 9400 in the upcoming 9 hours, which are not working as expected

Process context.:
I have a main process, which is initially started by start process. This works fine. Then this main process is searching via script task for an id, which is saved in the process as process variable.
The rule in the script task uses a  "a!queryEntity_18r3" to load this id from the wanted table. This all works fine so far and through all processes.
last step before finishing the process via end event, a "start process smart service" starts the same "main process" for the newly found id. 
so we have a long chain of processes wich are starting and are started by a process (instance) of the same model. 

Issue:
after several processes (300 processes or 30 minutes), we got the issues, that the start process smart service is starting two other processes, but it has still just 1 instance.
All double processes have the same previous loaded initial id, they all load and calculate the same process values, even the same "next id" via query entity and all are starting the same new process.
so we have a chain with two processes now.
This happens after 5 hours another time, so now we have three processes running the same time with the same exact data.


Could this be an appian bug, because of to much processes in a short time for engines or other possible reasons?

  Discussion posts and replies are publicly visible

Parents
    • Do you have MNI/Multiple Instances configured on the Start Process Smart Service Node?  Check on the Other tab after double clicking on the node in the process modeler.
    • If you go into one of the unexpected processes in the Designer Monitoring tab and then use the File menu option to Open Parent Process, what is opened?
    • If you are calling the same process model again, how are you ensuring that the query never returns the same ID again and that there is never a race condition?   
      • Are all of the nodes in the main process model and all child subprocesses, etc., synchronous or are there some that are asynchronous?
Reply
    • Do you have MNI/Multiple Instances configured on the Start Process Smart Service Node?  Check on the Other tab after double clicking on the node in the process modeler.
    • If you go into one of the unexpected processes in the Designer Monitoring tab and then use the File menu option to Open Parent Process, what is opened?
    • If you are calling the same process model again, how are you ensuring that the query never returns the same ID again and that there is never a race condition?   
      • Are all of the nodes in the main process model and all child subprocesses, etc., synchronous or are there some that are asynchronous?
Children
  • 0
    Certified Senior Developer
    in reply to Scott Milton

    to 1) it is not configured. one process instance should start just one other. thats the basic idea. one by one as chain.

    to 2.) this option is disabled. The first version of the process was built november 2017 and the this version is life since july 2018

    to 3.) it is ensured by the condition, that the entitydata is searching for a specific status. this status will be changed and saved in a instance life cycle, so the next search excludes the current id.


    to4.) as we are talking about "start process" smart service, it should be always asynchronous. There are no subprocesses.

    Just to give an impression: we are talking about more than 12,000 instances by just this process in the last 24 hours. in total for all used models there are about 37,000 processes in the last 24 hours, not available directly deleted ones.

  • So are you able to add more information to the process to help debug the situation?  e.g., if the implementation has it's own alternative chaining model instead of subprocesses, just create a parent process model Id parameter and when the chained process is created, the initiating process can pass in it's own ID to this parameter and then you should be able to see which "parent" started the problematic processes.

  • 0
    Certified Senior Developer
    in reply to Scott Milton

    Hi, 

    i added a documentation of this observation.
    On top: the issue is not even persistent.

    Currently for today, we have just two parallel running instances. the third didn't appear so far.

    APPIAN Incident.docx