| 180 | } |
| 181 | |
| 182 | func (r *RpcClient) Call(serviceMethod string, args any, reply any) error { |
| 183 | var err error |
| 184 | var new *RpcClient |
| 185 | for i := 0; i < connectFailureMaxTries; i++ { |
| 186 | if r != nil { |
| 187 | if err = r.client.Call(serviceMethod, args, reply); err != nil { |
| 188 | time.Sleep(10 * time.Second) |
| 189 | r.Close() |
| 190 | new, _, err = Instrument(r.component, r.agentName, r.namespace, r.kubeconfig, r.kclient, r.opts...) |
| 191 | if err != nil { |
| 192 | time.Sleep(10 * time.Second) |
| 193 | continue |
| 194 | } |
| 195 | r = new |
| 196 | } |
| 197 | } else { |
| 198 | new, _, err = Instrument(r.component, r.agentName, r.namespace, r.kubeconfig, r.kclient, r.opts...) |
| 199 | if err != nil { |
| 200 | time.Sleep(10 * time.Second) |
| 201 | continue |
| 202 | } |
| 203 | r = new |
| 204 | } |
| 205 | } |
| 206 | return err |
| 207 | } |
| 208 | |
| 209 | func (r *RpcClient) Close() error { |
| 210 | return r.client.Close() |