{"id":"839cae4ed39eb4c7","repo":"go-redis/redis","slug":"failed-to-create-connection-create-time-histogram","errorCode":null,"errorMessage":"failed to create connection create time histogram: %w","messagePattern":"failed to create connection create time histogram: %w","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"extra/redisotel-native/redisotel.go","lineNumber":223,"sourceCode":"\t\tconnectionCount, err = meter.Int64UpDownCounter(\n\t\t\tdbconv.ClientConnectionCount{}.Name(),\n\t\t\tmetric.WithDescription(dbconv.ClientConnectionCount{}.Description()),\n\t\t\tmetric.WithUnit(dbconv.ClientConnectionCount{}.Unit()),\n\t\t)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to create connection count metric: %w\", err)\n\t\t}\n\n\t\tvar connectionCreateTimeOpts []metric.Float64HistogramOption\n\t\tif cfg.histAggregation == HistogramAggregationExplicitBucket {\n\t\t\tconnectionCreateTimeOpts = append(connectionCreateTimeOpts,\n\t\t\t\tmetric.WithExplicitBucketBoundaries(cfg.bucketsConnectionCreateTime...),\n\t\t\t)\n\t\t}\n\t\tvar connectionCreateTimeConv dbconv.ClientConnectionCreateTime\n\t\tconnectionCreateTimeConv, err = dbconv.NewClientConnectionCreateTime(meter, connectionCreateTimeOpts...)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to create connection create time histogram: %w\", err)\n\t\t}\n\t\tconnectionCreateTime = connectionCreateTimeConv.Inst()\n\n\t\tconnectionRelaxedTimeout, err = meter.Int64UpDownCounter(\n\t\t\tMetricConnectionRelaxedTimeout,\n\t\t\tmetric.WithDescription(\"How many times the connection timeout has been increased/decreased (after a server maintenance notification)\"),\n\t\t\tmetric.WithUnit(\"{relaxation}\"),\n\t\t)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to create connection relaxed timeout metric: %w\", err)\n\t\t}\n\n\t\tconnectionHandoff, err = meter.Int64Counter(\n\t\t\tMetricConnectionHandoff,\n\t\t\tmetric.WithDescription(\"Connections that have been handed off to another node (e.g after a MOVING notification)\"),\n\t\t)\n\t\tif err != nil {\n\t\t\treturn nil, fmt.Errorf(\"failed to create connection handoff metric: %w\", err)","sourceCodeStart":205,"sourceCodeEnd":241,"githubUrl":"https://github.com/go-redis/redis/blob/36d97525cd8076aed67cddf54778e9ea84550929/extra/redisotel-native/redisotel.go#L205-L241","documentation":"Returned by createRecorder (redisotel.go:223) when dbconv.NewClientConnectionCreateTime fails to create the 'db.client.connection.create_time' Float64Histogram. Only checked when MetricGroupConnectionBasic is enabled.","triggerScenarios":"Calling Init with MetricGroupFlagConnectionBasic enabled, and the OTel SDK rejects the histogram creation (duplicate name conflict or invalid configuration).","commonSituations":"Another library registered 'db.client.connection.create_time' with conflicting unit or description; malformed cfg.BucketsConnectionCreateTime values when using explicit bucket aggregation.","solutions":["Search for other registrations of 'db.client.connection.create_time' and reconcile metadata","Validate cfg.BucketsConnectionCreateTime contains monotonically increasing positive floats","Verify OTel SDK compatibility"],"exampleFix":"// before - bucket boundaries out of order\ncfg.BucketsConnectionCreateTime = []float64{0.1, 0.01, 1.0}\n\n// after - monotonically increasing\ncfg.BucketsConnectionCreateTime = []float64{0.01, 0.1, 1.0}","handlingStrategy":"try-catch","validationCode":"// Validate connection create time bucket boundaries\nfor i := 1; i < len(cfg.BucketsConnectionCreateTime); i++ {\n    if cfg.BucketsConnectionCreateTime[i] <= cfg.BucketsConnectionCreateTime[i-1] {\n        return fmt.Errorf(\"invalid bucket boundaries\")\n    }\n}","typeGuard":null,"tryCatchPattern":"if err := obs.Init(cfg); err != nil {\n    if strings.Contains(err.Error(), \"connection create time histogram\") {\n        log.Error(\"conflict on 'db.client.connection.create_time' or invalid bucket boundaries\")\n    }\n}","preventionTips":["Ensure no other library registers 'db.client.connection.create_time' with conflicting metadata","Validate histogram bucket boundaries are monotonically increasing positive values","Use a compatible OTel SDK version"],"tags":["otel","redisotel-native","metrics","connection","histogram"],"analyzedSha":"36d97525cd8076aed67cddf54778e9ea84550929","analyzedAt":"2026-08-06T01:08:27.376Z","schemaVersion":2}