fix(backup): fix DBRetentionAndShardFromPath parsing error between-different-os (#25362)

Split paths by both forward and back slashes.

Closes https://github.com/influxdata/influxdb/issues/25361
pull/25472/head
Shiwen Cheng 2024-09-28 07:47:33 +08:00 committed by GitHub
parent 1bc0eb4795
commit 860a74f8a5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 6 additions and 4 deletions

View File

@ -8,8 +8,8 @@ import (
"io"
"os"
"path/filepath"
"regexp"
"sort"
"strings"
"sync/atomic"
internal "github.com/influxdata/influxdb/cmd/influxd/backup_util/internal"
@ -219,10 +219,12 @@ func (w *CountingWriter) BytesWritten() int64 {
return atomic.LoadInt64(&w.Total)
}
// retentionAndShardFromPath will take the shard relative path and split it into the
// retention policy name and shard ID. The first part of the path should be the database name.
var separatorRegexp = regexp.MustCompile(`[/\\]`)
// DBRetentionAndShardFromPath will take the shard relative path and split it into the
// database name, retention policy name and shard ID. The first part of the path should be the database name.
func DBRetentionAndShardFromPath(path string) (db, retention, shard string, err error) {
a := strings.Split(path, string(filepath.Separator))
a := separatorRegexp.Split(path, -1)
if len(a) != 3 {
return "", "", "", fmt.Errorf("expected database, retention policy, and shard id in path: %s", path)
}