Hi Devs, I'm working on the technology evaluation to re architecture Apache Airavata task execution framework and Helix seems like a good candidate for that as it has an in built distributed generic workflow execution capability. After going through several tutorials, I tried to implement a simple workflow on Helix to demonstrate following transition
Data Collecting Job -> Command Executing Job -> Data Uploading Job I managed to implement this using a Participant node that includes all the tasks required for above workflow. However my goal is to implement specialized Participants for each Job type. For example, Participant 1 knows only about the tasks to perform Data Collecting Job and Participant knows only about the task to perform Command Executing Job. When I tried to implement such Participants, I got following error from Participant 1. I can share the code samples that I have tried but before that I need to know whether my approach is compatible with Helix's design? Does Helix require all the Participants to be homogeneous? Executing data collecting 675892 [pool-2-thread-8] ERROR org.apache.helix.messaging.handling.HelixStateTransitionHandler - Exception while executing a state transition task Airavata_Workflow_commandExecuteJob_0 java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.apache.helix.messaging.handling.HelixStateTransitionHandler.invoke(HelixStateTransitionHandler.java:344) at org.apache.helix.messaging.handling.HelixStateTransitionHandler.handleMessage(HelixStateTransitionHandler.java:290) at org.apache.helix.messaging.handling.HelixTask.call(HelixTask.java:84) at org.apache.helix.messaging.handling.HelixTask.call(HelixTask.java:41) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at java.lang.Thread.run(Thread.java:748) Caused by: java.lang.IllegalStateException: No callback implemented for task COMMAND at org.apache.helix.task.TaskStateModel.startTask(TaskStateModel.java:302) at org.apache.helix.task.TaskStateModel.onBecomeRunningFromInit(TaskStateModel.java:69) ... 12 more 675900 [pool-2-thread-8] ERROR org.apache.helix.participant.statemachine.StateModel - Default rollback method invoked on error. Error Code: ERROR 675908 [pool-2-thread-8] ERROR org.apache.helix.messaging.handling.HelixTask - Message execution failed. msgId: 8d9a08c9-0ae7-419a-8940-6b8e6e7c1ecb, errorMsg: java.lang.reflect.InvocationTargetException 675922 [pool-2-thread-8] ERROR org.apache.helix.messaging.handling.HelixStateTransitionHandler - Skip internal error. errCode: ERROR, errMsg: null Thanks Dimuthu
