{"record":{"id":"474075695b0676d4","repo":"mickael-kerjean/filestash","slug":"rpc-error-s","errorCode":null,"errorMessage":"RPC error: %s","messagePattern":"RPC error: (.+?)","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"server/plugin/plg_backend_nfs4/repo/nfs4/client.go","lineNumber":241,"sourceCode":"\tdefer func() {\n\t\tif i := recover(); i != nil {\n\t\t\tif e, ok := i.(XdrError); ok {\n\t\t\t\terr = e\n\t\t\t} else {\n\t\t\t\tpanic(i)\n\t\t\t}\n\t\t}\n\t}()\n\n\treply := Rpc_msg{}\n\tin := XdrIn{In: bytes.NewReader(msgBuf)}\n\tin.Marshal(\"\", &reply)\n\tif _, ok := result.(XdrType_void); !ok {\n\t\tin.Marshal(\"\", result)\n\t}\n\n\tif !c.isRpcSuccess(&reply) {\n\t\terr = fmt.Errorf(\"RPC error: %s\", c.getRpcError(&reply))\n\t\treturn\n\t}\n\txid = reply.Xid\n\n\treturn\n}\n\n// Returns true iff msg is an accepted REPLY with status SUCCESS.\nfunc (c *NfsClient) isRpcSuccess(msg *Rpc_msg) bool {\n\treturn msg != nil &&\n\t\tmsg.Body.Mtype == REPLY &&\n\t\tmsg.Body.Rbody().Stat == MSG_ACCEPTED &&\n\t\tmsg.Body.Rbody().Areply().Reply_data.Stat == SUCCESS\n}\n\n// An *Rpc_msg can represent an error.  Call IsSuccess to see if there\n// was actually an error.\nfunc (c *NfsClient) getRpcError(m *Rpc_msg) string {","sourceCodeStart":223,"sourceCodeEnd":259,"githubUrl":"https://github.com/mickael-kerjean/filestash/blob/78f756eb94ef383f1f1cd4bc3077a43a4d088ff0/server/plugin/plg_backend_nfs4/repo/nfs4/client.go#L223-L259","documentation":"Produced in readNfsMessage when an NFS RPC reply is not an accepted REPLY with status SUCCESS, as checked by isRpcSuccess. The %s carries the RPC-level rejection reason (e.g. auth_error, prog_unavail, proc_unavail, garbage). It surfaces transport/protocol-level NFS failures to callers like Ping and runNfsTransaction, distinct from NFS operation-level errors.","triggerScenarios":"Thrown at server/plugin/plg_backend_nfs4/repo/nfs4/client.go:241 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Inspect the wrapped RPC status (getRpcError) to identify auth vs program-level rejection","Verify NFS server availability, export ACLs, and that the client host is allowed (showmount/exportfs checks)","Check for auth mismatch: sec=sys/krb5 settings, UID mapping, or stale rpcbind/portmapper entries","Retry against a healthy server; transient RPC garbage replies can indicate network corruption"],"exampleFix":null,"handlingStrategy":"retry","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"78f756eb94ef383f1f1cd4bc3077a43a4d088ff0","analyzedAt":"2026-09-06T11:52:48.712Z","contentChangedAt":"2026-09-06T11:52:48.712Z","schemaVersion":2},"datasetVersion":"2026-09-14T00:17:10.932Z"}