3434
3535type EtcdClient interface {
3636 GetStatuses (ctx context.Context ) (map [string ]* clientv3.StatusResponse , error )
37- CreateSnapshot (ctx context.Context ) (* clientv3.SnapshotResponse , func (), error )
37+ CreateSnapshot (ctx context.Context ) (* clientv3.SnapshotResponse , func () error , error )
3838 ListAlarms (ctx context.Context ) (* clientv3.AlarmResponse , error )
3939 DisarmAlarm (ctx context.Context , alarm * clientv3.AlarmMember ) error
4040}
@@ -108,19 +108,24 @@ func (e *etcdClient) GetStatuses(ctx context.Context) (map[string]*clientv3.Stat
108108 )
109109}
110110
111- func (e * etcdClient ) CreateSnapshot (ctx context.Context ) (* clientv3.SnapshotResponse , func (), error ) {
111+ func (e * etcdClient ) CreateSnapshot (ctx context.Context ) (* clientv3.SnapshotResponse , func () error , error ) {
112112 return tracing .WithSpan3 (ctx , tracer , "EtcdClient.CreateSnapshot" ,
113- func (ctx context.Context , span trace.Span ) (_ * clientv3.SnapshotResponse , _ func (), retErr error ) {
113+ func (ctx context.Context , span trace.Span ) (_ * clientv3.SnapshotResponse , _ func () error , retErr error ) {
114114 endpoint := e .anyEndpoint
115115 etcdClient , err := createEtcdClient (e , endpoint )
116- closeFunc := func () { closeEtcdClient (etcdClient , & retErr , endpoint ) }
116+ closeFunc := func () error {
117+ var closeErr error
118+ closeEtcdClient (etcdClient , & closeErr , endpoint )
119+ return closeErr
120+ }
117121 if err != nil {
118122 return nil , closeFunc , err
119123 }
120124
121125 snapshotResponse , err := callETCDFuncOnAnyMember (
122126 ctx ,
123127 etcdClient ,
128+ endpoint ,
124129 clientv3 .Client .SnapshotWithVersion ,
125130 )
126131 return snapshotResponse , closeFunc , err
@@ -183,6 +188,7 @@ func (e *etcdClient) ListAlarms(ctx context.Context) (*clientv3.AlarmResponse, e
183188 return callETCDFuncOnAnyMember (
184189 ctx ,
185190 etcdClient ,
191+ endpoint ,
186192 clientv3 .Client .AlarmList ,
187193 )
188194 },
@@ -203,6 +209,7 @@ func (e *etcdClient) DisarmAlarm(ctx context.Context, alarm *clientv3.AlarmMembe
203209 _ , err = callETCDFuncOnAnyMember (
204210 ctx ,
205211 etcdClient ,
212+ endpoint ,
206213 func (client clientv3.Client , ctx context.Context ) (* clientv3.AlarmResponse , error ) {
207214 response , err := client .AlarmDisarm (ctx , alarm )
208215 if err != nil {
@@ -313,11 +320,12 @@ func callETCDFuncOnMember[R any](
313320func callETCDFuncOnAnyMember [R any ](
314321 ctx context.Context ,
315322 etcdClient * clientv3.Client ,
323+ endpoint string ,
316324 etcdFunc func (client clientv3.Client , ctx context.Context ) (R , error ),
317325) (R , error ) {
318326 return tracing .WithSpan (ctx , tracer , "CallETCDFuncOnAnyMember" ,
319327 func (ctx context.Context , span trace.Span ) (R , error ) {
320- return callETCDFuncOnMember (ctx , etcdClient , "" ,
328+ return callETCDFuncOnMember (ctx , etcdClient , endpoint ,
321329 func (client clientv3.Client , ctx context.Context , _ string ) (R , error ) {
322330 return etcdFunc (client , ctx )
323331 })
0 commit comments