diff --git a/.arclint b/.arclint index 5354b23cc8d..57c481627a1 100644 --- a/.arclint +++ b/.arclint @@ -127,12 +127,6 @@ "script-and-regex.script": "./tools/linters/gazelle.sh", "script-and-regex.regex": "/^(?P[[:alpha:]]+)\n(?P[^\n]+)\n(?P[^\n]+)\n((?P\\d),(?P\\d)\n<<<<<\n(?P.*)=====\n(?P.*)>>>>>\n)$/s" }, - "goimports": { - "type": "goimports", - "include": [ - "(\\.go$)" - ] - }, "golangci-lint": { "type": "golangci-lint", "include": [ @@ -140,7 +134,7 @@ ], "flags": [ "--timeout=5m0s", - "--out-format=checkstyle" + "--output.checkstyle.path=stdout" ] }, "jshint-ui": { diff --git a/.golangci.yaml b/.golangci.yaml index 60a40769988..d6b08bc4ffe 100644 --- a/.golangci.yaml +++ b/.golangci.yaml @@ -1,34 +1,11 @@ --- +version: "2" run: - # Tell golangci-lint to not acquire a lock because - # arcanist will run multiple instances in parallel. allow-parallel-runners: true - # arcanist runs many of these in parallel causing - # CPU contention and longer runtimes. - timeout: 3m - -output: - sort-results: true - -issues: - max-issues-per-linter: 0 - max-same-issues: 0 - # TODO(ddelnano): Remove once typecheck is upgraded in next golangci-lint upgrade - # This error originates from the stdlib due to generics usage - exclude-rules: - - path: .*slices\/sort.go - linters: - - typecheck - text: "^(undefined: (min|max))" - linters: enable: - asciicheck - errcheck - # Although goimports includes gofmt, it doesn't support the simplify option. - # So we include gofmt here. - - gofmt - - gosimple - govet - ineffassign - makezero @@ -39,24 +16,62 @@ linters: - predeclared - revive - staticcheck - # https://github.com/golangci/golangci-lint/issues/2649 - # - structcheck - - typecheck - unused - # https://github.com/golangci/golangci-lint/issues/2649 - # - wastedassign - whitespace - disable: - # The following linters are run separately by arcanist at the moment. - # This is because we have autofix hooks for these linters. - - goimports - disable-all: false - -linters-settings: - errcheck: - # yamllint disable-line rule:line-length - ignore: io:Close,github.com/fatih/color,github.com/spf13/pflag:MarkHidden,github.com/spf13/viper:(BindEnv|BindPFlag),github.com/spf13/cobra:(Help|MarkFlagRequired|Usage),github.com/segmentio/analytics-go/v3:Enqueue,database/sql:Rollback,github.com/nats-io/nats.go:Unsubscribe - goimports: - local-prefixes: px.dev - nakedret: - max-func-lines: 0 + settings: + errcheck: + exclude-functions: + - io.Close + - (*github.com/spf13/pflag.FlagSet).MarkHidden + - github.com/spf13/viper.BindEnv + - github.com/spf13/viper.BindPFlag + - github.com/spf13/viper.BindPFlags + - (*github.com/spf13/cobra.Command).Help + - (*github.com/spf13/cobra.Command).MarkFlagRequired + - (*github.com/spf13/cobra.Command).Usage + - (github.com/segmentio/analytics-go/v3.Client).Enqueue + - (*database/sql.Tx).Rollback + - (*github.com/nats-io/nats.go.Subscription).Unsubscribe + revive: + rules: + - name: unused-parameter + disabled: true + staticcheck: + checks: + - all + - "-ST1005" # ignore the "ST1005: error strings should not be capitalized" check + - "-QF1008" # ignore omit embedded fields from selector expression + exclusions: + generated: lax + presets: + - comments + - common-false-positives + - legacy + - std-error-handling + paths: + - third_party$ + - builtin$ + - examples$ +issues: + max-issues-per-linter: 0 + max-same-issues: 0 +formatters: + enable: + - gci + - gofumpt + settings: + gci: + sections: + - standard + - default + - prefix(px.dev) + custom-order: true + goimports: + local-prefixes: + - px.dev + exclusions: + generated: lax + paths: + - third_party$ + - builtin$ + - examples$ diff --git a/docker.properties b/docker.properties index 347a6dc9b54..9cb5d8ee576 100644 --- a/docker.properties +++ b/docker.properties @@ -1,4 +1,4 @@ -DOCKER_IMAGE_TAG=202502242148 -LINTER_IMAGE_DIGEST=eb7613e8aab9eb4620d6fae2618c966092abca8734abf90f0238db7de4535f15 -DEV_IMAGE_DIGEST=8316e718b16de940e2a5ac64fb6e57dc9ed28ca2ed437302e339964e9b42c9f2 -DEV_IMAGE_WITH_EXTRAS_DIGEST=b6d4c2404b30d06c2322d531620dcbe810a2c534f1cd0aa2389c75ed91d9bc24 +DOCKER_IMAGE_TAG=202504121153 +LINTER_IMAGE_DIGEST=ff369d95c4c84c95b668498219fda60ff8126828839171262f2eee58bd95ce19 +DEV_IMAGE_DIGEST=91e7fb85e0497340df5efaf035b65d98eab458908f852a782aeeb5ea0b69b5c9 +DEV_IMAGE_WITH_EXTRAS_DIGEST=f90e8b9b69d5870a7115ad434388da7bcef05f4a6c47e937a5a6348a22613ab4 diff --git a/src/api/go/pxapi/examples/basic_example/example.go b/src/api/go/pxapi/examples/basic_example/example.go index 16e71f9787f..0ff22b1797f 100644 --- a/src/api/go/pxapi/examples/basic_example/example.go +++ b/src/api/go/pxapi/examples/basic_example/example.go @@ -28,15 +28,13 @@ import ( "px.dev/pixie/src/api/go/pxapi/types" ) -var ( - pxl = ` +var pxl = ` import px df = px.DataFrame('http_events') df = df[['upid', 'req_path', 'remote_addr', 'req_method']] df = df.head(10) px.display(df, 'http') ` -) type tablePrinter struct{} @@ -56,8 +54,7 @@ func (t *tablePrinter) HandleDone(ctx context.Context) error { return nil } -type tableMux struct { -} +type tableMux struct{} func (s *tableMux) AcceptTable(ctx context.Context, metadata types.TableMetadata) (pxapi.TableRecordHandler, error) { return &tablePrinter{}, nil diff --git a/src/api/go/pxapi/examples/encryption_example/example.go b/src/api/go/pxapi/examples/encryption_example/example.go index 61a0629134e..adb04943abb 100644 --- a/src/api/go/pxapi/examples/encryption_example/example.go +++ b/src/api/go/pxapi/examples/encryption_example/example.go @@ -28,15 +28,13 @@ import ( "px.dev/pixie/src/api/go/pxapi/types" ) -var ( - pxl = ` +var pxl = ` import px df = px.DataFrame('http_events') df = df[['upid', 'req_path', 'remote_addr', 'req_method']] df = df.head(10) px.display(df, 'http') ` -) type tablePrinter struct{} @@ -56,8 +54,7 @@ func (t *tablePrinter) HandleDone(ctx context.Context) error { return nil } -type tableMux struct { -} +type tableMux struct{} func (s *tableMux) AcceptTable(ctx context.Context, metadata types.TableMetadata) (pxapi.TableRecordHandler, error) { return &tablePrinter{}, nil diff --git a/src/api/go/pxapi/examples/example_mux/example.go b/src/api/go/pxapi/examples/example_mux/example.go index 463bc9bd05f..04e6e1b74c2 100644 --- a/src/api/go/pxapi/examples/example_mux/example.go +++ b/src/api/go/pxapi/examples/example_mux/example.go @@ -30,8 +30,7 @@ import ( "px.dev/pixie/src/api/go/pxapi/types" ) -var ( - pxl = ` +var pxl = ` import px df = px.DataFrame('http_events') df = df[['upid', 'req_path', 'remote_addr', 'req_method']] @@ -39,7 +38,6 @@ df = df.head(10) px.display(df, 'http_as_json') px.display(df, 'http_as_table') ` -) func main() { apiKey, ok := os.LookupEnv("PX_API_KEY") diff --git a/src/api/go/pxapi/examples/standalone_pem_example/example.go b/src/api/go/pxapi/examples/standalone_pem_example/example.go index 40e363c4d75..64e1e3b10da 100644 --- a/src/api/go/pxapi/examples/standalone_pem_example/example.go +++ b/src/api/go/pxapi/examples/standalone_pem_example/example.go @@ -90,6 +90,7 @@ type tablePrinter struct{} func (t *tablePrinter) HandleInit(ctx context.Context, metadata types.TableMetadata) error { return nil } + func (t *tablePrinter) HandleRecord(ctx context.Context, r *types.Record) error { for _, d := range r.Data { fmt.Printf("%s ", d.String()) @@ -103,8 +104,7 @@ func (t *tablePrinter) HandleDone(ctx context.Context) error { } // Satisfies the TableMuxer interface. -type tableMux struct { -} +type tableMux struct{} func (s *tableMux) AcceptTable(ctx context.Context, metadata types.TableMetadata) (pxapi.TableRecordHandler, error) { return &tablePrinter{}, nil diff --git a/src/api/go/pxapi/examples/streaming_example/example.go b/src/api/go/pxapi/examples/streaming_example/example.go index 0bcc9586e66..6282e030f20 100644 --- a/src/api/go/pxapi/examples/streaming_example/example.go +++ b/src/api/go/pxapi/examples/streaming_example/example.go @@ -28,13 +28,11 @@ import ( "px.dev/pixie/src/api/go/pxapi/types" ) -var ( - pxl = ` +var pxl = ` import px df = px.DataFrame('http_events', start_time='-5m')[['resp_status','req_path']] px.display(df.stream(), 'http_table') ` -) type tablePrinter struct{} @@ -54,8 +52,7 @@ func (t *tablePrinter) HandleDone(ctx context.Context) error { return nil } -type tableMux struct { -} +type tableMux struct{} func (s *tableMux) AcceptTable(ctx context.Context, metadata types.TableMetadata) (pxapi.TableRecordHandler, error) { return &tablePrinter{}, nil diff --git a/src/api/go/pxapi/results.go b/src/api/go/pxapi/results.go index 253219a113d..17a45a9984a 100644 --- a/src/api/go/pxapi/results.go +++ b/src/api/go/pxapi/results.go @@ -181,7 +181,6 @@ func (s *ScriptResults) run() error { ctx := s.c.Context() for { resp, err := s.c.Recv() - if err != nil { if err == io.EOF { // Stream has terminated. diff --git a/src/api/go/pxapi/vizier.go b/src/api/go/pxapi/vizier.go index 59723fa7417..ef5b0bcdfcb 100644 --- a/src/api/go/pxapi/vizier.go +++ b/src/api/go/pxapi/vizier.go @@ -22,7 +22,6 @@ import ( "context" "px.dev/pixie/src/api/go/pxapi/errdefs" - "px.dev/pixie/src/api/proto/vizierpb" ) diff --git a/src/carnot/docstring/pkg/docstring.go b/src/carnot/docstring/pkg/docstring.go index d0a818ea72e..77e7d24e891 100644 --- a/src/carnot/docstring/pkg/docstring.go +++ b/src/carnot/docstring/pkg/docstring.go @@ -80,6 +80,7 @@ func (w *parser) ArgMatch(s string) bool { return allRe.MatchString(s) && w.isTabbedLine(s) } + func (w *parser) ReturnMatch(s string) bool { allRe := re.MustCompile(w.ReturnReStr()) @@ -373,8 +374,10 @@ func parseDocstring(docString string) (*FunctionDocstring, error) { return p.parsedDoc, nil } -const topicRegex = `:topic: (?P[^\s]*)\n` -const opnameRegex = `:opname: (?P.*)\n` +const ( + topicRegex = `:topic: (?P[^\s]*)\n` + opnameRegex = `:opname: (?P.*)\n` +) // getTag finds the tag in the docstring if it exists. func getTag(docstring, tagRegex string) string { diff --git a/src/carnot/docstring/tables/datatables.go b/src/carnot/docstring/tables/datatables.go index 6f92cc7959f..a7966a21c84 100644 --- a/src/carnot/docstring/tables/datatables.go +++ b/src/carnot/docstring/tables/datatables.go @@ -36,13 +36,11 @@ import ( "px.dev/pixie/src/shared/services" ) -var ( - pxl = ` +var pxl = ` import px px.display(px.GetTables(), 'table_desc') px.display(px.GetSchemas(), 'table_schemas') ` -) func init() { pflag.String("cluster_id", "", "The cluster_id of the cluster to query") diff --git a/src/carnot/goplanner/logical_planner.go b/src/carnot/goplanner/logical_planner.go index 826cc0ebcdc..5001b2894db 100644 --- a/src/carnot/goplanner/logical_planner.go +++ b/src/carnot/goplanner/logical_planner.go @@ -25,6 +25,7 @@ package goplanner // #include // #include "src/carnot/planner/cgo_export.h" import "C" + import ( "errors" "fmt" @@ -32,7 +33,6 @@ import ( "github.com/gogo/protobuf/proto" "github.com/gogo/protobuf/types" - // Blank Import required by package. _ "github.com/ianlancetaylor/cgosymbolizer" diff --git a/src/carnot/goplanner/logical_planner_benchmark_test.go b/src/carnot/goplanner/logical_planner_benchmark_test.go index 37322813eb4..34677f3ff3b 100644 --- a/src/carnot/goplanner/logical_planner_benchmark_test.go +++ b/src/carnot/goplanner/logical_planner_benchmark_test.go @@ -491,6 +491,7 @@ const pxClusterJSON = ` ] } ` + const pxPodPxl = ` '''Pod Overview @@ -1290,7 +1291,6 @@ func setupPlanner() (*goplanner.GoPlanner, error) { func benchmarkPlannerInnerLoop(c *goplanner.GoPlanner, queryRequestPB *plannerpb.QueryRequest) { plannerResultPB, err := c.Plan(queryRequestPB) - if err != nil { log.Fatalln("Failed to plan:", err) os.Exit(1) @@ -1302,6 +1302,7 @@ func benchmarkPlannerInnerLoop(c *goplanner.GoPlanner, queryRequestPB *plannerpb os.Exit(1) } } + func benchmarkPlanner(b *testing.B, queryRequestPB *plannerpb.QueryRequest, numAgents int) { // Create the compiler. c, err := setupPlanner() diff --git a/src/carnot/goplanner/logical_planner_stub.go b/src/carnot/goplanner/logical_planner_stub.go index b48cd709c11..673eb0f6397 100644 --- a/src/carnot/goplanner/logical_planner_stub.go +++ b/src/carnot/goplanner/logical_planner_stub.go @@ -33,8 +33,7 @@ import ( var errorUnimplemented = errors.New(" ¡UNIMPLEMENTED STUB FOR STATIC ANALYSIS. goplanner ONLY RUNS WITH __CGO__ ENABLED! ") // GoPlanner wraps the C Planner. -type GoPlanner struct { -} +type GoPlanner struct{} // New creates a new GoPlanner object. func New(udfInfo *udfspb.UDFInfo) (GoPlanner, error) { diff --git a/src/carnot/goplanner/logical_planner_test.go b/src/carnot/goplanner/logical_planner_test.go index 9d85d10a4a2..d890b3a6131 100644 --- a/src/carnot/goplanner/logical_planner_test.go +++ b/src/carnot/goplanner/logical_planner_test.go @@ -142,7 +142,6 @@ func TestPlanner_Simple(t *testing.T) { LogicalPlannerState: plannerStatePB, } plannerResultPB, err := c.Plan(queryRequestPB) - if err != nil { log.Fatalln("Failed to plan:", err) os.Exit(1) @@ -197,7 +196,6 @@ func TestPlanner_MissingTable(t *testing.T) { LogicalPlannerState: plannerStatePB, } plannerResultPB, err := c.Plan(queryRequestPB) - if err != nil { log.Fatalln("Failed to plan:", err) os.Exit(1) @@ -234,7 +232,6 @@ func TestPlanner_EmptyString(t *testing.T) { LogicalPlannerState: plannerStatePB, } plannerResultPB, err := c.Plan(queryRequestPB) - if err != nil { t.Fatal("Failed to plan:", err) } diff --git a/src/carnot/plandebugger/main.go b/src/carnot/plandebugger/main.go index 8fb4e16a7af..b2d4e1eae70 100644 --- a/src/carnot/plandebugger/main.go +++ b/src/carnot/plandebugger/main.go @@ -760,8 +760,8 @@ func convertExecFuncs(inputFuncs []*vizierpb.ExecuteScriptRequest_FuncToExecute) } func main() { - var readScriptFromDir = true - var scriptDir = "/home/philkuz/library/pixie/pxl_scripts/px/cluster/" + readScriptFromDir := true + scriptDir := "/home/philkuz/library/pixie/pxl_scripts/px/cluster/" // Create the compiler. var udfInfoPb udfspb.UDFInfo b, err := funcs.Asset("src/vizier/funcs/data/udf.pb") @@ -830,7 +830,6 @@ func main() { agent.QueryBrokerAddress = id.String() } plannerResultPB, err := c.Plan(queryRequestPB) - if err != nil { log.Fatalf("Failed to plan: %v", err) } @@ -873,7 +872,7 @@ func main() { defer f.Close() } - f, err := os.OpenFile(path, os.O_RDWR, 0644) + f, err := os.OpenFile(path, os.O_RDWR, 0o644) if err != nil { log.WithError(err).Fatalf("failed to open") } diff --git a/src/cloud/api/api_server.go b/src/cloud/api/api_server.go index 0951fa38c62..87f68ec76c2 100644 --- a/src/cloud/api/api_server.go +++ b/src/cloud/api/api_server.go @@ -50,8 +50,10 @@ import ( "px.dev/pixie/src/utils/script" ) -const defaultBundleFile = "https://storage.googleapis.com/pixie-prod-artifacts/script-bundles/bundle-core.json" -const ossBundleFile = "https://artifacts.px.dev/pxl_scripts/bundle.json" +const ( + defaultBundleFile = "https://storage.googleapis.com/pixie-prod-artifacts/script-bundles/bundle-core.json" + ossBundleFile = "https://artifacts.px.dev/pxl_scripts/bundle.json" +) func init() { pflag.String("domain_name", "dev.withpixie.dev", "The domain name of Pixie Cloud") diff --git a/src/cloud/api/apienv/env.go b/src/cloud/api/apienv/env.go index 4a2c0dbc5dd..f6889d76666 100644 --- a/src/cloud/api/apienv/env.go +++ b/src/cloud/api/apienv/env.go @@ -84,7 +84,8 @@ type Impl struct { func New(ac authpb.AuthServiceClient, pc profilepb.ProfileServiceClient, oc profilepb.OrgServiceClient, vk vzmgrpb.VZDeploymentKeyServiceClient, ak authpb.APIKeyServiceClient, vc vzmgrpb.VZMgrServiceClient, at artifacttrackerpb.ArtifactTrackerClient, oa IdentityProviderClient, - cm configmanagerpb.ConfigManagerServiceClient, pm pluginpb.PluginServiceClient, rm pluginpb.DataRetentionPluginServiceClient) (APIEnv, error) { + cm configmanagerpb.ConfigManagerServiceClient, pm pluginpb.PluginServiceClient, rm pluginpb.DataRetentionPluginServiceClient, +) (APIEnv, error) { sessionKey := viper.GetString("session_key") if len(sessionKey) == 0 { return nil, errors.New("session_key is required for cookie store") diff --git a/src/cloud/api/controllers/api_key_resolver_test.go b/src/cloud/api/controllers/api_key_resolver_test.go index 729b221f737..2e8021299a8 100644 --- a/src/cloud/api/controllers/api_key_resolver_test.go +++ b/src/cloud/api/controllers/api_key_resolver_test.go @@ -55,7 +55,7 @@ func TestAPIKey(t *testing.T) { defer cleanup() ctx := test.ctx - createTime := time.Date(2020, 03, 9, 17, 46, 100, 1232409, time.UTC) + createTime := time.Date(2020, 0o3, 9, 17, 46, 100, 1232409, time.UTC) createTimePb, err := types.TimestampProto(createTime) if err != nil { t.Fatalf("could not write time %+v as protobuf", createTime) @@ -130,7 +130,7 @@ func TestAPIKeys(t *testing.T) { defer cleanup() ctx := test.ctx - createTime1 := time.Date(2020, 03, 9, 17, 46, 100, 1232409, time.UTC) + createTime1 := time.Date(2020, 0o3, 9, 17, 46, 100, 1232409, time.UTC) createTime1Pb, err := types.TimestampProto(createTime1) if err != nil { t.Fatalf("could not write time %+v as protobuf", createTime1) @@ -231,7 +231,7 @@ func TestCreateAPIKey(t *testing.T) { defer cleanup() ctx := test.ctx - createTime := time.Date(2020, 03, 9, 17, 46, 100, 1232409, time.UTC) + createTime := time.Date(2020, 0o3, 9, 17, 46, 100, 1232409, time.UTC) createTimePb, err := types.TimestampProto(createTime) if err != nil { t.Fatalf("could not write time %+v as protobuf", createTime) diff --git a/src/cloud/api/controllers/config_grpc.go b/src/cloud/api/controllers/config_grpc.go index ef00f0886e5..e1b3cc66901 100644 --- a/src/cloud/api/controllers/config_grpc.go +++ b/src/cloud/api/controllers/config_grpc.go @@ -34,7 +34,8 @@ type ConfigServiceServer struct { // GetConfigForVizier fetches vizier templates and sets up yaml maps by calling // Config Manager service. func (c *ConfigServiceServer) GetConfigForVizier(ctx context.Context, - req *cloudpb.ConfigForVizierRequest) (*cloudpb.ConfigForVizierResponse, error) { + req *cloudpb.ConfigForVizierRequest, +) (*cloudpb.ConfigForVizierResponse, error) { ctx, err := contextWithAuthToken(ctx) if err != nil { return nil, err @@ -76,7 +77,8 @@ func (c *ConfigServiceServer) GetConfigForVizier(ctx context.Context, // GetConfigForOperator provides the key for the operator that is used to send errors and stacktraces to Sentry func (c *ConfigServiceServer) GetConfigForOperator(ctx context.Context, - req *cloudpb.ConfigForOperatorRequest) (*cloudpb.ConfigForOperatorResponse, error) { + req *cloudpb.ConfigForOperatorRequest, +) (*cloudpb.ConfigForOperatorResponse, error) { ctx, err := contextWithAuthToken(ctx) if err != nil { return nil, err diff --git a/src/cloud/api/controllers/deployment_key_resolver_test.go b/src/cloud/api/controllers/deployment_key_resolver_test.go index 3d38afe3ed5..b1e631d2a97 100644 --- a/src/cloud/api/controllers/deployment_key_resolver_test.go +++ b/src/cloud/api/controllers/deployment_key_resolver_test.go @@ -55,7 +55,7 @@ func TestDeploymentKey(t *testing.T) { defer cleanup() ctx := test.ctx - createTime := time.Date(2020, 03, 9, 17, 46, 100, 1232409, time.UTC) + createTime := time.Date(2020, 0o3, 9, 17, 46, 100, 1232409, time.UTC) createTimePb, err := types.TimestampProto(createTime) if err != nil { t.Fatalf("could not write time %+v as protobuf", createTime) @@ -130,7 +130,7 @@ func TestDeploymentKeys(t *testing.T) { defer cleanup() ctx := test.ctx - createTime1 := time.Date(2020, 03, 9, 17, 46, 100, 1232409, time.UTC) + createTime1 := time.Date(2020, 0o3, 9, 17, 46, 100, 1232409, time.UTC) createTime1Pb, err := types.TimestampProto(createTime1) if err != nil { t.Fatalf("could not write time %+v as protobuf", createTime1) @@ -231,7 +231,7 @@ func TestCreateDeploymentKey(t *testing.T) { defer cleanup() ctx := test.ctx - createTime := time.Date(2020, 03, 9, 17, 46, 100, 1232409, time.UTC) + createTime := time.Date(2020, 0o3, 9, 17, 46, 100, 1232409, time.UTC) createTimePb, err := types.TimestampProto(createTime) if err != nil { t.Fatalf("could not write time %+v as protobuf", createTime) diff --git a/src/cloud/api/controllers/org_grpc.go b/src/cloud/api/controllers/org_grpc.go index fb98814516e..90b38793638 100644 --- a/src/cloud/api/controllers/org_grpc.go +++ b/src/cloud/api/controllers/org_grpc.go @@ -185,7 +185,8 @@ func (o *OrganizationServiceServer) UpdateOrg(ctx context.Context, req *cloudpb. // GetUsersInOrg will get users given an org id. func (o *OrganizationServiceServer) GetUsersInOrg(ctx context.Context, req *cloudpb.GetUsersInOrgRequest) (*cloudpb.GetUsersInOrgResponse, - error) { + error, +) { ctx, err := contextWithAuthToken(ctx) if err != nil { return nil, err diff --git a/src/cloud/api/controllers/org_resolver.go b/src/cloud/api/controllers/org_resolver.go index b73ada8b845..a300c08cea4 100644 --- a/src/cloud/api/controllers/org_resolver.go +++ b/src/cloud/api/controllers/org_resolver.go @@ -52,7 +52,6 @@ func (q *QueryResolver) InviteUser(ctx context.Context, args *inviteUserArgs) (* FirstName: args.FirstName, LastName: args.LastName, }) - if err != nil { return nil, rpcErrorHelper(err) } @@ -237,7 +236,6 @@ func (q *QueryResolver) CreateInviteToken(ctx context.Context, args *createInvit resp, err := grpcAPI.CreateInviteToken(ctx, &cloudpb.CreateInviteTokenRequest{ OrgID: utils.ProtoFromUUIDStrOrNil(string(args.OrgID)), }) - if err != nil { return "", rpcErrorHelper(err) } @@ -254,7 +252,6 @@ func (q *QueryResolver) RevokeAllInviteTokens(ctx context.Context, args *revokeA grpcAPI := q.Env.OrgServer _, err := grpcAPI.RevokeAllInviteTokens(ctx, utils.ProtoFromUUIDStrOrNil(string(args.OrgID))) - if err != nil { return false, rpcErrorHelper(err) } @@ -272,7 +269,6 @@ func (q *QueryResolver) VerifyInviteToken(ctx context.Context, args *verifyInvit grpcAPI := q.Env.OrgServer resp, err := grpcAPI.VerifyInviteToken(ctx, &cloudpb.InviteToken{SignedClaims: args.InviteToken}) - if err != nil { return false, rpcErrorHelper(err) } @@ -289,7 +285,6 @@ func (q *QueryResolver) RemoveUserFromOrg(ctx context.Context, args *removeUserF grpcAPI := q.Env.OrgServer resp, err := grpcAPI.RemoveUserFromOrg(ctx, &cloudpb.RemoveUserFromOrgRequest{UserID: utils.ProtoFromUUIDStrOrNil(string(args.UserID))}) - if err != nil { return false, rpcErrorHelper(err) } diff --git a/src/cloud/api/controllers/org_resolver_test.go b/src/cloud/api/controllers/org_resolver_test.go index a2c0221541a..b8cc854bb1c 100644 --- a/src/cloud/api/controllers/org_resolver_test.go +++ b/src/cloud/api/controllers/org_resolver_test.go @@ -217,7 +217,7 @@ func TestOrgSettingsResolver_OrgUsers(t *testing.T) { defer cleanup() ctx := test.ctx - //mockProfile := mock_profile.NewMockProfileServiceClient(ctrl) + // mockProfile := mock_profile.NewMockProfileServiceClient(ctrl) mockClients.MockOrg.EXPECT(). GetUsersInOrg(gomock.Any(), &cloudpb.GetUsersInOrgRequest{ OrgID: utils.ProtoFromUUIDStrOrNil(testingutils.TestOrgID), diff --git a/src/cloud/api/controllers/plugin_resolver.go b/src/cloud/api/controllers/plugin_resolver.go index c3b2bb1ac9f..8430ac5f42b 100644 --- a/src/cloud/api/controllers/plugin_resolver.go +++ b/src/cloud/api/controllers/plugin_resolver.go @@ -131,7 +131,6 @@ func (q *QueryResolver) RetentionPluginInfo(ctx context.Context, args retentionP PluginId: args.ID, Version: args.PluginVersion, }) - if err != nil { return nil, err } @@ -159,7 +158,6 @@ func (q *QueryResolver) OrgRetentionPluginConfig(ctx context.Context, args reten resp, err := q.Env.PluginServer.GetOrgRetentionPluginConfig(ctx, &cloudpb.GetOrgRetentionPluginConfigRequest{ PluginId: args.ID, }) - if err != nil { return configs, err } @@ -180,7 +178,6 @@ func (q *QueryResolver) RetentionPluginConfig(ctx context.Context, args retentio resp, err := q.Env.PluginServer.GetOrgRetentionPluginConfig(ctx, &cloudpb.GetOrgRetentionPluginConfigRequest{ PluginId: args.ID, }) - if err != nil { return nil, err } @@ -259,7 +256,6 @@ func (q *QueryResolver) UpdateRetentionPluginConfig(ctx context.Context, args up } _, err := q.Env.PluginServer.UpdateRetentionPluginConfig(ctx, req) - if err != nil { return false, err } diff --git a/src/cloud/api/controllers/script_test.go b/src/cloud/api/controllers/script_test.go index fd3301d7518..3e8ef9bc6b3 100644 --- a/src/cloud/api/controllers/script_test.go +++ b/src/cloud/api/controllers/script_test.go @@ -45,7 +45,7 @@ func toAny(t *testing.T, msg proto.Message) *types.Any { } func TestScriptMgr(t *testing.T) { - var testVis = &vispb.Vis{ + testVis := &vispb.Vis{ Widgets: []*vispb.Widget{ { FuncOrRef: &vispb.Widget_Func_{ diff --git a/src/cloud/api/controllers/session_middleware.go b/src/cloud/api/controllers/session_middleware.go index cd98cbfcacf..a80d778e7e9 100644 --- a/src/cloud/api/controllers/session_middleware.go +++ b/src/cloud/api/controllers/session_middleware.go @@ -170,7 +170,7 @@ func getAugmentedToken(env apienv.APIEnv, r *http.Request) (string, error) { // If the header "X-Use-Bearer is true we force the use of Bearer auth and ignore sessions. // This is needed to prevent logged in pixie sessions to show up in embedded versions. - forceBearer := false + forceBearer := false //nolint:staticcheck if strings.ToLower(r.Header.Get("X-Use-Bearer")) == "true" { forceBearer = true } diff --git a/src/cloud/api/controllers/user_grpc.go b/src/cloud/api/controllers/user_grpc.go index 9346e13f688..6ea63c44d44 100644 --- a/src/cloud/api/controllers/user_grpc.go +++ b/src/cloud/api/controllers/user_grpc.go @@ -62,7 +62,8 @@ func (u *UserServiceServer) GetUser(ctx context.Context, req *uuidpb.UUID) (*clo // GetUserSettings will retrieve settings given the user ID. func (u *UserServiceServer) GetUserSettings(ctx context.Context, req *cloudpb.GetUserSettingsRequest) (*cloudpb.GetUserSettingsResponse, - error) { + error, +) { ctx, err := contextWithAuthToken(ctx) if err != nil { return nil, err @@ -84,7 +85,8 @@ func (u *UserServiceServer) GetUserSettings(ctx context.Context, req *cloudpb.Ge // UpdateUserSettings will update the settings for the given user. func (u *UserServiceServer) UpdateUserSettings(ctx context.Context, req *cloudpb.UpdateUserSettingsRequest) (*cloudpb.UpdateUserSettingsResponse, - error) { + error, +) { ctx, err := contextWithAuthToken(ctx) if err != nil { return nil, err @@ -105,7 +107,8 @@ func (u *UserServiceServer) UpdateUserSettings(ctx context.Context, req *cloudpb // UpdateUser will update user information. func (u *UserServiceServer) UpdateUser(ctx context.Context, req *cloudpb.UpdateUserRequest) (*cloudpb.UserInfo, - error) { + error, +) { sCtx, err := authcontext.FromContext(ctx) if err != nil { return nil, err @@ -162,7 +165,8 @@ func (u *UserServiceServer) UpdateUser(ctx context.Context, req *cloudpb.UpdateU // GetUserAttributes will retrieve attributes given the user ID. func (u *UserServiceServer) GetUserAttributes(ctx context.Context, req *cloudpb.GetUserAttributesRequest) (*cloudpb.GetUserAttributesResponse, - error) { + error, +) { ctx, err := contextWithAuthToken(ctx) if err != nil { return nil, err @@ -184,7 +188,8 @@ func (u *UserServiceServer) GetUserAttributes(ctx context.Context, req *cloudpb. // SetUserAttributes will update the attributes for the given user. func (u *UserServiceServer) SetUserAttributes(ctx context.Context, req *cloudpb.SetUserAttributesRequest) (*cloudpb.SetUserAttributesResponse, - error) { + error, +) { ctx, err := contextWithAuthToken(ctx) if err != nil { return nil, err diff --git a/src/cloud/api/controllers/vizier_cluster_grpc.go b/src/cloud/api/controllers/vizier_cluster_grpc.go index efa53a3060a..3f3838f903e 100644 --- a/src/cloud/api/controllers/vizier_cluster_grpc.go +++ b/src/cloud/api/controllers/vizier_cluster_grpc.go @@ -169,7 +169,6 @@ func (v *VizierClusterInfo) getClusterInfoForViziers(ctx context.Context, ids [] vzInfoResp, err := v.VzMgr.GetVizierInfos(ctx, &vzmgrpb.GetVizierInfosRequest{ VizierIDs: ids, }) - if err != nil { return nil, err } diff --git a/src/cloud/api/controllers/vizier_cluster_test.go b/src/cloud/api/controllers/vizier_cluster_test.go index 9c0564dd8c7..55608c6e1a0 100644 --- a/src/cloud/api/controllers/vizier_cluster_test.go +++ b/src/cloud/api/controllers/vizier_cluster_test.go @@ -253,18 +253,19 @@ func TestVizierClusterInfo_GetClusterInfoDuplicates(t *testing.T) { mockClients.MockVzMgr.EXPECT().GetVizierInfos(gomock.Any(), &vzmgrpb.GetVizierInfosRequest{ VizierIDs: []*uuidpb.UUID{clusterID, clusterID2}, }).Return(&vzmgrpb.GetVizierInfosResponse{ - VizierInfos: []*cvmsgspb.VizierInfo{{ - VizierID: clusterID, - Status: cvmsgspb.VZ_ST_HEALTHY, - LastHeartbeatNs: int64(1305646598000000000), - Config: &cvmsgspb.VizierConfig{}, - VizierVersion: "1.2.3", - ClusterUID: "a UID", - ClusterName: "gke_pl-dev-infra_us-west1-a_dev-cluster-zasgar", - ClusterVersion: "5.6.7", - NumNodes: 5, - NumInstrumentedNodes: 3, - }, + VizierInfos: []*cvmsgspb.VizierInfo{ + { + VizierID: clusterID, + Status: cvmsgspb.VZ_ST_HEALTHY, + LastHeartbeatNs: int64(1305646598000000000), + Config: &cvmsgspb.VizierConfig{}, + VizierVersion: "1.2.3", + ClusterUID: "a UID", + ClusterName: "gke_pl-dev-infra_us-west1-a_dev-cluster-zasgar", + ClusterVersion: "5.6.7", + NumNodes: 5, + NumInstrumentedNodes: 3, + }, { VizierID: clusterID, Status: cvmsgspb.VZ_ST_HEALTHY, @@ -330,18 +331,19 @@ func TestVizierClusterInfo_GetClusterInfo_Homoglyphs(t *testing.T) { mockClients.MockVzMgr.EXPECT().GetVizierInfos(gomock.Any(), &vzmgrpb.GetVizierInfosRequest{ VizierIDs: []*uuidpb.UUID{clusterID, clusterID2}, }).Return(&vzmgrpb.GetVizierInfosResponse{ - VizierInfos: []*cvmsgspb.VizierInfo{{ - VizierID: clusterID, - Status: cvmsgspb.VZ_ST_HEALTHY, - LastHeartbeatNs: int64(1305646598000000000), - Config: &cvmsgspb.VizierConfig{}, - VizierVersion: "1.2.3", - ClusterUID: "a UID", - ClusterName: "gke_pl-dev-infra_us-west1-a_dev-cluster-zasgar", - ClusterVersion: "5.6.7", - NumNodes: 5, - NumInstrumentedNodes: 3, - }, + VizierInfos: []*cvmsgspb.VizierInfo{ + { + VizierID: clusterID, + Status: cvmsgspb.VZ_ST_HEALTHY, + LastHeartbeatNs: int64(1305646598000000000), + Config: &cvmsgspb.VizierConfig{}, + VizierVersion: "1.2.3", + ClusterUID: "a UID", + ClusterName: "gke_pl-dev-infra_us-west1-a_dev-cluster-zasgar", + ClusterVersion: "5.6.7", + NumNodes: 5, + NumInstrumentedNodes: 3, + }, { VizierID: clusterID, Status: cvmsgspb.VZ_ST_HEALTHY, @@ -401,16 +403,17 @@ func TestVizierClusterInfo_GetClusterInfoWithID(t *testing.T) { mockClients.MockVzMgr.EXPECT().GetVizierInfos(gomock.Any(), &vzmgrpb.GetVizierInfosRequest{ VizierIDs: []*uuidpb.UUID{clusterID}, }).Return(&vzmgrpb.GetVizierInfosResponse{ - VizierInfos: []*cvmsgspb.VizierInfo{{ - VizierID: clusterID, - Status: cvmsgspb.VZ_ST_HEALTHY, - LastHeartbeatNs: int64(1305646598000000000), - Config: &cvmsgspb.VizierConfig{}, - VizierVersion: "1.2.3", - ClusterUID: "a UID", - ClusterName: "some cluster", - ClusterVersion: "5.6.7", - }, + VizierInfos: []*cvmsgspb.VizierInfo{ + { + VizierID: clusterID, + Status: cvmsgspb.VZ_ST_HEALTHY, + LastHeartbeatNs: int64(1305646598000000000), + Config: &cvmsgspb.VizierConfig{}, + VizierVersion: "1.2.3", + ClusterUID: "a UID", + ClusterName: "some cluster", + ClusterVersion: "5.6.7", + }, }, }, nil) diff --git a/src/cloud/api/ptproxy/vizier_pt_proxy.go b/src/cloud/api/ptproxy/vizier_pt_proxy.go index e55e3d747d2..02bf938943b 100644 --- a/src/cloud/api/ptproxy/vizier_pt_proxy.go +++ b/src/cloud/api/ptproxy/vizier_pt_proxy.go @@ -84,7 +84,6 @@ func (v *VizierPassThroughProxy) isScriptModified(ctx context.Context, script st } resp, err := v.sm.CheckScriptExists(ctx, req) - if err != nil { return false, err } diff --git a/src/cloud/artifact_tracker/artifact_tracker_server.go b/src/cloud/artifact_tracker/artifact_tracker_server.go index 81d061d099d..e54aa4929a3 100644 --- a/src/cloud/artifact_tracker/artifact_tracker_server.go +++ b/src/cloud/artifact_tracker/artifact_tracker_server.go @@ -58,7 +58,6 @@ func init() { func loadServiceAccountConfig() *jwt.Config { saKeyFile := viper.GetString("sa_key_path") saKey, err := os.ReadFile(saKeyFile) - if err != nil { return nil } diff --git a/src/cloud/artifact_tracker/controllers/server.go b/src/cloud/artifact_tracker/controllers/server.go index 579effd3cc4..9570efd5bc7 100644 --- a/src/cloud/artifact_tracker/controllers/server.go +++ b/src/cloud/artifact_tracker/controllers/server.go @@ -173,7 +173,7 @@ func (s *Server) GetDownloadLink(ctx context.Context, in *apb.GetDownloadLinkReq return nil, status.Error(codes.InvalidArgument, "artifact type cannot be unknown") } - if !(at == vpb.AT_DARWIN_AMD64 || at == vpb.AT_LINUX_AMD64 || at == vpb.AT_CONTAINER_SET_YAMLS || at == vpb.AT_CONTAINER_SET_TEMPLATE_YAMLS) { + if at != vpb.AT_DARWIN_AMD64 && at != vpb.AT_LINUX_AMD64 && at != vpb.AT_CONTAINER_SET_YAMLS && at != vpb.AT_CONTAINER_SET_TEMPLATE_YAMLS { return nil, status.Error(codes.InvalidArgument, "artifact type cannot be downloaded") } @@ -233,7 +233,6 @@ func (s *Server) GetDownloadLink(ctx context.Context, in *apb.GetDownloadLinkReq sha256ObjectPath := objectPath + ".sha256" r, err := s.sc.Bucket(bucket).Object(sha256ObjectPath).NewReader(ctx) - if err != nil { return nil, status.Error(codes.Internal, "failed to fetch sha256 file") } diff --git a/src/cloud/auth/apikey/api_key.go b/src/cloud/auth/apikey/api_key.go index 5aa25b88433..0974f27461e 100644 --- a/src/cloud/auth/apikey/api_key.go +++ b/src/cloud/auth/apikey/api_key.go @@ -39,10 +39,8 @@ import ( "px.dev/pixie/src/utils" ) -var ( - // ErrAPIKeyNotFound is used when the specified API key cannot be located. - ErrAPIKeyNotFound = errors.New("invalid API key") -) +// ErrAPIKeyNotFound is used when the specified API key cannot be located. +var ErrAPIKeyNotFound = errors.New("invalid API key") const ( // apiKeyPrefix is applied to all api keys to make them easier to identify. diff --git a/src/cloud/auth/controllers/auth0.go b/src/cloud/auth/controllers/auth0.go index 6b09bc290cf..9bbfd16119e 100644 --- a/src/cloud/auth/controllers/auth0.go +++ b/src/cloud/auth/controllers/auth0.go @@ -218,7 +218,6 @@ func (a *Auth0Connector) GetUserInfo(userID string) (*UserInfo, error) { req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", managementToken)) req.Header.Set("Content-Type", "application/json") resp, err := client.Do(req) - if err != nil { return nil, err } diff --git a/src/cloud/auth/controllers/login.go b/src/cloud/auth/controllers/login.go index 9217200091f..894ebc806d4 100644 --- a/src/cloud/auth/controllers/login.go +++ b/src/cloud/auth/controllers/login.go @@ -385,7 +385,7 @@ func (s *Server) Signup(ctx context.Context, in *authpb.SignupRequest) (*authpb. if !utils.IsNilUUIDProto(inviteOrgID) { orgInfoPb, err := s.env.OrgClient().GetOrg(ctx, inviteOrgID) if err != nil { - return nil, status.Errorf(codes.Internal, err.Error()) + return nil, status.Error(codes.Internal, err.Error()) } if orgInfoPb == nil { return nil, status.Errorf(codes.InvalidArgument, "misformatted invite link") @@ -524,7 +524,8 @@ func (s *Server) GetAugmentedTokenForAPIKey(ctx context.Context, in *authpb.GetA // GetAugmentedToken produces augmented tokens for the user based on passed in credentials. func (s *Server) GetAugmentedToken( ctx context.Context, in *authpb.GetAugmentedAuthTokenRequest) ( - *authpb.GetAugmentedAuthTokenResponse, error) { + *authpb.GetAugmentedAuthTokenResponse, error, +) { // Check the incoming token and make sure it's valid. aCtx := authcontext.New() @@ -600,7 +601,6 @@ func (s *Server) createInvitedUser(ctx context.Context, req *authpb.InviteUserRe IdentityProvider: ident.IdentityProvider, AuthProviderID: ident.AuthProviderID, }, req.OrgID) - if err != nil { return nil, err } @@ -673,7 +673,6 @@ func (s *Server) CreateOrgAndInviteUser(ctx context.Context, req *authpb.CreateO IdentityProvider: ident.IdentityProvider, AuthProviderID: ident.AuthProviderID, }) - if err != nil { return nil, fmt.Errorf("unable to create org and user: %v", err) } diff --git a/src/cloud/autocomplete/autocomplete.go b/src/cloud/autocomplete/autocomplete.go index 02422cd4b5b..efdf448b968 100644 --- a/src/cloud/autocomplete/autocomplete.go +++ b/src/cloud/autocomplete/autocomplete.go @@ -436,9 +436,11 @@ func (cmd *Command) ToFormatString(action cloudpb.AutocompleteActionType, s Sugg for k := range knownTypes { scriptTypes = append(scriptTypes, k) } - res, err := s.GetSuggestions([]*SuggestionRequest{{orgID, clusterUID, "", + res, err := s.GetSuggestions([]*SuggestionRequest{{ + orgID, clusterUID, "", []cloudpb.AutocompleteEntityKind{cloudpb.AEK_POD, cloudpb.AEK_SVC, cloudpb.AEK_NAMESPACE, cloudpb.AEK_SCRIPT}, - scriptTypes}}) + scriptTypes, + }}) if err == nil { cmd.TabStops[curTabStop].Suggestions = res[0].Suggestions } diff --git a/src/cloud/autocomplete/suggester.go b/src/cloud/autocomplete/suggester.go index 6e9387c020d..2cf1b665a64 100644 --- a/src/cloud/autocomplete/suggester.go +++ b/src/cloud/autocomplete/suggester.go @@ -158,7 +158,6 @@ func (e *ElasticSuggester) GetSuggestions(reqs []*SuggestionRequest) ([]*Suggest } resp, err := ms.Do(context.Background()) - if err != nil { return nil, err } @@ -173,9 +172,10 @@ func (e *ElasticSuggester) GetSuggestions(reqs []*SuggestionRequest) ([]*Suggest scriptArgMap[s.ScriptName] = make([]cloudpb.AutocompleteEntityKind, 0) for _, a := range s.Vis.Variables { aKind := cloudpb.AEK_UNKNOWN - if a.Type == vispb.PX_POD { + switch a.Type { + case vispb.PX_POD: aKind = cloudpb.AEK_POD - } else if a.Type == vispb.PX_SERVICE { + case vispb.PX_SERVICE: aKind = cloudpb.AEK_SVC } @@ -273,7 +273,7 @@ func (e *ElasticSuggester) GetSuggestions(reqs []*SuggestionRequest) ([]*Suggest // TODO(michellenguyen): Remove namespace handling when we create a new index and ensure there are no more // documents with namespace. resName := res.Name - if res.NS != "" && !(md.EsMDType(res.Kind) == md.EsMDTypeNamespace || md.EsMDType(res.Kind) == md.EsMDTypeNode) { + if res.NS != "" && !(md.EsMDType(res.Kind) == md.EsMDTypeNamespace || md.EsMDType(res.Kind) == md.EsMDTypeNode) { //nolint:staticcheck resName = fmt.Sprintf("%s/%s", res.NS, res.Name) } diff --git a/src/cloud/config_manager/controllers/server.go b/src/cloud/config_manager/controllers/server.go index c9c3d5dd81c..b10c221eca9 100644 --- a/src/cloud/config_manager/controllers/server.go +++ b/src/cloud/config_manager/controllers/server.go @@ -157,7 +157,8 @@ func AddDefaultTableStoreSize(pemMemoryRequest string, customPEMFlags map[string // GetConfigForVizier provides yaml names and content that can be used to deploy Vizier func (s *Server) GetConfigForVizier(ctx context.Context, - in *cpb.ConfigForVizierRequest) (*cpb.ConfigForVizierResponse, error) { + in *cpb.ConfigForVizierRequest, +) (*cpb.ConfigForVizierResponse, error) { log.Info("Fetching config for Vizier") templatedYAMLs, err := fetchVizierTemplates(ctx, "", in.VzSpec.Version, s.atClient) @@ -301,7 +302,8 @@ func getSentryDSN(vizierVersion string) string { // fetchVizierTemplates gets a download link, untars file, and // converts to yaml maps. func fetchVizierTemplates(ctx context.Context, authToken, - versionStr string, atClient atpb.ArtifactTrackerClient) ([]*yamls.YAMLFile, error) { + versionStr string, atClient atpb.ArtifactTrackerClient, +) ([]*yamls.YAMLFile, error) { req := &atpb.GetDownloadLinkRequest{ ArtifactName: "vizier", VersionStr: versionStr, diff --git a/src/cloud/config_manager/controllers/vizier_feature_flags.go b/src/cloud/config_manager/controllers/vizier_feature_flags.go index 99c78b4bda2..280b59edf72 100644 --- a/src/cloud/config_manager/controllers/vizier_feature_flags.go +++ b/src/cloud/config_manager/controllers/vizier_feature_flags.go @@ -124,7 +124,8 @@ func AddFeatureFlagsToTemplate(client VizierFeatureFlagClient, orgID uuid.UUID, // AddFeatureFlagToTemplate adds an individual feature flag to the Vizier template. func AddFeatureFlagToTemplate(client VizierFeatureFlagClient, orgID uuid.UUID, featureFlag string, pemFlag string, defaultVal interface{}, - tmplValues *vizieryamls.VizierTmplValues) { + tmplValues *vizieryamls.VizierTmplValues, +) { if _, hasValue := tmplValues.CustomPEMFlags[pemFlag]; !hasValue { switch dv := defaultVal.(type) { case bool: diff --git a/src/cloud/cron_script/controllers/server.go b/src/cloud/cron_script/controllers/server.go index bc8062b9905..c4d3eafd15f 100644 --- a/src/cloud/cron_script/controllers/server.go +++ b/src/cloud/cron_script/controllers/server.go @@ -350,7 +350,6 @@ func (s *Server) GetScripts(ctx context.Context, req *cronscriptpb.GetScriptsReq cronErr := status.Error(codes.Internal, "Failed to get cron scripts") query, args, err := sqlx.In(strQuery, s.dbKey, orgID, ids) - if err != nil { log.WithError(err).Error("Failed to bind parameters for cron scripts query") return nil, cronErr @@ -358,7 +357,6 @@ func (s *Server) GetScripts(ctx context.Context, req *cronscriptpb.GetScriptsReq query = s.db.Rebind(query) rows, err := s.db.Queryx(query, args...) - if err != nil { log.WithError(err).Error(fmt.Sprintf("Failed to run cron scripts query: %s", query)) return nil, cronErr diff --git a/src/cloud/cron_script/controllers/server_test.go b/src/cloud/cron_script/controllers/server_test.go index 18513ed4025..2f4bfb25223 100644 --- a/src/cloud/cron_script/controllers/server_test.go +++ b/src/cloud/cron_script/controllers/server_test.go @@ -574,7 +574,8 @@ func TestServer_HandleChecksumRequest(t *testing.T) { orgID := "223e4567-e89b-12d3-a456-426655440001" mockVZMgr.EXPECT().GetOrgFromVizier(gomock.Any(), utils.ProtoFromUUIDStrOrNil(vzID)).Return(&vzmgrpb.GetOrgFromVizierResponse{ - OrgID: utils.ProtoFromUUIDStrOrNil(orgID)}, nil) + OrgID: utils.ProtoFromUUIDStrOrNil(orgID), + }, nil) nc, natsCleanup := testingutils.MustStartTestNATS(t) defer natsCleanup() @@ -633,7 +634,8 @@ func TestServer_HandleGetScriptsRequest(t *testing.T) { orgID := "223e4567-e89b-12d3-a456-426655440001" mockVZMgr.EXPECT().GetOrgFromVizier(gomock.Any(), utils.ProtoFromUUIDStrOrNil(vzID)).Return(&vzmgrpb.GetOrgFromVizierResponse{ - OrgID: utils.ProtoFromUUIDStrOrNil(orgID)}, nil) + OrgID: utils.ProtoFromUUIDStrOrNil(orgID), + }, nil) nc, natsCleanup := testingutils.MustStartTestNATS(t) defer natsCleanup() diff --git a/src/cloud/indexer/indexer_server.go b/src/cloud/indexer/indexer_server.go index 95b49fe2ac5..e743eab5922 100644 --- a/src/cloud/indexer/indexer_server.go +++ b/src/cloud/indexer/indexer_server.go @@ -79,7 +79,6 @@ func mustConnectElastic() *elastic.Client { Passwd: viper.GetString("es_passwd"), CaCertFile: viper.GetString("es_ca_cert"), }) - if err != nil { log.WithError(err).Fatalf("Failed to connect to elastic at url: %s", esURL) } diff --git a/src/cloud/indexer/md/md.go b/src/cloud/indexer/md/md.go index b2950ff79b1..add3e520799 100644 --- a/src/cloud/indexer/md/md.go +++ b/src/cloud/indexer/md/md.go @@ -39,12 +39,10 @@ const ( defaultFlushInterval = time.Second * 10 ) -var ( - elasticFailuresCollector = prometheus.NewCounterVec(prometheus.CounterOpts{ - Name: "elastic_index_failures", - Help: "The number of failures for the vizier_id index", - }, []string{"vizier_id"}) -) +var elasticFailuresCollector = prometheus.NewCounterVec(prometheus.CounterOpts{ + Name: "elastic_index_failures", + Help: "The number of failures for the vizier_id index", +}, []string{"vizier_id"}) func init() { prometheus.MustRegister(elasticFailuresCollector) @@ -70,7 +68,8 @@ type VizierIndexer struct { // NewVizierIndexerWithBulkSettings creates a new Vizier indexer with bulk settings. func NewVizierIndexerWithBulkSettings(vizierID uuid.UUID, orgID uuid.UUID, k8sUID, indexName string, st msgbus.Streamer, - es *elastic.Client, batchFlushInterval time.Duration) *VizierIndexer { + es *elastic.Client, batchFlushInterval time.Duration, +) *VizierIndexer { return &VizierIndexer{ st: st, es: es, diff --git a/src/cloud/indexer/md/md_test.go b/src/cloud/indexer/md/md_test.go index b78e5b6f49d..0c8fe9768e0 100644 --- a/src/cloud/indexer/md/md_test.go +++ b/src/cloud/indexer/md/md_test.go @@ -38,9 +38,11 @@ import ( const indexName = "test_md_index" -var elasticClient *elastic.Client -var vzID uuid.UUID -var orgID uuid.UUID +var ( + elasticClient *elastic.Client + vzID uuid.UUID + orgID uuid.UUID +) func TestMain(m *testing.M) { es, cleanup, err := docker.SetupElastic() diff --git a/src/cloud/metrics/controllers/server.go b/src/cloud/metrics/controllers/server.go index e628be48088..8681584dee4 100644 --- a/src/cloud/metrics/controllers/server.go +++ b/src/cloud/metrics/controllers/server.go @@ -26,8 +26,6 @@ import ( "sync" "time" - "px.dev/pixie/src/shared/bq" - "cloud.google.com/go/bigquery" "github.com/gogo/protobuf/proto" "github.com/gogo/protobuf/types" @@ -38,6 +36,7 @@ import ( log "github.com/sirupsen/logrus" "px.dev/pixie/src/cloud/shared/vzshard" + "px.dev/pixie/src/shared/bq" "px.dev/pixie/src/shared/cvmsgs" "px.dev/pixie/src/shared/cvmsgspb" ) diff --git a/src/cloud/plugin/controllers/server.go b/src/cloud/plugin/controllers/server.go index e2e2097f5e0..55254742954 100644 --- a/src/cloud/plugin/controllers/server.go +++ b/src/cloud/plugin/controllers/server.go @@ -560,7 +560,7 @@ func (s *Server) UpdateOrgRetentionPluginConfig(ctx context.Context, req *plugin if req.Version != nil { version = req.Version.Value } - if req.Configurations != nil && len(req.Configurations) > 0 { + if len(req.Configurations) > 0 { configurations, _ = json.Marshal(req.Configurations) } @@ -1024,7 +1024,6 @@ func (s *Server) UpdateRetentionScript(ctx context.Context, req *pluginpb.Update // Update retention scripts with new info. query = `UPDATE plugin_retention_scripts SET script_name = $1, export_url = PGP_SYM_ENCRYPT($2, $3), description = $4 WHERE script_id = $5` _, err = txn.Exec(query, scriptName, exportURL, s.dbKey, description, scriptID) - if err != nil { return nil, status.Errorf(codes.Internal, "Failed to update retention script") } diff --git a/src/cloud/profile/controllers/server.go b/src/cloud/profile/controllers/server.go index 66e6391056f..10ab35c4532 100644 --- a/src/cloud/profile/controllers/server.go +++ b/src/cloud/profile/controllers/server.go @@ -167,12 +167,14 @@ func orgInfoToProto(o *datastore.OrgInfo) *profilepb.OrgInfo { } func toExternalError(err error) error { - if err == datastore.ErrOrgNotFound { + switch err { + case datastore.ErrOrgNotFound: return status.Error(codes.NotFound, "no such org") - } else if err == datastore.ErrUserNotFound { + case datastore.ErrUserNotFound: return status.Error(codes.NotFound, "no such user") + default: + return err } - return err } // CreateUser is the GRPC method to create new user. @@ -274,7 +276,6 @@ func (s *Server) CreateOrgAndUser(ctx context.Context, req *profilepb.CreateOrgA OrgID: utils.ProtoFromUUID(orgID), ProjectName: DefaultProjectName, }) - if err != nil { deleteErr := s.ods.DeleteOrgAndUsers(orgID) if deleteErr != nil { @@ -594,7 +595,6 @@ func (s *Server) AddOrgIDEConfig(ctx context.Context, req *profilepb.AddOrgIDECo Name: req.Config.IDEName, Path: req.Config.Path, }) - if err != nil { return nil, err } diff --git a/src/cloud/profile/datastore/datastore.go b/src/cloud/profile/datastore/datastore.go index aeb50422c16..817c06a9d9c 100644 --- a/src/cloud/profile/datastore/datastore.go +++ b/src/cloud/profile/datastore/datastore.go @@ -566,7 +566,6 @@ func (d *Datastore) UpdateUserSettings(settings *UserSettings) error { query = `UPDATE user_settings SET %s = %s WHERE user_id = :user_id` } _, err = d.db.NamedExec(fmt.Sprintf(query, strings.Join(cols, ","), strings.Join(params, ",")), settings) - if err != nil { return err } @@ -583,7 +582,6 @@ func (d *Datastore) UpdateUserSettings(settings *UserSettings) error { func (d *Datastore) createUserSettingsUsingTxn(tx *sqlx.Tx, id uuid.UUID) error { query := `INSERT INTO user_settings (user_id) VALUES ($1)` _, err := tx.Exec(query, id) - if err != nil { return err } @@ -636,7 +634,6 @@ func (d *Datastore) SetUserAttributes(attributes *UserAttributes) error { query = `UPDATE user_attributes SET %s = %s WHERE user_id = :user_id` } _, err = d.db.NamedExec(fmt.Sprintf(query, strings.Join(cols, ","), strings.Join(params, ",")), attributes) - if err != nil { return err } @@ -653,7 +650,6 @@ func (d *Datastore) SetUserAttributes(attributes *UserAttributes) error { func (d *Datastore) createUserAttributesUsingTxn(tx *sqlx.Tx, id uuid.UUID) error { query := `INSERT INTO user_attributes (user_id) VALUES ($1)` _, err := tx.Exec(query, id) - if err != nil { return err } diff --git a/src/cloud/project_manager/controllers/server.go b/src/cloud/project_manager/controllers/server.go index 20c8c7e953c..125d2bbc04a 100644 --- a/src/cloud/project_manager/controllers/server.go +++ b/src/cloud/project_manager/controllers/server.go @@ -131,7 +131,6 @@ func (s *Server) GetProjectForOrg(ctx context.Context, req *uuidpb.UUID) (*proje } projectInfo, err := s.datastore.GetProjectForOrg(parsedOrgID) - if err != nil { return nil, status.Error(codes.Internal, err.Error()) } diff --git a/src/cloud/project_manager/controllers/server_test.go b/src/cloud/project_manager/controllers/server_test.go index 5a4ceb6a204..000632e7ba2 100644 --- a/src/cloud/project_manager/controllers/server_test.go +++ b/src/cloud/project_manager/controllers/server_test.go @@ -35,8 +35,7 @@ import ( "px.dev/pixie/src/utils" ) -type fakeDatastore struct { -} +type fakeDatastore struct{} func (d *fakeDatastore) RegisterProject(orgID uuid.UUID, projectName string) error { return nil diff --git a/src/cloud/project_manager/datastore/datastore_test.go b/src/cloud/project_manager/datastore/datastore_test.go index c7ac9c9fb4b..5272dd8d396 100644 --- a/src/cloud/project_manager/datastore/datastore_test.go +++ b/src/cloud/project_manager/datastore/datastore_test.go @@ -24,8 +24,8 @@ import ( "testing" "github.com/gofrs/uuid" - _ "github.com/golang-migrate/migrate/source/go_bindata" - bindata "github.com/golang-migrate/migrate/source/go_bindata" + _ "github.com/golang-migrate/migrate/source/go_bindata" //nolint:staticcheck + bindata "github.com/golang-migrate/migrate/source/go_bindata" //nolint:staticcheck _ "github.com/jackc/pgx/stdlib" "github.com/jmoiron/sqlx" "github.com/stretchr/testify/assert" @@ -36,8 +36,10 @@ import ( "px.dev/pixie/src/shared/services/pgtest" ) -var testOrgID1 = uuid.FromStringOrNil("123e4567-e89b-12d3-a456-426655440000") -var testOrgID2 = uuid.FromStringOrNil("223e4567-e89b-12d3-a456-426655440000") +var ( + testOrgID1 = uuid.FromStringOrNil("123e4567-e89b-12d3-a456-426655440000") + testOrgID2 = uuid.FromStringOrNil("223e4567-e89b-12d3-a456-426655440000") +) func mustLoadTestData(db *sqlx.DB) { db.MustExec(`DELETE from projects`) diff --git a/src/cloud/scriptmgr/controllers/placement_compile_test.go b/src/cloud/scriptmgr/controllers/placement_compile_test.go index 32918328f4a..9470384c803 100644 --- a/src/cloud/scriptmgr/controllers/placement_compile_test.go +++ b/src/cloud/scriptmgr/controllers/placement_compile_test.go @@ -215,6 +215,7 @@ const badServiceNameArgInFnPlacement = `{ } } }` + const badGlobalArgPlacement = `{ "name": "service-latencies", "args": { diff --git a/src/cloud/scriptmgr/controllers/server_test.go b/src/cloud/scriptmgr/controllers/server_test.go index fa5b2adced0..917eaa934dc 100644 --- a/src/cloud/scriptmgr/controllers/server_test.go +++ b/src/cloud/scriptmgr/controllers/server_test.go @@ -41,11 +41,15 @@ import ( "px.dev/pixie/src/utils/testingutils" ) -const bundleBucket = "test-bucket" -const bundlePath = "bundle.json" +const ( + bundleBucket = "test-bucket" + bundlePath = "bundle.json" +) -type scriptDef = map[string]string -type scriptsDef = map[string]scriptDef +type ( + scriptDef = map[string]string + scriptsDef = map[string]scriptDef +) var testLiveView = `{ "widgets": [{ diff --git a/src/cloud/shared/esutils/errors.go b/src/cloud/shared/esutils/errors.go index 34a9c73a386..af9647ba28c 100644 --- a/src/cloud/shared/esutils/errors.go +++ b/src/cloud/shared/esutils/errors.go @@ -24,8 +24,10 @@ import ( "github.com/olivere/elastic/v7" ) -var mergeFailureReg *regexp.Regexp -var settingsNonDynReg *regexp.Regexp +var ( + mergeFailureReg *regexp.Regexp + settingsNonDynReg *regexp.Regexp +) func init() { mergeFailureReg = regexp.MustCompile( diff --git a/src/cloud/shared/idprovider/client.go b/src/cloud/shared/idprovider/client.go index ba71d838cda..a6896852aad 100644 --- a/src/cloud/shared/idprovider/client.go +++ b/src/cloud/shared/idprovider/client.go @@ -462,7 +462,6 @@ func (c *HydraKratosClient) AcceptConsent(ctx context.Context, challenge string) ConsentChallenge: challenge, Context: ctx, }) - if err != nil { log.Debug("error on hydra.AcceptConsentRequest:") return nil, err @@ -532,7 +531,7 @@ func (c *HydraKratosClient) HandleLogin(session *sessions.Session, w http.Respon // Copy the header because the header contains a necessary Set-Cookie from the OAuth server. for k, vv := range respHeader { // We only want to cookie and Location headers, otherwise Firefox and Safari complain. - if !(k == "Set-Cookie" || k == "Location") { + if k != "Set-Cookie" && k != "Location" { continue } for _, v := range vv { diff --git a/src/cloud/shared/idprovider/client_test.go b/src/cloud/shared/idprovider/client_test.go index 52bc8c60d25..46039c63393 100644 --- a/src/cloud/shared/idprovider/client_test.go +++ b/src/cloud/shared/idprovider/client_test.go @@ -76,6 +76,7 @@ func fillDefaults(p *testClientConfig) *testClientConfig { return p } + func makeClientFromConfig(t *testing.T, p *testClientConfig) (*HydraKratosClient, func()) { p = fillDefaults(p) @@ -93,7 +94,7 @@ func makeClientFromConfig(t *testing.T, p *testClientConfig) (*HydraKratosClient assert.Equal(t, "abcd", r.Header.Get("ory_hydra_session")) // The actual endpoint sets a cookie, so we want do forward that as well. w.Header().Set("Set-Cookie", p.hydraPublicHostCookie) - http.Redirect(w, r, consentURL.String(), 302) + http.Redirect(w, r, consentURL.String(), http.StatusFound) })) acceptConsentRequestFn := func(params *hydraAdmin.AcceptConsentRequestParams) (*hydraAdmin.AcceptConsentRequestOK, error) { diff --git a/src/cloud/shared/vzshard/vzshard.go b/src/cloud/shared/vzshard/vzshard.go index 1bcd4918092..bdc6195cfda 100644 --- a/src/cloud/shared/vzshard/vzshard.go +++ b/src/cloud/shared/vzshard/vzshard.go @@ -57,11 +57,11 @@ func ShardMax() string { // GenerateShardRange shard range produces the hex values 00-ff for the shards as configured. func GenerateShardRange() []string { - min := minShard() - max := maxShard() - r := make([]string, max-min+1) - for i := min; i <= max; i++ { - r[i-min] = shardIntToHex(i) + minS := minShard() + maxS := maxShard() + r := make([]string, maxS-minS+1) + for i := minS; i <= maxS; i++ { + r[i-minS] = shardIntToHex(i) } return r } diff --git a/src/cloud/vzconn/bridge/bridge.go b/src/cloud/vzconn/bridge/bridge.go index e05fc435467..d985217754f 100644 --- a/src/cloud/vzconn/bridge/bridge.go +++ b/src/cloud/vzconn/bridge/bridge.go @@ -92,7 +92,6 @@ func (s *NATSBridgeController) Run() error { log.WithField("ClusterID:", s.clusterID).Info("Subscribing to cluster IDs") topics := vzshard.C2VTopic("*", s.clusterID) natsSub, err := s.nc.ChanSubscribe(topics, s.subCh) - if err != nil { s.l.WithError(err).Error("error with ChanQueueSubscribe") return err diff --git a/src/cloud/vzconn/bridge/grpc.go b/src/cloud/vzconn/bridge/grpc.go index 206657d5d2e..1d4c8e65175 100644 --- a/src/cloud/vzconn/bridge/grpc.go +++ b/src/cloud/vzconn/bridge/grpc.go @@ -40,9 +40,7 @@ import ( utils2 "px.dev/pixie/src/utils" ) -var ( - bridgeMetricsCollector = &natsBridgeMetricCollector{} -) +var bridgeMetricsCollector = &natsBridgeMetricCollector{} func init() { prometheus.MustRegister(bridgeMetricsCollector) diff --git a/src/cloud/vzmgr/controllers/vizier_updater.go b/src/cloud/vzmgr/controllers/vizier_updater.go index 6dfaef770ae..209f09d0483 100644 --- a/src/cloud/vzmgr/controllers/vizier_updater.go +++ b/src/cloud/vzmgr/controllers/vizier_updater.go @@ -238,7 +238,6 @@ func (u *Updater) sendNATSMessage(topic string, msg *types.Any, vizierID uuid.UU topic = vzshard.C2VTopic(topic, vizierID) log.WithField("topic", topic).Info("Sending message") err = u.nc.Publish(topic, b) - if err != nil { log.WithError(err).Error("Could not publish message to nats") } diff --git a/src/cloud/vzmgr/deployment/deployment_test.go b/src/cloud/vzmgr/deployment/deployment_test.go index 68a4c96e683..6e553c70e04 100644 --- a/src/cloud/vzmgr/deployment/deployment_test.go +++ b/src/cloud/vzmgr/deployment/deployment_test.go @@ -54,8 +54,7 @@ func (f *fakeDF) FetchOrgUserIDUsingDeploymentKey(ctx context.Context, key strin return uuid.Nil, uuid.Nil, uuid.Nil, vzerrors.ErrDeploymentKeyNotFound } -type fakeProvisioner struct { -} +type fakeProvisioner struct{} func (f *fakeProvisioner) ProvisionOrClaimVizier(ctx context.Context, orgID uuid.UUID, userID uuid.UUID, clusterUID string, clusterName string) (uuid.UUID, string, error) { if testOrgID == orgID && testUserID == userID && clusterUID == "cluster1" && clusterName == "test" { diff --git a/src/cloud/vzmgr/vzmgr_server.go b/src/cloud/vzmgr/vzmgr_server.go index 73dab8bb0b7..ef0ddbd7069 100644 --- a/src/cloud/vzmgr/vzmgr_server.go +++ b/src/cloud/vzmgr/vzmgr_server.go @@ -23,8 +23,6 @@ import ( "net/http" _ "net/http/pprof" - "px.dev/pixie/src/cloud/shared/messages" - bindata "github.com/golang-migrate/migrate/source/go_bindata" "github.com/nats-io/nats.go" log "github.com/sirupsen/logrus" @@ -33,6 +31,7 @@ import ( "google.golang.org/grpc" "px.dev/pixie/src/cloud/artifact_tracker/artifacttrackerpb" + "px.dev/pixie/src/cloud/shared/messages" "px.dev/pixie/src/cloud/shared/pgmigrate" "px.dev/pixie/src/cloud/shared/vzshard" "px.dev/pixie/src/cloud/vzmgr/controllers" diff --git a/src/common/testing/test_utils/cert_generator/cert_generator.go b/src/common/testing/test_utils/cert_generator/cert_generator.go index 4dfc90e7c0a..49fa7efe7af 100644 --- a/src/common/testing/test_utils/cert_generator/cert_generator.go +++ b/src/common/testing/test_utils/cert_generator/cert_generator.go @@ -33,14 +33,12 @@ import ( "github.com/spf13/viper" ) -var ( - subj = pkix.Name{ - Organization: []string{"Pixie Labs Inc."}, - Country: []string{"US"}, - Province: []string{"California"}, - Locality: []string{"San Francisco"}, - } -) +var subj = pkix.Name{ + Organization: []string{"Pixie Labs Inc."}, + Country: []string{"US"}, + Province: []string{"California"}, + Locality: []string{"San Francisco"}, +} // generateAndWriteCA generates a CA cert and writes it to the file pointed by the ca_crt flag. // It also returns the generated cert and privateKey so that they can be used to generate and sign @@ -64,7 +62,7 @@ func generateAndWriteCA() (*x509.Certificate, *rsa.PrivateKey) { if err != nil { panic(err) } - caCertOut, err := os.OpenFile(viper.GetString("ca_crt"), os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666) + caCertOut, err := os.OpenFile(viper.GetString("ca_crt"), os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0o666) if err != nil { panic(err) } @@ -99,7 +97,7 @@ func generateAndWriteCertPair(ca *x509.Certificate, caKey *rsa.PrivateKey, certP if err != nil { panic(err) } - certOut, err := os.OpenFile(certPath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0666) + certOut, err := os.OpenFile(certPath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0o666) if err != nil { panic(err) } @@ -111,18 +109,20 @@ func generateAndWriteCertPair(ca *x509.Certificate, caKey *rsa.PrivateKey, certP if err != nil { panic(err) } - keyOut, err := os.OpenFile(keyPath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600) + keyOut, err := os.OpenFile(keyPath, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0o600) if err != nil { panic(err) } keyType := viper.GetString("secret_key_type") - if keyType == "pkcs1" { + switch keyType { + case "pkcs1": + err = pem.Encode(keyOut, &pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(privateKey)}) if err != nil { panic(err) } - } else if keyType == "pkcs8" { + case "pkcs8": b, err := x509.MarshalPKCS8PrivateKey(privateKey) if err != nil { panic(err) @@ -132,7 +132,7 @@ func generateAndWriteCertPair(ca *x509.Certificate, caKey *rsa.PrivateKey, certP if err != nil { panic(err) } - } else { + default: panic(fmt.Sprintf("Unsupported private key type: %s", keyType)) } err = keyOut.Close() diff --git a/src/e2e_test/perf_tool/cmd/run.go b/src/e2e_test/perf_tool/cmd/run.go index 79179b82a9b..5d8a89a9f7a 100644 --- a/src/e2e_test/perf_tool/cmd/run.go +++ b/src/e2e_test/perf_tool/cmd/run.go @@ -246,6 +246,7 @@ func (bo *maxRetryBackoff) NextBackOff() time.Duration { } return time.Duration(0) } + func (bo *maxRetryBackoff) Reset() { bo.retries = 0 } diff --git a/src/e2e_test/perf_tool/datastudio/datastudio.go b/src/e2e_test/perf_tool/datastudio/datastudio.go index 9d024c901d3..88e95445914 100644 --- a/src/e2e_test/perf_tool/datastudio/datastudio.go +++ b/src/e2e_test/perf_tool/datastudio/datastudio.go @@ -34,11 +34,11 @@ import ( // GenerateViews generates all of the datastudio charts/queries from templates. func GenerateViews(outPath string, project string, dataset string, reportID string, expPageID string) error { queryOutPath := path.Join(outPath, "queries") - if err := os.MkdirAll(queryOutPath, 0775); err != nil { + if err := os.MkdirAll(queryOutPath, 0o775); err != nil { return err } chartOutPath := path.Join(outPath, "charts") - if err := os.MkdirAll(chartOutPath, 0775); err != nil { + if err := os.MkdirAll(chartOutPath, 0o775); err != nil { return err } diff --git a/src/e2e_test/perf_tool/pkg/cluster/local/local.go b/src/e2e_test/perf_tool/pkg/cluster/local/local.go index d41efa662d3..9ed88de54f8 100644 --- a/src/e2e_test/perf_tool/pkg/cluster/local/local.go +++ b/src/e2e_test/perf_tool/pkg/cluster/local/local.go @@ -28,8 +28,7 @@ import ( ) // ClusterProvider uses whatever cluster your local kubeconfig points to. -type ClusterProvider struct { -} +type ClusterProvider struct{} var _ cluster.Provider = &ClusterProvider{} diff --git a/src/e2e_test/perf_tool/pkg/deploy/steps/common.go b/src/e2e_test/perf_tool/pkg/deploy/steps/common.go index 18f178cc81d..d4f18a96545 100644 --- a/src/e2e_test/perf_tool/pkg/deploy/steps/common.go +++ b/src/e2e_test/perf_tool/pkg/deploy/steps/common.go @@ -102,7 +102,7 @@ func (r *renderedYAML) patch(patches []*experimentpb.PatchSpec) error { } defer os.RemoveAll(tmpdir) - if err := os.WriteFile(path.Join(tmpdir, "resources.yaml"), r.yaml, 0666); err != nil { + if err := os.WriteFile(path.Join(tmpdir, "resources.yaml"), r.yaml, 0o666); err != nil { return err } diff --git a/src/e2e_test/perf_tool/pkg/suites/experiments.go b/src/e2e_test/perf_tool/pkg/suites/experiments.go index da565b3f015..998b31c7197 100644 --- a/src/e2e_test/perf_tool/pkg/suites/experiments.go +++ b/src/e2e_test/perf_tool/pkg/suites/experiments.go @@ -25,7 +25,6 @@ import ( "github.com/gogo/protobuf/types" "px.dev/pixie/src/e2e_test/perf_tool/experimentpb" - pb "px.dev/pixie/src/e2e_test/perf_tool/experimentpb" ) // HTTPLoadTestExperiment is an experiment that runs a simple client/server http loadtest. @@ -35,19 +34,19 @@ func HTTPLoadTestExperiment( metricPeriod time.Duration, predeployDur time.Duration, dur time.Duration, -) *pb.ExperimentSpec { - e := &pb.ExperimentSpec{ +) *experimentpb.ExperimentSpec { + e := &experimentpb.ExperimentSpec{ VizierSpec: VizierWorkload(), - WorkloadSpecs: []*pb.WorkloadSpec{ + WorkloadSpecs: []*experimentpb.WorkloadSpec{ HTTPLoadTestWorkload(numConnections, targetRPS, true), }, - MetricSpecs: []*pb.MetricSpec{ + MetricSpecs: []*experimentpb.MetricSpec{ ProcessStatsMetrics(metricPeriod), // Stagger the second query a little bit because of query stability issues. HeapMetrics(metricPeriod + (2 * time.Second)), HTTPDataLossMetric(metricPeriod), }, - RunSpec: &pb.RunSpec{ + RunSpec: &experimentpb.RunSpec{ Actions: []*experimentpb.ActionSpec{ { Type: experimentpb.START_VIZIER, @@ -87,18 +86,18 @@ func K8ssandraExperiment( metricPeriod time.Duration, predeployDur time.Duration, dur time.Duration, -) *pb.ExperimentSpec { - e := &pb.ExperimentSpec{ +) *experimentpb.ExperimentSpec { + e := &experimentpb.ExperimentSpec{ VizierSpec: VizierWorkload(), - WorkloadSpecs: []*pb.WorkloadSpec{ + WorkloadSpecs: []*experimentpb.WorkloadSpec{ K8ssandraWorkload(), }, - MetricSpecs: []*pb.MetricSpec{ + MetricSpecs: []*experimentpb.MetricSpec{ ProcessStatsMetrics(metricPeriod), // Stagger the second query a little bit because of query stability issues. HeapMetrics(metricPeriod + (2 * time.Second)), }, - RunSpec: &pb.RunSpec{ + RunSpec: &experimentpb.RunSpec{ Actions: []*experimentpb.ActionSpec{ { Type: experimentpb.START_VIZIER, @@ -137,18 +136,18 @@ func SockShopExperiment( metricPeriod time.Duration, predeployDur time.Duration, dur time.Duration, -) *pb.ExperimentSpec { - e := &pb.ExperimentSpec{ +) *experimentpb.ExperimentSpec { + e := &experimentpb.ExperimentSpec{ VizierSpec: VizierWorkload(), - WorkloadSpecs: []*pb.WorkloadSpec{ + WorkloadSpecs: []*experimentpb.WorkloadSpec{ SockShopWorkload(), }, - MetricSpecs: []*pb.MetricSpec{ + MetricSpecs: []*experimentpb.MetricSpec{ ProcessStatsMetrics(metricPeriod), // Stagger the second query a little bit because of query stability issues. HeapMetrics(metricPeriod + (2 * time.Second)), }, - RunSpec: &pb.RunSpec{ + RunSpec: &experimentpb.RunSpec{ Actions: []*experimentpb.ActionSpec{ { Type: experimentpb.START_VIZIER, @@ -187,18 +186,18 @@ func OnlineBoutiqueExperiment( metricPeriod time.Duration, predeployDur time.Duration, dur time.Duration, -) *pb.ExperimentSpec { - e := &pb.ExperimentSpec{ +) *experimentpb.ExperimentSpec { + e := &experimentpb.ExperimentSpec{ VizierSpec: VizierWorkload(), - WorkloadSpecs: []*pb.WorkloadSpec{ + WorkloadSpecs: []*experimentpb.WorkloadSpec{ OnlineBoutiqueWorkload(), }, - MetricSpecs: []*pb.MetricSpec{ + MetricSpecs: []*experimentpb.MetricSpec{ ProcessStatsMetrics(metricPeriod), // Stagger the second query a little bit because of query stability issues. HeapMetrics(metricPeriod + (2 * time.Second)), }, - RunSpec: &pb.RunSpec{ + RunSpec: &experimentpb.RunSpec{ Actions: []*experimentpb.ActionSpec{ { Type: experimentpb.START_VIZIER, @@ -237,18 +236,18 @@ func KafkaExperiment( metricPeriod time.Duration, predeployDur time.Duration, dur time.Duration, -) *pb.ExperimentSpec { - e := &pb.ExperimentSpec{ +) *experimentpb.ExperimentSpec { + e := &experimentpb.ExperimentSpec{ VizierSpec: VizierWorkload(), - WorkloadSpecs: []*pb.WorkloadSpec{ + WorkloadSpecs: []*experimentpb.WorkloadSpec{ KafkaWorkload(), }, - MetricSpecs: []*pb.MetricSpec{ + MetricSpecs: []*experimentpb.MetricSpec{ ProcessStatsMetrics(metricPeriod), // Stagger the second query a little bit because of query stability issues. HeapMetrics(metricPeriod + (2 * time.Second)), }, - RunSpec: &pb.RunSpec{ + RunSpec: &experimentpb.RunSpec{ Actions: []*experimentpb.ActionSpec{ { Type: experimentpb.START_VIZIER, @@ -288,19 +287,19 @@ func HTTPLoadApplicationOverheadExperiment( numConnections int, targetRPS int, metricPeriod time.Duration, -) *pb.ExperimentSpec { +) *experimentpb.ExperimentSpec { burninDur := 5 * time.Minute vizierDur := 10 * time.Minute noVizierDur := vizierDur - e := &pb.ExperimentSpec{ + e := &experimentpb.ExperimentSpec{ VizierSpec: VizierWorkload(), - WorkloadSpecs: []*pb.WorkloadSpec{ + WorkloadSpecs: []*experimentpb.WorkloadSpec{ HTTPLoadTestWorkload(numConnections, targetRPS, false), }, - MetricSpecs: []*pb.MetricSpec{ + MetricSpecs: []*experimentpb.MetricSpec{ addActionSelector(ProtocolLoadtestPromMetrics(metricPeriod), "no_vizier"), }, - RunSpec: &pb.RunSpec{ + RunSpec: &experimentpb.RunSpec{ Actions: []*experimentpb.ActionSpec{ { Type: experimentpb.START_WORKLOADS, @@ -348,7 +347,7 @@ func HTTPLoadApplicationOverheadExperiment( return e } -func addTags(e *pb.ExperimentSpec, tags ...string) *pb.ExperimentSpec { +func addTags(e *experimentpb.ExperimentSpec, tags ...string) *experimentpb.ExperimentSpec { if e.Tags == nil { e.Tags = []string{} } @@ -356,7 +355,7 @@ func addTags(e *pb.ExperimentSpec, tags ...string) *pb.ExperimentSpec { return e } -func addActionSelector(m *pb.MetricSpec, selector string) *pb.MetricSpec { +func addActionSelector(m *experimentpb.MetricSpec, selector string) *experimentpb.MetricSpec { m.ActionSelector = selector return m } diff --git a/src/e2e_test/perf_tool/pkg/suites/workloads.go b/src/e2e_test/perf_tool/pkg/suites/workloads.go index 28e68ce119f..e0679e5cfb8 100644 --- a/src/e2e_test/perf_tool/pkg/suites/workloads.go +++ b/src/e2e_test/perf_tool/pkg/suites/workloads.go @@ -141,6 +141,7 @@ func SockShopWorkload() *pb.WorkloadSpec { Healthchecks: HTTPHealthChecks("px-sock-shop", true), } } + func K8ssandraWorkload() *pb.WorkloadSpec { return &pb.WorkloadSpec{ Name: "px-python-demo", diff --git a/src/e2e_test/profiler_loadtest/go/main.go b/src/e2e_test/profiler_loadtest/go/main.go index cf4ba4cbf8b..7dcfed2a6e1 100644 --- a/src/e2e_test/profiler_loadtest/go/main.go +++ b/src/e2e_test/profiler_loadtest/go/main.go @@ -24,12 +24,11 @@ import ( "fmt" "log" "math/rand" + "net/http" + _ "net/http/pprof" "os" "strconv" "time" - - "net/http" - _ "net/http/pprof" ) type env struct { diff --git a/src/e2e_test/protocol_loadtest/grpc/grpc.go b/src/e2e_test/protocol_loadtest/grpc/grpc.go index efbe703eea1..c6d3e4b2f96 100644 --- a/src/e2e_test/protocol_loadtest/grpc/grpc.go +++ b/src/e2e_test/protocol_loadtest/grpc/grpc.go @@ -27,7 +27,6 @@ import ( "google.golang.org/grpc" "google.golang.org/grpc/credentials" - // Enables gzip encoding for GRPC. _ "google.golang.org/grpc/encoding/gzip" @@ -35,8 +34,7 @@ import ( "px.dev/pixie/src/e2e_test/util" ) -type loadTestServer struct { -} +type loadTestServer struct{} // Implements the Unary loadtest endpoint. func (lt *loadTestServer) Unary(ctx context.Context, req *loadtestpb.UnaryRequest) (*loadtestpb.UnaryReply, error) { diff --git a/src/e2e_test/vizier/exectime/cmd/benchmark.go b/src/e2e_test/vizier/exectime/cmd/benchmark.go index 143e94b2205..28144467c9f 100644 --- a/src/e2e_test/vizier/exectime/cmd/benchmark.go +++ b/src/e2e_test/vizier/exectime/cmd/benchmark.go @@ -273,13 +273,15 @@ func isMutation(s *script.ExecutableScript) bool { return strings.Contains(s.ScriptString, "pxtrace") } -type distributionMap map[string]Distribution -type distributionContainer struct { - Type string - TimeDist *TimeDistribution `json:",omitempty"` - BytesDist *BytesDistribution `json:",omitempty"` - ErrorDist *ErrorDistribution `json:",omitempty"` -} +type ( + distributionMap map[string]Distribution + distributionContainer struct { + Type string + TimeDist *TimeDistribution `json:",omitempty"` + BytesDist *BytesDistribution `json:",omitempty"` + ErrorDist *ErrorDistribution `json:",omitempty"` + } +) func (dm *distributionMap) MarshalJSON() ([]byte, error) { containers := make(map[string]*distributionContainer, len(*dm)) @@ -331,8 +333,7 @@ type ScriptExecData struct { } // stdoutTableWriter writes the execStats out to a table in stdout. Implements ExecStatsWriter. -type stdoutTableWriter struct { -} +type stdoutTableWriter struct{} func sortByKeys(data *map[string]*ScriptExecData) []*ScriptExecData { sorted := make([]string, 0) @@ -412,7 +413,6 @@ px.display(df[['pod', 'service', 'namespace', 'node']]) // Accumulate the streamed data and block until all data is received. tw := vizier.NewStreamOutputAdapter(ctx, resp, vizier.FormatInMemory, nil) err = tw.Finish() - if err != nil { log.WithError(err).Infof("Error '%s' on '%s'", vizier.FormatErrorMessage(err), execScript.ScriptName) return nil, err diff --git a/src/e2e_test/vizier/exectime/cmd/compare.go b/src/e2e_test/vizier/exectime/cmd/compare.go index d1f6ad236a0..1ae45530fab 100644 --- a/src/e2e_test/vizier/exectime/cmd/compare.go +++ b/src/e2e_test/vizier/exectime/cmd/compare.go @@ -61,21 +61,21 @@ func (t *TimeDistribution) Diff(other Distribution) (DistributionDiff, error) { } // Diff computes the difference between this distribution and another bytes distribution. -func (t *BytesDistribution) Diff(other Distribution) (DistributionDiff, error) { +func (d *BytesDistribution) Diff(other Distribution) (DistributionDiff, error) { otherBytesDist, ok := other.(*BytesDistribution) if !ok { return nil, errors.New("BytesDistribution.Diff must be called with another BytesDistribution as argument") } - return &bytesDistributionDiff{t, otherBytesDist}, nil + return &bytesDistributionDiff{d, otherBytesDist}, nil } // Diff computes the difference between this distribution and another error distribution. -func (t *ErrorDistribution) Diff(other Distribution) (DistributionDiff, error) { +func (d *ErrorDistribution) Diff(other Distribution) (DistributionDiff, error) { otherErrorDist, ok := other.(*ErrorDistribution) if !ok { return nil, errors.New("ErrorDistribution.Diff must be called with another ErrorDistribution as argument") } - return &errorDistributionDiff{t, otherErrorDist}, nil + return &errorDistributionDiff{d, otherErrorDist}, nil } type timeDistributionDiff struct { diff --git a/src/e2e_test/vizier/planner/all_scripts_test.go b/src/e2e_test/vizier/planner/all_scripts_test.go index 4991c978878..49513d3075a 100644 --- a/src/e2e_test/vizier/planner/all_scripts_test.go +++ b/src/e2e_test/vizier/planner/all_scripts_test.go @@ -35,15 +35,14 @@ import ( "github.com/gogo/protobuf/types" "github.com/stretchr/testify/require" - "px.dev/pixie/src/carnot/planner/compilerpb" - "px.dev/pixie/src/e2e_test/vizier/planner/dump_schemas/godumpschemas" - "px.dev/pixie/src/api/proto/uuidpb" "px.dev/pixie/src/api/proto/vispb" "px.dev/pixie/src/carnot/goplanner" + "px.dev/pixie/src/carnot/planner/compilerpb" "px.dev/pixie/src/carnot/planner/distributedpb" "px.dev/pixie/src/carnot/planner/plannerpb" "px.dev/pixie/src/carnot/udfspb" + "px.dev/pixie/src/e2e_test/vizier/planner/dump_schemas/godumpschemas" "px.dev/pixie/src/table_store/schemapb" "px.dev/pixie/src/utils" funcs "px.dev/pixie/src/vizier/funcs/go" diff --git a/src/e2e_test/vizier/planner/dump_schemas/godumpschemas/dumpschemas.go b/src/e2e_test/vizier/planner/dump_schemas/godumpschemas/dumpschemas.go index 19ca7b457da..225dc34cf56 100644 --- a/src/e2e_test/vizier/planner/dump_schemas/godumpschemas/dumpschemas.go +++ b/src/e2e_test/vizier/planner/dump_schemas/godumpschemas/dumpschemas.go @@ -25,6 +25,7 @@ package godumpschemas // #include // #include "src/e2e_test/vizier/planner/dump_schemas/dump_schemas.h" import "C" + import ( "errors" "fmt" @@ -37,7 +38,6 @@ import ( // DumpSchemas dumps all the table schemas from stirling. func DumpSchemas() (*schemapb.Schema, error) { - var resLen C.int res := C.DumpSchemas(&resLen) defer C.SchemaStrFree(res) diff --git a/src/operator/controllers/monitor.go b/src/operator/controllers/monitor.go index db727391bc7..8d509066e06 100644 --- a/src/operator/controllers/monitor.go +++ b/src/operator/controllers/monitor.go @@ -46,8 +46,8 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "px.dev/pixie/src/api/proto/cloudpb" - "px.dev/pixie/src/operator/apis/px.dev/v1alpha1" - pixiev1alpha1 "px.dev/pixie/src/operator/apis/px.dev/v1alpha1" + "px.dev/pixie/src/operator/apis/px.dev/v1alpha1" //nolint:staticcheck + pixiev1alpha1 "px.dev/pixie/src/operator/apis/px.dev/v1alpha1" //nolint:staticcheck "px.dev/pixie/src/shared/status" "px.dev/pixie/src/utils/shared/k8s" ) @@ -415,7 +415,7 @@ func getStatefulMetadataPendingState(pods *concurrentPodMap, vz *v1alpha1.Vizier } for _, metadataPod := range labelMap { for _, ownerRef := range metadataPod.pod.OwnerReferences { - if !(ownerRef.Kind == "StatefulSet") { + if ownerRef.Kind != "StatefulSet" { continue } if metadataPod.pod.Status.Phase != v1.PodPending { @@ -672,7 +672,7 @@ func (m *VizierMonitor) repairVizier(state *vizierState) error { } // Delete pod if nats pod failed - if state.Reason == status.NATSPodFailed { + if state.Reason == status.NATSPodFailed { //nolint:staticcheck err := m.clientset.CoreV1().Pods(m.namespace).Delete(m.ctx, natsPodName, metav1.DeleteOptions{}) if err != nil { log.WithError(err).Error("Failed to delete NATS pod") @@ -808,7 +808,6 @@ func queryPodStatusz(client HTTPClient, pod *v1.Pod) (bool, string) { } body, err := io.ReadAll(resp.Body) - if err != nil { log.WithError(err).Error("Error reading the response body") return false, "" diff --git a/src/operator/controllers/monitor_test.go b/src/operator/controllers/monitor_test.go index 52dba094bfc..9467d85fb1d 100644 --- a/src/operator/controllers/monitor_test.go +++ b/src/operator/controllers/monitor_test.go @@ -1056,10 +1056,11 @@ func TestMonitor_getVizierVersionState(t *testing.T) { }). Return(&cloudpb.ArtifactSet{ Name: "vizier", - Artifact: []*cloudpb.Artifact{{ - VersionStr: test.latestVersion, - Timestamp: &types.Timestamp{Seconds: 10}, - }, + Artifact: []*cloudpb.Artifact{ + { + VersionStr: test.latestVersion, + Timestamp: &types.Timestamp{Seconds: 10}, + }, }, }, nil) diff --git a/src/operator/controllers/node_watcher.go b/src/operator/controllers/node_watcher.go index 372695c028d..5c9526628de 100644 --- a/src/operator/controllers/node_watcher.go +++ b/src/operator/controllers/node_watcher.go @@ -37,9 +37,7 @@ const ( degradedThreshold = .25 ) -var ( - kernelMinVersion = semver.Version{Major: 4, Minor: 14, Patch: 0} -) +var kernelMinVersion = semver.Version{Major: 4, Minor: 14, Patch: 0} func getNodeKernelVersion(node *v1.Node) string { version := node.Status.NodeInfo.KernelVersion diff --git a/src/operator/controllers/vizier_controller.go b/src/operator/controllers/vizier_controller.go index 364bd636193..9ad528367a5 100644 --- a/src/operator/controllers/vizier_controller.go +++ b/src/operator/controllers/vizier_controller.go @@ -810,7 +810,8 @@ func convertResourceType(originalLst v1.ResourceList) *vizierconfigpb.ResourceLi // generateVizierYAMLsConfig is responsible retrieving a yaml map of configurations from // Pixie Cloud. func generateVizierYAMLsConfig(ctx context.Context, ns string, k8sVersion string, vz *v1alpha1.Vizier, conn *grpc.ClientConn) (*cloudpb.ConfigForVizierResponse, - error) { + error, +) { client := cloudpb.NewConfigServiceClient(conn) req := &cloudpb.ConfigForVizierRequest{ diff --git a/src/operator/manager.go b/src/operator/manager.go index 4de5d5b08ee..69ecf9aa47c 100644 --- a/src/operator/manager.go +++ b/src/operator/manager.go @@ -32,12 +32,9 @@ import ( "px.dev/pixie/src/operator/apis/px.dev/v1alpha1" "px.dev/pixie/src/operator/controllers" "px.dev/pixie/src/utils/shared/k8s" - // +kubebuilder:scaffold:imports ) -var ( - scheme = runtime.NewScheme() -) +var scheme = runtime.NewScheme() const ( leaderElectionID = "27ad4010.px.dev" diff --git a/src/pixie_cli/pkg/auth/login.go b/src/pixie_cli/pkg/auth/login.go index a781195bbb8..72ca410abf5 100644 --- a/src/pixie_cli/pkg/auth/login.go +++ b/src/pixie_cli/pkg/auth/login.go @@ -47,13 +47,15 @@ import ( apiutils "px.dev/pixie/src/utils" ) -var errUserChallengeTimeout = errors.New("timeout waiting for user") -var errBrowserFailed = errors.New("browser failed to open") -var errServerListenerFailed = errors.New("failed to start up local server") -var errUserNotRegistered = errors.New("user is not registered. Please sign up") -var localServerRedirectURL = "http://localhost:8085/auth_complete" -var localServerPort = int32(8085) -var sentSegmentAlias = false +var ( + errUserChallengeTimeout = errors.New("timeout waiting for user") + errBrowserFailed = errors.New("browser failed to open") + errServerListenerFailed = errors.New("failed to start up local server") + errUserNotRegistered = errors.New("user is not registered. Please sign up") + localServerRedirectURL = "http://localhost:8085/auth_complete" + localServerPort = int32(8085) + sentSegmentAlias = false +) // SaveRefreshToken saves the refresh token in default spot. func SaveRefreshToken(token *RefreshToken) error { @@ -62,7 +64,7 @@ func SaveRefreshToken(token *RefreshToken) error { return err } - f, err := os.OpenFile(pixieAuthFilePath, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0600) + f, err := os.OpenFile(pixieAuthFilePath, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0o600) if err != nil { return err } @@ -287,7 +289,6 @@ func (p *PixieCloudLogin) tryBrowserAuth() (*RefreshToken, error) { } refreshToken, err := p.getRefreshToken(accessToken, "") - if err != nil { sendError(w, err) results <- result{nil, err} diff --git a/src/pixie_cli/pkg/cmd/api_key.go b/src/pixie_cli/pkg/cmd/api_key.go index 3f6a8101544..0486d4dcf07 100644 --- a/src/pixie_cli/pkg/cmd/api_key.go +++ b/src/pixie_cli/pkg/cmd/api_key.go @@ -141,8 +141,10 @@ var ListAPIKeyCmd = &cobra.Command{ defer w.Finish() w.SetHeader("api-keys", []string{"ID", "Key", "CreatedAt", "Description"}) for _, k := range keys { - _ = w.Write([]interface{}{utils2.UUIDFromProtoOrNil(k.ID), "", k.CreatedAt, - k.Desc}) + _ = w.Write([]interface{}{ + utils2.UUIDFromProtoOrNil(k.ID), "", k.CreatedAt, + k.Desc, + }) } }, } @@ -174,8 +176,10 @@ var LookupAPIKeyCmd = &cobra.Command{ w := components.CreateStreamWriter(format, os.Stdout) defer w.Finish() w.SetHeader("api-keys", []string{"ID", "Key", "CreatedAt", "Description"}) - _ = w.Write([]interface{}{utils2.UUIDFromProtoOrNil(k.ID), "", k.CreatedAt, - k.Desc}) + _ = w.Write([]interface{}{ + utils2.UUIDFromProtoOrNil(k.ID), "", k.CreatedAt, + k.Desc, + }) }, } @@ -205,8 +209,10 @@ var GetAPIKeyCmd = &cobra.Command{ w := components.CreateStreamWriter(format, os.Stdout) defer w.Finish() w.SetHeader("api-keys", []string{"ID", "Key", "CreatedAt", "Description"}) - _ = w.Write([]interface{}{utils2.UUIDFromProtoOrNil(k.ID), k.Key, k.CreatedAt, - k.Desc}) + _ = w.Write([]interface{}{ + utils2.UUIDFromProtoOrNil(k.ID), k.Key, k.CreatedAt, + k.Desc, + }) }, } diff --git a/src/pixie_cli/pkg/cmd/demo.go b/src/pixie_cli/pkg/cmd/demo.go index f87d2f9af3f..51ccd36c839 100644 --- a/src/pixie_cli/pkg/cmd/demo.go +++ b/src/pixie_cli/pkg/cmd/demo.go @@ -51,8 +51,10 @@ import ( const manifestFile = "manifest.json" -var errNamespaceAlreadyExists = errors.New("namespace already exists") -var errCertMgrDoesNotExist = errors.New("cert-manager does not exist") +var ( + errNamespaceAlreadyExists = errors.New("namespace already exists") + errCertMgrDoesNotExist = errors.New("cert-manager does not exist") +) func init() { DemoCmd.PersistentFlags().String("artifacts", "https://storage.googleapis.com/pixie-prod-artifacts/prod-demo-apps", "The path to the demo apps") diff --git a/src/pixie_cli/pkg/cmd/deployment_key.go b/src/pixie_cli/pkg/cmd/deployment_key.go index c8d60eff146..0be3adad1e2 100644 --- a/src/pixie_cli/pkg/cmd/deployment_key.go +++ b/src/pixie_cli/pkg/cmd/deployment_key.go @@ -142,8 +142,10 @@ var ListDeployKeyCmd = &cobra.Command{ defer w.Finish() w.SetHeader("deployment-keys", []string{"ID", "Key", "CreatedAt", "Description"}) for _, k := range keys { - _ = w.Write([]interface{}{utils2.UUIDFromProtoOrNil(k.ID), "", k.CreatedAt, - k.Desc}) + _ = w.Write([]interface{}{ + utils2.UUIDFromProtoOrNil(k.ID), "", k.CreatedAt, + k.Desc, + }) } }, } @@ -176,8 +178,10 @@ var LookupDeployKeyCmd = &cobra.Command{ w := components.CreateStreamWriter(format, os.Stdout) defer w.Finish() w.SetHeader("api-keys", []string{"ID", "Key", "CreatedAt", "Description"}) - _ = w.Write([]interface{}{utils2.UUIDFromProtoOrNil(k.ID), "", k.CreatedAt, - k.Desc}) + _ = w.Write([]interface{}{ + utils2.UUIDFromProtoOrNil(k.ID), "", k.CreatedAt, + k.Desc, + }) }, } @@ -207,8 +211,10 @@ var GetDeployKeyCmd = &cobra.Command{ w := components.CreateStreamWriter(format, os.Stdout) defer w.Finish() w.SetHeader("deployment-keys", []string{"ID", "Key", "CreatedAt", "Description"}) - _ = w.Write([]interface{}{utils2.UUIDFromProtoOrNil(k.ID), k.Key, k.CreatedAt, - k.Desc}) + _ = w.Write([]interface{}{ + utils2.UUIDFromProtoOrNil(k.ID), k.Key, k.CreatedAt, + k.Desc, + }) }, } diff --git a/src/pixie_cli/pkg/cmd/get.go b/src/pixie_cli/pkg/cmd/get.go index ddbde0d70f7..f44f128dc07 100644 --- a/src/pixie_cli/pkg/cmd/get.go +++ b/src/pixie_cli/pkg/cmd/get.go @@ -126,8 +126,10 @@ var GetViziersCmd = &cobra.Command{ time.Since(time.Unix(0, vz.LastHeartbeatNs)).Nanoseconds())) } } - _ = w.Write([]interface{}{vz.ClusterName, utils.UUIDFromProtoOrNil(vz.ID), vz.ClusterVersion, - prettyVersion(vz.OperatorVersion), prettyVersion(vz.VizierVersion), lastHeartbeat, vz.Status, vz.StatusMessage}) + _ = w.Write([]interface{}{ + vz.ClusterName, utils.UUIDFromProtoOrNil(vz.ID), vz.ClusterVersion, + prettyVersion(vz.OperatorVersion), prettyVersion(vz.VizierVersion), lastHeartbeat, vz.Status, vz.StatusMessage, + }) } }, } diff --git a/src/pixie_cli/pkg/cmd/run.go b/src/pixie_cli/pkg/cmd/run.go index aa5d2a0a890..b4e708e53f5 100644 --- a/src/pixie_cli/pkg/cmd/run.go +++ b/src/pixie_cli/pkg/cmd/run.go @@ -198,7 +198,6 @@ func createNewCobraCommand() *cobra.Command { ctx, cleanup := utils.WithSignalCancellable(context.Background()) defer cleanup() err = vizier.RunScriptAndOutputResults(ctx, conns, execScript, format, useEncryption) - if err != nil { vzErr, ok := err.(*vizier.ScriptExecutionError) switch { diff --git a/src/pixie_cli/pkg/cmd/script_utils.go b/src/pixie_cli/pkg/cmd/script_utils.go index 9bcbc250e63..d296ec1dd20 100644 --- a/src/pixie_cli/pkg/cmd/script_utils.go +++ b/src/pixie_cli/pkg/cmd/script_utils.go @@ -34,8 +34,10 @@ import ( "px.dev/pixie/src/utils/script" ) -const defaultBundleFile = "https://storage.googleapis.com/pixie-prod-artifacts/script-bundles/bundle-core.json" -const ossBundleFile = "https://artifacts.px.dev/pxl_scripts/bundle.json" +const ( + defaultBundleFile = "https://storage.googleapis.com/pixie-prod-artifacts/script-bundles/bundle-core.json" + ossBundleFile = "https://artifacts.px.dev/pxl_scripts/bundle.json" +) func mustCreateBundleReader() *script.BundleManager { br, err := createBundleReader() diff --git a/src/pixie_cli/pkg/cmd/update.go b/src/pixie_cli/pkg/cmd/update.go index 3092baf12cc..dc00ced4e0f 100644 --- a/src/pixie_cli/pkg/cmd/update.go +++ b/src/pixie_cli/pkg/cmd/update.go @@ -185,7 +185,6 @@ var VizierUpdateCmd = &cobra.Command{ } uj := utils.NewSerialTaskRunner(updateJobs) err = uj.RunAndMonitor() - if err != nil { _ = pxanalytics.Client().Enqueue(&analytics.Track{ UserId: pxconfig.Cfg().UniqueClientID, diff --git a/src/pixie_cli/pkg/components/table_renderer.go b/src/pixie_cli/pkg/components/table_renderer.go index ccaea84238b..f503993b28a 100644 --- a/src/pixie_cli/pkg/components/table_renderer.go +++ b/src/pixie_cli/pkg/components/table_renderer.go @@ -109,6 +109,7 @@ func (t *TableStreamWriter) Write(data []interface{}) error { t.data = append(t.data, data) return nil } + func (t *TableStreamWriter) stringifyRow(row []interface{}) []string { s := make([]string, len(row)) @@ -164,7 +165,7 @@ func (ms MapSlice) MarshalJSON() ([]byte, error) { if err != nil { return nil, err } - buf.WriteString(fmt.Sprintf("%q:", fmt.Sprintf("%v", mi.Key))) + buf.WriteString(fmt.Sprintf("%q:", fmt.Sprintf("%v", mi.Key))) //nolint:staticcheck buf.Write(b) if i < len(ms)-1 { buf.Write([]byte{','}) @@ -328,7 +329,7 @@ func (c *CSVStreamWriter) Write(data []interface{}) error { // Add surrounding quotes to any fields that contain commas or newlines. if strings.Contains(dataStr, ",") || strings.Contains(dataStr, "\n") { // CSV escapes quotes by double quoting. - dataStr = strings.Replace(dataStr, "\"", "\"\"", -1) + dataStr = strings.ReplaceAll(dataStr, "\"", "\"\"") dataStr = "\"" + dataStr + "\"" } buf.WriteString(dataStr) diff --git a/src/pixie_cli/pkg/live/live.go b/src/pixie_cli/pkg/live/live.go index 019e5ca1a21..3ea11f6d38a 100644 --- a/src/pixie_cli/pkg/live/live.go +++ b/src/pixie_cli/pkg/live/live.go @@ -59,9 +59,7 @@ const ( modalTypeAutocomplete ) -var ( - errMissingScript = errors.New("No script provided") -) +var errMissingScript = errors.New("No script provided") type sortType int @@ -123,7 +121,8 @@ type Modal interface { // New creates a new live view. func New(br *script.BundleManager, viziers []*vizier.Connector, cloudAddr string, aClient cloudpb.AutocompleteServiceClient, - execScript *script.ExecutableScript, useNewAC, useEncryption bool, clusterID uuid.UUID) (*View, error) { + execScript *script.ExecutableScript, useNewAC, useEncryption bool, clusterID uuid.UUID, +) (*View, error) { // App is the top level view. The layout is approximately as follows: // ------------------------------------------ // | View Information ... | @@ -314,6 +313,7 @@ func (v *View) clearErrorIfAny() { v.pages.RemovePage("error") } } + func (v *View) execCompleteWithError(err error) { v.searchClear() v.closeModal() @@ -490,7 +490,7 @@ func (v *View) createTviewTable(t components.TableView, formatter vizier.DataFor }) table.SetSelectionChangedFunc(func(row, column int) { - //fmt.Printf("%+v %+v\n", row, column) + // fmt.Printf("%+v %+v\n", row, column) // Switch the sort state. if row == 0 { cs := v.s.sortState[v.s.selectedTable][column] diff --git a/src/pixie_cli/pkg/pxanalytics/analytics.go b/src/pixie_cli/pkg/pxanalytics/analytics.go index efed08b6023..3f3a535ff4d 100644 --- a/src/pixie_cli/pkg/pxanalytics/analytics.go +++ b/src/pixie_cli/pkg/pxanalytics/analytics.go @@ -43,6 +43,7 @@ type disabledAnalyticsClient struct{} func (c disabledAnalyticsClient) Enqueue(analytics.Message) error { return nil } + func (c disabledAnalyticsClient) Close() error { return nil } diff --git a/src/pixie_cli/pkg/pxconfig/config.go b/src/pixie_cli/pkg/pxconfig/config.go index 39e3a5e90a3..869e4c16887 100644 --- a/src/pixie_cli/pkg/pxconfig/config.go +++ b/src/pixie_cli/pkg/pxconfig/config.go @@ -40,7 +40,7 @@ var ( ) func writeDefaultConfig(path string) (*ConfigInfo, error) { - f, err := os.OpenFile(path, os.O_RDWR|os.O_CREATE, 0600) + f, err := os.OpenFile(path, os.O_RDWR|os.O_CREATE, 0o600) if err != nil { return nil, err } diff --git a/src/pixie_cli/pkg/sentryhook/hook.go b/src/pixie_cli/pkg/sentryhook/hook.go index cc66bbfa348..64c3cbbbb4a 100644 --- a/src/pixie_cli/pkg/sentryhook/hook.go +++ b/src/pixie_cli/pkg/sentryhook/hook.go @@ -27,17 +27,15 @@ import ( log "github.com/sirupsen/logrus" ) -var ( - levelMap = map[log.Level]sentry.Level{ - log.TraceLevel: sentry.LevelDebug, - log.DebugLevel: sentry.LevelDebug, - log.InfoLevel: sentry.LevelInfo, - log.WarnLevel: sentry.LevelWarning, - log.ErrorLevel: sentry.LevelError, - log.FatalLevel: sentry.LevelFatal, - log.PanicLevel: sentry.LevelFatal, - } -) +var levelMap = map[log.Level]sentry.Level{ + log.TraceLevel: sentry.LevelDebug, + log.DebugLevel: sentry.LevelDebug, + log.InfoLevel: sentry.LevelInfo, + log.WarnLevel: sentry.LevelWarning, + log.ErrorLevel: sentry.LevelError, + log.FatalLevel: sentry.LevelFatal, + log.PanicLevel: sentry.LevelFatal, +} // Converter converts log entry to sentry. type Converter func(entry *log.Entry, event *sentry.Event, hub *sentry.Hub) diff --git a/src/pixie_cli/pkg/utils/cli_out.go b/src/pixie_cli/pkg/utils/cli_out.go index 575f5f2138c..25fb0c57043 100644 --- a/src/pixie_cli/pkg/utils/cli_out.go +++ b/src/pixie_cli/pkg/utils/cli_out.go @@ -121,7 +121,7 @@ func (c *CLIOutputEntry) Infof(format string, args ...interface{}) { // Info prints the input string to stdout. func (c *CLIOutputEntry) Info(str string) { - c.Infof(str) + c.Infof("%s", str) } // Errorf prints the input string to stderr formatted with the input args. @@ -131,7 +131,7 @@ func (c *CLIOutputEntry) Errorf(format string, args ...interface{}) { // Error prints the input string to stderr. func (c *CLIOutputEntry) Error(str string) { - c.write(os.Stderr, str) + c.write(os.Stderr, "%s", str) } // Fatalf prints the input string to stderr formatted with the input args. @@ -142,6 +142,6 @@ func (c *CLIOutputEntry) Fatalf(format string, args ...interface{}) { // Fatal prints the input string to stderr. func (c *CLIOutputEntry) Fatal(str string) { - c.write(os.Stderr, str) + c.write(os.Stderr, "%s", str) os.Exit(1) } diff --git a/src/pixie_cli/pkg/utils/cmd.go b/src/pixie_cli/pkg/utils/cmd.go index 3f956bd1042..52c8e1535e7 100644 --- a/src/pixie_cli/pkg/utils/cmd.go +++ b/src/pixie_cli/pkg/utils/cmd.go @@ -30,7 +30,6 @@ func ExecCommand(name string, args ...string) error { var stderr bytes.Buffer kcmd.Stderr = &stderr err := kcmd.Run() - if err != nil { return errors.New(stderr.String()) } diff --git a/src/pixie_cli/pkg/utils/dot_path.go b/src/pixie_cli/pkg/utils/dot_path.go index 1833405494c..426747c74a3 100644 --- a/src/pixie_cli/pkg/utils/dot_path.go +++ b/src/pixie_cli/pkg/utils/dot_path.go @@ -38,7 +38,7 @@ func ensureDotFolderPath() (string, error) { pixieDirPath := filepath.Join(home, pixieDotPath) if _, err := os.Stat(pixieDirPath); os.IsNotExist(err) { - err = os.Mkdir(pixieDirPath, 0744) + err = os.Mkdir(pixieDirPath, 0o744) if err != nil { return "", err } diff --git a/src/pixie_cli/pkg/vizier/data_formatter.go b/src/pixie_cli/pkg/vizier/data_formatter.go index 7bb70c042da..a5092bd8abd 100644 --- a/src/pixie_cli/pkg/vizier/data_formatter.go +++ b/src/pixie_cli/pkg/vizier/data_formatter.go @@ -34,8 +34,10 @@ import ( ) // For p50, p99, etc. -var latencyRegex = regexp.MustCompile(`(?i)^latency`) -var cpuRegex = regexp.MustCompile(`(?i)^cpu`) +var ( + latencyRegex = regexp.MustCompile(`(?i)^latency`) + cpuRegex = regexp.MustCompile(`(?i)^cpu`) +) const nanosPerSecond = float64(1000 * 1000 * 1000) diff --git a/src/pixie_cli/pkg/vizier/data_formatter_test.go b/src/pixie_cli/pkg/vizier/data_formatter_test.go index 89a7b26f9c7..7ce30a081a4 100644 --- a/src/pixie_cli/pkg/vizier/data_formatter_test.go +++ b/src/pixie_cli/pkg/vizier/data_formatter_test.go @@ -126,6 +126,7 @@ func TestScriptReferences(t *testing.T) { assert.Equal(t, "px-sock-shop/load-test-799f9dffff-s6m2c", formatter.FormatValue(0, `{"label":"px-sock-shop/load-test-799f9dffff-s6m2c","script":"px/pod","args":{"start_time":"-5m","pod":"px-sock-shop/load-test-799f9dffff-s6m2c"}}`)) } + func TestBytes(t *testing.T) { relation := &vizierpb.Relation{ Columns: []*vizierpb.Relation_ColumnInfo{ diff --git a/src/pixie_cli/pkg/vizier/logs.go b/src/pixie_cli/pkg/vizier/logs.go index 88bfef241e3..d5691be25ed 100644 --- a/src/pixie_cli/pkg/vizier/logs.go +++ b/src/pixie_cli/pkg/vizier/logs.go @@ -130,7 +130,6 @@ func (c *LogCollector) CollectPixieLogs(fName string) error { log.WithError(err).Warnf("failed to get cluster ID") } outputCh, err := RunSimpleHealthCheckScript(c.br, c.cloudAddr, clusterID) - if err != nil { entry := log.WithError(err) if _, ok := err.(*HealthCheckWarning); ok { diff --git a/src/pixie_cli/pkg/vizier/script.go b/src/pixie_cli/pkg/vizier/script.go index d58286038c6..cab9fcd3988 100644 --- a/src/pixie_cli/pkg/vizier/script.go +++ b/src/pixie_cli/pkg/vizier/script.go @@ -389,7 +389,6 @@ func RunSimpleHealthCheckScript(br *script.BundleManager, cloudAddr string, clus return nil, err } execScript, err := br.GetScript(script.AgentStatusDiagnosticsScript) - if err != nil { execScript, err = br.GetScript(script.AgentStatusScript) if err != nil { diff --git a/src/pixie_cli/pkg/vizier/stream_adapter.go b/src/pixie_cli/pkg/vizier/stream_adapter.go index ea2b80b97c5..75f446b7e32 100644 --- a/src/pixie_cli/pkg/vizier/stream_adapter.go +++ b/src/pixie_cli/pkg/vizier/stream_adapter.go @@ -93,7 +93,8 @@ const FormatInMemory string = "inmemory" // NewStreamOutputAdapterWithFactory creates a new vizier output adapter factory. func NewStreamOutputAdapterWithFactory(ctx context.Context, stream chan *ExecData, format string, decOpts *vizierpb.ExecuteScriptRequest_EncryptionOptions, - factoryFunc func(*vizierpb.ExecuteScriptResponse_MetaData) components.OutputStreamWriter) *StreamOutputAdapter { + factoryFunc func(*vizierpb.ExecuteScriptResponse_MetaData) components.OutputStreamWriter, +) *StreamOutputAdapter { enableFormat := format != "json" && format != FormatInMemory adapter := &StreamOutputAdapter{ @@ -254,7 +255,7 @@ func (v *StreamOutputAdapter) handleStream(ctx context.Context, stream chan *Exe case *vizierpb.ExecuteScriptResponse_Data: err = v.handleData(ctx, res) default: - err = fmt.Errorf("unhandled response type" + reflect.TypeOf(msg.Resp.Result).String()) + err = fmt.Errorf("unhandled response type %s", reflect.TypeOf(msg.Resp.Result).String()) } if err != nil { v.err = newScriptExecutionError(CodeBadData, "failed to handle data from Vizier: "+err.Error()) diff --git a/src/pixie_cli/px.go b/src/pixie_cli/px.go index 4d3c084acd6..1c1c2ff9798 100644 --- a/src/pixie_cli/px.go +++ b/src/pixie_cli/px.go @@ -89,7 +89,7 @@ func main() { if len(logFile) > 0 { utils.Info(fmt.Sprintf("Logging to %s", logFile)) - f, err := os.OpenFile(logFile, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0644) + f, err := os.OpenFile(logFile, os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0o644) if err != nil { log.WithError(err).Error("Cannot open log file") } diff --git a/src/shared/k8s/proto_utils_test.go b/src/shared/k8s/proto_utils_test.go index dedb796dbb7..e94f0c7ead4 100644 --- a/src/shared/k8s/proto_utils_test.go +++ b/src/shared/k8s/proto_utils_test.go @@ -21,14 +21,13 @@ package k8s_test import ( "testing" - "k8s.io/apimachinery/pkg/util/intstr" - "github.com/gogo/protobuf/proto" "github.com/stretchr/testify/assert" apps "k8s.io/api/apps/v1" v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" + "k8s.io/apimachinery/pkg/util/intstr" "px.dev/pixie/src/shared/k8s" "px.dev/pixie/src/shared/k8s/metadatapb" @@ -1647,10 +1646,11 @@ func TestReplicaSetToProto(t *testing.T) { }, } - selector := metav1.LabelSelector{MatchLabels: map[string]string{ - "env": "prod", - "managed": "helm", - }, + selector := metav1.LabelSelector{ + MatchLabels: map[string]string{ + "env": "prod", + "managed": "helm", + }, MatchExpressions: []metav1.LabelSelectorRequirement{ { Key: "app", @@ -1744,7 +1744,8 @@ func TestDeploymentToProto(t *testing.T) { { Kind: "Pod", Name: "pod", - UID: "1234"}, + UID: "1234", + }, }, Labels: map[string]string{ "env": "prod", diff --git a/src/shared/services/events/track.go b/src/shared/services/events/track.go index 1fb09ba857d..0a45254ce3f 100644 --- a/src/shared/services/events/track.go +++ b/src/shared/services/events/track.go @@ -34,8 +34,10 @@ func init() { pflag.String("segment_write_key", "", "The key to use for segment") } -var client analytics.Client -var once sync.Once +var ( + client analytics.Client + once sync.Once +) type dummyClient struct{} diff --git a/src/shared/services/msgbus/jetstream.go b/src/shared/services/msgbus/jetstream.go index f12e58e948a..e4596077fc2 100644 --- a/src/shared/services/msgbus/jetstream.go +++ b/src/shared/services/msgbus/jetstream.go @@ -118,7 +118,6 @@ func (s *jetStreamStreamer) PersistentSubscribe(subject, persistentName string, nats.AckWait(s.ackWait), nats.DeliverAll(), ) - if err != nil { return nil, err } diff --git a/src/shared/services/msgbus/streamer.go b/src/shared/services/msgbus/streamer.go index 34c63db9d4b..dbdbacb7ed2 100644 --- a/src/shared/services/msgbus/streamer.go +++ b/src/shared/services/msgbus/streamer.go @@ -25,9 +25,11 @@ import ( ) // emptyQueueTimeout is the time we wait before we consider a queue to be empty. -const emptyQueueTimeout = 200 * time.Millisecond -const publishRetryInterval = 25 * time.Millisecond -const publishTimeout = 1 * time.Minute +const ( + emptyQueueTimeout = 200 * time.Millisecond + publishRetryInterval = 25 * time.Millisecond + publishTimeout = 1 * time.Minute +) // V2CDurableStream is the stream config for Durable v2c messages. var V2CDurableStream = &nats.StreamConfig{ diff --git a/src/shared/services/pg/pg.go b/src/shared/services/pg/pg.go index 775f7920891..20b1acf5ac7 100644 --- a/src/shared/services/pg/pg.go +++ b/src/shared/services/pg/pg.go @@ -34,8 +34,10 @@ import ( "github.com/spf13/viper" ) -const retryAttempts = 5 -const retryDelay = 1 * time.Second +const ( + retryAttempts = 5 + retryDelay = 1 * time.Second +) func init() { pflag.Uint32("postgres_port", 5432, "The port for postgres database") diff --git a/src/shared/services/sentryhook/hook.go b/src/shared/services/sentryhook/hook.go index 8e07a70c6d2..ea4ee78883b 100644 --- a/src/shared/services/sentryhook/hook.go +++ b/src/shared/services/sentryhook/hook.go @@ -26,17 +26,15 @@ import ( log "github.com/sirupsen/logrus" ) -var ( - levelMap = map[log.Level]sentry.Level{ - log.TraceLevel: sentry.LevelDebug, - log.DebugLevel: sentry.LevelDebug, - log.InfoLevel: sentry.LevelInfo, - log.WarnLevel: sentry.LevelWarning, - log.ErrorLevel: sentry.LevelError, - log.FatalLevel: sentry.LevelFatal, - log.PanicLevel: sentry.LevelFatal, - } -) +var levelMap = map[log.Level]sentry.Level{ + log.TraceLevel: sentry.LevelDebug, + log.DebugLevel: sentry.LevelDebug, + log.InfoLevel: sentry.LevelInfo, + log.WarnLevel: sentry.LevelWarning, + log.ErrorLevel: sentry.LevelError, + log.FatalLevel: sentry.LevelFatal, + log.PanicLevel: sentry.LevelFatal, +} // Converter converts log entry to sentry. type Converter func(entry *log.Entry, event *sentry.Event, hub *sentry.Hub) diff --git a/src/shared/services/server/grpc_server.go b/src/shared/services/server/grpc_server.go index 3f8257898d6..e2dd213e491 100644 --- a/src/shared/services/server/grpc_server.go +++ b/src/shared/services/server/grpc_server.go @@ -30,7 +30,6 @@ import ( log "github.com/sirupsen/logrus" "google.golang.org/grpc" "google.golang.org/grpc/codes" - // Enables gzip encoding for GRPC. _ "google.golang.org/grpc/encoding/gzip" "google.golang.org/grpc/status" diff --git a/src/shared/services/service_flags.go b/src/shared/services/service_flags.go index a5a88b2426a..26983703ca9 100644 --- a/src/shared/services/service_flags.go +++ b/src/shared/services/service_flags.go @@ -37,9 +37,7 @@ import ( version "px.dev/pixie/src/shared/goversion" ) -var ( - commonSetup sync.Once -) +var commonSetup sync.Once func init() { // Enable the k8s DNS resolver to lookup services. diff --git a/src/shared/services/utils/jwt_test.go b/src/shared/services/utils/jwt_test.go index 1bcf8bf4507..34c5217abc2 100644 --- a/src/shared/services/utils/jwt_test.go +++ b/src/shared/services/utils/jwt_test.go @@ -66,6 +66,7 @@ func TestProtoToToken_Standard(t *testing.T) { assert.Equal(t, int64(5), token.NotBefore().Unix()) assert.Equal(t, "subject", token.Subject()) } + func TestProtoToToken_User(t *testing.T) { p := getStandardClaimsPb() p.Scopes = []string{"user"} diff --git a/src/stirling/demo_apps/go_http/server/simple_http_server.go b/src/stirling/demo_apps/go_http/server/simple_http_server.go index 89556030b06..174875c8ad5 100644 --- a/src/stirling/demo_apps/go_http/server/simple_http_server.go +++ b/src/stirling/demo_apps/go_http/server/simple_http_server.go @@ -27,9 +27,11 @@ import ( "time" ) -var letterRunes = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") -var cachedRespData []string -var mIterationsPerMs float64 +var ( + letterRunes = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") + cachedRespData []string + mIterationsPerMs float64 +) func init() { // Compute the cached response data, generating randoms strings is slow @@ -68,13 +70,6 @@ func randStringRunes(n int) string { return string(b) } -func min(x, y int64) int64 { - if x < y { - return x - } - return y -} - func fakeLoad(w *http.ResponseWriter, latency float64, mIters, respSize int64) float64 { // add some jitters // latency = rand.NormFloat64()*latency/10 + latency diff --git a/src/stirling/demo_apps/wrk_sweeper/wrk_sweeper.go b/src/stirling/demo_apps/wrk_sweeper/wrk_sweeper.go index 5e9186de922..a4ffa26bceb 100644 --- a/src/stirling/demo_apps/wrk_sweeper/wrk_sweeper.go +++ b/src/stirling/demo_apps/wrk_sweeper/wrk_sweeper.go @@ -31,14 +31,16 @@ import ( ) // Flag strings. -var flagSpecDuration string -var flagSpecThreads string -var flagSpecConnections string -var flagSpecMessageSize string -var flagSpecKIters string -var flagWrkHost string -var flagPrefix string -var flagOutputDir string +var ( + flagSpecDuration string + flagSpecThreads string + flagSpecConnections string + flagSpecMessageSize string + flagSpecKIters string + flagWrkHost string + flagPrefix string + flagOutputDir string +) func init() { flag.StringVar(&flagSpecDuration, "d", "10", "The duration spec") @@ -112,29 +114,30 @@ func parseOrDie(s string) int64 { } return val } + func parseSpec(spec string) SequenceGenerator { expRegex := regexp.MustCompile(`exp\((\d+), \s*(\d+),\s*(\d+)\)`) linRegex := regexp.MustCompile(`lin\((\d+), \s*(\d+),\s*(\d+)\)`) expMatches := expRegex.FindStringSubmatch(spec) if len(expMatches) == 4 { - min := parseOrDie(expMatches[1]) - max := parseOrDie(expMatches[2]) + minSeq := parseOrDie(expMatches[1]) + maxSeq := parseOrDie(expMatches[2]) base := parseOrDie(expMatches[3]) return &expSequenceGenerator{ - Min: min, - Max: max, + Min: minSeq, + Max: maxSeq, Base: base, } } linMatches := linRegex.FindStringSubmatch(spec) if len(linMatches) == 4 { - min := parseOrDie(linMatches[1]) - max := parseOrDie(linMatches[2]) + minSeq := parseOrDie(linMatches[1]) + maxSeq := parseOrDie(linMatches[2]) step := parseOrDie(linMatches[3]) return &linSequenceGenerator{ - Min: min, - Max: max, + Min: minSeq, + Max: maxSeq, Step: step, } } @@ -188,7 +191,7 @@ func main() { flag.Parse() if flagOutputDir != "" { - err := os.MkdirAll(flagOutputDir, 0755) + err := os.MkdirAll(flagOutputDir, 0o755) if err != nil { panic("failed to create output dir" + err.Error()) } diff --git a/src/stirling/source_connectors/perf_profiler/testing/go/profiler_test_app_sqrt.go b/src/stirling/source_connectors/perf_profiler/testing/go/profiler_test_app_sqrt.go index 3a8351e1be7..d2afba415cb 100644 --- a/src/stirling/source_connectors/perf_profiler/testing/go/profiler_test_app_sqrt.go +++ b/src/stirling/source_connectors/perf_profiler/testing/go/profiler_test_app_sqrt.go @@ -27,9 +27,9 @@ import ( ) func sqrt(x float64) float64 { - var r = x - var precision = 1e-10 - var eps = math.Abs(x - r*r) + r := x + precision := 1e-10 + eps := math.Abs(x - r*r) for eps > precision { r = (r + x/r) / 2 eps = math.Abs(x - r*r) @@ -39,13 +39,13 @@ func sqrt(x float64) float64 { func sqrtOf1e39() float64 { // Runs for 70 iters. - var x = 1e39 + x := 1e39 return sqrt(x) } func sqrtOf1e18() float64 { // Runs for 35 iters. - var x = 1e18 + x := 1e18 return sqrt(x) } @@ -53,7 +53,7 @@ func main() { sigs := make(chan os.Signal, 1) signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM) - var done = false + done := false var x float64 var y float64 diff --git a/src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_server/main.go b/src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_server/main.go index e8d0767b258..25dcdb9031b 100644 --- a/src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_server/main.go +++ b/src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_server/main.go @@ -92,11 +92,11 @@ func (s *server) SayHelloBidirStreaming(stream pb.StreamingGreeter_SayHelloBidir } func main() { - var port = flag.Int("port", 50051, "The port to listen.") - var https = flag.Bool("https", false, "Whether or not to use https") - var cert = flag.String("cert", "", "Path to the .crt file.") - var key = flag.String("key", "", "Path to the .key file.") - var streaming = flag.Bool("streaming", false, "Whether or not to call streaming RPC") + port := flag.Int("port", 50051, "The port to listen.") + https := flag.Bool("https", false, "Whether or not to use https") + cert := flag.String("cert", "", "Path to the .crt file.") + key := flag.String("key", "", "Path to the .key file.") + streaming := flag.Bool("streaming", false, "Whether or not to call streaming RPC") const keyPairBase = "src/stirling/source_connectors/socket_tracer/protocols/http2/testing/go_grpc_server" diff --git a/src/stirling/testing/demo_apps/go_http/go_http_client/main.go b/src/stirling/testing/demo_apps/go_http/go_http_client/main.go index b840ca855ed..eb5488883fa 100644 --- a/src/stirling/testing/demo_apps/go_http/go_http_client/main.go +++ b/src/stirling/testing/demo_apps/go_http/go_http_client/main.go @@ -33,8 +33,10 @@ import ( "time" ) -var r = rand.New(rand.NewSource(1)) -var letterRunes = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") +var ( + r = rand.New(rand.NewSource(1)) + letterRunes = []rune("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ") +) func randStringRunes(n int) string { b := make([]rune, n) @@ -70,7 +72,7 @@ func main() { fmt.Print("Starting to send requests...\n") for i := 0; i < *count || *count == 0; i++ { - if *reqType == "get" || *reqType == "mix" { + if *reqType == "get" || *reqType == "mix" { //nolint:staticcheck resp, err := http.Get("http://" + *address + "/sayhello?name=" + url.QueryEscape(*name)) if err != nil { panic(err) diff --git a/src/utils/artifacts/manifest_updater/main.go b/src/utils/artifacts/manifest_updater/main.go index c3d71a436bd..8fed3025ee9 100644 --- a/src/utils/artifacts/manifest_updater/main.go +++ b/src/utils/artifacts/manifest_updater/main.go @@ -29,14 +29,13 @@ import ( "path/filepath" "time" + "cloud.google.com/go/storage" log "github.com/sirupsen/logrus" "github.com/spf13/pflag" "github.com/spf13/viper" + "google.golang.org/api/googleapi" "px.dev/pixie/src/shared/artifacts/manifest" - - "cloud.google.com/go/storage" - "google.golang.org/api/googleapi" ) func init() { @@ -171,14 +170,14 @@ func updateLocalManifest(updates *manifest.ArtifactManifest) error { if err := newManifest.Write(manifestBuf); err != nil { return err } - if err := os.WriteFile(path, manifestBuf.Bytes(), 0664); err != nil { + if err := os.WriteFile(path, manifestBuf.Bytes(), 0o664); err != nil { return err } sha256Bytes := sha256.Sum256(manifestBuf.Bytes()) sha256Str := fmt.Sprintf("%x", sha256Bytes) shaPath := path + ".sha256" - if err := os.WriteFile(shaPath, []byte(sha256Str), 0664); err != nil { + if err := os.WriteFile(shaPath, []byte(sha256Str), 0o664); err != nil { return err } @@ -186,7 +185,7 @@ func updateLocalManifest(updates *manifest.ArtifactManifest) error { } func createEmptyManifest(path string) (*os.File, error) { - if err := os.MkdirAll(filepath.Dir(path), 0755); err != nil { + if err := os.MkdirAll(filepath.Dir(path), 0o755); err != nil { return nil, err } f, err := os.Create(path) diff --git a/src/utils/dev_dns_updater/dev_dns_updater.go b/src/utils/dev_dns_updater/dev_dns_updater.go index 8e6e2d3f16f..81146cee793 100644 --- a/src/utils/dev_dns_updater/dev_dns_updater.go +++ b/src/utils/dev_dns_updater/dev_dns_updater.go @@ -238,8 +238,10 @@ func cleanup(tmp *os.File) { } } -var sudoPass string -var sudoPassRead bool = false +var ( + sudoPass string + sudoPassRead bool = false +) func promptForSudoPass() error { u, err := user.Current() diff --git a/src/utils/erroraccumulator.go b/src/utils/erroraccumulator.go index 352fcfde07f..1ccf3451e7c 100644 --- a/src/utils/erroraccumulator.go +++ b/src/utils/erroraccumulator.go @@ -45,7 +45,7 @@ func (ea *ErrorAccumulator) Merge() error { if len(ea.errorStrs) == 0 { return nil } - return fmt.Errorf(indent(strings.Join(ea.errorStrs, "\n"))) + return fmt.Errorf("%s", indent(strings.Join(ea.errorStrs, "\n"))) } // MakeErrorAccumulator constructs the ErrorAccumulator. diff --git a/src/utils/script/err.go b/src/utils/script/err.go index 4ccc51edb11..c1b4b2f31a3 100644 --- a/src/utils/script/err.go +++ b/src/utils/script/err.go @@ -20,7 +20,5 @@ package script import "errors" -var ( - // ErrScriptNotFound is returned when the requested script does not exist. - ErrScriptNotFound = errors.New("Script not found (run `px run -l` to list available scripts)") -) +// ErrScriptNotFound is returned when the requested script does not exist. +var ErrScriptNotFound = errors.New("Script not found (run `px run -l` to list available scripts)") diff --git a/src/utils/shared/artifacts/yamls.go b/src/utils/shared/artifacts/yamls.go index f7b6151a021..96e8e112706 100644 --- a/src/utils/shared/artifacts/yamls.go +++ b/src/utils/shared/artifacts/yamls.go @@ -69,7 +69,6 @@ func downloadVizierYAMLs(conn *grpc.ClientConn, authToken, versionStr string, te // FetchVizierYAMLMap fetches Vizier YAML files and write to a map :. func FetchVizierYAMLMap(conn *grpc.ClientConn, authToken, versionStr string) (map[string]string, error) { reader, err := downloadVizierYAMLs(conn, authToken, versionStr, false) - if err != nil { return nil, err } @@ -85,7 +84,6 @@ func FetchVizierYAMLMap(conn *grpc.ClientConn, authToken, versionStr string) (ma // FetchVizierTemplates fetches the Vizier templates for the given version. func FetchVizierTemplates(conn *grpc.ClientConn, authToken, versionStr string) ([]*yamls.YAMLFile, error) { reader, err := downloadVizierYAMLs(conn, authToken, versionStr, true) - if err != nil { return nil, err } diff --git a/src/utils/shared/k8s/apply.go b/src/utils/shared/k8s/apply.go index e4a1ddd2ed2..c25858ce6d7 100644 --- a/src/utils/shared/k8s/apply.go +++ b/src/utils/shared/k8s/apply.go @@ -163,7 +163,7 @@ func GetResourcesFromYAML(yamlFile io.Reader) ([]*Resource, error) { _, gvk, err := unstructured.UnstructuredJSONScheme.Decode(ext.Raw, nil, nil) if err != nil { - log.WithError(err).Fatalf(err.Error()) + log.WithError(err).Fatal(err.Error()) return nil, err } diff --git a/src/utils/shared/k8s/auth.go b/src/utils/shared/k8s/auth.go index 248363671bc..a24883e1105 100644 --- a/src/utils/shared/k8s/auth.go +++ b/src/utils/shared/k8s/auth.go @@ -27,7 +27,6 @@ import ( "github.com/spf13/pflag" "k8s.io/client-go/discovery" "k8s.io/client-go/kubernetes" - // Blank import necessary for kubeConfig to work. _ "k8s.io/client-go/plugin/pkg/client/auth" "k8s.io/client-go/rest" diff --git a/src/utils/shared/k8s/delete.go b/src/utils/shared/k8s/delete.go index c9728f78c32..3adb2c8b986 100644 --- a/src/utils/shared/k8s/delete.go +++ b/src/utils/shared/k8s/delete.go @@ -253,7 +253,6 @@ func (o *ObjectDeleter) deleteResource(info *resource.Info, deleteOptions *metav deleteResponse, err := resource. NewHelper(info.Client, info.Mapping). DeleteWithOptions(info.Namespace, info.Name, deleteOptions) - if err != nil { return nil, cmdutil.AddSourceToErr("deleting", info.Source, err) } diff --git a/src/utils/shared/k8s/secrets.go b/src/utils/shared/k8s/secrets.go index 92336e442f3..8056fad6d83 100644 --- a/src/utils/shared/k8s/secrets.go +++ b/src/utils/shared/k8s/secrets.go @@ -29,7 +29,6 @@ import ( "strings" log "github.com/sirupsen/logrus" - v1 "k8s.io/api/core/v1" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/util/validation" diff --git a/src/utils/shared/yamls/extract.go b/src/utils/shared/yamls/extract.go index 0a0c001cdc6..b7d11b54b2b 100644 --- a/src/utils/shared/yamls/extract.go +++ b/src/utils/shared/yamls/extract.go @@ -52,7 +52,7 @@ func ConcatYAMLs(y1 string, y2 string) string { // ExtractYAMLs writes the generated YAMLs to a tar at the given path in the given format. func ExtractYAMLs(yamls []*YAMLFile, extractPath string, yamlDir string, format ExtractYAMLFormat) error { writeYAML := func(w *tar.Writer, name string, contents string) error { - if err := w.WriteHeader(&tar.Header{Name: name, Size: int64(len(contents)), Mode: 0777}); err != nil { + if err := w.WriteHeader(&tar.Header{Name: name, Size: int64(len(contents)), Mode: 0o777}); err != nil { return err } if _, err := w.Write([]byte(contents)); err != nil { @@ -62,7 +62,7 @@ func ExtractYAMLs(yamls []*YAMLFile, extractPath string, yamlDir string, format } filePath := path.Join(extractPath, "yamls.tar") - writer, err := os.OpenFile(filePath, os.O_RDWR|os.O_CREATE, 0755) + writer, err := os.OpenFile(filePath, os.O_RDWR|os.O_CREATE, 0o755) if err != nil { return fmt.Errorf("Failed trying to open extract_yaml path: %s", err) } diff --git a/src/utils/shared/yamls/templates.go b/src/utils/shared/yamls/templates.go index d6255aca5d3..be361776b26 100644 --- a/src/utils/shared/yamls/templates.go +++ b/src/utils/shared/yamls/templates.go @@ -39,8 +39,10 @@ import ( k8syaml "sigs.k8s.io/yaml" ) -var nonNamespacedKinds = []string{"Namespace", "ClusterRoleBinding", "ClusterRole"} -var templateKinds = []string{"DaemonSet", "Deployment", "StatefulSet"} +var ( + nonNamespacedKinds = []string{"Namespace", "ClusterRoleBinding", "ClusterRole"} + templateKinds = []string{"DaemonSet", "Deployment", "StatefulSet"} +) // YAMLTmplArguments is a wrapper around YAMLTmplValues. type YAMLTmplArguments struct { diff --git a/src/utils/template_generator/vizier_yamls/vizier_yamls.go b/src/utils/template_generator/vizier_yamls/vizier_yamls.go index ae134a28f32..339d26e9d40 100644 --- a/src/utils/template_generator/vizier_yamls/vizier_yamls.go +++ b/src/utils/template_generator/vizier_yamls/vizier_yamls.go @@ -481,7 +481,6 @@ func generateVzYAMLs(yamlMap map[string]string) ([]*yamls.YAMLFile, error) { }...) persistentYAML, err := yamls.TemplatizeK8sYAML(yamlMap[vizierMetadataPersistYAMLPath], tmplOptions) - if err != nil { return nil, err } diff --git a/src/utils/uuid_test.go b/src/utils/uuid_test.go index 958def190ba..76b98858701 100644 --- a/src/utils/uuid_test.go +++ b/src/utils/uuid_test.go @@ -30,9 +30,11 @@ import ( "px.dev/pixie/src/utils" ) -const uuidStr = "ea8aa095-697f-49f1-b127-d50e5b6e2645" -const hi uint64 = 0xea8aa095697f49f1 -const lo uint64 = 0xb127d50e5b6e2645 +const ( + uuidStr = "ea8aa095-697f-49f1-b127-d50e5b6e2645" + hi uint64 = 0xea8aa095697f49f1 + lo uint64 = 0xb127d50e5b6e2645 +) var enc = binary.BigEndian diff --git a/src/vizier/services/cloud_connector/bridge/server_test.go b/src/vizier/services/cloud_connector/bridge/server_test.go index 55e7aa87e69..312b609815f 100644 --- a/src/vizier/services/cloud_connector/bridge/server_test.go +++ b/src/vizier/services/cloud_connector/bridge/server_test.go @@ -79,7 +79,7 @@ func handleMsg(srv vzconnpb.VZConnService_NATSBridgeServer, msg *vzconnpb.V2CBri return nil } if msg.Topic == "randomtopicNeedsResponse" { - var unmarshal = &cvmsgspb.VLogMessage{} + unmarshal := &cvmsgspb.VLogMessage{} err := types.UnmarshalAny(msg.Msg, unmarshal) if err != nil { return err diff --git a/src/vizier/services/cloud_connector/bridge/vzinfo.go b/src/vizier/services/cloud_connector/bridge/vzinfo.go index 4e967d1528e..98c4d65ad43 100644 --- a/src/vizier/services/cloud_connector/bridge/vzinfo.go +++ b/src/vizier/services/cloud_connector/bridge/vzinfo.go @@ -52,8 +52,10 @@ import ( const k8sStateUpdatePeriod = 10 * time.Second -const privateImageRepo = "gcr.io/pixie-oss/pixie-dev" -const publicImageRepo = "gcr.io/pixie-oss/pixie-prod" +const ( + privateImageRepo = "gcr.io/pixie-oss/pixie-dev" + publicImageRepo = "gcr.io/pixie-oss/pixie-prod" +) // K8sState describes the Kubernetes state of the Vizier instance. type K8sState struct { diff --git a/src/vizier/services/cloud_connector/cloud_connector_server.go b/src/vizier/services/cloud_connector/cloud_connector_server.go index d7c612d67d0..68628fcebcc 100644 --- a/src/vizier/services/cloud_connector/cloud_connector_server.go +++ b/src/vizier/services/cloud_connector/cloud_connector_server.go @@ -60,6 +60,7 @@ func init() { pflag.Bool("disable_auto_update", false, "Whether auto-update should be disabled") pflag.Duration("metrics_scrape_period", 15*time.Minute, "Period that the metrics scraper should run at.") } + func newVzServiceClient() (vizierpb.VizierServiceClient, error) { dialOpts, err := services.GetGRPCClientDialOpts() if err != nil { @@ -132,7 +133,6 @@ func main() { viper.GetDuration("renew_period"), "cloud-conn-election", ) - if err != nil { log.WithError(err).Fatal("Failed to connect to leader election manager.") } diff --git a/src/vizier/services/metadata/controllers/agent/agent.go b/src/vizier/services/metadata/controllers/agent/agent.go index 3409af53cd4..b4e2a5014d8 100644 --- a/src/vizier/services/metadata/controllers/agent/agent.go +++ b/src/vizier/services/metadata/controllers/agent/agent.go @@ -243,7 +243,6 @@ func (m *ManagerImpl) deleteAgentWrapper(agentID uuid.UUID) error { // We cannot lock the entire call to `deleteAgentWrapper`, which would allow for perfect consistency, // since the update to the metadata store may hit the network. err := m.agtStore.DeleteAgent(agentID) - if err != nil { log.WithError(err).Warnf("Failed to delete agent %s", agentID.String()) return err @@ -277,7 +276,6 @@ func (m *ManagerImpl) createAgentWrapper(agentID uuid.UUID, agentInfo *agentpb.A // We cannot lock the entire call to `createAgentWrapper`, which would allow for perfect consistency, // since the update to the metadata store may hit the network. err := m.agtStore.CreateAgent(agentID, agentInfo) - if err != nil { log.WithError(err).Warnf("Failed to create agent %s", agentID.String()) return err @@ -311,7 +309,6 @@ func (m *ManagerImpl) updateAgentWrapper(agentID uuid.UUID, agentInfo *agentpb.A // We cannot lock the entire call to `updateAgentWrapper`, which would allow for perfect consistency, // since the update to the metadata store may hit the network. err := m.agtStore.UpdateAgent(agentID, agentInfo) - if err != nil { log.WithError(err).Warnf("Failed to update agent %s", agentID.String()) return err @@ -345,7 +342,6 @@ func (m *ManagerImpl) updateAgentDataInfoWrapper(agentID uuid.UUID, agentDataInf // We cannot lock the entire call to `updateAgentDataInfoWrapper`, which would allow for perfect consistency, // since the update to the metadata store may hit the network. err := m.agtStore.UpdateAgentDataInfo(agentID, agentDataInfo) - if err != nil { log.WithError(err).Warnf("Failed to update agent data info for agent %s", agentID.String()) return err @@ -603,7 +599,8 @@ func (m *ManagerImpl) UpdateConfig(ns string, podName string, key string, value // if the input cursor has never read the initial state before, the full initial agent state is read out. // Afterwards, the changes to the agent state are read out as a delta to the previous state. func (m *ManagerImpl) GetAgentUpdates(cursorID uuid.UUID) ([]*metadata_servicepb.AgentUpdate, - *storepb.ComputedSchema, error) { + *storepb.ComputedSchema, error, +) { schemaUpdated := false var updatedAgentsUpdates []*metadata_servicepb.AgentUpdate diff --git a/src/vizier/services/metadata/controllers/agent_topic_listener.go b/src/vizier/services/metadata/controllers/agent_topic_listener.go index e1977867436..e8b72cfa463 100644 --- a/src/vizier/services/metadata/controllers/agent_topic_listener.go +++ b/src/vizier/services/metadata/controllers/agent_topic_listener.go @@ -103,7 +103,8 @@ type AgentHandler struct { // NewAgentTopicListener creates a new agent topic listener. func NewAgentTopicListener(agtMgr agent.Manager, tpMgr *tracepoint.Manager, - sendMsgFn SendMessageFn) (*AgentTopicListener, error) { + sendMsgFn SendMessageFn, +) (*AgentTopicListener, error) { atl := &AgentTopicListener{ agtMgr: agtMgr, tpMgr: tpMgr, diff --git a/src/vizier/services/metadata/controllers/cronscript/store_test.go b/src/vizier/services/metadata/controllers/cronscript/store_test.go index 7429b14ad73..db3e635b65f 100644 --- a/src/vizier/services/metadata/controllers/cronscript/store_test.go +++ b/src/vizier/services/metadata/controllers/cronscript/store_test.go @@ -23,12 +23,11 @@ import ( "testing" "time" - "github.com/gogo/protobuf/types" - "github.com/cockroachdb/pebble" "github.com/cockroachdb/pebble/vfs" "github.com/gofrs/uuid" "github.com/gogo/protobuf/proto" + "github.com/gogo/protobuf/types" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" diff --git a/src/vizier/services/metadata/controllers/k8smeta/k8s_metadata_handler_test.go b/src/vizier/services/metadata/controllers/k8smeta/k8s_metadata_handler_test.go index 51b230483e6..b50a5c93079 100644 --- a/src/vizier/services/metadata/controllers/k8smeta/k8s_metadata_handler_test.go +++ b/src/vizier/services/metadata/controllers/k8smeta/k8s_metadata_handler_test.go @@ -176,12 +176,14 @@ func createDeploymentObject() *storepb.K8SResource { } } -type ResourceStore map[int64]*storepb.K8SResourceUpdate -type InMemoryStore struct { - ResourceStoreByTopic map[string]ResourceStore - RVStore map[string]int64 - FullResourceStore map[int64]*storepb.K8SResource -} +type ( + ResourceStore map[int64]*storepb.K8SResourceUpdate + InMemoryStore struct { + ResourceStoreByTopic map[string]ResourceStore + RVStore map[string]int64 + FullResourceStore map[int64]*storepb.K8SResource + } +) func (s *InMemoryStore) AddResourceUpdateForTopic(uv int64, topic string, r *storepb.K8SResourceUpdate) error { if _, ok := s.ResourceStoreByTopic[topic]; !ok { @@ -501,10 +503,11 @@ func TestHandler_ProcessUpdates(t *testing.T) { // Reset prevUpdateVersion for proto comparison. m.GetK8SMetadataMessage().GetK8SMetadataUpdate().PrevUpdateVersion = 0 - if prevUpdateVersion == 3 { + switch prevUpdateVersion { + case 3: assert.Equal(t, expectedNodeMsg, m) wg.Done() - } else if prevUpdateVersion == 4 { + case 4: assert.Equal(t, expectedNSMsg, m) wg.Done() } @@ -520,10 +523,11 @@ func TestHandler_ProcessUpdates(t *testing.T) { // Reset prevUpdateVersion for proto comparison. m.GetK8SMetadataMessage().GetK8SMetadataUpdate().PrevUpdateVersion = 0 - if prevUpdateVersion == 3 { + switch prevUpdateVersion { + case 3: assert.Equal(t, expectedNodeMsg, m) wg.Done() - } else if prevUpdateVersion == 4 { + case 4: assert.Equal(t, expectedNSMsg, m) wg.Done() } diff --git a/src/vizier/services/metadata/controllers/k8smeta/k8s_metadata_store.go b/src/vizier/services/metadata/controllers/k8smeta/k8s_metadata_store.go index fe71312864e..37a9e5c8937 100644 --- a/src/vizier/services/metadata/controllers/k8smeta/k8s_metadata_store.go +++ b/src/vizier/services/metadata/controllers/k8smeta/k8s_metadata_store.go @@ -137,11 +137,7 @@ func (m *Datastore) FetchResourceUpdates(topic string, from int64, to int64) ([] // Merge the topic-specific and unscoped updates in order. tIdx := 0 uIdx := 0 - for { - if tIdx == len(tKeys) && uIdx == len(uKeys) { - break - } - + for tIdx < len(tKeys) || uIdx < len(uKeys) { var uVersion int64 = -1 var tVersion int64 = -1 var err error diff --git a/src/vizier/services/metadata/controllers/message_bus.go b/src/vizier/services/metadata/controllers/message_bus.go index 95eb20e0215..fafee905dbc 100644 --- a/src/vizier/services/metadata/controllers/message_bus.go +++ b/src/vizier/services/metadata/controllers/message_bus.go @@ -53,7 +53,8 @@ type MessageBusController struct { // NewMessageBusController creates a new controller for handling NATS messages. func NewMessageBusController(conn *nats.Conn, agtMgr agent.Manager, tpMgr *tracepoint.Manager, k8smetaHandler *k8smeta.Handler, - isLeader *bool) (*MessageBusController, error) { + isLeader *bool, +) (*MessageBusController, error) { ch := make(chan *nats.Msg, 8192) listeners := make(map[string]TopicListener) subscriptions := make([]*nats.Subscription, 0) diff --git a/src/vizier/services/metadata/controllers/server.go b/src/vizier/services/metadata/controllers/server.go index d23b2be5e52..8c4a11eebe9 100644 --- a/src/vizier/services/metadata/controllers/server.go +++ b/src/vizier/services/metadata/controllers/server.go @@ -257,7 +257,7 @@ func (s *Server) GetAgentUpdates(req *metadatapb.AgentUpdatesRequest, srv metada } } else { // Chunk up the data so we don't overwhelm the query broker with a lot of data at once. - for !(finishedUpdates && finishedSchema) { + for !finishedUpdates || !finishedSchema { select { case <-srv.Context().Done(): log.Infof("Client closed context for GetAgentUpdates") diff --git a/src/vizier/services/metadata/controllers/server_test.go b/src/vizier/services/metadata/controllers/server_test.go index befa5630ec0..9a9dc844c9a 100644 --- a/src/vizier/services/metadata/controllers/server_test.go +++ b/src/vizier/services/metadata/controllers/server_test.go @@ -46,7 +46,6 @@ import ( "px.dev/pixie/src/carnot/planner/dynamic_tracing/ir/logicalpb" "px.dev/pixie/src/common/base/statuspb" "px.dev/pixie/src/shared/bloomfilterpb" - sharedmetadatapb "px.dev/pixie/src/shared/metadatapb" "px.dev/pixie/src/shared/services/env" "px.dev/pixie/src/shared/services/server" diff --git a/src/vizier/services/metadata/controllers/tracepoint/tracepoint.go b/src/vizier/services/metadata/controllers/tracepoint/tracepoint.go index 3557495354a..fb24dd141de 100644 --- a/src/vizier/services/metadata/controllers/tracepoint/tracepoint.go +++ b/src/vizier/services/metadata/controllers/tracepoint/tracepoint.go @@ -38,11 +38,9 @@ import ( "px.dev/pixie/src/vizier/services/shared/agentpb" ) -var ( - // ErrTracepointAlreadyExists is produced if a tracepoint already exists with the given name - // and does not have a matching schema. - ErrTracepointAlreadyExists = errors.New("TracepointDeployment already exists") -) +// ErrTracepointAlreadyExists is produced if a tracepoint already exists with the given name +// and does not have a matching schema. +var ErrTracepointAlreadyExists = errors.New("TracepointDeployment already exists") // agentMessenger is a controller that lets us message all agents and all active agents. type agentMessenger interface { @@ -446,7 +444,6 @@ func (m *Manager) RegisterTracepoint(agents []*agentpb.Agent, tracepointID uuid. } err = m.agtMgr.MessageAgents(validAgentsForProgram.AgentIDs, msg) - if err != nil { return err } diff --git a/src/vizier/services/metadata/metadata_server.go b/src/vizier/services/metadata/metadata_server.go index d94ea9d810c..b2959d80e98 100644 --- a/src/vizier/services/metadata/metadata_server.go +++ b/src/vizier/services/metadata/metadata_server.go @@ -138,11 +138,11 @@ func cleanupOldPebbleData() { func mustInitPebbleDatastore() *pebbledb.DataStore { cleanupOldPebbleData() log.Infof("Using pebbledb: %s for metadata", pebbleOpenDir) - pebbleDb, err := pebble.Open(pebbleOpenDir, &pebble.Options{}) + pebbleDB, err := pebble.Open(pebbleOpenDir, &pebble.Options{}) if err != nil { log.WithError(err).Fatal("Failed to open pebble database. If out of space, increase the storage size of the `metadata-pv-claim` PersistentVolumeClaim and restart the vizier-metadata pod") } - return pebbledb.New(pebbleDb, pebbledbTTLDuration) + return pebbledb.New(pebbleDB, pebbledbTTLDuration) } func etcdTLSConfig() (*tls.Config, error) { @@ -272,7 +272,6 @@ func main() { mc, err := controllers.NewMessageBusController(nc, agtMgr, tracepointMgr, mdh, &isLeader) - if err != nil { log.WithError(err).Fatal("Failed to connect to message bus") } diff --git a/src/vizier/services/query_broker/controllers/data_privacy.go b/src/vizier/services/query_broker/controllers/data_privacy.go index b8d02c59efa..0fd1f506e09 100644 --- a/src/vizier/services/query_broker/controllers/data_privacy.go +++ b/src/vizier/services/query_broker/controllers/data_privacy.go @@ -26,7 +26,6 @@ import ( "github.com/spf13/viper" "px.dev/pixie/src/carnot/planner/distributedpb" - pixie "px.dev/pixie/src/operator/apis/px.dev/v1alpha1" ) diff --git a/src/vizier/services/query_broker/controllers/launch_query.go b/src/vizier/services/query_broker/controllers/launch_query.go index e81b68d7436..6545ef087c1 100644 --- a/src/vizier/services/query_broker/controllers/launch_query.go +++ b/src/vizier/services/query_broker/controllers/launch_query.go @@ -21,10 +21,9 @@ package controllers import ( "fmt" - "golang.org/x/sync/errgroup" - "github.com/gofrs/uuid" "github.com/nats-io/nats.go" + "golang.org/x/sync/errgroup" "px.dev/pixie/src/carnot/planpb" "px.dev/pixie/src/utils" diff --git a/src/vizier/services/query_broker/controllers/launch_query_test.go b/src/vizier/services/query_broker/controllers/launch_query_test.go index 2bb766f865b..620c516b67b 100644 --- a/src/vizier/services/query_broker/controllers/launch_query_test.go +++ b/src/vizier/services/query_broker/controllers/launch_query_test.go @@ -36,9 +36,11 @@ import ( "px.dev/pixie/src/vizier/services/query_broker/controllers" ) -const queryIDStr = "11285cdd-1de9-4ab1-ae6a-0ba08c8c676c" -const agent1ID = "21285cdd-1de9-4ab1-ae6a-0ba08c8c676c" -const agent2ID = "31285cdd-1de9-4ab1-ae6a-0ba08c8c676c" +const ( + queryIDStr = "11285cdd-1de9-4ab1-ae6a-0ba08c8c676c" + agent1ID = "21285cdd-1de9-4ab1-ae6a-0ba08c8c676c" + agent2ID = "31285cdd-1de9-4ab1-ae6a-0ba08c8c676c" +) func TestLaunchQuery(t *testing.T) { // Check that the query is broadcasted to all agents. diff --git a/src/vizier/services/query_broker/controllers/mutation_executor.go b/src/vizier/services/query_broker/controllers/mutation_executor.go index ca928fc04e4..f14ad3028de 100644 --- a/src/vizier/services/query_broker/controllers/mutation_executor.go +++ b/src/vizier/services/query_broker/controllers/mutation_executor.go @@ -69,7 +69,8 @@ func NewMutationExecutor( planner Planner, mdtp metadatapb.MetadataTracepointServiceClient, mdconf metadatapb.MetadataConfigServiceClient, - distributedState *distributedpb.DistributedState) MutationExecutor { + distributedState *distributedpb.DistributedState, +) MutationExecutor { return &MutationExecutorImpl{ planner: planner, mdtp: mdtp, diff --git a/src/vizier/services/query_broker/controllers/proto_utils.go b/src/vizier/services/query_broker/controllers/proto_utils.go index 4afa110b06f..bf363f5c5a6 100644 --- a/src/vizier/services/query_broker/controllers/proto_utils.go +++ b/src/vizier/services/query_broker/controllers/proto_utils.go @@ -372,7 +372,8 @@ func RowBatchToVizierRowBatch(rb *schemapb.RowBatchData, tableID string) (*vizie func BuildExecuteScriptResponse(r *carnotpb.TransferResultChunkRequest, // Map of the received table names to their table ID on the output proto. tableIDMap map[string]string, - compilationTimeNs int64) (*vizierpb.ExecuteScriptResponse, error) { + compilationTimeNs int64, +) (*vizierpb.ExecuteScriptResponse, error) { res := &vizierpb.ExecuteScriptResponse{ QueryID: utils.UUIDFromProtoOrNil(r.QueryID).String(), } @@ -424,7 +425,8 @@ func BuildExecuteScriptResponse(r *carnotpb.TransferResultChunkRequest, func QueryPlanResponse(queryID uuid.UUID, plan *distributedpb.DistributedPlan, planMap map[uuid.UUID]*planpb.Plan, agentStats *[]*queryresultspb.AgentExecutionStats, planTableID string, - maxQueryPlanStringSizeBytes int) ([]*vizierpb.ExecuteScriptResponse, error) { + maxQueryPlanStringSizeBytes int, +) ([]*vizierpb.ExecuteScriptResponse, error) { queryPlan, err := GetQueryPlanAsDotString(plan, planMap, agentStats) if err != nil { log.WithError(err).Error("error with query plan") @@ -545,7 +547,8 @@ func AgentRelationToVizierRelation(relation *schemapb.Relation) *vizierpb.Relati // TableRelationResponses returns the query metadata table schemas as ExecuteScriptResponses. func TableRelationResponses(queryID uuid.UUID, tableIDMap map[string]string, - planMap map[uuid.UUID]*planpb.Plan) ([]*vizierpb.ExecuteScriptResponse, error) { + planMap map[uuid.UUID]*planpb.Plan, +) ([]*vizierpb.ExecuteScriptResponse, error) { var results []*vizierpb.ExecuteScriptResponse schemas := OutputSchemaFromPlan(planMap) diff --git a/src/vizier/services/query_broker/controllers/proto_utils_test.go b/src/vizier/services/query_broker/controllers/proto_utils_test.go index 3ee93a2e2d1..ea8e68bc7f3 100644 --- a/src/vizier/services/query_broker/controllers/proto_utils_test.go +++ b/src/vizier/services/query_broker/controllers/proto_utils_test.go @@ -536,13 +536,14 @@ func TestQueryPlanResponse(t *testing.T) { { ColData: &vizierpb.Column_StringData{ StringData: &vizierpb.StringColumn{ - Data: [][]byte{[]byte( - "digraph {\n\tsubgraph cluster_s0 {\n\t\tID = \"cluster_s0\";\n" + - "\t\tcolor=\"lightgrey\";label=\"agent::3ca421d4-5f85-4c99-8248-02252204e281\\n" + - "123ns\";\n\t\tn1[color=\"blue\",label=\"memory_source_operator[2]\\" + - "nself_time: 70ns\\ntotal_time: 73ns\\nbytes: 456 B\\nrecords_processed: 12\"" + - ",shape=\"rect\"];\n\t\tn2[color=\"yellow\",label=\"grpc_sink_operator[3]\\n\"" + - ",shape=\"rect\"];\n\t\tn1->n2;\n\t\t\n\t}\n\t\n}"), + Data: [][]byte{ + []byte( + "digraph {\n\tsubgraph cluster_s0 {\n\t\tID = \"cluster_s0\";\n" + + "\t\tcolor=\"lightgrey\";label=\"agent::3ca421d4-5f85-4c99-8248-02252204e281\\n" + + "123ns\";\n\t\tn1[color=\"blue\",label=\"memory_source_operator[2]\\" + + "nself_time: 70ns\\ntotal_time: 73ns\\nbytes: 456 B\\nrecords_processed: 12\"" + + ",shape=\"rect\"];\n\t\tn2[color=\"yellow\",label=\"grpc_sink_operator[3]\\n\"" + + ",shape=\"rect\"];\n\t\tn1->n2;\n\t\t\n\t}\n\t\n}"), }, }, }, @@ -573,13 +574,14 @@ func TestQueryPlanResponse(t *testing.T) { { ColData: &vizierpb.Column_StringData{ StringData: &vizierpb.StringColumn{ - Data: [][]byte{[]byte( - "digraph {\n\tsubgraph cluster_s0 {\n\t\tID = \"cluster_s0\";\n\t\t" + - "color=\"lightgrey\";label=\"agent::3ca421d4-5f85-4c99-8248-02252204e281" + - "\\n123ns\";\n\t\tn1[color=\"blue\",label=\"memory_source_operator[2]\\n" + - "self_time: 70ns\\ntotal_time: 73ns\\nbytes: 456 B\\nrecords_processed: 12\"," + - "shape=\"rect\"];\n\t\tn2[color=\"yellow\",label=\"grpc_sink_operator[3]\\n\"," + - "shape=\"rect\"];\n\t\tn1->n2;"), + Data: [][]byte{ + []byte( + "digraph {\n\tsubgraph cluster_s0 {\n\t\tID = \"cluster_s0\";\n\t\t" + + "color=\"lightgrey\";label=\"agent::3ca421d4-5f85-4c99-8248-02252204e281" + + "\\n123ns\";\n\t\tn1[color=\"blue\",label=\"memory_source_operator[2]\\n" + + "self_time: 70ns\\ntotal_time: 73ns\\nbytes: 456 B\\nrecords_processed: 12\"," + + "shape=\"rect\"];\n\t\tn2[color=\"yellow\",label=\"grpc_sink_operator[3]\\n\"," + + "shape=\"rect\"];\n\t\tn1->n2;"), }, }, }, @@ -602,8 +604,9 @@ func TestQueryPlanResponse(t *testing.T) { { ColData: &vizierpb.Column_StringData{ StringData: &vizierpb.StringColumn{ - Data: [][]byte{[]byte( - "\n\t\t\n\t}\n\t\n}"), + Data: [][]byte{ + []byte( + "\n\t\t\n\t}\n\t\n}"), }, }, }, @@ -660,7 +663,8 @@ func TestTableRelationResponses(t *testing.T) { ID: "agent1_table_id", Relation: &vizierpb.Relation{ Columns: []*vizierpb.Relation_ColumnInfo{ - {ColumnName: "time_", + { + ColumnName: "time_", ColumnType: 6, ColumnDesc: "", ColumnSemanticType: 1, @@ -688,7 +692,8 @@ func TestTableRelationResponses(t *testing.T) { ID: "agent2_table_id", Relation: &vizierpb.Relation{ Columns: []*vizierpb.Relation_ColumnInfo{ - {ColumnName: "time_", + { + ColumnName: "time_", ColumnType: 6, ColumnDesc: "", ColumnSemanticType: 1, diff --git a/src/vizier/services/query_broker/controllers/query_executor.go b/src/vizier/services/query_broker/controllers/query_executor.go index d0fe7c5a55f..4d8ff7b7b6b 100644 --- a/src/vizier/services/query_broker/controllers/query_executor.go +++ b/src/vizier/services/query_broker/controllers/query_executor.go @@ -24,8 +24,6 @@ import ( "strings" "time" - "golang.org/x/sync/errgroup" - "github.com/gofrs/uuid" "github.com/nats-io/nats.go" "github.com/prometheus/client_golang/prometheus" @@ -33,6 +31,7 @@ import ( log "github.com/sirupsen/logrus" "github.com/spf13/pflag" "github.com/spf13/viper" + "golang.org/x/sync/errgroup" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" @@ -44,8 +43,10 @@ import ( "px.dev/pixie/src/vizier/services/metadata/metadatapb" ) -var queryExecTimeSummary *prometheus.SummaryVec -var queryExecNumPEMSummary *prometheus.SummaryVec +var ( + queryExecTimeSummary *prometheus.SummaryVec + queryExecNumPEMSummary *prometheus.SummaryVec +) func init() { queryExecTimeSummary = promauto.NewSummaryVec( diff --git a/src/vizier/services/query_broker/controllers/query_executor_test.go b/src/vizier/services/query_broker/controllers/query_executor_test.go index 68152e14573..1bbe5b35b19 100644 --- a/src/vizier/services/query_broker/controllers/query_executor_test.go +++ b/src/vizier/services/query_broker/controllers/query_executor_test.go @@ -24,11 +24,6 @@ import ( "testing" "github.com/gofrs/uuid" - - "px.dev/pixie/src/vizier/services/metadata/metadatapb" - - "px.dev/pixie/src/common/base/statuspb" - "github.com/gogo/protobuf/proto" "github.com/golang/mock/gomock" "github.com/stretchr/testify/assert" @@ -38,7 +33,9 @@ import ( "px.dev/pixie/src/carnot/carnotpb" "px.dev/pixie/src/carnot/planner/distributedpb" "px.dev/pixie/src/carnot/planpb" + "px.dev/pixie/src/common/base/statuspb" "px.dev/pixie/src/utils/testingutils" + "px.dev/pixie/src/vizier/services/metadata/metadatapb" "px.dev/pixie/src/vizier/services/query_broker/controllers" mock_controllers "px.dev/pixie/src/vizier/services/query_broker/controllers/mock" "px.dev/pixie/src/vizier/services/query_broker/tracker" @@ -292,7 +289,8 @@ type fakeResultForwarder struct { // RegisterQuery registers a query. func (f *fakeResultForwarder) RegisterQuery(queryID uuid.UUID, tableIDMap map[string]string, compilationTimeNs int64, - queryPlanOpts *controllers.QueryPlanOpts, queryName string) error { + queryPlanOpts *controllers.QueryPlanOpts, queryName string, +) error { f.QueryRegistered = queryID f.TableIDMap = tableIDMap f.StreamedQueryPlanOpts = queryPlanOpts @@ -301,7 +299,8 @@ func (f *fakeResultForwarder) RegisterQuery(queryID uuid.UUID, tableIDMap map[st // StreamResults streams the results to the resultCh. func (f *fakeResultForwarder) StreamResults(ctx context.Context, queryID uuid.UUID, - resultCh chan<- *vizierpb.ExecuteScriptResponse) error { + resultCh chan<- *vizierpb.ExecuteScriptResponse, +) error { f.QueryStreamed = queryID for _, expectedResult := range f.ClientResultsToSend { diff --git a/src/vizier/services/query_broker/controllers/query_plan_debug.go b/src/vizier/services/query_broker/controllers/query_plan_debug.go index 3824f868163..d9e78a2d909 100644 --- a/src/vizier/services/query_broker/controllers/query_plan_debug.go +++ b/src/vizier/services/query_broker/controllers/query_plan_debug.go @@ -84,7 +84,8 @@ func nodeExecTiming(nodeID int64, execStats *map[int64]*queryresultspb.OperatorE // GetQueryPlanAsDotString converts the plan into a dotstring that can be rendered by GraphViz. func GetQueryPlanAsDotString(distributedPlan *distributedpb.DistributedPlan, planMap map[uuid.UUID]*planpb.Plan, - planExecStats *[]*queryresultspb.AgentExecutionStats) (string, error) { + planExecStats *[]*queryresultspb.AgentExecutionStats, +) (string, error) { g := dot.NewGraph(dot.Directed) execDetails := make(map[uuid.UUID]*queryresultspb.AgentExecutionStats) if planExecStats != nil { diff --git a/src/vizier/services/query_broker/controllers/query_result_forwarder.go b/src/vizier/services/query_broker/controllers/query_result_forwarder.go index 24da23fe7bf..2bdac3f0647 100644 --- a/src/vizier/services/query_broker/controllers/query_result_forwarder.go +++ b/src/vizier/services/query_broker/controllers/query_result_forwarder.go @@ -38,8 +38,10 @@ import ( "px.dev/pixie/src/utils" ) -var queryExecRecordsSummary *prometheus.SummaryVec -var queryExecBytesSummary *prometheus.SummaryVec +var ( + queryExecRecordsSummary *prometheus.SummaryVec + queryExecBytesSummary *prometheus.SummaryVec +) func init() { queryExecRecordsSummary = promauto.NewSummaryVec( @@ -169,7 +171,8 @@ type activeQuery struct { func newActiveQuery(producerCtx context.Context, tableIDMap map[string]string, compilationTimeNs int64, - queryPlanOpts *QueryPlanOpts, watchdogCancel context.CancelFunc, queryName string) *activeQuery { + queryPlanOpts *QueryPlanOpts, watchdogCancel context.CancelFunc, queryName string, +) *activeQuery { aq := &activeQuery{ queryResultCh: make(chan *carnotpb.TransferResultChunkRequest, activeQueryBufferSize), tableIDMap: tableIDMap, @@ -330,7 +333,6 @@ func (a *activeQuery) handleRequest(ctx context.Context, queryID uuid.UUID, msg if a.queryPlanOpts != nil { qpResps, err := QueryPlanResponse(queryID, a.queryPlanOpts.Plan, a.queryPlanOpts.PlanMap, a.agentExecStats, a.queryPlanOpts.TableID, maxQueryPlanStringSize) - if err != nil { return err } @@ -472,7 +474,8 @@ func NewQueryResultForwarderWithOptions(opts ...QueryResultForwarderOption) Quer func (f *QueryResultForwarderImpl) RegisterQuery(queryID uuid.UUID, tableIDMap map[string]string, compilationTimeNs int64, queryPlanOpts *QueryPlanOpts, - queryName string) error { + queryName string, +) error { f.activeQueriesMutex.Lock() defer f.activeQueriesMutex.Unlock() @@ -495,12 +498,15 @@ func (f *QueryResultForwarderImpl) RegisterQuery(queryID uuid.UUID, tableIDMap m } // The max size of the query plan string, including a buffer for the rest of the message. -const maxQueryPlanBufferSize int = 64 * 1024 -const maxQueryPlanStringSize = 1024*1024 - maxQueryPlanBufferSize +const ( + maxQueryPlanBufferSize int = 64 * 1024 + maxQueryPlanStringSize = 1024*1024 - maxQueryPlanBufferSize +) // StreamResults streams results from the agent streams to the client stream. func (f *QueryResultForwarderImpl) StreamResults(ctx context.Context, queryID uuid.UUID, - resultCh chan<- *vizierpb.ExecuteScriptResponse) error { + resultCh chan<- *vizierpb.ExecuteScriptResponse, +) error { f.activeQueriesMutex.Lock() activeQuery, present := f.activeQueries[queryID] f.activeQueriesMutex.Unlock() diff --git a/src/vizier/services/query_broker/controllers/query_result_forwarder_test.go b/src/vizier/services/query_broker/controllers/query_result_forwarder_test.go index 4fdc657875d..795d0e5448d 100644 --- a/src/vizier/services/query_broker/controllers/query_result_forwarder_test.go +++ b/src/vizier/services/query_broker/controllers/query_result_forwarder_test.go @@ -52,7 +52,8 @@ func makeInitiateConnectionRequest(queryID uuid.UUID) *carnotpb.TransferResultCh } func makeRowBatchResult(t *testing.T, queryID uuid.UUID, tableName string, tableID string, - eos bool) (*vizierpb.RowBatchData, *carnotpb.TransferResultChunkRequest) { + eos bool, +) (*vizierpb.RowBatchData, *carnotpb.TransferResultChunkRequest) { rb := new(schemapb.RowBatchData) if err := proto.UnmarshalText(rowBatchPb, rb); err != nil { t.Fatalf("Cannot unmarshal proto %v", err) @@ -81,7 +82,8 @@ func makeRowBatchResult(t *testing.T, queryID uuid.UUID, tableName string, table } func makeExecStatsResult(t *testing.T, queryID uuid.UUID) (*vizierpb.QueryExecutionStats, - *carnotpb.TransferResultChunkRequest) { + *carnotpb.TransferResultChunkRequest, +) { execStats := &queryresultspb.QueryExecutionStats{ Timing: &queryresultspb.QueryTimingInfo{ ExecutionTimeNs: 5010, diff --git a/src/vizier/services/query_broker/controllers/server.go b/src/vizier/services/query_broker/controllers/server.go index 290722b678d..9626a8046d0 100644 --- a/src/vizier/services/query_broker/controllers/server.go +++ b/src/vizier/services/query_broker/controllers/server.go @@ -96,7 +96,8 @@ type QueryExecutorFactory func(*Server, MutationExecFactory) QueryExecutor // NewServer creates GRPC handlers. func NewServer(env querybrokerenv.QueryBrokerEnv, agentsTracker AgentsTracker, dataPrivacy DataPrivacy, mds metadatapb.MetadataTracepointServiceClient, mdconf metadatapb.MetadataConfigServiceClient, - natsConn *nats.Conn, queryExecFactory QueryExecutorFactory) (*Server, error) { + natsConn *nats.Conn, queryExecFactory QueryExecutorFactory, +) (*Server, error) { var udfInfo udfspb.UDFInfo if err := loadUDFInfo(&udfInfo); err != nil { return nil, err @@ -119,7 +120,8 @@ func NewServerWithForwarderAndPlanner(env querybrokerenv.QueryBrokerEnv, mdconf metadatapb.MetadataConfigServiceClient, natsConn *nats.Conn, planner Planner, - queryExecFactory QueryExecutorFactory) (*Server, error) { + queryExecFactory QueryExecutorFactory, +) (*Server, error) { s := &Server{ env: env, agentsTracker: agentsTracker, @@ -380,7 +382,7 @@ func (s *Server) TransferResultChunk(srv carnotpb.ResultSinkService_TransferResu // Stop the client stream, if it still exists in the result forwarder. // It may have already been cancelled before this point. log.Errorf("TransferResultChunk cancelling client stream for query %s: %s", queryID.String(), message) - clientStreamErr := fmt.Errorf(message) + clientStreamErr := fmt.Errorf("%s", message) s.resultForwarder.ProducerCancelStream(queryID, clientStreamErr) } } diff --git a/src/vizier/services/query_broker/query_broker_server.go b/src/vizier/services/query_broker/query_broker_server.go index ac5dc24f293..ef037d32f8b 100644 --- a/src/vizier/services/query_broker/query_broker_server.go +++ b/src/vizier/services/query_broker/query_broker_server.go @@ -133,7 +133,6 @@ func main() { } return err }, bOpts) - if err != nil { log.WithError(err).Fatal("Failed to connect to Metadata Service.") } diff --git a/src/vizier/services/query_broker/script_runner/cloud_source.go b/src/vizier/services/query_broker/script_runner/cloud_source.go index 5d1e9f6afa3..2903214d509 100644 --- a/src/vizier/services/query_broker/script_runner/cloud_source.go +++ b/src/vizier/services/query_broker/script_runner/cloud_source.go @@ -32,11 +32,10 @@ import ( log "github.com/sirupsen/logrus" "google.golang.org/grpc/metadata" - "px.dev/pixie/src/utils" - "px.dev/pixie/src/shared/cvmsgspb" "px.dev/pixie/src/shared/scripts" svcutils "px.dev/pixie/src/shared/services/utils" + "px.dev/pixie/src/utils" "px.dev/pixie/src/vizier/services/metadata/metadatapb" ) diff --git a/src/vizier/services/query_broker/script_runner/script_runner.go b/src/vizier/services/query_broker/script_runner/script_runner.go index 96237bc2e7d..48f78b9427b 100644 --- a/src/vizier/services/query_broker/script_runner/script_runner.go +++ b/src/vizier/services/query_broker/script_runner/script_runner.go @@ -25,19 +25,17 @@ import ( "sync" "time" - "google.golang.org/grpc/status" - - "px.dev/pixie/src/carnot/planner/compilerpb" - "px.dev/pixie/src/common/base/statuspb" - "github.com/gofrs/uuid" "github.com/gogo/protobuf/types" log "github.com/sirupsen/logrus" "google.golang.org/grpc/codes" "google.golang.org/grpc/metadata" + "google.golang.org/grpc/status" "gopkg.in/yaml.v2" "px.dev/pixie/src/api/proto/vizierpb" + "px.dev/pixie/src/carnot/planner/compilerpb" + "px.dev/pixie/src/common/base/statuspb" "px.dev/pixie/src/shared/cvmsgs" "px.dev/pixie/src/shared/cvmsgspb" "px.dev/pixie/src/shared/scripts" diff --git a/tools/arc_addons/pixielabs/lint/ArcanistGolangCiLinter.php b/tools/arc_addons/pixielabs/lint/ArcanistGolangCiLinter.php index 9f01eabb5d9..b609f034a30 100644 --- a/tools/arc_addons/pixielabs/lint/ArcanistGolangCiLinter.php +++ b/tools/arc_addons/pixielabs/lint/ArcanistGolangCiLinter.php @@ -49,7 +49,7 @@ public function getInstallInstructions() { } protected function getDefaultFlags() { - return array('--out-format=checkstyle'); + return array('--output.text.path=stdout'); } protected function getPathArgumentForLinterFuture($path) { @@ -95,6 +95,10 @@ protected function parseLinterOutput($path, $err, $stdout, $stderr) { return [$message]; } + $lines = explode("\n", $stdout); + // golangci-lint outputs a summary at the end of the output. This is the only + // non XML output. Remove it to parse the XML correctly. + $stdout = preg_replace('/\d+ issue(?:s)?\./', '', $stdout); $ok = @$report_dom->loadXML($stdout); if (!$ok) { diff --git a/tools/chef/cookbooks/px_dev/attributes/linux.rb b/tools/chef/cookbooks/px_dev/attributes/linux.rb index f018387b38a..07a7494f33a 100644 --- a/tools/chef/cookbooks/px_dev/attributes/linux.rb +++ b/tools/chef/cookbooks/px_dev/attributes/linux.rb @@ -38,9 +38,9 @@ 'dea9ca38a0b852a74e81c26134671af7c0fbe65d81b0dc1c5bfe22cf7d4c8858' default['golangci-lint']['download_path'] = - 'https://github.com/golangci/golangci-lint/releases/download/v1.51.1/golangci-lint-1.51.1-linux-amd64.tar.gz' + 'https://github.com/golangci/golangci-lint/releases/download/v2.0.2/golangci-lint-2.0.2-linux-amd64.tar.gz' default['golangci-lint']['sha256'] = - '17aeb26c76820c22efa0e1838b0ab93e90cfedef43fbfc9a2f33f27eb9e5e070' + '89cc8a7810dc63b9a37900da03e37c3601caf46d42265d774e0f1a5d883d53e2' default['nodejs']['download_path'] = 'https://nodejs.org/dist/v18.16.0/node-v18.16.0-linux-x64.tar.xz' diff --git a/tools/chef/cookbooks/px_dev/attributes/mac_os_x.rb b/tools/chef/cookbooks/px_dev/attributes/mac_os_x.rb index 701651a0302..92e374303ea 100644 --- a/tools/chef/cookbooks/px_dev/attributes/mac_os_x.rb +++ b/tools/chef/cookbooks/px_dev/attributes/mac_os_x.rb @@ -39,9 +39,9 @@ '7af054e5088b68c24b3d6e135e5ca8d91bbd5a05cb7f7f0187367b3e6e9e05ee' default['golangci-lint']['download_path'] = - 'https://github.com/golangci/golangci-lint/releases/download/v1.51.1/golangci-lint-1.51.1-darwin-amd64.tar.gz' + 'https://github.com/golangci/golangci-lint/releases/download/v2.0.2/golangci-lint-2.0.2-darwin-amd64.tar.gz' default['golangci-lint']['sha256'] = - 'fba08acc4027f69f07cef48fbff70b8a7ecdfaa1c2aba9ad3fb31d60d9f5d4bc' + 'a88cbdc86b483fe44e90bf2dcc3fec2af8c754116e6edf0aa6592cac5baa7a0e' default['nodejs']['download_path'] = 'https://nodejs.org/dist/v18.16.0/node-v18.16.0-darwin-x64.tar.gz'