Workflow executionsRow not found when sending Signal

Hello all,

I need some help. I want to send a signal to a running workflow but unfortunately the signal is not sent because of this error Workflow executionsRow not found

I am executing the workflow and sending the signal in different files.

main.go

we, err := c.ExecuteWorkflow(context.Background(), workflowOptions, workflows.VerificationWorkflow, "Verification workflow")
	if err != nil {
		log.Fatalln("Unable to execute workflow", err)
	}

	log.Println("Started workflow", "WorkflowID", we.GetID(), "RunID", we.GetRunID())

sendSignal.go

func SendSignal(con *gin.Context) (string, error) {
	c, ok := con.MustGet("temporalClient").(client.Client)
	if !ok {
		println("Unable to get client")
	}
	
	
	resp, e := c.ListWorkflow(context.Background(), &workflowservice.ListWorkflowExecutionsRequest{})
	if e != nil {
		println("====> ", e, "\n")
	}
	wId, _ := json.Marshal(resp.Executions[0].Execution.WorkflowId)
	runId, _ := json.Marshal(resp.Executions[0].Execution.RunId)
	err := c.SignalWorkflow(context.Background(), string(wId), string(runId), "Connection_Signal", "ANOTHER_TEST_VALUE")
	if err != nil {
		log.Print("Error signaling client", err)
	}
	return "ok", nil
}

And the error is Workflow executionsRow not found. WorkflowId: "verification_workflow_ID", RunId: "7a4c2b4e-a2de-4c10-8af6-a4a9cd151e39"

Can you guys help me understand why the error happens? and how to solve that? I just began to use temporal and am feeling a bit lost.
Many thanks already for your help.

I don’t think you need to marshall WorkflowId and RunId into JSON. Try:

	err := c.SignalWorkflow(context.Background(), wId, runId, "Connection_Signal", "ANOTHER_TEST_VALUE")

1 Like

Thank you Maxim,
Your are right, I do not need to marschall WorkflowId and RunId into JSON.
Many Thanks