Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[TS-5668] fix(keeper): fix endpoint value too long for column/tag and eliminate warnings #29015

Merged
merged 3 commits into from
Dec 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions tools/keeper/api/adapter2.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,8 @@ var adapterLog = log.GetLogger("ADP")
type adapterReqType int

const (
rest adapterReqType = iota // 0 - rest
ws // 1 - ws
rest adapterReqType = iota
ws
)

type Adapter struct {
Expand Down Expand Up @@ -210,7 +210,7 @@ var adapterTableSql = "create stable if not exists `adapter_requests` (" +
"`other_fail` int unsigned, " +
"`query_in_process` int unsigned, " +
"`write_in_process` int unsigned ) " +
"tags (`endpoint` varchar(32), `req_type` tinyint unsigned )"
"tags (`endpoint` varchar(255), `req_type` tinyint unsigned )"

func (a *Adapter) createTable() error {
if a.conn == nil {
Expand Down
36 changes: 36 additions & 0 deletions tools/keeper/api/adapter2_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package api

import (
"context"
"fmt"
"net/http"
"net/http/httptest"
"strings"
Expand Down Expand Up @@ -96,3 +97,38 @@ func TestAdapter2(t *testing.T) {

conn.Exec(context.Background(), "drop database "+c.Metrics.Database.Name, util.GetQidOwn())
}

func Test_adapterTableSql(t *testing.T) {
conn, _ := db.NewConnector("root", "taosdata", "127.0.0.1", 6041, false)
defer conn.Close()

dbName := "db_202412031446"
conn.Exec(context.Background(), "create database "+dbName, util.GetQidOwn())
defer conn.Exec(context.Background(), "drop database "+dbName, util.GetQidOwn())

conn, _ = db.NewConnectorWithDb("root", "taosdata", "127.0.0.1", 6041, dbName, false)
defer conn.Close()

conn.Exec(context.Background(), adapterTableSql, util.GetQidOwn())

testCases := []struct {
ep string
wantErr bool
}{
{"", false},
{"hello", false},
{strings.Repeat("a", 128), false},
{strings.Repeat("a", 255), false},
{strings.Repeat("a", 256), true},
}

for i, tc := range testCases {
sql := fmt.Sprintf("create table d%d using adapter_requests tags ('%s', 0)", i, tc.ep)
_, err := conn.Exec(context.Background(), sql, util.GetQidOwn())
if tc.wantErr {
assert.Error(t, err) // [0x2653] Value too long for column/tag: endpoint
} else {
assert.NoError(t, err)
}
}
}
6 changes: 1 addition & 5 deletions tools/keeper/api/common.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,7 @@ var commonLogger = log.GetLogger("CMN")

func CreateDatabase(username string, password string, host string, port int, usessl bool, dbname string, databaseOptions map[string]interface{}) {
qid := util.GetQidOwn()

commonLogger := commonLogger.WithFields(
logrus.Fields{config.ReqIDKey: qid},
)
commonLogger := commonLogger.WithFields(logrus.Fields{config.ReqIDKey: qid})

ctx := context.Background()

Expand All @@ -43,7 +40,6 @@ func CreateDatabase(username string, password string, host string, port int, use
}
return
}
panic(err)
}

func generateCreateDBSql(dbname string, databaseOptions map[string]interface{}) string {
Expand Down
13 changes: 7 additions & 6 deletions tools/keeper/api/gen_metric.go
Original file line number Diff line number Diff line change
Expand Up @@ -748,20 +748,21 @@ func (gm *GeneralMetric) initColumnSeqMap() error {
}

func (gm *GeneralMetric) createSTables() error {
var createTableSql = "create stable if not exists taosd_cluster_basic " +
"(ts timestamp, first_ep varchar(100), first_ep_dnode_id INT, cluster_version varchar(20)) " +
"tags (cluster_id varchar(50))"

if gm.conn == nil {
return errNoConnection
}

createTableSql := "create stable if not exists taosd_cluster_basic " +
"(ts timestamp, first_ep varchar(255), first_ep_dnode_id INT, cluster_version varchar(20)) " +
"tags (cluster_id varchar(50))"

_, err := gm.conn.Exec(context.Background(), createTableSql, util.GetQidOwn())
if err != nil {
return err
}

createTableSql = "create stable if not exists taos_slow_sql_detail" +
" (start_ts TIMESTAMP, request_id BIGINT UNSIGNED PRIMARY KEY, query_time INT, code INT, error_info varchar(128), " +
createTableSql = "create stable if not exists taos_slow_sql_detail " +
"(start_ts TIMESTAMP, request_id BIGINT UNSIGNED PRIMARY KEY, query_time INT, code INT, error_info varchar(128), " +
"type TINYINT, rows_num BIGINT, sql varchar(16384), process_name varchar(32), process_id varchar(32)) " +
"tags (db varchar(1024), `user` varchar(32), ip varchar(32), cluster_id varchar(32))"

Expand Down
41 changes: 41 additions & 0 deletions tools/keeper/api/gen_metric_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import (
"net/http/httptest"
"strings"
"testing"
"time"

"github.com/stretchr/testify/assert"
"github.com/taosdata/taoskeeper/db"
Expand Down Expand Up @@ -255,6 +256,7 @@ func TestGenMetric(t *testing.T) {
}
})
}

func TestGetSubTableName(t *testing.T) {
tests := []struct {
stbName string
Expand Down Expand Up @@ -356,3 +358,42 @@ func TestGetSubTableName(t *testing.T) {
})
}
}

func Test_createSTables(t *testing.T) {
conn, _ := db.NewConnector("root", "taosdata", "127.0.0.1", 6041, false)
defer conn.Close()

dbName := "db_202412031527"
conn.Exec(context.Background(), "create database "+dbName, util.GetQidOwn())
defer conn.Exec(context.Background(), "drop database "+dbName, util.GetQidOwn())

conn, _ = db.NewConnectorWithDb("root", "taosdata", "127.0.0.1", 6041, dbName, false)
defer conn.Close()

gm := GeneralMetric{conn: conn}
gm.createSTables()

testCases := []struct {
ep string
wantErr bool
}{
{"", false},
{"hello", false},
{strings.Repeat("a", 128), false},
{strings.Repeat("a", 255), false},
{strings.Repeat("a", 256), true},
}

conn.Exec(context.Background(),
"create table d0 using taosd_cluster_basic tags('cluster_id')", util.GetQidOwn())

for _, tc := range testCases {
sql := fmt.Sprintf("insert into d0 (ts, first_ep) values(%d, '%s')", time.Now().UnixMilli(), tc.ep)
_, err := conn.Exec(context.Background(), sql, util.GetQidOwn())
if tc.wantErr {
assert.Error(t, err) // [0x2653] Value too long for column/tag: endpoint
} else {
assert.NoError(t, err)
}
}
}
6 changes: 3 additions & 3 deletions tools/keeper/api/report.go
Original file line number Diff line number Diff line change
Expand Up @@ -384,7 +384,7 @@ func insertClusterInfoSql(info ClusterInfo, ClusterID string, protocol int, ts s
sqls = append(sqls, fmt.Sprintf("insert into d_info_%s using d_info tags (%d, '%s', '%s') values ('%s', '%s')",
ClusterID+strconv.Itoa(dnode.DnodeID), dnode.DnodeID, dnode.DnodeEp, ClusterID, ts, dnode.Status))
dtotal++
if "ready" == dnode.Status {
if dnode.Status == "ready" {
dalive++
}
}
Expand All @@ -393,8 +393,8 @@ func insertClusterInfoSql(info ClusterInfo, ClusterID string, protocol int, ts s
sqls = append(sqls, fmt.Sprintf("insert into m_info_%s using m_info tags (%d, '%s', '%s') values ('%s', '%s')",
ClusterID+strconv.Itoa(mnode.MnodeID), mnode.MnodeID, mnode.MnodeEp, ClusterID, ts, mnode.Role))
mtotal++
//LEADER FOLLOWER CANDIDATE ERROR
if "ERROR" != mnode.Role {
// LEADER FOLLOWER CANDIDATE ERROR
if mnode.Role != "ERROR" {
malive++
}
}
Expand Down
2 changes: 1 addition & 1 deletion tools/keeper/api/tables.go
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ var dnodeEpLen = strconv.Itoa(255)

var CreateClusterInfoSql = "create table if not exists cluster_info (" +
"ts timestamp, " +
"first_ep binary(134), " +
"first_ep binary(255), " +
"first_ep_dnode_id int, " +
"version binary(12), " +
"master_uptime float, " +
Expand Down
51 changes: 51 additions & 0 deletions tools/keeper/api/tables_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
package api

import (
"context"
"fmt"
"strings"
"testing"
"time"

"github.com/stretchr/testify/assert"
"github.com/taosdata/taoskeeper/db"
"github.com/taosdata/taoskeeper/util"
)

func TestCreateClusterInfoSql(t *testing.T) {
conn, _ := db.NewConnector("root", "taosdata", "127.0.0.1", 6041, false)
defer conn.Close()

dbName := "db_202412031539"
conn.Exec(context.Background(), "create database "+dbName, util.GetQidOwn())
defer conn.Exec(context.Background(), "drop database "+dbName, util.GetQidOwn())

conn, _ = db.NewConnectorWithDb("root", "taosdata", "127.0.0.1", 6041, dbName, false)
defer conn.Close()

conn.Exec(context.Background(), CreateClusterInfoSql, util.GetQidOwn())

testCases := []struct {
ep string
wantErr bool
}{
{"", false},
{"hello", false},
{strings.Repeat("a", 128), false},
{strings.Repeat("a", 255), false},
{strings.Repeat("a", 256), true},
}

conn.Exec(context.Background(),
"create table d0 using cluster_info tags('cluster_id')", util.GetQidOwn())

for _, tc := range testCases {
sql := fmt.Sprintf("insert into d0 (ts, first_ep) values(%d, '%s')", time.Now().UnixMilli(), tc.ep)
_, err := conn.Exec(context.Background(), sql, util.GetQidOwn())
if tc.wantErr {
assert.Error(t, err) // [0x2653] Value too long for column/tag: endpoint
} else {
assert.NoError(t, err)
}
}
}
3 changes: 1 addition & 2 deletions tools/keeper/cmd/command.go
Original file line number Diff line number Diff line change
Expand Up @@ -315,14 +315,13 @@ func (cmd *Command) TransferDataToDest(data *db.Data, dstTable string, tagNum in

// cluster_info
func (cmd *Command) TransferTaosdClusterBasicInfo() error {

ctx := context.Background()

endTime := time.Now()
delta := time.Hour * 24 * 10

var createTableSql = "create stable if not exists taosd_cluster_basic " +
"(ts timestamp, first_ep varchar(100), first_ep_dnode_id INT, cluster_version varchar(20)) " +
"(ts timestamp, first_ep varchar(255), first_ep_dnode_id INT, cluster_version varchar(20)) " +
"tags (cluster_id varchar(50))"

if _, err := cmd.conn.Exec(ctx, createTableSql, util.GetQidOwn()); err != nil {
Expand Down
55 changes: 55 additions & 0 deletions tools/keeper/cmd/command_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
package cmd

import (
"context"
"fmt"
"strings"
"testing"
"time"

"github.com/stretchr/testify/assert"
"github.com/taosdata/taoskeeper/db"
"github.com/taosdata/taoskeeper/infrastructure/config"
"github.com/taosdata/taoskeeper/util"
)

func TestTransferTaosdClusterBasicInfo(t *testing.T) {
config.InitConfig()

conn, _ := db.NewConnector("root", "taosdata", "127.0.0.1", 6041, false)
defer conn.Close()

dbName := "db_202412031539"
conn.Exec(context.Background(), "create database "+dbName, util.GetQidOwn())
defer conn.Exec(context.Background(), "drop database "+dbName, util.GetQidOwn())

conn, _ = db.NewConnectorWithDb("root", "taosdata", "127.0.0.1", 6041, dbName, false)
defer conn.Close()

cmd := Command{conn: conn, fromTime: time.Now().Add(time.Duration(1 * time.Hour))}
cmd.TransferTaosdClusterBasicInfo()

testCases := []struct {
ep string
wantErr bool
}{
{"", false},
{"hello", false},
{strings.Repeat("a", 128), false},
{strings.Repeat("a", 255), false},
{strings.Repeat("a", 256), true},
}

conn.Exec(context.Background(),
"create table d0 using taosd_cluster_basic tags('cluster_id')", util.GetQidOwn())

for _, tc := range testCases {
sql := fmt.Sprintf("insert into d0 (ts, first_ep) values(%d, '%s')", time.Now().UnixMilli(), tc.ep)
_, err := conn.Exec(context.Background(), sql, util.GetQidOwn())
if tc.wantErr {
assert.Error(t, err) // [0x2653] Value too long for column/tag: endpoint
} else {
assert.NoError(t, err)
}
}
}
8 changes: 0 additions & 8 deletions tools/keeper/cmd/empty_test.go

This file was deleted.

9 changes: 6 additions & 3 deletions tools/keeper/db/connector.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@ import (
"time"

"github.com/sirupsen/logrus"
"github.com/taosdata/driver-go/v3/common"

_ "github.com/taosdata/driver-go/v3/taosRestful"
"github.com/taosdata/taoskeeper/infrastructure/config"
Expand Down Expand Up @@ -70,9 +69,13 @@ func NewConnectorWithDb(username, password, host string, port int, dbname string
return &Connector{db: db}, nil
}

type ReqIDKeyTy string

const ReqIDKey ReqIDKeyTy = "taos_req_id"

func (c *Connector) Exec(ctx context.Context, sql string, qid uint64) (int64, error) {
dbLogger := dbLogger.WithFields(logrus.Fields{config.ReqIDKey: qid})
ctx = context.WithValue(ctx, common.ReqIDKey, int64(qid))
ctx = context.WithValue(ctx, ReqIDKey, int64(qid))

dbLogger.Tracef("call adapter to execute sql:%s", sql)
startTime := time.Now()
Expand Down Expand Up @@ -120,7 +123,7 @@ func logData(data *Data, logger *logrus.Entry) {

func (c *Connector) Query(ctx context.Context, sql string, qid uint64) (*Data, error) {
dbLogger := dbLogger.WithFields(logrus.Fields{config.ReqIDKey: qid})
ctx = context.WithValue(ctx, common.ReqIDKey, int64(qid))
ctx = context.WithValue(ctx, ReqIDKey, int64(qid))

dbLogger.Tracef("call adapter to execute query, sql:%s", sql)

Expand Down
8 changes: 0 additions & 8 deletions tools/keeper/infrastructure/log/empty_test.go

This file was deleted.

1 change: 0 additions & 1 deletion tools/keeper/infrastructure/log/log.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,6 @@ import (
"github.com/sirupsen/logrus"
rotatelogs "github.com/taosdata/file-rotatelogs/v2"
"github.com/taosdata/taoskeeper/infrastructure/config"

"github.com/taosdata/taoskeeper/version"
)

Expand Down
8 changes: 0 additions & 8 deletions tools/keeper/monitor/empty_test.go

This file was deleted.

Loading
Loading