fix(task/handler): ensure latest gRPC client is used for task fetch/subscribe

Add svc.getGrpcClient() helper and use it when obtaining TaskClient so task fetch and
subscribe operations don't hold a stale client instance after ResetGrpcClient().
This commit is contained in:
Marvin Zhang
2025-10-20 12:22:34 +08:00
parent 4baa5fad59
commit 61604e1817
2 changed files with 8 additions and 2 deletions

View File

@@ -288,6 +288,12 @@ func (svc *Service) GetNodeConfigService() (cfgSvc interfaces.NodeConfigService)
return svc.cfgSvc
}
// getGrpcClient returns the current gRPC client, ensuring we always have the latest instance
// This is important after ResetGrpcClient() calls which create new client instances
func (svc *Service) getGrpcClient() *grpcclient.GrpcClient {
return grpcclient.GetGrpcClient()
}
func (svc *Service) getCurrentNodeMaxRunners() int {
n, err := svc.GetCurrentNode()
if err != nil {
@@ -450,7 +456,7 @@ func (svc *Service) fetchTask() (tid primitive.ObjectID, err error) {
// Use service context with timeout for fetch operation
ctx, cancel := context.WithTimeout(svc.ctx, svc.fetchTimeout)
defer cancel()
taskClient, err := svc.c.GetTaskClient()
taskClient, err := svc.getGrpcClient().GetTaskClient()
if err != nil {
return primitive.NilObjectID, fmt.Errorf("failed to get task client: %v", err)
}

View File

@@ -98,7 +98,7 @@ func (svc *Service) subscribeTaskWithContext(ctx context.Context, taskId primiti
req := &grpc.TaskServiceSubscribeRequest{
TaskId: taskId.Hex(),
}
taskClient, err := svc.c.GetTaskClient()
taskClient, err := svc.getGrpcClient().GetTaskClient()
if err != nil {
return nil, fmt.Errorf("failed to get task client: %v", err)
}