Skip to content

Commit

Permalink
rbd: add context in reported errors by GetVolumeReplicationInfo
Browse files Browse the repository at this point in the history
Logged errors are much more helpful when there is some context around
the message about what went wrong.

Signed-off-by: Niels de Vos <[email protected]>
  • Loading branch information
nixpanic authored and mergify[bot] committed Jan 15, 2025
1 parent 4101b63 commit e89fe5a
Showing 1 changed file with 12 additions and 4 deletions.
16 changes: 12 additions & 4 deletions internal/csi-addons/rbd/replication.go
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand All @@ -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())
Expand All @@ -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())
}
Expand All @@ -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)
Expand All @@ -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)
}
Expand Down

0 comments on commit e89fe5a

Please sign in to comment.