From ab0bd28c9da6a63fea2cdcf0e6996c1caeb9265d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20R=C3=BChsen?= Date: Thu, 13 Jun 2024 18:40:30 +0200 Subject: [PATCH] Fix spelling --- .golangci.yml | 2 +- README.md | 2 +- docs/how-it-works.md | 2 +- internal/include/go_context.h | 2 +- internal/include/otel_types.h | 2 +- internal/include/uprobe.h | 2 +- .../segmentio/kafka-go/consumer/bpf/probe.bpf.c | 2 +- .../segmentio/kafka-go/producer/bpf/probe.bpf.c | 10 +++++----- internal/pkg/instrumentation/probe/probe.go | 2 +- internal/pkg/process/ptrace/ptrace_linux.go | 2 +- internal/pkg/structfield/json.go | 2 +- internal/test/e2e/gin/verify.bats | 2 +- internal/test/e2e/nethttp/verify.bats | 2 +- internal/test/e2e/nethttp_custom/verify.bats | 2 +- internal/tools/inspect/inspector.go | 2 +- 15 files changed, 19 insertions(+), 19 deletions(-) diff --git a/.golangci.yml b/.golangci.yml index 3b26be847..80160748a 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -107,7 +107,7 @@ linters-settings: - name: constant-logical-expr disabled: false # https://github.com/mgechev/revive/blob/master/RULES_DESCRIPTIONS.md#context-as-argument - # TODO (#3372) reenable linter when it is compatible. https://github.com/golangci/golangci-lint/issues/3280 + # TODO (#3372) re-enable linter when it is compatible. https://github.com/golangci/golangci-lint/issues/3280 - name: context-as-argument disabled: true arguments: diff --git a/README.md b/README.md index 1bc6779aa..081b2399d 100644 --- a/README.md +++ b/README.md @@ -54,7 +54,7 @@ See the [contributing documentation](./CONTRIBUTING.md). OpenTelemetry Go Automatic Instrumentation is licensed under the terms of the [Apache Software License version 2.0]. See the [license file](./LICENSE) for more details. -Third-party licesnes and copyright notices can be found in the [LICENSES directory](./LICENSES). +Third-party licenses and copyright notices can be found in the [LICENSES directory](./LICENSES). [OpenTelemetry]: https://opentelemetry.io/ [Go]: https://go.dev/ diff --git a/docs/how-it-works.md b/docs/how-it-works.md index a9d340b26..3441cf7a5 100644 --- a/docs/how-it-works.md +++ b/docs/how-it-works.md @@ -109,7 +109,7 @@ The offsets-tracker generates the [offset_results.json](../internal/pkg/inject/o ### Uretprobes -One of the basic requirments of OpenTelemetry spans is to contain start timestamp and end timestamp. Getting those timestamps is possible by placing an eBPF code at the start and the end of the instrumented function. eBPF supports this requirement via uprobes and uretprobes. Uretprobes are used to invoke eBPF code at the end of the function. Unfortunately, uretprobes and Go [do not play well together](https://github.com/golang/go/issues/22008). +One of the basic requirements of OpenTelemetry spans is to contain start timestamp and end timestamp. Getting those timestamps is possible by placing an eBPF code at the start and the end of the instrumented function. eBPF supports this requirement via uprobes and uretprobes. Uretprobes are used to invoke eBPF code at the end of the function. Unfortunately, uretprobes and Go [do not play well together](https://github.com/golang/go/issues/22008). We overcome this issue by analyzing the target binary and detecting all the return statements in the instrumented functions. We then place a uprobe at the end of each return statement. This uprobe invokes the eBPF code that collects the end timestamp. diff --git a/internal/include/go_context.h b/internal/include/go_context.h index 0b2404f1b..ac011a8ed 100644 --- a/internal/include/go_context.h +++ b/internal/include/go_context.h @@ -106,7 +106,7 @@ static __always_inline void stop_tracking_span(struct span_context *sc, struct s void *ctx = bpf_map_lookup_elem(&tracked_spans_by_sc, sc); if (ctx == NULL) { - bpf_printk("stop_tracking_span: cant find span context"); + bpf_printk("stop_tracking_span: can't find span context"); return; } diff --git a/internal/include/otel_types.h b/internal/include/otel_types.h index 8caa5440a..badbe39df 100644 --- a/internal/include/otel_types.h +++ b/internal/include/otel_types.h @@ -31,7 +31,7 @@ volatile const u64 attr_type_int64slice; volatile const u64 attr_type_float64slice; volatile const u64 attr_type_stringslice; -/* Defintions should mimic structs defined in go.opentelemetry.io/otel/attribute */ +/* Definitions should mimic structs defined in go.opentelemetry.io/otel/attribute */ typedef struct go_otel_attr_value { u64 vtype; diff --git a/internal/include/uprobe.h b/internal/include/uprobe.h index 8f2a03cc8..967822df0 100644 --- a/internal/include/uprobe.h +++ b/internal/include/uprobe.h @@ -27,7 +27,7 @@ struct span_context psc; // Common flow for uprobe return: -// 1. Find consistend key for the current uprobe context +// 1. Find consistent key for the current uprobe context // 2. Use the key to lookup for the uprobe context in the uprobe_context_map // 3. Update the end time of the found span // 4. Submit the constructed event to the agent code using perf buffer events_map diff --git a/internal/pkg/instrumentation/bpf/github.com/segmentio/kafka-go/consumer/bpf/probe.bpf.c b/internal/pkg/instrumentation/bpf/github.com/segmentio/kafka-go/consumer/bpf/probe.bpf.c index f515d7434..dfc3032b2 100644 --- a/internal/pkg/instrumentation/bpf/github.com/segmentio/kafka-go/consumer/bpf/probe.bpf.c +++ b/internal/pkg/instrumentation/bpf/github.com/segmentio/kafka-go/consumer/bpf/probe.bpf.c @@ -146,7 +146,7 @@ int uprobe_FetchMessage(struct pt_regs *ctx) { 3. Blocking wait for message 4. internal kafka code after blocking 5. Return from FetchMessage - Steps 2-4 are executed in a seperate goroutine from the one the user of the library. + Steps 2-4 are executed in a separate goroutine from the one the user of the library. */ void *reader = get_argument(ctx, 1); void *context_data_ptr = get_Go_context(ctx, 3, 0, true); diff --git a/internal/pkg/instrumentation/bpf/github.com/segmentio/kafka-go/producer/bpf/probe.bpf.c b/internal/pkg/instrumentation/bpf/github.com/segmentio/kafka-go/producer/bpf/probe.bpf.c index 62d6bf493..dcebb24a4 100644 --- a/internal/pkg/instrumentation/bpf/github.com/segmentio/kafka-go/producer/bpf/probe.bpf.c +++ b/internal/pkg/instrumentation/bpf/github.com/segmentio/kafka-go/producer/bpf/probe.bpf.c @@ -125,7 +125,7 @@ static __always_inline int inject_kafka_header(void *message, struct kafka_heade static __always_inline long collect_kafka_attributes(void *message, struct message_attributes_t *attrs, bool collect_topic) { if (collect_topic) { - // Topic might be globaly set for a writer, or per message + // Topic might be globally set for a writer, or per message get_go_string_from_user_ptr((void *)(message + message_topic_pos), attrs->topic, sizeof(attrs->topic)); } @@ -188,7 +188,7 @@ int uprobe_WriteMessages(struct pt_regs *ctx) { // https://github.com/segmentio/kafka-go/blob/v0.2.3/message.go#L24C2-L24C6 // 2. the time.Time struct is 24 bytes. This looks to be correct for all the reasnobaly latest versions according to // https://github.com/golang/go/blame/master/src/time/time.go#L135 - // In the future if more libraries will need to get structs sizes we probably want to have simillar + // In the future if more libraries will need to get structs sizes we probably want to have similar // mechanism to the one we have for the offsets u16 msg_size = message_time_pos + 8 + 8 + 8; __builtin_memcpy(current_sc.TraceID, kafka_request->TraceID, TRACE_ID_SIZE); @@ -198,7 +198,7 @@ int uprobe_WriteMessages(struct pt_regs *ctx) { if (i >= msgs_array_len) { break; } - // Optionaly collect the topic, and always collect key + // Optionally collect the topic, and always collect key collect_kafka_attributes(msg_ptr, &kafka_request->msgs[i], !global_topic); // Generate span id for each message generate_random_bytes(kafka_request->msgs[i].SpanID, SPAN_ID_SIZE); @@ -216,7 +216,7 @@ int uprobe_WriteMessages(struct pt_regs *ctx) { bpf_map_update_elem(&kafka_events, &key, kafka_request, 0); - // don't need to start tracking the span, as we don't have a context to propagate localy + // don't need to start tracking the span, as we don't have a context to propagate locally return 0; } @@ -237,6 +237,6 @@ int uprobe_WriteMessages_Returns(struct pt_regs *ctx) { bpf_perf_event_output(ctx, &events, BPF_F_CURRENT_CPU, kafka_request, sizeof(*kafka_request)); bpf_map_delete_elem(&kafka_events, &key); - // don't need to stop tracking the span, as we don't have a context to propagate localy + // don't need to stop tracking the span, as we don't have a context to propagate locally return 0; } \ No newline at end of file diff --git a/internal/pkg/instrumentation/probe/probe.go b/internal/pkg/instrumentation/probe/probe.go index ee04dcc3c..f2d0fcdbd 100644 --- a/internal/pkg/instrumentation/probe/probe.go +++ b/internal/pkg/instrumentation/probe/probe.go @@ -227,7 +227,7 @@ func (i *Base[BPFObj, BPFEvent]) Close() error { // shutdown to avoid leaking system resources. type UprobeFunc[BPFObj any] func(symbol string, exec *link.Executable, target *process.TargetDetails, obj *BPFObj) ([]link.Link, error) -// Uprobe is an eBPF program that is attached in the entry point and/or the reutrn of a function. +// Uprobe is an eBPF program that is attached in the entry point and/or the return of a function. type Uprobe[BPFObj any] struct { // Sym is the symbol name of the function to attach the eBPF program to. Sym string diff --git a/internal/pkg/process/ptrace/ptrace_linux.go b/internal/pkg/process/ptrace/ptrace_linux.go index d1f2dc1fa..76f267330 100644 --- a/internal/pkg/process/ptrace/ptrace_linux.go +++ b/internal/pkg/process/ptrace/ptrace_linux.go @@ -76,7 +76,7 @@ func NewTracedProgram(pid int, logger logr.Logger) (*TracedProgram, error) { tidMap := make(map[int]bool) retryCount := make(map[int]int) - // iterate over the thread group, until it doens't change + // iterate over the thread group, until it doesn't change // // we have tried several ways to ensure that we have stopped all the tasks: // 1. iterating over and over again to make sure all of them are tracee diff --git a/internal/pkg/structfield/json.go b/internal/pkg/structfield/json.go index 62f9963a5..240a90ebf 100644 --- a/internal/pkg/structfield/json.go +++ b/internal/pkg/structfield/json.go @@ -107,7 +107,7 @@ func find[T any](slice *[]*T, f func(*T) bool) *T { // mergeSorted merges the two sorted slices slice0 and slice1 using the cmp // function to compare elements. // -// The cmp function needs to return negative values when ab, and 0 when a==b. func mergeSorted[T any](slice0, slice1 []T, cmp func(a, b T) int) []T { merged := make([]T, 0, len(slice0)+len(slice1)) diff --git a/internal/test/e2e/gin/verify.bats b/internal/test/e2e/gin/verify.bats index 89e41b035..859df63d0 100644 --- a/internal/test/e2e/gin/verify.bats +++ b/internal/test/e2e/gin/verify.bats @@ -34,7 +34,7 @@ SCOPE="go.opentelemetry.io/auto/net/http" assert_equal "$result" '"/hello-gin"' } -@test "server :: includes hhttp.response.status_code attribute" { +@test "server :: includes http.response.status_code attribute" { result=$(server_span_attributes_for ${SCOPE} | jq "select(.key == \"http.response.status_code\").value.intValue") assert_equal "$result" '"200"' } diff --git a/internal/test/e2e/nethttp/verify.bats b/internal/test/e2e/nethttp/verify.bats index a27266566..ce191b100 100644 --- a/internal/test/e2e/nethttp/verify.bats +++ b/internal/test/e2e/nethttp/verify.bats @@ -34,7 +34,7 @@ SCOPE="go.opentelemetry.io/auto/net/http" assert_equal "$result" '"/hello/42"' } -@test "server :: includes hhttp.response.status_code attribute" { +@test "server :: includes http.response.status_code attribute" { result=$(server_span_attributes_for ${SCOPE} | jq "select(.key == \"http.response.status_code\").value.intValue") assert_equal "$result" '"200"' } diff --git a/internal/test/e2e/nethttp_custom/verify.bats b/internal/test/e2e/nethttp_custom/verify.bats index 993ea302a..6ab343ddc 100644 --- a/internal/test/e2e/nethttp_custom/verify.bats +++ b/internal/test/e2e/nethttp_custom/verify.bats @@ -34,7 +34,7 @@ SCOPE="go.opentelemetry.io/auto/net/http" assert_equal "$result" '"/hello"' } -@test "server :: includes hhttp.response.status_code attribute" { +@test "server :: includes http.response.status_code attribute" { result=$(server_span_attributes_for ${SCOPE} | jq "select(.key == \"http.response.status_code\").value.intValue") assert_equal "$result" '"200"' } diff --git a/internal/tools/inspect/inspector.go b/internal/tools/inspect/inspector.go index e716e3ace..a2aebc2b8 100644 --- a/internal/tools/inspect/inspector.go +++ b/internal/tools/inspect/inspector.go @@ -87,7 +87,7 @@ func (i *Inspector) AddManifest(manifest Manifest) error { goVer := manifest.Application.GoVerions if goVer == nil { - // Passsing nil to newBuilder will mean the application is built with + // Passing nil to newBuilder will mean the application is built with // the latest version of Go. b := newBuilder(i.log, i.client, nil) for _, ver := range manifest.Application.Versions {