From 2e6faa1ca88af4bc20a67f37d1fe7080b9f2130a Mon Sep 17 00:00:00 2001 From: Niels de Vos Date: Tue, 14 Jan 2025 16:41:53 +0100 Subject: [PATCH] rbd: add context in reported errors by GetVolumeReplicationInfo Logged errors are much more helpful when there is some context around the message about what went wrong. Signed-off-by: Niels de Vos --- internal/csi-addons/rbd/replication.go | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/internal/csi-addons/rbd/replication.go b/internal/csi-addons/rbd/replication.go index 366602d5737..d2814fc4d1d 100644 --- a/internal/csi-addons/rbd/replication.go +++ b/internal/csi-addons/rbd/replication.go @@ -815,6 +815,8 @@ func (rs *ReplicationServer) GetVolumeReplicationInfo(ctx context.Context, } cr, err := util.NewUserCredentials(req.GetSecrets()) if err != nil { + log.ErrorLog(ctx, "failed to get user credentials: %v", err) + return nil, status.Error(codes.Internal, err.Error()) } defer cr.DeleteCredentials() @@ -830,6 +832,8 @@ func (rs *ReplicationServer) GetVolumeReplicationInfo(ctx context.Context, rbdVol, err := mgr.GetVolumeByID(ctx, volumeID) if err != nil { + log.ErrorLog(ctx, "failed to get volume with id %q: %v", volumeID, err) + switch { case errors.Is(err, corerbd.ErrImageNotFound): err = status.Error(codes.NotFound, err.Error()) @@ -843,12 +847,14 @@ func (rs *ReplicationServer) GetVolumeReplicationInfo(ctx context.Context, } mirror, err := rbdVol.ToMirror() if err != nil { + log.ErrorLog(ctx, "failed to convert volume %q to mirror type: %v", rbdVol, err) + return nil, status.Error(codes.Internal, err.Error()) } info, err := mirror.GetMirroringInfo(ctx) if err != nil { - log.ErrorLog(ctx, err.Error()) + log.ErrorLog(ctx, "failed to get info for mirror %q: %v", mirror, err) return nil, status.Error(codes.Aborted, err.Error()) } @@ -864,17 +870,18 @@ func (rs *ReplicationServer) GetVolumeReplicationInfo(ctx context.Context, mirrorStatus, err := mirror.GetGlobalMirroringStatus(ctx) if err != nil { + log.ErrorLog(ctx, "failed to get status for mirror %q: %v", mirror, err) + if errors.Is(err, corerbd.ErrImageNotFound) { return nil, status.Error(codes.Aborted, err.Error()) } - log.ErrorLog(ctx, err.Error()) return nil, status.Error(codes.Internal, err.Error()) } remoteStatus, err := mirrorStatus.GetRemoteSiteStatus(ctx) if err != nil { - log.ErrorLog(ctx, err.Error()) + log.ErrorLog(ctx, "failed to get remote site status for mirror %q: %v", mirror, err) if errors.Is(err, librbd.ErrNotExist) { return nil, status.Errorf(codes.NotFound, "failed to get remote status: %v", err) @@ -886,10 +893,11 @@ func (rs *ReplicationServer) GetVolumeReplicationInfo(ctx context.Context, description := remoteStatus.GetDescription() resp, err := getLastSyncInfo(ctx, description) if err != nil { + log.ErrorLog(ctx, "failed to parse last sync info from %q: %v", description, err) + if errors.Is(err, corerbd.ErrLastSyncTimeNotFound) { return nil, status.Errorf(codes.NotFound, "failed to get last sync info: %v", err) } - log.ErrorLog(ctx, err.Error()) return nil, status.Errorf(codes.Internal, "failed to get last sync info: %v", err) }