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

Reply via email to