zeroshade commented on code in PR #2729:
URL: https://github.com/apache/arrow-adbc/pull/2729#discussion_r2073898848
##########
go/adbc/driver/internal/driverbase/database.go:
##########
@@ -136,4 +201,218 @@ func (db *database) SetLogger(logger *slog.Logger) {
}
}
+func (base *database) InitTracing(ctx context.Context, driverName string,
driverVersion string) error {
+ return base.Base().InitTracing(ctx, driverName, driverVersion)
+}
+
+func (base *DatabaseImplBase) InitTracing(ctx context.Context, driverName
string, driverVersion string) (err error) {
+ fullyQualifiedDriverName := driverNamespace + "." + driverName
+
+ getExporterName := sync.OnceValue(func() string {
+ return os.Getenv(otelTracesExporter)
+ })
+ exporterName := getExporterName()
+
+ // Empty exporter
+ if exporterName == "" {
+ base.Tracer = otel.Tracer(fullyQualifiedDriverName)
+ return
+ }
+
+ var (
+ exporterType traceExporterType
+ exporters []sdktrace.SpanExporter
+ )
+
+ exporters, exporterType, err = getExporters(
+ ctx,
+ exporterName,
+ base,
+ driverName,
+ )
+ if err != nil {
+ return
+ }
+
+ if len(exporters) < 1 {
+ // This should not normally happen after a successful call to
getExporters,
+ // but here for completeness
+ err = base.ErrorHelper.Errorf(
+ adbc.StatusInvalidState,
+ "%s '%s'",
+ DatabaseMessageNoOtelTracesExporters,
+ exporterType.String(),
+ )
+ return
+ }
+
+ base.Tracer, err = newTracer(exporters, base, fullyQualifiedDriverName,
driverVersion)
+ if err != nil {
+ return
+ }
+
+ return
+}
+
+func getExporters(
+ ctx context.Context,
+ exporterName string,
+ base *DatabaseImplBase,
+ driverName string,
+) (exporters []sdktrace.SpanExporter, exporterType traceExporterType, err
error) {
+ var exporter sdktrace.SpanExporter
+ exporterType, ok := tryParseTraceExporterType(exporterName)
+ if !ok {
+ err = base.ErrorHelper.Errorf(
+ adbc.StatusInvalidArgument,
+ "%s '%s'",
+ DatabaseMessageOtelTracesExporterOptionUnknown,
+ exporterName,
+ )
+ return
+ }
+ switch exporterType {
+ case TraceExporterNone:
+ break
+ case TraceExporterConsole:
+ exporter, err = stdouttrace.New()
+ if err != nil {
+ return
+ }
+ exporters = append(exporters, exporter)
+ case TraceExporterOtlp:
+ exporters, err = newOtlpTraceExporters(ctx)
+ if err != nil {
+ return
+ }
+ case TraceExporterAdbcFile:
+ exporter, err = newAdbcFileExporter(driverName)
+ if err != nil {
+ return
+ }
+ exporters = append(exporters, exporter)
+ default:
+ err = base.ErrorHelper.Errorf(
+ adbc.StatusNotImplemented,
+ "%s '%s'",
+ DatabaseMessageOtelTracesExporterOptionUnknown,
+ exporterType.String(),
+ )
+ return
Review Comment:
this return is redundant
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]