RPC 响应不正确

我正在尝试使用一个远程过程,该过程将在结构中设置回复,具有布尔状态和字符串作为下一个输入。在此过程中,我将布尔状态设置为 true,并将值放入输入中。但在客户端中,它获得错误状态和空字符串。在过程中:


func(c *Coordinator)MapJob(req mr.MapRequest, reply *mr.MapResponse) error {

    //logic to set up response...

    reply = &mr.MapResponse{

        Status: newStatus,

        Input:  newIn,

    }

    fmt.Printf("[REPLY] %+v\n", reply)


    return nil

}

指纹[REPLY] &{Status:true Input:1.txt}


在客户端中时:


err := client.Call("Coordinator.MapJob", req, &reply)

        fmt.Printf("reply from procedure %+v\n", reply)

指纹:reply from procedure {Status:false Input:}


我在这里错过了什么?我已经把整个代码放在 https://github.com/Brotchu/ProjectMR 该过程在协调器中定义,客户端在工作线程中定义。将其全部粘贴到此处可能太多了。


UYOU
浏览 73回答 2
2回答

慕仙森

客户端结构看起来只由零值(和空字符串)组成。false我认为这个电话不会改变回复。我认为这是因为也不会改变回复。client.CallMapJobreply = &mr.MapResponse{        Status: newStatus,        Input:  newIn,    }应该是reply.Status = newStatusreply.Input =  newIn

慕尼黑5688855

您必须更改在调用期间传递的回复值,因此请替换reply = &mr.MapResponse{     Status: newStatus,     Input:  newIn, }跟*reply = mr.MapResponse{     Status: newStatus,     Input:  newIn, }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go