Skip to content

Commit

Permalink
This is an automated cherry-pick of tikv#8415
Browse files Browse the repository at this point in the history
close tikv#8419

Signed-off-by: ti-chi-bot <ti-community-prow-bot@tidb.io>
  • Loading branch information
rleungx authored and ti-chi-bot committed Jul 22, 2024
1 parent 1bb96d4 commit c1b8865
Show file tree
Hide file tree
Showing 3 changed files with 45 additions and 4 deletions.
9 changes: 7 additions & 2 deletions pkg/keyspace/keyspace.go
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,11 @@ import (
"github.com/tikv/pd/pkg/slice"
"github.com/tikv/pd/pkg/storage/endpoint"
"github.com/tikv/pd/pkg/storage/kv"
<<<<<<< HEAD

Check failure on line 34 in pkg/keyspace/keyspace.go

View workflow job for this annotation

GitHub Actions / statics

missing import path
=======
"github.com/tikv/pd/pkg/utils/etcdutil"
"github.com/tikv/pd/pkg/utils/logutil"
>>>>>>> 2d8e03f33 (*: fix redact log (#8415))
"github.com/tikv/pd/pkg/utils/syncutil"
"go.uber.org/zap"
)
Expand Down Expand Up @@ -331,7 +336,7 @@ func (manager *Manager) splitKeyspaceRegion(id uint32, waitRegionSplit bool) (er
if waitRegionSplit {
ranges := keyspaceRule.Data.([]*labeler.KeyRangeRule)
if len(ranges) < 2 {
log.Warn("[keyspace] failed to split keyspace region with insufficient range", zap.Any("label-rule", keyspaceRule))
log.Warn("[keyspace] failed to split keyspace region with insufficient range", logutil.ZapRedactString("label-rule", keyspaceRule.String()))
return ErrRegionSplitFailed
}
rawLeftBound, rawRightBound := ranges[0].StartKey, ranges[0].EndKey
Expand Down Expand Up @@ -380,7 +385,7 @@ func (manager *Manager) splitKeyspaceRegion(id uint32, waitRegionSplit bool) (er

log.Info("[keyspace] added region label for keyspace",
zap.Uint32("keyspace-id", id),
zap.Any("label-rule", keyspaceRule),
logutil.ZapRedactString("label-rule", keyspaceRule.String()),
zap.Duration("takes", time.Since(start)),
)
return
Expand Down
36 changes: 36 additions & 0 deletions pkg/schedule/labeler/rules.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ import (
"encoding/json"
"fmt"
"reflect"
"strings"
"time"

"github.com/pingcap/failpoint"
Expand All @@ -38,6 +39,10 @@ type RegionLabel struct {
expire *time.Time
}

func (l *RegionLabel) String() string {
return fmt.Sprintf("key: %s, value: %s", l.Key, l.Value)
}

// LabelRule is the rule to assign labels to a region.
// NOTE: This type is exported by HTTP API. Please pay more attention when modifying it.
type LabelRule struct {
Expand All @@ -49,6 +54,37 @@ type LabelRule struct {
minExpire *time.Time
}

func (rule *LabelRule) String() string {
var b strings.Builder
b.WriteString(fmt.Sprintf("id: %s, index: %d, type: %s", rule.ID, rule.Index, rule.RuleType))
b.WriteString(", labels: ")
for i, l := range rule.Labels {
if i == 0 {
b.WriteString("[")
}
b.WriteString(l.String())
if i == len(rule.Labels)-1 {
b.WriteString("]")
} else {
b.WriteString(", ")
}
}
b.WriteString(", data: ")
ranges := rule.Data.([]*KeyRangeRule)
for i, r := range ranges {
if i == 0 {
b.WriteString("[")
}
b.WriteString(fmt.Sprintf("startKey: {%s}, endKey: {%s}", r.StartKeyHex, r.EndKeyHex))
if i == len(ranges)-1 {
b.WriteString("]")
} else {
b.WriteString(", ")
}
}
return b.String()
}

// NewLabelRuleFromJSON creates a label rule from the JSON data.
func NewLabelRuleFromJSON(data []byte) (*LabelRule, error) {
lr := &LabelRule{}
Expand Down
4 changes: 2 additions & 2 deletions server/cluster/cluster_worker.go
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,7 @@ func (c *RaftCluster) HandleBatchReportSplit(request *pdpb.ReportBatchSplitReque
err := c.checkSplitRegions(regions)
if err != nil {
log.Warn("report batch split region is invalid",
zap.Stringer("region-meta", hrm),
logutil.ZapRedactStringer("region-meta", hrm),
errs.ZapError(err))
return nil, err
}
Expand All @@ -236,7 +236,7 @@ func (c *RaftCluster) HandleBatchReportSplit(request *pdpb.ReportBatchSplitReque
hrm = core.RegionsToHexMeta(regions[:last])
log.Info("region batch split, generate new regions",
zap.Uint64("region-id", originRegion.GetId()),
zap.Stringer("origin", hrm),
logutil.ZapRedactStringer("origin", hrm),
zap.Int("total", last))
return &pdpb.ReportBatchSplitResponse{}, nil
}
Expand Down

0 comments on commit c1b8865

Please sign in to comment.