diff --git a/_integration-tests/go.mod b/_integration-tests/go.mod index f7fe70b63..07deb6ddb 100644 --- a/_integration-tests/go.mod +++ b/_integration-tests/go.mod @@ -15,6 +15,8 @@ require ( github.com/aws/aws-sdk-go-v2/config v1.28.1 github.com/aws/aws-sdk-go-v2/credentials v1.17.42 github.com/aws/aws-sdk-go-v2/service/dynamodb v1.36.3 + github.com/confluentinc/confluent-kafka-go v1.9.2 + github.com/confluentinc/confluent-kafka-go/v2 v2.5.4 github.com/dave/jennifer v1.7.1 github.com/docker/go-connections v0.5.0 github.com/elastic/go-elasticsearch/v6 v6.8.5 @@ -76,7 +78,6 @@ require ( cloud.google.com/go/monitoring v1.21.2 // indirect cloud.google.com/go/storage v1.46.0 // indirect dario.cat/mergo v1.0.1 // indirect - github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 // indirect github.com/Azure/azure-sdk-for-go/sdk/azcore v1.16.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.0 // indirect github.com/Azure/azure-sdk-for-go/sdk/internal v1.10.0 // indirect @@ -158,6 +159,7 @@ require ( github.com/cloudwego/base64x v0.1.4 // indirect github.com/cloudwego/iasm v0.2.0 // indirect github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78 // indirect + github.com/containerd/errdefs v0.3.0 // indirect github.com/containerd/log v0.1.0 // indirect github.com/containerd/platforms v0.2.1 // indirect github.com/cpuguy83/dockercfg v0.3.2 // indirect @@ -359,7 +361,6 @@ require ( go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.56.0 // indirect go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.56.0 // indirect go.opentelemetry.io/otel v1.31.0 // indirect - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0 // indirect go.opentelemetry.io/otel/metric v1.31.0 // indirect go.opentelemetry.io/otel/sdk v1.31.0 // indirect go.opentelemetry.io/otel/sdk/metric v1.31.0 // indirect diff --git a/_integration-tests/go.sum b/_integration-tests/go.sum index 8c60c01f1..4752d8488 100644 --- a/_integration-tests/go.sum +++ b/_integration-tests/go.sum @@ -639,6 +639,8 @@ github.com/99designs/gqlgen v0.17.55 h1:3vzrNWYyzSZjGDFo68e5j9sSauLxfKvLp+6ioRok github.com/99designs/gqlgen v0.17.55/go.mod h1:3Bq768f8hgVPGZxL8aY9MaYmbxa6llPM/qu1IGH1EJo= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24 h1:bvDV9vkmnHYOMsOr4WLk+Vo07yKIzd94sVoIqshQ4bU= github.com/AdaLogics/go-fuzz-headers v0.0.0-20230811130428-ced1acdcaa24/go.mod h1:8o94RPi1/7XTJvwPpRSzSUedZrtlirdB3r9Z20bi2f8= +github.com/AlecAivazis/survey/v2 v2.3.7 h1:6I/u8FvytdGsgonrYsVn2t8t4QiRnh6QSTqkkhIiSjQ= +github.com/AlecAivazis/survey/v2 v2.3.7/go.mod h1:xUTIdE4KCOIjsBAE1JYsUPoCqYdZ1reCfTwbto0Fduo= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.16.0 h1:JZg6HRh6W6U4OLl6lk7BZ7BLisIzM9dG1R50zUk9C/M= github.com/Azure/azure-sdk-for-go/sdk/azcore v1.16.0/go.mod h1:YL1xnZ6QejvQHWJrX/AvhFl4WW4rqHVoKspWNVwFk0M= github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.8.0 h1:B/dfvscEQtew9dVuoxqxrUKKv8Ih2f55PydknDamU+g= @@ -698,17 +700,27 @@ github.com/GoogleCloudPlatform/opentelemetry-operations-go/internal/resourcemapp github.com/IBM/sarama v1.43.3 h1:Yj6L2IaNvb2mRBop39N7mmJAHBVY3dTPncr3qGVkxPA= github.com/IBM/sarama v1.43.3/go.mod h1:FVIRaLrhK3Cla/9FfRF5X9Zua2KpS3SYIXxhac1H+FQ= github.com/JohnCGriffin/overflow v0.0.0-20211019200055-46fa312c352c/go.mod h1:X0CRv0ky0k6m906ixxpzmDRLvX58TFUKS2eePweuyxk= +github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww= +github.com/Masterminds/semver/v3 v3.2.1 h1:RN9w6+7QoMeJVGyfmbcgs28Br8cvmnucEXnY0rYXWg0= +github.com/Masterminds/semver/v3 v3.2.1/go.mod h1:qvl/7zhW3nngYb5+80sSMF+FG2BjYrf8m9wsX0PNOMQ= github.com/Microsoft/go-winio v0.5.0/go.mod h1:JPGBdM1cNvN/6ISo+n8V5iA4v8pBzdOpzfwIujj1a84= github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY= github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU= +github.com/Microsoft/hcsshim v0.11.4 h1:68vKo2VN8DE9AdN4tnkWnmdhqdbpUFM8OF3Airm7fz8= +github.com/Microsoft/hcsshim v0.11.4/go.mod h1:smjE4dvqPX9Zldna+t5FG3rnoHhaB7QYxPRqGcpAD9w= github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc= github.com/Shopify/sarama v1.38.1 h1:lqqPUPQZ7zPqYlWpTh+LQ9bhYNu2xJL6k1SJN4WVe2A= github.com/Shopify/sarama v1.38.1/go.mod h1:iwv9a67Ha8VNa+TifujYoWGxWnu2kNVAQdSdZ4X2o5g= github.com/Shopify/toxiproxy/v2 v2.5.0 h1:i4LPT+qrSlKNtQf5QliVjdP08GyAH8+BUIc9gT0eahc= github.com/Shopify/toxiproxy/v2 v2.5.0/go.mod h1:yhM2epWtAmel9CB8r2+L+PCmhH6yH2pITaPAo7jxJl0= +github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d h1:licZJFw2RwpHMqeKTCYkitsPqHNxTmd4SNR5r94FGM8= +github.com/acarl005/stripansi v0.0.0-20180116102854-5a71ef0e047d/go.mod h1:asat636LX7Bqt5lYEZ27JNDcqxfjdBQuJ/MM4CN/Lzo= github.com/aclements/go-moremath v0.0.0-20241023150245-c8bbc672ef66 h1:siNQlUMcFUDZWCOt0p+RHl7et5Nnwwyq/sFZmr4iG1I= github.com/aclements/go-moremath v0.0.0-20241023150245-c8bbc672ef66/go.mod h1:FDw7qicTbJ1y1SZcNnOvym2BogPdC3lY9Z1iUM4MVhw= +github.com/actgardner/gogen-avro/v10 v10.1.0/go.mod h1:o+ybmVjEa27AAr35FRqU98DJu1fXES56uXniYFv4yDA= +github.com/actgardner/gogen-avro/v10 v10.2.1/go.mod h1:QUhjeHPchheYmMDni/Nx7VB0RsT/ee8YIgGY/xpEQgQ= +github.com/actgardner/gogen-avro/v9 v9.1.0/go.mod h1:nyTj6wPqDJoxM3qdnjcLv+EnMDSDFqE0qDpva2QRmKc= github.com/agnivade/levenshtein v1.1.1 h1:QY8M92nrzkmr798gCo3kmMyqXFzdQVpxLlGPRBij0P8= github.com/agnivade/levenshtein v1.1.1/go.mod h1:veldBMzWxcCG2ZvUTKD2kJNRdCk5hVbJomOvKkmgYbo= github.com/ajstarks/deck v0.0.0-20200831202436-30c9fc6549a9/go.mod h1:JynElWSGnm/4RlzPXRlREEwqTHAN3T56Bv2ITsFT3gY= @@ -797,6 +809,8 @@ github.com/aws/smithy-go v1.22.0 h1:uunKnWlcoL3zO7q+gG2Pk53joueEOsnNB28QdMsmiMM= github.com/aws/smithy-go v1.22.0/go.mod h1:irrKGvNn1InZwb2d7fkIRNucdfwR8R+Ts3wxYa/cJHg= github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= +github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= github.com/bep/clocks v0.5.0 h1:hhvKVGLPQWRVsBP/UB7ErrHYIO42gINVbvqxvYTPVps= github.com/bep/clocks v0.5.0/go.mod h1:SUq3q+OOq41y2lRQqH5fsOoxN8GbxSiT6jvoVVLCVhU= github.com/bep/debounce v1.2.0/go.mod h1:H8yggRPQKLUhUoqrJC1bO2xNya7vanpDl7xR3ISbCJ0= @@ -842,6 +856,8 @@ github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs= github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c= github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA= github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0= +github.com/buger/goterm v1.0.4 h1:Z9YvGmOih81P0FbVtEYTFF6YsSgxSUKEhf/f9bTMXbY= +github.com/buger/goterm v1.0.4/go.mod h1:HiFWV3xnkolgrBV3mY8m0X0Pumt4zg4QhbdOzQtB8tE= github.com/bytedance/sonic v1.12.3 h1:W2MGa7RCU1QTeYRTPE3+88mVC0yXmsRQRChiyVocVjU= github.com/bytedance/sonic v1.12.3/go.mod h1:B8Gt/XvtZ3Fqj+iSKMypzymZxw/FVwgIGKzMzT9r/rk= github.com/bytedance/sonic/loader v0.1.1/go.mod h1:ncP89zfokxS5LZrJxl5z0UJcsk4M4yY2JpfqGeCtNLU= @@ -890,10 +906,28 @@ github.com/cncf/xds/go v0.0.0-20230105202645-06c439db220b/go.mod h1:eXthEFrGJvWH github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78 h1:QVw89YDxXxEe+l8gU8ETbOasdwEV+avkR75ZzsVV9WI= github.com/cncf/xds/go v0.0.0-20240905190251-b4127c9b8d78/go.mod h1:W+zGtBO5Y1IgJhy4+A9GOqVhqLpfZi+vwmdNXUehLA8= +github.com/compose-spec/compose-go/v2 v2.1.0 h1:qdW2qISQlCQG8v1O2TChcdxgAWTUGgUX/CPSO+ES9+E= +github.com/compose-spec/compose-go/v2 v2.1.0/go.mod h1:bEPizBkIojlQ20pi2vNluBa58tevvj0Y18oUSHPyfdc= +github.com/confluentinc/confluent-kafka-go v1.9.2 h1:gV/GxhMBUb03tFWkN+7kdhg+zf+QUM+wVkI9zwh770Q= +github.com/confluentinc/confluent-kafka-go v1.9.2/go.mod h1:ptXNqsuDfYbAE/LBW6pnwWZElUoWxHoV8E43DCrliyo= +github.com/confluentinc/confluent-kafka-go/v2 v2.5.4 h1:wqTPWwIQYguGIBL8XOJv0txVSHiAGkHuaFlZBQ76MRE= +github.com/confluentinc/confluent-kafka-go/v2 v2.5.4/go.mod h1:UupuBgPAYzqS+I2P0H9zEUCqoFei2JSkBjTTtpNN454= +github.com/containerd/console v1.0.4 h1:F2g4+oChYvBTsASRTz8NP6iIAi97J3TtSAsLbIFn4ro= +github.com/containerd/console v1.0.4/go.mod h1:YynlIjWYF8myEu6sdkwKIvGQq+cOckRm6So2avqoYAk= +github.com/containerd/containerd v1.7.18 h1:jqjZTQNfXGoEaZdW1WwPU0RqSn1Bm2Ay/KJPUuO8nao= +github.com/containerd/containerd v1.7.18/go.mod h1:IYEk9/IO6wAPUz2bCMVUbsfXjzw5UNP5fLz4PsUygQ4= +github.com/containerd/continuity v0.4.3 h1:6HVkalIp+2u1ZLH1J/pYX2oBVXlJZvh1X1A7bEZ9Su8= +github.com/containerd/continuity v0.4.3/go.mod h1:F6PTNCKepoxEaXLQp3wDAjygEnImnZ/7o4JzpodfroQ= +github.com/containerd/errdefs v0.3.0 h1:FSZgGOeK4yuT/+DnF07/Olde/q4KBoMsaamhXxIMDp4= +github.com/containerd/errdefs v0.3.0/go.mod h1:+YBYIdtsnF4Iw6nWZhJcqGSg/dwvV7tyJ/kCkyJ2k+M= github.com/containerd/log v0.1.0 h1:TCJt7ioM2cr/tfR8GPbGf9/VRAX8D2B4PjzCpfX540I= github.com/containerd/log v0.1.0/go.mod h1:VRRf09a7mHDIRezVKTRCrOq78v577GXq3bSa3EhrzVo= github.com/containerd/platforms v0.2.1 h1:zvwtM3rz2YHPQsF2CHYM8+KtB5dvhISiXh5ZpSBQv6A= github.com/containerd/platforms v0.2.1/go.mod h1:XHCb+2/hzowdiut9rkudds9bE5yJ7npe7dG/wG+uFPw= +github.com/containerd/ttrpc v1.2.3 h1:4jlhbXIGvijRtNC8F/5CpuJZ7yKOBFGFOOXg1bkISz0= +github.com/containerd/ttrpc v1.2.3/go.mod h1:ieWsXucbb8Mj9PH0rXCw1i8IunRbbAiDkpXkbfflWBM= +github.com/containerd/typeurl/v2 v2.1.1 h1:3Q4Pt7i8nYwy2KmQWIw2+1hTvwTE/6w9FqcttATPO/4= +github.com/containerd/typeurl/v2 v2.1.1/go.mod h1:IDp2JFvbwZ31H8dQbEIY7sDl2L3o3HZj1hsSQlywkQ0= github.com/cpuguy83/dockercfg v0.3.2 h1:DlJTyZGBDlXqUZ2Dk2Q3xHs/FtnooJJVaad2S9GKorA= github.com/cpuguy83/dockercfg v0.3.2/go.mod h1:sugsbF4//dDlL/i+S+rtpIWp+5h0BHJHfjj5/jFyUJc= github.com/cpuguy83/go-md2man/v2 v2.0.4/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= @@ -925,10 +959,24 @@ github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5Qvfr github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E= github.com/dlclark/regexp2 v1.11.4 h1:rPYF9/LECdNymJufQKmri9gV604RvvABwgOA8un7yAo= github.com/dlclark/regexp2 v1.11.4/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= +github.com/docker/buildx v0.14.0 h1:FxqcfE7xgeEC4oQlKLpuvfobRDVDXrHE3jByM+mdyqk= +github.com/docker/buildx v0.14.0/go.mod h1:Vy/2lC9QsJvo33+7KKkN/GDE5WxnVqW0/dpcN7ZqPJY= +github.com/docker/cli v26.1.0+incompatible h1:+nwRy8Ocd8cYNQ60mozDDICICD8aoFGtlPXifX/UQ3Y= +github.com/docker/cli v26.1.0+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8= +github.com/docker/compose/v2 v2.27.0 h1:FKyClQdErCxUZULC2zo6Jn5ve+epFPe/Y0HaxjmUzNg= +github.com/docker/compose/v2 v2.27.0/go.mod h1:uaqwmY6haO8wXWHk+LAsqqDapX6boH4izRKqj/E7+Bo= +github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk= +github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v27.3.1+incompatible h1:KttF0XoteNTicmUtBO0L2tP+J7FGRFTjaEF4k6WdhfI= github.com/docker/docker v27.3.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/docker-credential-helpers v0.8.0 h1:YQFtbBQb4VrpoPxhFuzEBPQ9E16qz5SpHLS+uswaCp8= +github.com/docker/docker-credential-helpers v0.8.0/go.mod h1:UGFXcuoQ5TxPiB54nHOZ32AWRqQdECoh/Mg0AlEYb40= +github.com/docker/go v1.5.1-1.0.20160303222718-d30aec9fd63c h1:lzqkGL9b3znc+ZUgi7FlLnqjQhcXxkNM/quxIjBVMD0= +github.com/docker/go v1.5.1-1.0.20160303222718-d30aec9fd63c/go.mod h1:CADgU4DSXK5QUlFslkQu2yW2TKzFZcXq/leZfM0UH5Q= github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c= github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc= +github.com/docker/go-metrics v0.0.1 h1:AgB/0SvBxihN0X8OR4SjsblXkbMvalQ8cjmtKQ2rQV8= +github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= github.com/docopt/docopt-go v0.0.0-20180111231733-ee0de3bc6815/go.mod h1:WwZ+bS3ebgob9U8Nd0kOddGdZWjyMGR8Wziv+TBNwSE= @@ -945,6 +993,8 @@ github.com/eapache/queue/v2 v2.0.0-20230407133247-75960ed334e4 h1:8EXxF+tCLqaVk8 github.com/eapache/queue/v2 v2.0.0-20230407133247-75960ed334e4/go.mod h1:I5sHm0Y0T1u5YjlyqC5GVArM7aNZRUYtTjmJ8mPJFds= github.com/ebitengine/purego v0.8.1 h1:sdRKd6plj7KYW33EH5As6YKfe8m9zbN9JMrOjNVF/BE= github.com/ebitengine/purego v0.8.1/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ= +github.com/eiannone/keyboard v0.0.0-20220611211555-0d226195f203 h1:XBBHcIb256gUJtLmY22n99HaZTz+r2Z51xUPi01m3wg= +github.com/eiannone/keyboard v0.0.0-20220611211555-0d226195f203/go.mod h1:E1jcSv8FaEny+OP/5k9UxZVw9YFWGj7eI4KR/iOBqCg= github.com/elastic/elastic-transport-go/v8 v8.4.0 h1:EKYiH8CHd33BmMna2Bos1rDNMM89+hdgcymI+KzJCGE= github.com/elastic/elastic-transport-go/v8 v8.4.0/go.mod h1:YLHer5cj0csTzNFXoNQ8qhtGY1GTvSqPnKWKaqQE3Hk= github.com/elastic/go-elasticsearch/v6 v6.8.5 h1:U2HtkBseC1FNBmDr0TR2tKltL6FxoY+niDAlj5M8TK8= @@ -986,15 +1036,22 @@ github.com/fogleman/gg v1.2.1-0.20190220221249-0403632d5b90/go.mod h1:R/bRT+9gY/ github.com/fogleman/gg v1.3.0/go.mod h1:R/bRT+9gY/C5z7JzPU0zXsXHKM4/ayA+zqcVNZzPa1k= github.com/fortytw2/leaktest v1.3.0 h1:u8491cBMTQ8ft8aeV+adlcytMZylmA5nnwwkRZjI8vw= github.com/fortytw2/leaktest v1.3.0/go.mod h1:jDsjWgpAGjm2CA7WthBh/CdZYEPF31XHquHwclZch5g= +github.com/frankban/quicktest v1.2.2/go.mod h1:Qh/WofXFeiAFII1aEBu529AtJo6Zg2VHscnEsbBnJ20= github.com/frankban/quicktest v1.4.1/go.mod h1:36zfPVQyHxymz4cH7wlDmVwDrJuljRB60qkgn7rorfQ= github.com/frankban/quicktest v1.7.2/go.mod h1:jaStnuzAqU1AJdCO0l53JDCJrVDKcS03DbaAcR7Ks/o= +github.com/frankban/quicktest v1.10.0/go.mod h1:ui7WezCLWMWxVWr1GETZY3smRy0G4KWq9vcPtJmFl7Y= github.com/frankban/quicktest v1.13.0/go.mod h1:qLE0fzW0VuyUAJgPU19zByoIr0HtCHN/r/VLSOOIySU= +github.com/frankban/quicktest v1.14.0/go.mod h1:NeW+ay9A/U67EYXNFA1nPE8e/tnQv/09mUdL/ijj8og= github.com/frankban/quicktest v1.14.2/go.mod h1:mgiwOwqx65TmIk1wJ6Q7wvnVMocbUorkibMOrVTHZps= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/fsnotify/fsevents v0.1.1 h1:/125uxJvvoSDDBPen6yUZbil8J9ydKZnnl3TWWmvnkw= +github.com/fsnotify/fsevents v0.1.1/go.mod h1:+d+hS27T6k5J8CRaPLKFgwKYcpS7GwW3Ule9+SC2ZRc= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.8.0 h1:dAwr6QBTBZIkG8roQaJjGof0pp0EeF+tNV7YBP3F/8M= github.com/fsnotify/fsnotify v1.8.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8TRcHyHii0= +github.com/fvbommel/sortorder v1.0.2 h1:mV4o8B2hKboCdkJm+a7uX/SIpZob4JzUpc5GGnM45eo= +github.com/fvbommel/sortorder v1.0.2/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0= github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E= github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= github.com/gabriel-vasile/mimetype v1.4.6 h1:3+PzJTKLkvgjeTbts6msPJt4DixhT4YtFNf1gtGe3zc= @@ -1072,6 +1129,10 @@ github.com/gocql/gocql v1.7.0 h1:O+7U7/1gSN7QTEAaMEsJc1Oq2QHXvCWoF3DFK9HDHus= github.com/gocql/gocql v1.7.0/go.mod h1:vnlvXyFZeLBF0Wy+RS8hrOdbn0UWsWtdg07XJnFxZ+4= github.com/gofiber/fiber/v2 v2.52.5 h1:tWoP1MJQjGEe4GB5TUGOi7P2E0ZMMRx5ZTG4rT+yGMo= github.com/gofiber/fiber/v2 v2.52.5/go.mod h1:KEOE+cXMhXG0zHc9d8+E38hoX+ZN7bhOtgeF2oT6jrQ= +github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw= +github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU= +github.com/gogo/googleapis v1.4.1 h1:1Yx4Myt7BxzvUr5ldGSbwYiZG6t9wGBZ+8/fX3Wvtq0= +github.com/gogo/googleapis v1.4.1/go.mod h1:2lpHqI5OcWCtVElxXnPt+s8oJvMpySlOyM6xDCrzib4= github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= github.com/gohugoio/go-i18n/v2 v2.1.3-0.20230805085216-e63c13218d0e h1:QArsSubW7eDh8APMXkByjQWvuljwPGAGQpJEFn0F0wY= @@ -1137,6 +1198,7 @@ github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiu github.com/golang/protobuf v1.5.3/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/golang/protobuf v1.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM= github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= @@ -1150,6 +1212,7 @@ github.com/google/flatbuffers v23.5.26+incompatible/go.mod h1:1AeVuKshWv4vARoZat github.com/google/gnostic-models v0.6.8 h1:yo/ABAfM5IMRsS1VnXjTBvUb61tFIHozhlYvRgGre9I= github.com/google/gnostic-models v0.6.8/go.mod h1:5n7qKqH0f5wFt+aWF8CW6pZLLNOfYuF5OpfBSENuI8U= github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.2.1-0.20190312032427-6f77996f0c42/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= @@ -1201,11 +1264,14 @@ github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLe github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20211008130755-947d60d73cc0/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg= github.com/google/pprof v0.0.0-20241101162523-b92577c0c142 h1:sAGdeJj0bnMgUNVeUpp6AYlVdCt3/GdI3pGRqsNSQLs= github.com/google/pprof v0.0.0-20241101162523-b92577c0c142/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/s2a-go v0.1.8 h1:zZDs9gcbt9ZPLV0ndSyQk6Kacx2g/X+SKYovpnz3SMM= github.com/google/s2a-go v0.1.8/go.mod h1:6iNWHTpQ+nfNRN5E00MSdfDwVesa8hhS32PhPO8deJA= +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= +github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -1247,6 +1313,8 @@ github.com/graphql-go/graphql v0.8.1 h1:p7/Ou/WpmulocJeEx7wjQy611rtXGQaAcXGqanuM github.com/graphql-go/graphql v0.8.1/go.mod h1:nKiHzRM0qopJEwCITUuIsxk9PlVlwIiiI8pnJEhordQ= github.com/graphql-go/handler v0.2.3 h1:CANh8WPnl5M9uA25c2GBhPqJhE53Fg0Iue/fRNla71E= github.com/graphql-go/handler v0.2.3/go.mod h1:leLF6RpV5uZMN1CdImAxuiayrYYhOk33bZciaUGaXeU= +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw= +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= github.com/grpc-ecosystem/grpc-gateway v1.16.0 h1:gmcG1KaJ57LophUzW0Hy8NmPhnMZb4M0+kPpLofRdBo= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= github.com/grpc-ecosystem/grpc-gateway/v2 v2.7.0/go.mod h1:hgWBS7lorOAVIJEQMi4ZsPv9hVvWI6+ch50m39Pf2Ks= @@ -1257,6 +1325,7 @@ github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed h1:5upAirOpQc github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed/go.mod h1:tMWxXQ9wFIaZeTI9F+hmhFiGpFmhOHzyShyFUhRm0H4= github.com/hairyhenderson/go-codeowners v0.6.1 h1:2OLPpLWFMxkCf9hkYzOexnCGD+kj853OqeoKq7S+9us= github.com/hairyhenderson/go-codeowners v0.6.1/go.mod h1:RFWbGcjlXhRKNezt7AQHmJucY0alk4osN0+RKOsIAa8= +github.com/hamba/avro v1.5.6/go.mod h1:3vNT0RLXXpFm2Tb/5KC71ZRJlOroggq1Rcitb6k4Fr8= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= github.com/hashicorp/errwrap v1.1.0 h1:OxrOeh75EUXMY8TBjag2fzXGZ40LB6IKw45YeGUDY2I= github.com/hashicorp/errwrap v1.1.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -1279,6 +1348,8 @@ github.com/hashicorp/go-sockaddr v1.0.7/go.mod h1:FZQbEYa1pxkQ7WLpyXJ6cbjpT8q0Yg github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.3 h1:2gKiV6YVmrJ1i2CKKa9obLvRieoRGviZFL26PcT/Co8= github.com/hashicorp/go-uuid v1.0.3/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= +github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= @@ -1291,16 +1362,22 @@ github.com/hashicorp/vault/api v1.15.0 h1:O24FYQCWwhwKnF7CuSqP30S51rTV7vz1iACXE/ github.com/hashicorp/vault/api v1.15.0/go.mod h1:+5YTO09JGn0u+b6ySD/LLVf8WkJCPLAL2Vkmrn2+CM8= github.com/hashicorp/vault/sdk v0.14.0 h1:8vagjlpLurkFTnKT9aFSGs4U1XnK2IFytnWSxgFrDo0= github.com/hashicorp/vault/sdk v0.14.0/go.mod h1:3hnGK5yjx3CW2hFyk+Dw1jDgKxdBvUvjyxMHhq0oUFc= +github.com/heetch/avro v0.3.1/go.mod h1:4xn38Oz/+hiEUTpbVfGVLfvOg0yKLlRP7Q9+gJJILgA= github.com/hexops/gotextdiff v1.0.3 h1:gitA9+qJrrTCsiCl7+kh75nPqQt1cx4ZkudSTLoUqJM= github.com/hexops/gotextdiff v1.0.3/go.mod h1:pSWU5MAI3yDq+fZBTazCSJysOMbxWL1BSow5/V2vxeg= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0/go.mod h1:N0Wam8K1arqPXNWjMo21EXnBPOPp36vB07FNRdD2geA= github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/imdario/mergo v0.3.16 h1:wwQJbIsHYGMUyLSPrEq1CT16AhnhNJQ51+4fdHUnCl4= github.com/imdario/mergo v0.3.16/go.mod h1:WBLT9ZmE3lPoWsEzCh9LPo3TiwVN+ZKEjmz+hD27ysY= +github.com/in-toto/in-toto-golang v0.5.0 h1:hb8bgwr0M2hGdDsLjkJ3ZqJ8JFLL/tgYdAxF/XEFBbY= +github.com/in-toto/in-toto-golang v0.5.0/go.mod h1:/Rq0IZHLV7Ku5gielPT4wPHJfH1GdHMCq8+WPxw8/BE= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/invopop/jsonschema v0.4.0/go.mod h1:O9uiLokuu0+MGFlyiaqtWxwqJm41/+8Nj0lD7A36YH0= github.com/invopop/yaml v0.3.1 h1:f0+ZpmhfBSS4MhG+4HYseMdJhoeeopbSKbq5Rpeelso= github.com/invopop/yaml v0.3.1/go.mod h1:PMOp3nn4/12yEZUFfmOuNHJsZToEEOwoWsT+D81KkeA= github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= @@ -1326,6 +1403,11 @@ github.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJk github.com/jdkato/prose v1.2.1 h1:Fp3UnJmLVISmlc57BgKUzdjr0lOtjqTZicL3PaYy6cU= github.com/jdkato/prose v1.2.1/go.mod h1:AiRHgVagnEx2JbQRQowVBKjG0bcs/vtkGCH1dYAL1rA= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= +github.com/jhump/gopoet v0.0.0-20190322174617-17282ff210b3/go.mod h1:me9yfT6IJSlOL3FCfrg+L6yzUEZ+5jW6WHt4Sk+UPUI= +github.com/jhump/gopoet v0.1.0/go.mod h1:me9yfT6IJSlOL3FCfrg+L6yzUEZ+5jW6WHt4Sk+UPUI= +github.com/jhump/goprotoc v0.5.0/go.mod h1:VrbvcYrQOrTi3i0Vf+m+oqQWk9l72mjkJCYo7UvLHRQ= +github.com/jhump/protoreflect v1.11.0/go.mod h1:U7aMIjN0NWq9swDP7xDdoMfRHb35uiuTd3Z9nFXJf5E= +github.com/jhump/protoreflect v1.12.0/go.mod h1:JytZfP5d0r8pVNLZvai7U/MCuTWITgrI4tTg7puQFKI= github.com/jinzhu/gorm v1.9.16 h1:+IyIjPEABKRpsu/F8OvDPy9fyQlgsg2luMV2ZIH5i5o= github.com/jinzhu/gorm v1.9.16/go.mod h1:G3LB3wezTOWM2ITLzPxEXgSkOXAntiLHS7UdBefADcs= github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= @@ -1337,12 +1419,17 @@ github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9Y github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= +github.com/jonboulle/clockwork v0.4.0 h1:p4Cf1aMWXnXAUh8lVfewRBx1zaTSYKrKMF2g3ST4RZ4= +github.com/jonboulle/clockwork v0.4.0/go.mod h1:xgRqUGwRcjKCO1vbZUEtSLrqKoPSsUpK7fnezOII0kc= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/juju/qthttptest v0.1.1/go.mod h1:aTlAv8TYaflIiTDIQYzxnl1QdPjAg8Q8qJMErpKy6A4= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= github.com/jung-kurt/gofpdf v1.0.0/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/jung-kurt/gofpdf v1.0.3-0.20190309125859-24315acbbda5/go.mod h1:7Id9E/uU8ce6rXgefFLlgrJj/GYY22cpxn+r32jIOes= github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs= @@ -1361,6 +1448,7 @@ github.com/klauspost/cpuid/v2 v2.2.8/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZY github.com/knz/go-libedit v1.10.1/go.mod h1:MZTVkCWyz0oBc7JOWP3wNAzd002ZbM/5hgShxwh4x8M= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= @@ -1382,6 +1470,10 @@ github.com/leodido/go-urn v1.4.0/go.mod h1:bvxc+MVxLKB4z00jd1z+Dvzr47oO32F/QSNjS github.com/lib/pq v1.1.1/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/linkedin/goavro v2.1.0+incompatible/go.mod h1:bBCwI2eGYpUI/4820s67MElg9tdeLbINjLjiM2xZFYM= +github.com/linkedin/goavro/v2 v2.10.0/go.mod h1:UgQUb2N/pmueQYH9bfqFioWxzYCZXSfF8Jw03O5sjqA= +github.com/linkedin/goavro/v2 v2.10.1/go.mod h1:UgQUb2N/pmueQYH9bfqFioWxzYCZXSfF8Jw03O5sjqA= +github.com/linkedin/goavro/v2 v2.11.1/go.mod h1:UgQUb2N/pmueQYH9bfqFioWxzYCZXSfF8Jw03O5sjqA= github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= github.com/lucasb-eyer/go-colorful v1.2.0/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/lufia/plan9stats v0.0.0-20240909124753-873cd0166683 h1:7UMa6KCCMjZEMDtTVdcGu0B1GmmC7QJKiCCjyTAWQy0= @@ -1408,26 +1500,48 @@ github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc= github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/mattn/go-shellwords v1.0.12 h1:M2zGm7EW6UQJvDeQxo4T51eKPurbeFbe8WtebGE2xrk= +github.com/mattn/go-shellwords v1.0.12/go.mod h1:EZzvwXDESEeg03EKmM+RmDnNOPKG4lLtQsUlTZDWQ8Y= github.com/mattn/go-sqlite3 v1.14.0/go.mod h1:JIl7NbARA7phWnGvh0LKTyg7S9BA+6gx71ShQilpsus= github.com/mattn/go-sqlite3 v1.14.14/go.mod h1:NyWgC/yNuGj7Q9rpYnZvas74GogHl5/Z4A/KQRfk6bU= github.com/mattn/go-sqlite3 v1.14.22 h1:2gZY6PC6kBnID23Tichd1K+Z0oS6nE/XwU+Vz/5o4kU= github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxUwlHK0RXw+Y= +github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b h1:j7+1HpAFS1zy5+Q4qx1fWh90gTKwiN4QCGoY9TWyyO4= +github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE= github.com/microsoft/go-mssqldb v0.21.0 h1:p2rpHIL7TlSv1QrbXJUAcbyRKnIT0C9rRkH2E4OjLn8= github.com/microsoft/go-mssqldb v0.21.0/go.mod h1:+4wZTUnz/SV6nffv+RRRB/ss8jPng5Sho2SmM1l2ts4= +github.com/miekg/pkcs11 v1.1.1 h1:Ugu9pdy6vAYku5DEpVWVFPYnzV+bxB+iRdbuFSu7TvU= +github.com/miekg/pkcs11 v1.1.1/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY= github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE= github.com/minio/highwayhash v1.0.3 h1:kbnuUMoHYyVl7szWjSxJnxw11k2U709jqFPPmIUyD6Q= github.com/minio/highwayhash v1.0.3/go.mod h1:GGYsuwP/fPD6Y9hMiXuapVvlIUEhFhMTh0rxU3ik1LQ= +github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= +github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c h1:cqn374mizHuIWj+OSJCajGr/phAmuMug9qIX3l9CflE= github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= +github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/moby/buildkit v0.13.1 h1:L8afOFhPq2RPJJSr/VyzbufwID7jquZVB7oFHbPRcPE= +github.com/moby/buildkit v0.13.1/go.mod h1:aNmNQKLBFYAOFuzQjR3VA27/FijlvtBD1pjNwTSN37k= github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= +github.com/moby/locker v1.0.1 h1:fOXqR41zeveg4fFODix+1Ch4mj/gT0NE1XJbp/epuBg= +github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= github.com/moby/patternmatcher v0.6.0 h1:GmP9lR19aU5GqSSFko+5pRqHi+Ohk1O69aFiKkVGiPk= github.com/moby/patternmatcher v0.6.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= +github.com/moby/spdystream v0.4.0 h1:Vy79D6mHeJJjiPdFEL2yku1kl0chZpJfZcPpb16BRl8= +github.com/moby/spdystream v0.4.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI= +github.com/moby/sys/mountinfo v0.7.1 h1:/tTvQaSJRr2FshkhXiIpux6fQ2Zvc4j7tAhMTStAG2g= +github.com/moby/sys/mountinfo v0.7.1/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI= github.com/moby/sys/sequential v0.6.0 h1:qrx7XFUd/5DxtqcoH1h438hF5TmOvzC/lspjy7zgvCU= github.com/moby/sys/sequential v0.6.0/go.mod h1:uyv8EUTrca5PnDsdMGXhZe6CCe8U/UiTWd+lL+7b/Ko= +github.com/moby/sys/signal v0.7.0 h1:25RW3d5TnQEoKvRbEKUGay6DCQ46IxAVTT9CUMgmsSI= +github.com/moby/sys/signal v0.7.0/go.mod h1:GQ6ObYZfqacOwTtlXvcmh9A26dVRul/hbOZn88Kg8Tg= +github.com/moby/sys/symlink v0.2.0 h1:tk1rOM+Ljp0nFmfOIBtlV3rTDlWOwFRhjEeAhZB0nZc= +github.com/moby/sys/symlink v0.2.0/go.mod h1:7uZVF2dqJjG/NsClqul95CqKOBRQyYSNnJ6BMgR/gFs= github.com/moby/sys/user v0.3.0 h1:9ni5DlcW5an3SvRSx4MouotOygvzaXbaSrc/wGDFWPo= github.com/moby/sys/user v0.3.0/go.mod h1:bG+tYYYJgaMtRKgEmuueC0hJEAZWwtIbZTB+85uoHjs= github.com/moby/sys/userns v0.1.0 h1:tVLXkFOxVu9A64/yh59slHVv9ahO9UIev4JZusOLG/g= @@ -1437,6 +1551,8 @@ github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3 github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw= @@ -1452,6 +1568,8 @@ github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA= github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/nats-io/jwt/v2 v2.7.2 h1:SCRjfDLJ2q8naXp8YlGJJS5/yj3wGSODFYVi4nnwVMw= github.com/nats-io/jwt/v2 v2.7.2/go.mod h1:kB6QUmqHG6Wdrzj0KP2L+OX4xiTPBeV+NHVstFaATXU= github.com/nats-io/nats-server/v2 v2.10.22 h1:Yt63BGu2c3DdMoBZNcR6pjGQwk/asrKU7VX846ibxDA= @@ -1467,6 +1585,7 @@ github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646 h1:zYyBkD/k9seD2A7fsi6 github.com/nfnt/resize v0.0.0-20180221191011-83c6a9932646/go.mod h1:jpp1/29i3P1S/RLdc7JQKbRpFeM1dOBd8T9ki5s+AY8= github.com/niklasfasching/go-org v1.7.0 h1:vyMdcMWWTe/XmANk19F4k8XGBYg0GQ/gJGMimOjGMek= github.com/niklasfasching/go-org v1.7.0/go.mod h1:WuVm4d45oePiE0eX25GqTDQIt/qPW1T9DGkRscqLW5o= +github.com/nrwiersma/avro-benchmarks v0.0.0-20210913175520-21aec48c8f76/go.mod h1:iKyFMidsk/sVYONJRE372sJuX/QTRPacU7imPqqsu7g= github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= @@ -1494,6 +1613,8 @@ github.com/outcaste-io/ristretto v0.2.3 h1:AK4zt/fJ76kjlYObOeNwh4T3asEuaCmp26pOv github.com/outcaste-io/ristretto v0.2.3/go.mod h1:W8HywhmtlopSB1jeMg3JtdIhf+DYkLAr0VN/s4+MHac= github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 h1:onHthvaw9LFnH4t2DcNVpwGmV9E1BkGknEliJkfwQj0= github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58/go.mod h1:DXv8WO4yhMYhSNPKjeNKa5WY9YCIEBRbNzFFPJbWO6Y= +github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= +github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pelletier/go-toml/v2 v2.2.3 h1:YmeHyLY8mFWbdkNWwpr+qIL2bEqT0o95WSdkNHvL12M= github.com/pelletier/go-toml/v2 v2.2.3/go.mod h1:MfCQTFTvCcUyyvvwm1+G6H/jORL20Xlb6rzQu9GuUkc= github.com/perimeterx/marshmallow v1.1.5 h1:a2LALqQ1BlHM8PZblsDdidgv1mWi1DgC2UmX50IvK2s= @@ -1523,9 +1644,19 @@ github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55 h1:o4JXh1EVt github.com/power-devops/perfstat v0.0.0-20240221224432-82ca36839d55/go.mod h1:OmDBASR4679mdNQnz2pUhc2G8CO2JrUAVFDRBDP/hJE= github.com/prashantv/gostub v1.1.0 h1:BTyx3RfQjRHnUWaGF9oQos79AlQ5k8WNktv7VGvVH4g= github.com/prashantv/gostub v1.1.0/go.mod h1:A5zLQHz7ieHGG7is6LLXLz7I8+3LZzsrV0P1IAHhP5U= +github.com/prometheus/client_golang v1.19.1 h1:wZWJDwK+NameRJuPGDhlnFgx8e8HN3XHQeLaYJFJBOE= +github.com/prometheus/client_golang v1.19.1/go.mod h1:mP78NwGzrVks5S2H6ab8+ZZGJLZUq1hoULYBAYBw1Ho= github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= github.com/prometheus/client_model v0.3.0/go.mod h1:LDGWKZIo7rky3hgvBe+caln+Dr3dPggB5dvjtD7w9+w= +github.com/prometheus/client_model v0.6.1 h1:ZKSh/rekM+n3CeS952MLRAdFwIKqeY8b62p8ais2e9E= +github.com/prometheus/client_model v0.6.1/go.mod h1:OrxVMOVHjw3lKMa8+x6HeMGkHMQyHDk9E3jmP2AmGiY= +github.com/prometheus/common v0.53.0 h1:U2pL9w9nmJwJDa4qqLQ3ZaePJ6ZTwt7cMD3AG3+aLCE= +github.com/prometheus/common v0.53.0/go.mod h1:BrxBKv3FWBIGXw89Mg1AeBq7FSyRzXWI3l3e7W3RN5U= +github.com/prometheus/procfs v0.15.0 h1:A82kmvXJq2jTu5YUhSGNlYoxh85zLnKgPz4bMZgI5Ek= +github.com/prometheus/procfs v0.15.0/go.mod h1:Y0RJ/Y5g5wJpkTisOtqwDSo4HwhGmLB4VQSw2sQJLHk= +github.com/r3labs/sse v0.0.0-20210224172625-26fe804710bc h1:zAsgcP8MhzAbhMnB1QQ2O7ZhWYVGYSR2iVcjzQuPV+o= +github.com/r3labs/sse v0.0.0-20210224172625-26fe804710bc/go.mod h1:S8xSOnV3CgpNrWd0GQ/OoQfMtlg2uPRSuTzcSGrzwK8= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475 h1:N/ElC8H3+5XpJzTSTfLsJV/mx9Q9g7kxmchpfZyxgzM= github.com/rcrowley/go-metrics v0.0.0-20201227073835-cf1acfcdf475/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/redis/go-redis/v9 v9.7.0 h1:HhLSs+B6O021gwzl+locl0zEDnyNkxMtf/Z3NNBMa9E= @@ -1538,9 +1669,11 @@ github.com/richardartoul/molecule v1.0.1-0.20240531184615-7ca0df43c0b3/go.mod h1 github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/rogpeppe/clock v0.0.0-20190514195947-2896927a307a/go.mod h1:4r5QyqhjIWCcK8DO4KMclc5Iknq5qVBAlbYYzAbUScQ= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII= github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o= @@ -1554,6 +1687,7 @@ github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkB github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= github.com/sanity-io/litter v1.5.5 h1:iE+sBxPBzoK6uaEP5Lt3fHNgpKcHXc/A2HGETy0uJQo= github.com/sanity-io/litter v1.5.5/go.mod h1:9gzJgR2i4ZpjZHsKvUXIRQVk7P+yM3e+jAF7bU2UI5U= +github.com/santhosh-tekuri/jsonschema/v5 v5.0.0/go.mod h1:FKdcjfQW6rpZSnxxUvEA5H/cDPdvJ/SZJQLWWXWGrZ0= github.com/secure-systems-lab/go-securesystemslib v0.8.0 h1:mr5An6X45Kb2nddcFlbmfHkLguCE9laoZCUzEEpIZXA= github.com/secure-systems-lab/go-securesystemslib v0.8.0/go.mod h1:UH2VZVuJfCYR8WgMlCU1uFsOUU+KeyrTWcSS73NBOzU= github.com/segmentio/kafka-go v0.4.42 h1:qffhBZCz4WcWyNuHEclHjIMLs2slp6mZO8px+5W5tfU= @@ -1561,6 +1695,10 @@ github.com/segmentio/kafka-go v0.4.42/go.mod h1:d0g15xPMqoUookug0OU75DhGZxXwCFxS github.com/sergi/go-diff v1.1.0/go.mod h1:STckp+ISIX8hZLjrqAeVduY0gWCT9IjLuqbuNXdaHfM= github.com/sergi/go-diff v1.3.1 h1:xkr+Oxo4BOQKmkn/B9eMK0g5Kg/983T9DqqPHwYqD+8= github.com/sergi/go-diff v1.3.1/go.mod h1:aMJSSKb2lpPvRNec0+w3fl7LP9IOFzdc9Pa4NFbPK1I= +github.com/serialx/hashring v0.0.0-20200727003509-22c0c7ab6b1b h1:h+3JX2VoWTFuyQEo87pStk/a99dzIO1mM9KxIyLPGTU= +github.com/serialx/hashring v0.0.0-20200727003509-22c0c7ab6b1b/go.mod h1:/yeG0My1xr/u+HZrFQ1tOQQQQrOawfyMUH13ai5brBc= +github.com/shibumi/go-pathspec v1.3.0 h1:QUyMZhFo0Md5B8zV8x2tesohbb5kfbpTi9rBnKh5dkI= +github.com/shibumi/go-pathspec v1.3.0/go.mod h1:Xutfslp817l2I1cZvgcfeMQJG5QnU2lh5tVaaMCl3jE= github.com/shirou/gopsutil/v3 v3.24.5 h1:i0t8kL+kQTvpAYToeuiVk3TgDeKOFioZO3Ztz/iZ9pI= github.com/shirou/gopsutil/v3 v3.24.5/go.mod h1:bsoOS1aStSs9ErQ1WWfxllSeS1K5D+U30r2NfcubMVk= github.com/shoenig/go-m1cpu v0.1.6 h1:nxdKQNcEB6vzgA2E2bvzKIYRuNj7XNJ4S/aRSwKzFtM= @@ -1571,6 +1709,8 @@ github.com/shogo82148/go-shuffle v0.0.0-20180218125048-27e6095f230d/go.mod h1:2h github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966 h1:JIAuq3EEf9cgbU6AtGPK4CTG3Zf6CKMNqf0MHTggAUA= +github.com/skratchdot/open-golang v0.0.0-20200116055534-eef842397966/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog= github.com/sosodev/duration v1.3.1 h1:qtHBDMQ6lvMQsL15g4aopM4HEfOaYuhWBw3NPTtlqq4= github.com/sosodev/duration v1.3.1/go.mod h1:RQIBBX0+fMLc/D9+Jb/fwvVmo0eZvDDEERAikUR6SDg= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= @@ -1596,6 +1736,7 @@ github.com/stretchr/objx v0.5.2 h1:xuMeJ0Sdp5ZMRXx/aWO6RZxdr3beISkG5/G/aIRr3pY= github.com/stretchr/objx v0.5.2/go.mod h1:FRsXN1f5AsAjCGJKqEizvkpNtU+EGNCLh3NxZ/8L+MA= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.3.1-0.20190311161405-34c6fa2dc709/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= @@ -1617,6 +1758,8 @@ github.com/testcontainers/testcontainers-go v0.34.0 h1:5fbgF0vIN5u+nD3IWabQwRybu github.com/testcontainers/testcontainers-go v0.34.0/go.mod h1:6P/kMkQe8yqPHfPWNulFGdFHTD8HB2vLq/231xY2iPQ= github.com/testcontainers/testcontainers-go/modules/cassandra v0.34.0 h1:Ec0zO9BlbWSFzvnZEnM5J2B/2ohkvvtIZ4y5+jwg1jM= github.com/testcontainers/testcontainers-go/modules/cassandra v0.34.0/go.mod h1:75Xuwl/2Kf0YKFlxiqqeR8dRIkRoY87F6MCLa4v2jPU= +github.com/testcontainers/testcontainers-go/modules/compose v0.31.0 h1:H74o3HisnApIDQx7sWibGzOl/Oo0By8DjyVeUf3qd6I= +github.com/testcontainers/testcontainers-go/modules/compose v0.31.0/go.mod h1:z1JAsvL2/pNFy40yJX0VX9Yk+hzOCIO5DydxBJHBbCY= github.com/testcontainers/testcontainers-go/modules/elasticsearch v0.34.0 h1:BBwJUs9xBpt1uOfO+yAr2pYW75MsyzuO/o70HTPnhe4= github.com/testcontainers/testcontainers-go/modules/elasticsearch v0.34.0/go.mod h1:OqhRGYR+5VG0Dw506F6Ho9I4YG1kB+o9uPTKC0uPUA8= github.com/testcontainers/testcontainers-go/modules/gcloud v0.34.0 h1:TFwn4HWRojIp2sgzgrky126UEx3e7zH/N/U5UY/kb5c= @@ -1633,18 +1776,28 @@ github.com/testcontainers/testcontainers-go/modules/vault v0.34.0 h1:Tqkst2qEkWm github.com/testcontainers/testcontainers-go/modules/vault v0.34.0/go.mod h1:DdONZFyJ8NgcMrV88wut/aMvGmCtUbY4IwcJt6OTxis= github.com/tetratelabs/wazero v1.8.1 h1:NrcgVbWfkWvVc4UtT4LRLDf91PsOzDzefMdwhLfA550= github.com/tetratelabs/wazero v1.8.1/go.mod h1:yAI0XTsMBhREkM/YDAK/zNou3GoiAce1P6+rp/wQhjs= +github.com/theupdateframework/notary v0.7.0 h1:QyagRZ7wlSpjT5N2qQAh/pN+DVqgekv4DzbAiAiEL3c= +github.com/theupdateframework/notary v0.7.0/go.mod h1:c9DRxcmhHmVLDay4/2fUYdISnHqbFDGRSlXPO0AhYWw= github.com/tidwall/gjson v1.17.1 h1:wlYEnwqAHgzmhNUFfw7Xalt2JzQvsMx2Se4PcoFCT/U= github.com/tidwall/gjson v1.17.1/go.mod h1:/wbyibRr2FHMks5tjHJ5F8dMZh3AcwJEMf5vlfC0lxk= github.com/tidwall/match v1.1.1 h1:+Ho715JplO36QYgwN9PGYNhgZvoUSc9X2c80KVTi+GA= github.com/tidwall/match v1.1.1/go.mod h1:eRSPERbgtNPcGhD8UCthc6PmLEQXEWd3PRB5JTxsfmM= github.com/tidwall/pretty v1.2.1 h1:qjsOFOWWQl+N3RsoF5/ssm1pHmJJwhjlSbZ51I6wMl4= github.com/tidwall/pretty v1.2.1/go.mod h1:ITEVvHYasfjBbM0u2Pg8T2nJnzm8xPwvNhhsoaGGjNU= +github.com/tilt-dev/fsnotify v1.4.8-0.20220602155310-fff9c274a375 h1:QB54BJwA6x8QU9nHY3xJSZR2kX9bgpZekRKGkLTmEXA= +github.com/tilt-dev/fsnotify v1.4.8-0.20220602155310-fff9c274a375/go.mod h1:xRroudyp5iVtxKqZCrA6n2TLFRBf8bmnjr1UD4x+z7g= github.com/tinylib/msgp v1.2.4 h1:yLFeUGostXXSGW5vxfT5dXG/qzkn4schv2I7at5+hVU= github.com/tinylib/msgp v1.2.4/go.mod h1:ykjzy2wzgrlvpDCRc4LA8UXy6D8bzMSuAF3WD57Gok0= github.com/tklauser/go-sysconf v0.3.14 h1:g5vzr9iPFFz24v2KZXs/pvpvh8/V9Fw6vQK5ZZb78yU= github.com/tklauser/go-sysconf v0.3.14/go.mod h1:1ym4lWMLUOhuBOPGtRcJm7tEGX4SCYNEEEtghGG/8uY= github.com/tklauser/numcpus v0.9.0 h1:lmyCHtANi8aRUgkckBgoDk1nHCux3n2cgkJLXdQGPDo= github.com/tklauser/numcpus v0.9.0/go.mod h1:SN6Nq1O3VychhC1npsWostA+oW+VOQTxZrS604NSRyI= +github.com/tonistiigi/fsutil v0.0.0-20240301111122-7525a1af2bb5 h1:oZS8KCqAg62sxJkEq/Ppzqrb6EooqzWtL8Oaex7bc5c= +github.com/tonistiigi/fsutil v0.0.0-20240301111122-7525a1af2bb5/go.mod h1:vbbYqJlnswsbJqWUcJN8fKtBhnEgldDrcagTgnBVKKM= +github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea h1:SXhTLE6pb6eld/v/cCndK0AMpt1wiVFb/YYmqB3/QG0= +github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea/go.mod h1:WPnis/6cRcDZSUvVmezrxJPkiO87ThFYsoUiMwWNDJk= +github.com/tonistiigi/vt100 v0.0.0-20230623042737-f9a4f7ef6531 h1:Y/M5lygoNPKwVNLMPXgVfsRT40CSFKXCxuU8LoHySjs= +github.com/tonistiigi/vt100 v0.0.0-20230623042737-f9a4f7ef6531/go.mod h1:ulncasL3N9uLrVann0m+CDlJKWsIAP34MPcOJF6VRvc= github.com/twitchtv/twirp v8.1.3+incompatible h1:+F4TdErPgSUbMZMwp13Q/KgDVuI7HJXP61mNV3/7iuU= github.com/twitchtv/twirp v8.1.3+incompatible/go.mod h1:RRJoFSAmTEh2weEqWtpPE3vFK5YBhA6bqp2l1kfCC5A= github.com/twitchyliquid64/golang-asm v0.15.1 h1:SU5vSMR7hnwNxj24w34ZyCi/FmDZTkS4MhqMhdFk5YI= @@ -1671,6 +1824,12 @@ github.com/xdg-go/scram v1.1.2 h1:FHX5I5B4i4hKRVRBCFRxq1iQRej7WO3hhBuJf+UUySY= github.com/xdg-go/scram v1.1.2/go.mod h1:RT/sEzTbU5y00aCK8UOx6R7YryM0iF1N2MOmC3kKLN4= github.com/xdg-go/stringprep v1.0.4 h1:XLI/Ng3O1Atzq0oBs3TWm+5ZVgkq2aqdlvP9JtoZ6c8= github.com/xdg-go/stringprep v1.0.4/go.mod h1:mPGuuIYwz7CmR2bT9j4GbQqutWS1zV24gijq1dTyGkM= +github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb h1:zGWFAtiMcyryUHoUjUJX0/lt1H2+i2Ka2n+D3DImSNo= +github.com/xeipuuv/gojsonpointer v0.0.0-20190905194746-02993c407bfb/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415 h1:EzJWgHovont7NscjpAxXsDA8S8BMYve8Y5+7cuRE7R0= +github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= +github.com/xeipuuv/gojsonschema v1.2.0 h1:LhYJRs+L4fBtjZUfuSZIKGeVu0QRy8e5Xi7D17UxZ74= +github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= github.com/xlab/treeprint v1.2.0 h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ= github.com/xlab/treeprint v1.2.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGCjxCBTO/36wtF6j2nSip77qHd4x4= @@ -1713,15 +1872,27 @@ go.opentelemetry.io/contrib/detectors/gcp v1.31.0 h1:G1JQOreVrfhRkner+l4mrGxmfqY go.opentelemetry.io/contrib/detectors/gcp v1.31.0/go.mod h1:tzQL6E1l+iV44YFTkcAeNQqzXUiekSYP9jjJjXwEd00= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.56.0 h1:yMkBS9yViCc7U7yeLzJPM2XizlfdVvBRSmsQDWu6qc0= go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.56.0/go.mod h1:n8MR6/liuGB5EmTETUBeU5ZgqMOlqKRxUaqPQBOANZ8= +go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.46.1 h1:gbhw/u49SS3gkPWiYweQNJGm/uJN5GkI/FrosxSHT7A= +go.opentelemetry.io/contrib/instrumentation/net/http/httptrace/otelhttptrace v0.46.1/go.mod h1:GnOaBaFQ2we3b9AGWJpsBa7v1S5RlQzlC3O7dRMxZhM= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.56.0 h1:UP6IpuHFkUgOQL9FFQFrZ+5LiwhhYRbi7VZSIx6Nj5s= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.56.0/go.mod h1:qxuZLtbq5QDtdeSHsS7bcf6EH6uO6jUAgk764zd3rhM= go.opentelemetry.io/otel v1.6.3/go.mod h1:7BgNga5fNlF/iZjG06hM3yofffp0ofKCDwSXx1GC4dI= go.opentelemetry.io/otel v1.31.0 h1:NsJcKPIW0D0H3NgzPDHmo0WW6SptzPdqg/L1zsIm2hY= go.opentelemetry.io/otel v1.31.0/go.mod h1:O0C14Yl9FgkjqcCZAsE053C13OaddMYr/hz6clDkEJE= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0 h1:Mne5On7VWdx7omSrSSZvM4Kw7cS7NQkOOmLcgscI51U= -go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.19.0/go.mod h1:IPtUMKL4O3tH5y+iXVyAXqpAwMuzC1IrxVS81rummfE= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0 h1:IeMeyr1aBvBiPVYihXIaeIZba6b8E1bYp7lbdxK8CQg= -go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.19.0/go.mod h1:oVdCUtjq9MK9BlS7TtucsQwUcXcymNiEDjgDD2jMtZU= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.42.0 h1:ZtfnDL+tUrs1F0Pzfwbg2d59Gru9NCH3bgSHBM6LDwU= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric v0.42.0/go.mod h1:hG4Fj/y8TR/tlEDREo8tWstl9fO9gcFkn4xrx0Io8xU= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.42.0 h1:NmnYCiR0qNufkldjVvyQfZTHSdzeHoZ41zggMsdMcLM= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v0.42.0/go.mod h1:UVAO61+umUsHLtYb8KXXRoHtxUkdOPkYidzW3gipRLQ= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.42.0 h1:wNMDy/LVGLj2h3p6zg4d0gypKfWKSWI14E1C4smOgl8= +go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp v0.42.0/go.mod h1:YfbDdXAAkemWJK3H/DshvlrxqFB2rtW4rY6ky/3x/H0= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0 h1:cl5P5/GIfFh4t6xyruOgJP5QiA1pw4fYYdv6nc6CBWw= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.21.0/go.mod h1:zgBdWWAu7oEEMC06MMKc5NLbA/1YDXV1sMpSqEeLQLg= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0 h1:tIqheXEFWAZ7O8A7m+J0aPTmpJN3YQ7qetUAdkkkKpk= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.21.0/go.mod h1:nUeKExfxAQVbiVFn32YXpXZZHZ61Cc3s3Rn1pDBGAb0= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.21.0 h1:digkEZCJWobwBqMwC0cwCq8/wkkRy/OowZg5OArWZrM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.21.0/go.mod h1:/OpE/y70qVkndM0TrxT4KBoN3RsFZP0QaofcfYrj76I= +go.opentelemetry.io/otel/exporters/prometheus v0.49.0 h1:Er5I1g/YhfYv9Affk9nJLfH/+qCCVVg1f2R9AbJfqDQ= +go.opentelemetry.io/otel/exporters/prometheus v0.49.0/go.mod h1:KfQ1wpjf3zsHjzP149P4LyAwWRupc6c7t1ZJ9eXpKQM= go.opentelemetry.io/otel/metric v1.31.0 h1:FSErL0ATQAmYHUIzSezZibnyVlft1ybhy4ozRPcF2fE= go.opentelemetry.io/otel/metric v1.31.0/go.mod h1:C3dEloVbLuYoX41KpmAhOqNriGbA+qqH6PQ5E5mUfnY= go.opentelemetry.io/otel/sdk v1.31.0 h1:xLY3abVHYZ5HSfOg3l2E5LUj2Cwva5Y7yGxnSW9H5Gk= @@ -1743,6 +1914,8 @@ go.uber.org/automaxprocs v1.6.0 h1:O3y2/QNTOdbF+e/dpXNNW7Rx2hZ4sTIPyybbxyNqTUs= go.uber.org/automaxprocs v1.6.0/go.mod h1:ifeIMSnPZuznNm6jmdzmU3/bfk01Fe2fotchwEFJ8r8= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= +go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU= +go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc= gocloud.dev v0.40.0 h1:f8LgP+4WDqOG/RXoUcyLpeIAGOcAbZrZbDQCUee10ng= gocloud.dev v0.40.0/go.mod h1:drz+VyYNBvrMTW0KZiBAYEdl8lbNZx+OQ7oQvdrFmSQ= golang.org/x/arch v0.11.0 h1:KXV8WWKCXm6tRpLirl2szsO5j/oOODwZf4hATmGVNs4= @@ -1851,6 +2024,7 @@ golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLL golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200505041828-1ed23360d12c/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= @@ -2116,6 +2290,7 @@ golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjs golang.org/x/tools v0.0.0-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200505023115-26f46d2f7ef8/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= @@ -2307,6 +2482,7 @@ google.golang.org/genproto v0.0.0-20220414192740-2d67ff6cf2b4/go.mod h1:8w6bsBMX google.golang.org/genproto v0.0.0-20220421151946-72621c1f0bd3/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= google.golang.org/genproto v0.0.0-20220429170224-98d788798c3e/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= google.golang.org/genproto v0.0.0-20220502173005-c8bf987b8c21/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= +google.golang.org/genproto v0.0.0-20220503193339-ba3ae3f07e29/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220505152158-f39f71e6c8f3/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220518221133-4f43b3371335/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= google.golang.org/genproto v0.0.0-20220523171625-347a074981d8/go.mod h1:RAyBrSAP7Fh3Nc84ghnVLDPuV51xc9agzmm4Ph6i0Q4= @@ -2438,16 +2614,23 @@ google.golang.org/protobuf v1.35.1 h1:m3LfL6/Ca+fqnjnlqQXNpFPABW1UD7mjh8KO2mKFyt google.golang.org/protobuf v1.35.1/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= gopkg.in/DataDog/dd-trace-go.v1 v1.69.1 h1:grTElrPaCfxUsrJjyPLHlVPbmlKVzWMxVdcBrGZSzEk= gopkg.in/DataDog/dd-trace-go.v1 v1.69.1/go.mod h1:U9AOeBHNAL95JXcd/SPf4a7O5GNeF/yD13sJtli/yaU= +gopkg.in/avro.v0 v0.0.0-20171217001914-a730b5802183/go.mod h1:FvqrFXt+jCsyQibeRv4xxEJBL5iG2DDW5aeJwzDiq4A= +gopkg.in/cenkalti/backoff.v1 v1.1.0 h1:Arh75ttbsvlpVA7WtVpH4u9h6Zl46xuptxqLxPiSo4Y= +gopkg.in/cenkalti/backoff.v1 v1.1.0/go.mod h1:J6Vskwqd+OMVJl8C33mmtxTBs2gyzfv7UDAkHu8BrjI= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= +gopkg.in/errgo.v1 v1.0.0/go.mod h1:CxwszS/Xz1C49Ucd2i6Zil5UToP1EmyrFhKaMVbg1mk= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= +gopkg.in/httprequest.v1 v1.2.1/go.mod h1:x2Otw96yda5+8+6ZeWwHIJTFkEHWP/qP8pJOzqEtWPM= gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/mgo.v2 v2.0.0-20190816093944-a6b53ec6cb22/go.mod h1:yeKp02qBN3iKW1OzL3MGk2IdtZzaj7SFntXj72NppTA= gopkg.in/neurosnap/sentences.v1 v1.0.6/go.mod h1:YlK+SN+fLQZj+kY3r8DkGDhDr91+S3JmTb5LSxFRQo0= +gopkg.in/retry.v1 v1.0.3/go.mod h1:FJkXmWiMaAo7xB+xhvDF59zhfjDWyzmyAxiT4dB688g= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= gopkg.in/yaml.v1 v1.0.0-20140924161607-9f9df34309c0/go.mod h1:WDnlLJ4WF5VGsH/HVa3CI79GS0ol3YnhVnKP89i0kNg= @@ -2455,11 +2638,13 @@ gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gorm.io/driver/mysql v1.0.1 h1:omJoilUzyrAp0xNoio88lGJCroGdIOen9hq2A/+3ifw= @@ -2489,6 +2674,8 @@ k8s.io/api v0.31.2 h1:3wLBbL5Uom/8Zy98GRPXpJ254nEFpl+hwndmk9RwmL0= k8s.io/api v0.31.2/go.mod h1:bWmGvrGPssSK1ljmLzd3pwCQ9MgoTsRCuK35u6SygUk= k8s.io/apimachinery v0.31.2 h1:i4vUt2hPK56W6mlT7Ry+AO8eEsyxMD1U44NR22CLTYw= k8s.io/apimachinery v0.31.2/go.mod h1:rsPdaZJfTfLsNJSQzNHQvYoTmxhoOEofxtOsF3rtsMo= +k8s.io/apiserver v0.29.2 h1:+Z9S0dSNr+CjnVXQePG8TcBWHr3Q7BmAr7NraHvsMiQ= +k8s.io/apiserver v0.29.2/go.mod h1:B0LieKVoyU7ykQvPFm7XSdIHaCHSzCzQWPFa5bqbeMQ= k8s.io/client-go v0.31.2 h1:Y2F4dxU5d3AQj+ybwSMqQnpZH9F30//1ObxOKlTI9yc= k8s.io/client-go v0.31.2/go.mod h1:NPa74jSVR/+eez2dFsEIHNa+3o09vtNaWwWwb1qSxSs= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= @@ -2563,3 +2750,5 @@ sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E= sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY= software.sslmate.com/src/go-pkcs12 v0.5.0 h1:EC6R394xgENTpZ4RltKydeDUjtlM5drOYIG9c6TVj2M= software.sslmate.com/src/go-pkcs12 v0.5.0/go.mod h1:Qiz0EyvDRJjjxGyUQa2cCNZn/wMyzrRJ/qcDXOQazLI= +tags.cncf.io/container-device-interface v0.6.2 h1:dThE6dtp/93ZDGhqaED2Pu374SOeUkBfuvkLuiTdwzg= +tags.cncf.io/container-device-interface v0.6.2/go.mod h1:Shusyhjs1A5Na/kqPVLL0KqnHQHuunol9LFeUNkuGVE= diff --git a/_integration-tests/tests/confluent-kafka-go.v1/gen_test.go b/_integration-tests/tests/confluent-kafka-go.v1/gen_test.go new file mode 100644 index 000000000..5056fd082 --- /dev/null +++ b/_integration-tests/tests/confluent-kafka-go.v1/gen_test.go @@ -0,0 +1,19 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2023-present Datadog, Inc. +// +// Code generated by 'go generate'; DO NOT EDIT. + +//go:build integration + +package kafka + +import ( + "datadoghq.dev/orchestrion/_integration-tests/utils" + "testing" +) + +func TestIntegration_kafka(t *testing.T) { + utils.RunTest(t, new(TestCase)) +} diff --git a/_integration-tests/tests/confluent-kafka-go.v1/kafka.go b/_integration-tests/tests/confluent-kafka-go.v1/kafka.go new file mode 100644 index 000000000..abe12ac78 --- /dev/null +++ b/_integration-tests/tests/confluent-kafka-go.v1/kafka.go @@ -0,0 +1,146 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2023-present Datadog, Inc. + +//go:build integration && !windows + +package kafka + +import ( + "context" + "strings" + "testing" + "time" + + "github.com/confluentinc/confluent-kafka-go/kafka" + "github.com/stretchr/testify/require" + kafkatest "github.com/testcontainers/testcontainers-go/modules/kafka" + + "datadoghq.dev/orchestrion/_integration-tests/utils" + "datadoghq.dev/orchestrion/_integration-tests/validator/trace" +) + +var ( + topic = "gotest" + consumerGroup = "gotest" + partition = int32(0) +) + +type TestCase struct { + container *kafkatest.KafkaContainer + addr []string +} + +func (tc *TestCase) Setup(t *testing.T) { + utils.SkipIfProviderIsNotHealthy(t) + container, addr := utils.StartKafkaTestContainer(t) + tc.container = container + tc.addr = []string{addr} +} + +func (tc *TestCase) Run(t *testing.T) { + tc.produceMessage(t) + tc.consumeMessage(t) +} + +func (tc *TestCase) kafkaBootstrapServers() string { + return strings.Join(tc.addr, ",") +} + +func (tc *TestCase) produceMessage(t *testing.T) { + t.Helper() + + cfg := &kafka.ConfigMap{ + "bootstrap.servers": tc.kafkaBootstrapServers(), + "go.delivery.reports": true, + } + delivery := make(chan kafka.Event, 1) + + producer, err := kafka.NewProducer(cfg) + require.NoError(t, err, "failed to create producer") + defer func() { + <-delivery + producer.Close() + }() + + err = producer.Produce(&kafka.Message{ + TopicPartition: kafka.TopicPartition{ + Topic: &topic, + Partition: partition, + }, + Key: []byte("key2"), + Value: []byte("value2"), + }, delivery) + require.NoError(t, err, "failed to send message") +} + +func (tc *TestCase) consumeMessage(t *testing.T) { + t.Helper() + + cfg := &kafka.ConfigMap{ + "group.id": consumerGroup, + "bootstrap.servers": tc.kafkaBootstrapServers(), + "fetch.wait.max.ms": 500, + "socket.timeout.ms": 1500, + "session.timeout.ms": 1500, + "enable.auto.offset.store": false, + } + c, err := kafka.NewConsumer(cfg) + require.NoError(t, err, "failed to create consumer") + defer c.Close() + + err = c.Assign([]kafka.TopicPartition{ + {Topic: &topic, Partition: 0}, + }) + require.NoError(t, err) + + m, err := c.ReadMessage(3000 * time.Millisecond) + require.NoError(t, err) + + _, err = c.CommitMessage(m) + require.NoError(t, err) + + require.Equal(t, "key2", string(m.Key)) +} + +func (tc *TestCase) Teardown(t *testing.T) { + ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second) + defer cancel() + + require.NoError(t, tc.container.Terminate(ctx)) +} + +func (*TestCase) ExpectedTraces() trace.Traces { + return trace.Traces{ + { + Tags: map[string]any{ + "name": "kafka.produce", + "type": "queue", + "service": "kafka", + "resource": "Produce Topic gotest", + }, + Meta: map[string]string{ + "span.kind": "producer", + "component": "confluentinc/confluent-kafka-go/kafka", + "messaging.system": "kafka", + }, + Children: trace.Traces{ + { + Tags: map[string]any{ + "name": "kafka.consume", + "type": "queue", + "service": "kafka", + "resource": "Consume Topic gotest", + }, + Meta: map[string]string{ + "span.kind": "consumer", + "component": "confluentinc/confluent-kafka-go/kafka", + "messaging.system": "kafka", + "messaging.kafka.bootstrap.servers": "localhost", + }, + }, + }, + }, + } +} diff --git a/_integration-tests/tests/confluent-kafka-go.v1/skip_windows.go b/_integration-tests/tests/confluent-kafka-go.v1/skip_windows.go new file mode 100644 index 000000000..9e0e8872b --- /dev/null +++ b/_integration-tests/tests/confluent-kafka-go.v1/skip_windows.go @@ -0,0 +1,26 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2023-present Datadog, Inc. + +//go:build integration && windows + +package kafka + +import ( + "testing" + + "datadoghq.dev/orchestrion/_integration-tests/validator/trace" +) + +type skip struct{} + +func (skip) Setup(t *testing.T) { + t.Skip("skipping test since confluent-kafka-go requires extra setup to build on Windows: https://github.com/confluentinc/confluent-kafka-go/issues/889") +} + +func (skip) Run(t *testing.T) {} +func (skip) Teardown(t *testing.T) {} +func (skip) ExpectedTraces() trace.Traces { return nil } + +type TestCase = skip diff --git a/_integration-tests/tests/confluent-kafka-go.v2/gen_test.go b/_integration-tests/tests/confluent-kafka-go.v2/gen_test.go new file mode 100644 index 000000000..5056fd082 --- /dev/null +++ b/_integration-tests/tests/confluent-kafka-go.v2/gen_test.go @@ -0,0 +1,19 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2023-present Datadog, Inc. +// +// Code generated by 'go generate'; DO NOT EDIT. + +//go:build integration + +package kafka + +import ( + "datadoghq.dev/orchestrion/_integration-tests/utils" + "testing" +) + +func TestIntegration_kafka(t *testing.T) { + utils.RunTest(t, new(TestCase)) +} diff --git a/_integration-tests/tests/confluent-kafka-go.v2/kafka.go b/_integration-tests/tests/confluent-kafka-go.v2/kafka.go new file mode 100644 index 000000000..796c28739 --- /dev/null +++ b/_integration-tests/tests/confluent-kafka-go.v2/kafka.go @@ -0,0 +1,146 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2023-present Datadog, Inc. + +//go:build integration && !windows + +package kafka + +import ( + "context" + "strings" + "testing" + "time" + + "github.com/confluentinc/confluent-kafka-go/v2/kafka" + "github.com/stretchr/testify/require" + kafkatest "github.com/testcontainers/testcontainers-go/modules/kafka" + + "datadoghq.dev/orchestrion/_integration-tests/utils" + "datadoghq.dev/orchestrion/_integration-tests/validator/trace" +) + +var ( + topic = "gotest" + consumerGroup = "gotest" + partition = int32(0) +) + +type TestCase struct { + container *kafkatest.KafkaContainer + addr []string +} + +func (tc *TestCase) Setup(t *testing.T) { + utils.SkipIfProviderIsNotHealthy(t) + container, addr := utils.StartKafkaTestContainer(t) + tc.container = container + tc.addr = []string{addr} +} + +func (tc *TestCase) Run(t *testing.T) { + tc.produceMessage(t) + tc.consumeMessage(t) +} + +func (tc *TestCase) kafkaBootstrapServers() string { + return strings.Join(tc.addr, ",") +} + +func (tc *TestCase) produceMessage(t *testing.T) { + t.Helper() + + cfg := &kafka.ConfigMap{ + "bootstrap.servers": tc.kafkaBootstrapServers(), + "go.delivery.reports": true, + } + delivery := make(chan kafka.Event, 1) + + producer, err := kafka.NewProducer(cfg) + require.NoError(t, err, "failed to create producer") + defer func() { + <-delivery + producer.Close() + }() + + err = producer.Produce(&kafka.Message{ + TopicPartition: kafka.TopicPartition{ + Topic: &topic, + Partition: partition, + }, + Key: []byte("key2"), + Value: []byte("value2"), + }, delivery) + require.NoError(t, err, "failed to send message") +} + +func (tc *TestCase) consumeMessage(t *testing.T) { + t.Helper() + + cfg := &kafka.ConfigMap{ + "group.id": consumerGroup, + "bootstrap.servers": tc.kafkaBootstrapServers(), + "fetch.wait.max.ms": 500, + "socket.timeout.ms": 1500, + "session.timeout.ms": 1500, + "enable.auto.offset.store": false, + } + c, err := kafka.NewConsumer(cfg) + require.NoError(t, err, "failed to create consumer") + defer c.Close() + + err = c.Assign([]kafka.TopicPartition{ + {Topic: &topic, Partition: 0}, + }) + require.NoError(t, err) + + m, err := c.ReadMessage(3000 * time.Millisecond) + require.NoError(t, err) + + _, err = c.CommitMessage(m) + require.NoError(t, err) + + require.Equal(t, "key2", string(m.Key)) +} + +func (tc *TestCase) Teardown(t *testing.T) { + ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second) + defer cancel() + + require.NoError(t, tc.container.Terminate(ctx)) +} + +func (*TestCase) ExpectedTraces() trace.Traces { + return trace.Traces{ + { + Tags: map[string]any{ + "name": "kafka.produce", + "type": "queue", + "service": "kafka", + "resource": "Produce Topic gotest", + }, + Meta: map[string]string{ + "span.kind": "producer", + "component": "confluentinc/confluent-kafka-go/kafka.v2", + "messaging.system": "kafka", + }, + Children: trace.Traces{ + { + Tags: map[string]any{ + "name": "kafka.consume", + "type": "queue", + "service": "kafka", + "resource": "Consume Topic gotest", + }, + Meta: map[string]string{ + "span.kind": "consumer", + "component": "confluentinc/confluent-kafka-go/kafka.v2", + "messaging.system": "kafka", + "messaging.kafka.bootstrap.servers": "localhost", + }, + }, + }, + }, + } +} diff --git a/_integration-tests/tests/confluent-kafka-go.v2/skip_windows.go b/_integration-tests/tests/confluent-kafka-go.v2/skip_windows.go new file mode 100644 index 000000000..9e0e8872b --- /dev/null +++ b/_integration-tests/tests/confluent-kafka-go.v2/skip_windows.go @@ -0,0 +1,26 @@ +// Unless explicitly stated otherwise all files in this repository are licensed +// under the Apache License Version 2.0. +// This product includes software developed at Datadog (https://www.datadoghq.com/). +// Copyright 2023-present Datadog, Inc. + +//go:build integration && windows + +package kafka + +import ( + "testing" + + "datadoghq.dev/orchestrion/_integration-tests/validator/trace" +) + +type skip struct{} + +func (skip) Setup(t *testing.T) { + t.Skip("skipping test since confluent-kafka-go requires extra setup to build on Windows: https://github.com/confluentinc/confluent-kafka-go/issues/889") +} + +func (skip) Run(t *testing.T) {} +func (skip) Teardown(t *testing.T) {} +func (skip) ExpectedTraces() trace.Traces { return nil } + +type TestCase = skip diff --git a/_integration-tests/tests/go-elasticsearch/skip_windows.go b/_integration-tests/tests/go-elasticsearch/skip_windows.go index 9403a5027..f5b069d7f 100644 --- a/_integration-tests/tests/go-elasticsearch/skip_windows.go +++ b/_integration-tests/tests/go-elasticsearch/skip_windows.go @@ -15,13 +15,13 @@ import ( type skip struct{} -func (s skip) Setup(t *testing.T) { +func (skip) Setup(t *testing.T) { t.Skip("skipping test since go-elasticsearch v7 and v8 does not build on Windows with Orchestrion: https://github.com/golang/go/issues/70046") } -func (s skip) Run(t *testing.T) {} -func (s skip) Teardown(t *testing.T) {} -func (s skip) ExpectedTraces() trace.Traces { return nil } +func (skip) Run(t *testing.T) {} +func (skip) Teardown(t *testing.T) {} +func (skip) ExpectedTraces() trace.Traces { return nil } type TestCaseV6 = skip type TestCaseV7 = skip diff --git a/internal/injector/aspect/advice/code/template.go b/internal/injector/aspect/advice/code/template.go index 85dd4a315..3254cc7b3 100644 --- a/internal/injector/aspect/advice/code/template.go +++ b/internal/injector/aspect/advice/code/template.go @@ -195,7 +195,7 @@ func (t *Template) processImports(ctx context.AdviceContext, node dst.Decl) dst. func (t *Template) AsCode() jen.Code { var lang *jen.Statement if langStr := t.Lang.String(); langStr != "" { - lang = jen.Qual("github.com/DataDog/orchestrion/internal/injector/aspect/context", "MustParseGoLang").Call(jen.Lit(langStr)) + lang = jen.Qual("github.com/DataDog/orchestrion/internal/injector/aspect/context", "MustParseGoLangVersion").Call(jen.Lit(langStr)) } else { lang = jen.Qual("github.com/DataDog/orchestrion/internal/injector/aspect/context", "GoLangVersion").Block() } diff --git a/internal/injector/aspect/join/join.go b/internal/injector/aspect/join/join.go index 4adea7218..c5791e96e 100644 --- a/internal/injector/aspect/join/join.go +++ b/internal/injector/aspect/join/join.go @@ -45,6 +45,7 @@ type TypeName struct { pointer bool } +// FIXME: this does not support all the type syntax, like: "chan Event" var typeNameRe = regexp.MustCompile(`\A(\*)?\s*(?:([A-Za-z_][A-Za-z0-9_.-]+(?:/[A-Za-z_.-][A-Za-z0-9_.-]+)*)\.)?([A-Za-z_][A-Za-z0-9_]*)\z`) func NewTypeName(n string) (tn TypeName, err error) { diff --git a/internal/injector/builtin/generated.go b/internal/injector/builtin/generated.go index a941e91bd..e8f887d65 100644 --- a/internal/injector/builtin/generated.go +++ b/internal/injector/builtin/generated.go @@ -604,6 +604,300 @@ var Aspects = [...]aspect.Aspect{ )), }, }, + // From datastreams/confluentinc_kafka.yml + { + JoinPoint: join.StructDefinition(join.MustTypeName("github.com/confluentinc/confluent-kafka-go/kafka.Consumer")), + Advice: []advice.Advice{ + advice.InjectDeclarations(code.MustTemplate( + "const __dd_ckgoVersion = tracing.CKGoVersion1", + map[string]string{ + "tracing": "gopkg.in/DataDog/dd-trace-go.v1/contrib/confluentinc/confluent-kafka-go/internal/tracing", + }, + context.GoLangVersion{}, + ), []string{}), + }, + }, + { + JoinPoint: join.StructDefinition(join.MustTypeName("github.com/confluentinc/confluent-kafka-go/v2/kafka.Consumer")), + Advice: []advice.Advice{ + advice.InjectDeclarations(code.MustTemplate( + "const __dd_ckgoVersion = tracing.CKGoVersion2", + map[string]string{ + "tracing": "gopkg.in/DataDog/dd-trace-go.v1/contrib/confluentinc/confluent-kafka-go/internal/tracing", + }, + context.GoLangVersion{}, + ), []string{}), + }, + }, + { + JoinPoint: join.OneOf( + join.StructDefinition(join.MustTypeName("github.com/confluentinc/confluent-kafka-go/kafka.Consumer")), + join.StructDefinition(join.MustTypeName("github.com/confluentinc/confluent-kafka-go/v2/kafka.Consumer")), + ), + Advice: []advice.Advice{ + advice.InjectDeclarations(code.MustTemplate( + "type __dd_wMessage struct {\n *Message\n}\n \nfunc __dd_wrapMessage(msg *Message) tracing.Message {\n if msg == nil {\n return nil\n }\n return &__dd_wMessage{msg}\n}\n \nfunc (w *__dd_wMessage) Unwrap() any {\n return w.Message\n}\n \nfunc (w *__dd_wMessage) GetValue() []byte {\n return w.Message.Value\n}\n \nfunc (w *__dd_wMessage) GetKey() []byte {\n return w.Message.Key\n}\n \nfunc (w *__dd_wMessage) GetHeaders() []tracing.Header {\n hs := make([]tracing.Header, 0, len(w.Headers))\n for _, h := range w.Headers {\n hs = append(hs, __dd_wrapHeader(h))\n }\n return hs\n}\n \nfunc (w *__dd_wMessage) SetHeaders(headers []tracing.Header) {\n hs := make([]Header, 0, len(headers))\n for _, h := range headers {\n hs = append(hs, Header{\n Key: h.GetKey(),\n Value: h.GetValue(),\n })\n }\n w.Message.Headers = hs\n}\n \nfunc (w *__dd_wMessage) GetTopicPartition() tracing.TopicPartition {\n return __dd_wrapTopicPartition(w.Message.TopicPartition)\n}\n \ntype __dd_wHeader struct {\n Header\n}\n \nfunc __dd_wrapHeader(h Header) tracing.Header {\n return &__dd_wHeader{h}\n}\n \nfunc (w __dd_wHeader) GetKey() string {\n return w.Header.Key\n}\n \nfunc (w __dd_wHeader) GetValue() []byte {\n return w.Header.Value\n}\n \ntype __dd_wTopicPartition struct {\n TopicPartition\n}\n \nfunc __dd_wrapTopicPartition(tp TopicPartition) tracing.TopicPartition {\n return __dd_wTopicPartition{tp}\n}\n \nfunc __dd_wrapTopicPartitions(tps []TopicPartition) []tracing.TopicPartition {\n wtps := make([]tracing.TopicPartition, 0, len(tps))\n for _, tp := range tps {\n wtps = append(wtps, __dd_wTopicPartition{tp})\n }\n return wtps\n}\n \nfunc (w __dd_wTopicPartition) GetTopic() string {\n if w.Topic == nil {\n return \"\"\n }\n return *w.Topic\n}\n \nfunc (w __dd_wTopicPartition) GetPartition() int32 {\n return w.Partition\n}\n \nfunc (w __dd_wTopicPartition) GetOffset() int64 {\n return int64(w.Offset)\n}\n \nfunc (w __dd_wTopicPartition) GetError() error {\n return w.Error\n}\n \ntype __dd_wEvent struct {\n Event\n}\n \nfunc __dd_wrapEvent(event Event) tracing.Event {\n return __dd_wEvent{event}\n}\n \nfunc (w __dd_wEvent) KafkaMessage() (tracing.Message, bool) {\n if m, ok := w.Event.(*Message); ok {\n return __dd_wrapMessage(m), true\n }\n return nil, false\n}\n \nfunc (w __dd_wEvent) KafkaOffsetsCommitted() (tracing.OffsetsCommitted, bool) {\n if oc, ok := w.Event.(OffsetsCommitted); ok {\n return __dd_wrapOffsetsCommitted(oc), true\n }\n return nil, false\n}\n \ntype __dd_wOffsetsCommitted struct {\n OffsetsCommitted\n}\n \nfunc __dd_wrapOffsetsCommitted(oc OffsetsCommitted) tracing.OffsetsCommitted {\n return __dd_wOffsetsCommitted{oc}\n}\n \nfunc (w __dd_wOffsetsCommitted) GetError() error {\n return w.Error\n}\n \nfunc (w __dd_wOffsetsCommitted) GetOffsets() []tracing.TopicPartition {\n ttps := make([]tracing.TopicPartition, 0, len(w.Offsets))\n for _, tp := range w.Offsets {\n ttps = append(ttps, __dd_wrapTopicPartition(tp))\n }\n return ttps\n}\n\ntype __dd_wConfigMap struct {\n cfg *ConfigMap\n}\n \nfunc __dd_wrapConfigMap(cm *ConfigMap) tracing.ConfigMap {\n return &__dd_wConfigMap{cm}\n}\n \nfunc (w *__dd_wConfigMap) Get(key string, defVal any) (any, error) {\n return w.cfg.Get(key, defVal)\n}\n\nfunc init() {\n telemetry.LoadIntegration(tracing.ComponentName(__dd_ckgoVersion))\n tracer.MarkIntegrationImported(tracing.IntegrationName(__dd_ckgoVersion))\n}\n\nfunc __dd_newKafkaTracer(opts ...tracing.Option) *tracing.KafkaTracer {\n v, _ := LibraryVersion()\n return tracing.NewKafkaTracer(__dd_ckgoVersion, v, opts...)\n}\n\nfunc __dd_initConsumer(c *Consumer) {\n if c.__dd_tracer != nil {\n return\n }\n var opts []tracing.Option\n if c.__dd_confmap != nil {\n opts = append(opts, tracing.WithConfig(__dd_wrapConfigMap(c.__dd_confmap)))\n }\n c.__dd_tracer = __dd_newKafkaTracer(opts...)\n // TODO: accessing c.events here might break if the library renames this variable...\n c.__dd_events = tracing.WrapConsumeEventsChannel(c.__dd_tracer, c.events, c, __dd_wrapEvent)\n}\n\nfunc __dd_initProducer(p *Producer) {\n if p.__dd_tracer != nil {\n return\n }\n p.__dd_tracer = __dd_newKafkaTracer()\n // TODO: accessing p.events and p.produceChannel here might break if the library renames this variable...\n p.__dd_events = p.events\n p.__dd_produceChannel = tracing.WrapProduceChannel(p.__dd_tracer, p.produceChannel, __dd_wrapMessage)\n if p.__dd_tracer.DSMEnabled() {\n p.__dd_events = tracing.WrapProduceEventsChannel(p.__dd_tracer, p.events, __dd_wrapEvent)\n }\n}\n\ntype __dd_eventChan = chan Event\ntype __dd_messageChan = chan *Message\ntype __dd_kafkaTracer = tracing.KafkaTracer", + map[string]string{ + "telemetry": "gopkg.in/DataDog/dd-trace-go.v1/internal/telemetry", + "tracer": "gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer", + "tracing": "gopkg.in/DataDog/dd-trace-go.v1/contrib/confluentinc/confluent-kafka-go/internal/tracing", + }, + context.MustParseGoLangVersion("go1.18"), + ), []string{}), + }, + }, + { + JoinPoint: join.OneOf( + join.StructDefinition(join.MustTypeName("github.com/confluentinc/confluent-kafka-go/kafka.Consumer")), + join.StructDefinition(join.MustTypeName("github.com/confluentinc/confluent-kafka-go/v2/kafka.Consumer")), + ), + Advice: []advice.Advice{ + advice.AddStructField("__dd_tracer", join.MustTypeName("*__dd_kafkaTracer")), + advice.AddStructField("__dd_events", join.MustTypeName("__dd_eventChan")), + advice.AddStructField("__dd_confmap", join.MustTypeName("*ConfigMap")), + }, + }, + { + JoinPoint: join.OneOf( + join.AllOf( + join.ImportPath("github.com/confluentinc/confluent-kafka-go/kafka"), + join.FunctionBody(join.Function( + join.Name("NewConsumer"), + )), + ), + join.AllOf( + join.ImportPath("github.com/confluentinc/confluent-kafka-go/v2/kafka"), + join.FunctionBody(join.Function( + join.Name("NewConsumer"), + )), + ), + ), + Advice: []advice.Advice{ + advice.PrependStmts(code.MustTemplate( + "{{- $conf := .Function.Argument 0 -}}\n{{- $c := .Function.Result 0 -}}\ndefer func() {\n if {{ $c }} == nil {\n return\n }\n {{ $c }}.__dd_confmap = {{ $conf }}\n __dd_initConsumer({{ $c }})\n}()", + map[string]string{ + "tracing": "gopkg.in/DataDog/dd-trace-go.v1/contrib/confluentinc/confluent-kafka-go/internal/tracing", + }, + context.GoLangVersion{}, + )), + }, + }, + { + JoinPoint: join.OneOf( + join.FunctionBody(join.Function( + join.Receiver(join.MustTypeName("*github.com/confluentinc/confluent-kafka-go/kafka.Consumer")), + join.Name("Close"), + )), + join.FunctionBody(join.Function( + join.Receiver(join.MustTypeName("*github.com/confluentinc/confluent-kafka-go/v2/kafka.Consumer")), + join.Name("Close"), + )), + ), + Advice: []advice.Advice{ + advice.PrependStmts(code.MustTemplate( + "{{- $c := .Function.Receiver -}}\n__dd_initConsumer({{ $c }})\ndefer func() {\n if {{ $c }}.__dd_events == nil && {{ $c }}.__dd_tracer.PrevSpan != nil {\n {{ $c }}.__dd_tracer.PrevSpan.Finish()\n {{ $c }}.__dd_tracer.PrevSpan = nil\n }\n}()", + map[string]string{ + "tracing": "gopkg.in/DataDog/dd-trace-go.v1/contrib/confluentinc/confluent-kafka-go/internal/tracing", + }, + context.GoLangVersion{}, + )), + }, + }, + { + JoinPoint: join.OneOf( + join.FunctionBody(join.Function( + join.Receiver(join.MustTypeName("*github.com/confluentinc/confluent-kafka-go/kafka.Consumer")), + join.Name("Events"), + )), + join.FunctionBody(join.Function( + join.Receiver(join.MustTypeName("*github.com/confluentinc/confluent-kafka-go/v2/kafka.Consumer")), + join.Name("Events"), + )), + ), + Advice: []advice.Advice{ + advice.PrependStmts(code.MustTemplate( + "{{- $c := .Function.Receiver -}}\n{{- $events := .Function.Result 0 -}}\n__dd_initConsumer({{ $c }})\ndefer func() {\n {{ $events }} = {{ $c }}.__dd_events\n}()", + map[string]string{ + "tracing": "gopkg.in/DataDog/dd-trace-go.v1/contrib/confluentinc/confluent-kafka-go/internal/tracing", + }, + context.GoLangVersion{}, + )), + }, + }, + { + JoinPoint: join.OneOf( + join.FunctionBody(join.Function( + join.Receiver(join.MustTypeName("*github.com/confluentinc/confluent-kafka-go/kafka.Consumer")), + join.Name("Poll"), + )), + join.FunctionBody(join.Function( + join.Receiver(join.MustTypeName("*github.com/confluentinc/confluent-kafka-go/v2/kafka.Consumer")), + join.Name("Poll"), + )), + ), + Advice: []advice.Advice{ + advice.PrependStmts(code.MustTemplate( + "{{- $c := .Function.Receiver -}}\n{{- $event := .Function.Result 0 -}}\n__dd_initConsumer({{ $c }})\nif {{ $c }}.__dd_tracer.PrevSpan != nil {\n {{ $c }}.__dd_tracer.PrevSpan.Finish()\n {{ $c }}.__dd_tracer.PrevSpan = nil\n}\ndefer func() {\n if msg, ok := {{ $event }}.(*Message); ok {\n tMsg := __dd_wrapMessage(msg)\n {{ $c }}.__dd_tracer.SetConsumeCheckpoint(tMsg)\n {{ $c }}.__dd_tracer.PrevSpan = {{ $c }}.__dd_tracer.StartConsumeSpan(tMsg)\n } else if offset, ok := {{ $event }}.(OffsetsCommitted); ok {\n tOffsets := __dd_wrapTopicPartitions(offset.Offsets)\n {{ $c }}.__dd_tracer.TrackCommitOffsets(tOffsets, offset.Error)\n {{ $c }}.__dd_tracer.TrackHighWatermarkOffset(tOffsets, {{ $c }})\n }\n}()", + map[string]string{ + "tracing": "gopkg.in/DataDog/dd-trace-go.v1/contrib/confluentinc/confluent-kafka-go/internal/tracing", + }, + context.GoLangVersion{}, + )), + }, + }, + { + JoinPoint: join.OneOf( + join.FunctionBody(join.Function( + join.Receiver(join.MustTypeName("*github.com/confluentinc/confluent-kafka-go/kafka.Consumer")), + join.Name("Commit"), + )), + join.FunctionBody(join.Function( + join.Receiver(join.MustTypeName("*github.com/confluentinc/confluent-kafka-go/v2/kafka.Consumer")), + join.Name("Commit"), + )), + ), + Advice: []advice.Advice{ + advice.PrependStmts(code.MustTemplate( + "{{- $c := .Function.Receiver -}}\n{{- $tps := .Function.Result 0 -}}\n{{- $err := .Function.Result 1 -}}\n__dd_initConsumer({{ $c }})\ndefer func() {\n tOffsets := __dd_wrapTopicPartitions({{ $tps }})\n {{ $c }}.__dd_tracer.TrackCommitOffsets(tOffsets, {{ $err }})\n {{ $c }}.__dd_tracer.TrackHighWatermarkOffset(tOffsets, {{ $c }})\n}()", + map[string]string{ + "tracing": "gopkg.in/DataDog/dd-trace-go.v1/contrib/confluentinc/confluent-kafka-go/internal/tracing", + }, + context.GoLangVersion{}, + )), + }, + }, + { + JoinPoint: join.OneOf( + join.FunctionBody(join.Function( + join.Receiver(join.MustTypeName("*github.com/confluentinc/confluent-kafka-go/kafka.Consumer")), + join.Name("CommitMessage"), + )), + join.FunctionBody(join.Function( + join.Receiver(join.MustTypeName("*github.com/confluentinc/confluent-kafka-go/v2/kafka.Consumer")), + join.Name("CommitMessage"), + )), + ), + Advice: []advice.Advice{ + advice.PrependStmts(code.MustTemplate( + "{{- $c := .Function.Receiver -}}\n{{- $tps := .Function.Result 0 -}}\n{{- $err := .Function.Result 1 -}}\n__dd_initConsumer({{ $c }})\ndefer func() {\n tOffsets := __dd_wrapTopicPartitions({{ $tps }})\n {{ $c }}.__dd_tracer.TrackCommitOffsets(tOffsets, {{ $err }})\n {{ $c }}.__dd_tracer.TrackHighWatermarkOffset(tOffsets, {{ $c }})\n}()", + map[string]string{ + "tracing": "gopkg.in/DataDog/dd-trace-go.v1/contrib/confluentinc/confluent-kafka-go/internal/tracing", + }, + context.GoLangVersion{}, + )), + }, + }, + { + JoinPoint: join.OneOf( + join.FunctionBody(join.Function( + join.Receiver(join.MustTypeName("*github.com/confluentinc/confluent-kafka-go/kafka.Consumer")), + join.Name("CommitOffsets"), + )), + join.FunctionBody(join.Function( + join.Receiver(join.MustTypeName("*github.com/confluentinc/confluent-kafka-go/v2/kafka.Consumer")), + join.Name("CommitOffsets"), + )), + ), + Advice: []advice.Advice{ + advice.PrependStmts(code.MustTemplate( + "{{- $c := .Function.Receiver -}}\n{{- $tps := .Function.Result 0 -}}\n{{- $err := .Function.Result 1 -}}\n__dd_initConsumer({{ $c }})\ndefer func() {\n tOffsets := __dd_wrapTopicPartitions({{ $tps }})\n {{ $c }}.__dd_tracer.TrackCommitOffsets(tOffsets, {{ $err }})\n {{ $c }}.__dd_tracer.TrackHighWatermarkOffset(tOffsets, {{ $c }})\n}()", + map[string]string{ + "tracing": "gopkg.in/DataDog/dd-trace-go.v1/contrib/confluentinc/confluent-kafka-go/internal/tracing", + }, + context.GoLangVersion{}, + )), + }, + }, + { + JoinPoint: join.OneOf( + join.StructDefinition(join.MustTypeName("github.com/confluentinc/confluent-kafka-go/kafka.Producer")), + join.StructDefinition(join.MustTypeName("github.com/confluentinc/confluent-kafka-go/v2/kafka.Producer")), + ), + Advice: []advice.Advice{ + advice.AddStructField("__dd_tracer", join.MustTypeName("*__dd_kafkaTracer")), + advice.AddStructField("__dd_events", join.MustTypeName("__dd_eventChan")), + advice.AddStructField("__dd_produceChannel", join.MustTypeName("__dd_messageChan")), + }, + }, + { + JoinPoint: join.OneOf( + join.FunctionBody(join.Function( + join.Receiver(join.MustTypeName("*github.com/confluentinc/confluent-kafka-go/kafka.Producer")), + join.Name("Events"), + )), + join.FunctionBody(join.Function( + join.Receiver(join.MustTypeName("*github.com/confluentinc/confluent-kafka-go/v2/kafka.Producer")), + join.Name("Events"), + )), + ), + Advice: []advice.Advice{ + advice.PrependStmts(code.MustTemplate( + "{{- $p := .Function.Receiver -}}\n{{- $events := .Function.Result 0 -}}\n__dd_initProducer({{ $p }})\ndefer func() {\n {{ $events }} = {{ $p }}.__dd_events\n}()", + map[string]string{}, + context.GoLangVersion{}, + )), + }, + }, + { + JoinPoint: join.OneOf( + join.FunctionBody(join.Function( + join.Receiver(join.MustTypeName("*github.com/confluentinc/confluent-kafka-go/kafka.Producer")), + join.Name("ProduceChannel"), + )), + join.FunctionBody(join.Function( + join.Receiver(join.MustTypeName("*github.com/confluentinc/confluent-kafka-go/v2/kafka.Producer")), + join.Name("ProduceChannel"), + )), + ), + Advice: []advice.Advice{ + advice.PrependStmts(code.MustTemplate( + "{{- $p := .Function.Receiver -}}\n{{- $produceChannel := .Function.Result 0 -}}\n__dd_initProducer({{ $p }})\ndefer func() {\n {{ $produceChannel }} = {{ $p }}.__dd_produceChannel\n}()", + map[string]string{}, + context.GoLangVersion{}, + )), + }, + }, + { + JoinPoint: join.OneOf( + join.FunctionBody(join.Function( + join.Receiver(join.MustTypeName("*github.com/confluentinc/confluent-kafka-go/kafka.Producer")), + join.Name("Close"), + )), + join.FunctionBody(join.Function( + join.Receiver(join.MustTypeName("*github.com/confluentinc/confluent-kafka-go/v2/kafka.Producer")), + join.Name("Close"), + )), + ), + Advice: []advice.Advice{ + advice.PrependStmts(code.MustTemplate( + "{{- $p := .Function.Receiver -}}\n__dd_initProducer({{ $p }})\nclose({{ $p }}.__dd_produceChannel)", + map[string]string{}, + context.GoLangVersion{}, + )), + }, + }, + { + JoinPoint: join.OneOf( + join.FunctionBody(join.Function( + join.Receiver(join.MustTypeName("*github.com/confluentinc/confluent-kafka-go/kafka.Producer")), + join.Name("Produce"), + )), + join.FunctionBody(join.Function( + join.Receiver(join.MustTypeName("*github.com/confluentinc/confluent-kafka-go/v2/kafka.Producer")), + join.Name("Produce"), + )), + ), + Advice: []advice.Advice{ + advice.PrependStmts(code.MustTemplate( + "{{- $p := .Function.Receiver -}}\n{{- $msg := .Function.Argument 0 -}}\n{{- $deliveryChan := .Function.Argument 1 -}}\n{{- $err := .Function.Result 0 -}}\n__dd_initProducer({{ $p }})\ntMsg := __dd_wrapMessage({{ $msg }})\nspan := p.__dd_tracer.StartProduceSpan(tMsg)\n\nvar errChan chan error\n{{ $deliveryChan }}, errChan = tracing.WrapDeliveryChannel({{ $p }}.__dd_tracer, {{ $deliveryChan }}, span, __dd_wrapEvent)\n\n{{ $p }}.__dd_tracer.SetProduceCheckpoint(tMsg)\ndefer func() {\n if {{ $err }} != nil {\n if errChan != nil {\n errChan <- {{ $err }}\n } else {\n span.Finish(tracer.WithError({{ $err }}))\n }\n }\n}()", + map[string]string{ + "tracer": "gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer", + "tracing": "gopkg.in/DataDog/dd-trace-go.v1/contrib/confluentinc/confluent-kafka-go/internal/tracing", + }, + context.GoLangVersion{}, + )), + }, + }, // From datastreams/gcp_pubsub.yml { JoinPoint: join.FunctionBody(join.Function( @@ -1439,6 +1733,7 @@ var InjectedPaths = [...]string{ "gopkg.in/DataDog/dd-trace-go.v1/contrib/aws/aws-sdk-go-v2/aws", "gopkg.in/DataDog/dd-trace-go.v1/contrib/aws/aws-sdk-go/aws", "gopkg.in/DataDog/dd-trace-go.v1/contrib/cloud.google.com/go/pubsub.v1/internal/tracing", + "gopkg.in/DataDog/dd-trace-go.v1/contrib/confluentinc/confluent-kafka-go/internal/tracing", "gopkg.in/DataDog/dd-trace-go.v1/contrib/database/sql", "gopkg.in/DataDog/dd-trace-go.v1/contrib/elastic/go-elasticsearch.v6", "gopkg.in/DataDog/dd-trace-go.v1/contrib/gin-gonic/gin", @@ -1492,4 +1787,4 @@ var InjectedPaths = [...]string{ } // Checksum is a checksum of the built-in configuration which can be used to invalidate caches. -const Checksum = "sha512:PWroVJ3UroS2uea+T7JL0bxViL8t/b02MjCMX9wOSbZa4+Yl42h2KUb+GqyOfUhxYNXzMbR+6shPVksDNKWiWw==" +const Checksum = "sha512:uo9+ze9MqHZ08tykYfvuTtZcs5wqwAMfiSs5I/8dwzXmo7ErxTJClJQz2rElyKCyiffUxjrQrrK+bJSqQlc+Gw==" diff --git a/internal/injector/builtin/generated_deps.go b/internal/injector/builtin/generated_deps.go index e675f473e..373428100 100644 --- a/internal/injector/builtin/generated_deps.go +++ b/internal/injector/builtin/generated_deps.go @@ -22,6 +22,7 @@ import ( _ "gopkg.in/DataDog/dd-trace-go.v1/contrib/aws/aws-sdk-go-v2/aws" _ "gopkg.in/DataDog/dd-trace-go.v1/contrib/aws/aws-sdk-go/aws" _ "gopkg.in/DataDog/dd-trace-go.v1/contrib/cloud.google.com/go/pubsub.v1/internal/tracing" + _ "gopkg.in/DataDog/dd-trace-go.v1/contrib/confluentinc/confluent-kafka-go/internal/tracing" _ "gopkg.in/DataDog/dd-trace-go.v1/contrib/database/sql" _ "gopkg.in/DataDog/dd-trace-go.v1/contrib/elastic/go-elasticsearch.v6" _ "gopkg.in/DataDog/dd-trace-go.v1/contrib/gin-gonic/gin" diff --git a/internal/injector/builtin/yaml/datastreams/confluentinc_kafka.yml b/internal/injector/builtin/yaml/datastreams/confluentinc_kafka.yml new file mode 100644 index 000000000..6717d95ca --- /dev/null +++ b/internal/injector/builtin/yaml/datastreams/confluentinc_kafka.yml @@ -0,0 +1,560 @@ +# Unless explicitly stated otherwise all files in this repository are licensed +# under the Apache License Version 2.0. +# This product includes software developed at Datadog (https://www.datadoghq.com/). +# Copyright 2023-present Datadog, Inc. +--- +# yaml-language-server: $schema=../../../../../docs/static/schema.json +meta: + name: github.com/confluentinc/confluent-kafka-go/kafka + description: confluent-kafka-go is a Go library for Apache Kafka + icon: fast-forward + +aspects: + - id: Inject kafka library version (v1) + join-point: + struct-definition: github.com/confluentinc/confluent-kafka-go/kafka.Consumer + advice: + - inject-declarations: + imports: + tracing: gopkg.in/DataDog/dd-trace-go.v1/contrib/confluentinc/confluent-kafka-go/internal/tracing + template: |- + const __dd_ckgoVersion = tracing.CKGoVersion1 + + - id: Inject kafka library version (v2) + join-point: + struct-definition: github.com/confluentinc/confluent-kafka-go/v2/kafka.Consumer + advice: + - inject-declarations: + imports: + tracing: gopkg.in/DataDog/dd-trace-go.v1/contrib/confluentinc/confluent-kafka-go/internal/tracing + template: |- + const __dd_ckgoVersion = tracing.CKGoVersion2 + + - id: Inject wrapped types to the kafka package + join-point: + one-of: + - struct-definition: github.com/confluentinc/confluent-kafka-go/kafka.Consumer + - struct-definition: github.com/confluentinc/confluent-kafka-go/v2/kafka.Consumer + advice: + - inject-declarations: + imports: + tracing: gopkg.in/DataDog/dd-trace-go.v1/contrib/confluentinc/confluent-kafka-go/internal/tracing + telemetry: gopkg.in/DataDog/dd-trace-go.v1/internal/telemetry + tracer: gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer + lang: go1.18 + template: |- + type __dd_wMessage struct { + *Message + } + + func __dd_wrapMessage(msg *Message) tracing.Message { + if msg == nil { + return nil + } + return &__dd_wMessage{msg} + } + + func (w *__dd_wMessage) Unwrap() any { + return w.Message + } + + func (w *__dd_wMessage) GetValue() []byte { + return w.Message.Value + } + + func (w *__dd_wMessage) GetKey() []byte { + return w.Message.Key + } + + func (w *__dd_wMessage) GetHeaders() []tracing.Header { + hs := make([]tracing.Header, 0, len(w.Headers)) + for _, h := range w.Headers { + hs = append(hs, __dd_wrapHeader(h)) + } + return hs + } + + func (w *__dd_wMessage) SetHeaders(headers []tracing.Header) { + hs := make([]Header, 0, len(headers)) + for _, h := range headers { + hs = append(hs, Header{ + Key: h.GetKey(), + Value: h.GetValue(), + }) + } + w.Message.Headers = hs + } + + func (w *__dd_wMessage) GetTopicPartition() tracing.TopicPartition { + return __dd_wrapTopicPartition(w.Message.TopicPartition) + } + + type __dd_wHeader struct { + Header + } + + func __dd_wrapHeader(h Header) tracing.Header { + return &__dd_wHeader{h} + } + + func (w __dd_wHeader) GetKey() string { + return w.Header.Key + } + + func (w __dd_wHeader) GetValue() []byte { + return w.Header.Value + } + + type __dd_wTopicPartition struct { + TopicPartition + } + + func __dd_wrapTopicPartition(tp TopicPartition) tracing.TopicPartition { + return __dd_wTopicPartition{tp} + } + + func __dd_wrapTopicPartitions(tps []TopicPartition) []tracing.TopicPartition { + wtps := make([]tracing.TopicPartition, 0, len(tps)) + for _, tp := range tps { + wtps = append(wtps, __dd_wTopicPartition{tp}) + } + return wtps + } + + func (w __dd_wTopicPartition) GetTopic() string { + if w.Topic == nil { + return "" + } + return *w.Topic + } + + func (w __dd_wTopicPartition) GetPartition() int32 { + return w.Partition + } + + func (w __dd_wTopicPartition) GetOffset() int64 { + return int64(w.Offset) + } + + func (w __dd_wTopicPartition) GetError() error { + return w.Error + } + + type __dd_wEvent struct { + Event + } + + func __dd_wrapEvent(event Event) tracing.Event { + return __dd_wEvent{event} + } + + func (w __dd_wEvent) KafkaMessage() (tracing.Message, bool) { + if m, ok := w.Event.(*Message); ok { + return __dd_wrapMessage(m), true + } + return nil, false + } + + func (w __dd_wEvent) KafkaOffsetsCommitted() (tracing.OffsetsCommitted, bool) { + if oc, ok := w.Event.(OffsetsCommitted); ok { + return __dd_wrapOffsetsCommitted(oc), true + } + return nil, false + } + + type __dd_wOffsetsCommitted struct { + OffsetsCommitted + } + + func __dd_wrapOffsetsCommitted(oc OffsetsCommitted) tracing.OffsetsCommitted { + return __dd_wOffsetsCommitted{oc} + } + + func (w __dd_wOffsetsCommitted) GetError() error { + return w.Error + } + + func (w __dd_wOffsetsCommitted) GetOffsets() []tracing.TopicPartition { + ttps := make([]tracing.TopicPartition, 0, len(w.Offsets)) + for _, tp := range w.Offsets { + ttps = append(ttps, __dd_wrapTopicPartition(tp)) + } + return ttps + } + + type __dd_wConfigMap struct { + cfg *ConfigMap + } + + func __dd_wrapConfigMap(cm *ConfigMap) tracing.ConfigMap { + return &__dd_wConfigMap{cm} + } + + func (w *__dd_wConfigMap) Get(key string, defVal any) (any, error) { + return w.cfg.Get(key, defVal) + } + + func init() { + telemetry.LoadIntegration(tracing.ComponentName(__dd_ckgoVersion)) + tracer.MarkIntegrationImported(tracing.IntegrationName(__dd_ckgoVersion)) + } + + func __dd_newKafkaTracer(opts ...tracing.Option) *tracing.KafkaTracer { + v, _ := LibraryVersion() + return tracing.NewKafkaTracer(__dd_ckgoVersion, v, opts...) + } + + func __dd_initConsumer(c *Consumer) { + if c.__dd_tracer != nil { + return + } + var opts []tracing.Option + if c.__dd_confmap != nil { + opts = append(opts, tracing.WithConfig(__dd_wrapConfigMap(c.__dd_confmap))) + } + c.__dd_tracer = __dd_newKafkaTracer(opts...) + // TODO: accessing c.events here might break if the library renames this variable... + c.__dd_events = tracing.WrapConsumeEventsChannel(c.__dd_tracer, c.events, c, __dd_wrapEvent) + } + + func __dd_initProducer(p *Producer) { + if p.__dd_tracer != nil { + return + } + p.__dd_tracer = __dd_newKafkaTracer() + // TODO: accessing p.events and p.produceChannel here might break if the library renames this variable... + p.__dd_events = p.events + p.__dd_produceChannel = tracing.WrapProduceChannel(p.__dd_tracer, p.produceChannel, __dd_wrapMessage) + if p.__dd_tracer.DSMEnabled() { + p.__dd_events = tracing.WrapProduceEventsChannel(p.__dd_tracer, p.events, __dd_wrapEvent) + } + } + + type __dd_eventChan = chan Event + type __dd_messageChan = chan *Message + type __dd_kafkaTracer = tracing.KafkaTracer + + ## Trace Consumer ## + + - id: Add struct fields to kafka.Consumer + join-point: + one-of: + - struct-definition: github.com/confluentinc/confluent-kafka-go/kafka.Consumer + - struct-definition: github.com/confluentinc/confluent-kafka-go/v2/kafka.Consumer + advice: + - add-struct-field: + name: __dd_tracer + type: "*__dd_kafkaTracer" + - add-struct-field: + name: __dd_events + type: "__dd_eventChan" + - add-struct-field: + name: __dd_confmap + type: "*ConfigMap" + + - id: Trace kafka.NewConsumer + join-point: + one-of: + - all-of: + - import-path: github.com/confluentinc/confluent-kafka-go/kafka + - function-body: + function: + - name: NewConsumer + - all-of: + - import-path: github.com/confluentinc/confluent-kafka-go/v2/kafka + - function-body: + function: + - name: NewConsumer + advice: + - prepend-statements: + imports: + tracing: gopkg.in/DataDog/dd-trace-go.v1/contrib/confluentinc/confluent-kafka-go/internal/tracing + template: |- + {{- $conf := .Function.Argument 0 -}} + {{- $c := .Function.Result 0 -}} + defer func() { + if {{ $c }} == nil { + return + } + {{ $c }}.__dd_confmap = {{ $conf }} + __dd_initConsumer({{ $c }}) + }() + + - id: Trace kafka.Consumer#Close + join-point: + one-of: + - function-body: + function: + - receiver: '*github.com/confluentinc/confluent-kafka-go/kafka.Consumer' + - name: Close + - function-body: + function: + - receiver: '*github.com/confluentinc/confluent-kafka-go/v2/kafka.Consumer' + - name: Close + advice: + - prepend-statements: + imports: + tracing: gopkg.in/DataDog/dd-trace-go.v1/contrib/confluentinc/confluent-kafka-go/internal/tracing + template: |- + {{- $c := .Function.Receiver -}} + __dd_initConsumer({{ $c }}) + defer func() { + if {{ $c }}.__dd_events == nil && {{ $c }}.__dd_tracer.PrevSpan != nil { + {{ $c }}.__dd_tracer.PrevSpan.Finish() + {{ $c }}.__dd_tracer.PrevSpan = nil + } + }() + + - id: Trace kafka.Consumer#Events + join-point: + one-of: + - function-body: + function: + - receiver: '*github.com/confluentinc/confluent-kafka-go/kafka.Consumer' + - name: Events + - function-body: + function: + - receiver: '*github.com/confluentinc/confluent-kafka-go/v2/kafka.Consumer' + - name: Events + advice: + - prepend-statements: + imports: + tracing: gopkg.in/DataDog/dd-trace-go.v1/contrib/confluentinc/confluent-kafka-go/internal/tracing + template: |- + {{- $c := .Function.Receiver -}} + {{- $events := .Function.Result 0 -}} + __dd_initConsumer({{ $c }}) + defer func() { + {{ $events }} = {{ $c }}.__dd_events + }() + + # kafka.Consumer#ReadMessage calls kafka.Consumer#Poll internally, so there's no need to trace it. + - id: Trace kafka.Consumer#Poll + join-point: + one-of: + - function-body: + function: + - receiver: '*github.com/confluentinc/confluent-kafka-go/kafka.Consumer' + - name: Poll + - function-body: + function: + - receiver: '*github.com/confluentinc/confluent-kafka-go/v2/kafka.Consumer' + - name: Poll + advice: + - prepend-statements: + imports: + tracing: gopkg.in/DataDog/dd-trace-go.v1/contrib/confluentinc/confluent-kafka-go/internal/tracing + template: |- + {{- $c := .Function.Receiver -}} + {{- $event := .Function.Result 0 -}} + __dd_initConsumer({{ $c }}) + if {{ $c }}.__dd_tracer.PrevSpan != nil { + {{ $c }}.__dd_tracer.PrevSpan.Finish() + {{ $c }}.__dd_tracer.PrevSpan = nil + } + defer func() { + if msg, ok := {{ $event }}.(*Message); ok { + tMsg := __dd_wrapMessage(msg) + {{ $c }}.__dd_tracer.SetConsumeCheckpoint(tMsg) + {{ $c }}.__dd_tracer.PrevSpan = {{ $c }}.__dd_tracer.StartConsumeSpan(tMsg) + } else if offset, ok := {{ $event }}.(OffsetsCommitted); ok { + tOffsets := __dd_wrapTopicPartitions(offset.Offsets) + {{ $c }}.__dd_tracer.TrackCommitOffsets(tOffsets, offset.Error) + {{ $c }}.__dd_tracer.TrackHighWatermarkOffset(tOffsets, {{ $c }}) + } + }() + + - id: Trace kafka.Consumer#Commit + join-point: + one-of: + - function-body: + function: + - receiver: '*github.com/confluentinc/confluent-kafka-go/kafka.Consumer' + - name: Commit + - function-body: + function: + - receiver: '*github.com/confluentinc/confluent-kafka-go/v2/kafka.Consumer' + - name: Commit + advice: + - prepend-statements: + imports: + tracing: gopkg.in/DataDog/dd-trace-go.v1/contrib/confluentinc/confluent-kafka-go/internal/tracing + template: |- + {{- $c := .Function.Receiver -}} + {{- $tps := .Function.Result 0 -}} + {{- $err := .Function.Result 1 -}} + __dd_initConsumer({{ $c }}) + defer func() { + tOffsets := __dd_wrapTopicPartitions({{ $tps }}) + {{ $c }}.__dd_tracer.TrackCommitOffsets(tOffsets, {{ $err }}) + {{ $c }}.__dd_tracer.TrackHighWatermarkOffset(tOffsets, {{ $c }}) + }() + + - id: Trace kafka.Consumer#CommitMessage + join-point: + one-of: + - function-body: + function: + - receiver: '*github.com/confluentinc/confluent-kafka-go/kafka.Consumer' + - name: CommitMessage + - function-body: + function: + - receiver: '*github.com/confluentinc/confluent-kafka-go/v2/kafka.Consumer' + - name: CommitMessage + advice: + - prepend-statements: + imports: + tracing: gopkg.in/DataDog/dd-trace-go.v1/contrib/confluentinc/confluent-kafka-go/internal/tracing + template: |- + {{- $c := .Function.Receiver -}} + {{- $tps := .Function.Result 0 -}} + {{- $err := .Function.Result 1 -}} + __dd_initConsumer({{ $c }}) + defer func() { + tOffsets := __dd_wrapTopicPartitions({{ $tps }}) + {{ $c }}.__dd_tracer.TrackCommitOffsets(tOffsets, {{ $err }}) + {{ $c }}.__dd_tracer.TrackHighWatermarkOffset(tOffsets, {{ $c }}) + }() + + - id: Trace kafka.Consumer#CommitOffsets + join-point: + one-of: + - function-body: + function: + - receiver: '*github.com/confluentinc/confluent-kafka-go/kafka.Consumer' + - name: CommitOffsets + - function-body: + function: + - receiver: '*github.com/confluentinc/confluent-kafka-go/v2/kafka.Consumer' + - name: CommitOffsets + advice: + - prepend-statements: + imports: + tracing: gopkg.in/DataDog/dd-trace-go.v1/contrib/confluentinc/confluent-kafka-go/internal/tracing + template: |- + {{- $c := .Function.Receiver -}} + {{- $tps := .Function.Result 0 -}} + {{- $err := .Function.Result 1 -}} + __dd_initConsumer({{ $c }}) + defer func() { + tOffsets := __dd_wrapTopicPartitions({{ $tps }}) + {{ $c }}.__dd_tracer.TrackCommitOffsets(tOffsets, {{ $err }}) + {{ $c }}.__dd_tracer.TrackHighWatermarkOffset(tOffsets, {{ $c }}) + }() + + ## Trace Producer ## + + - id: Add struct fields to kafka.Producer + join-point: + one-of: + - struct-definition: github.com/confluentinc/confluent-kafka-go/kafka.Producer + - struct-definition: github.com/confluentinc/confluent-kafka-go/v2/kafka.Producer + advice: + - add-struct-field: + name: __dd_tracer + type: "*__dd_kafkaTracer" + - add-struct-field: + name: __dd_events + type: "__dd_eventChan" + - add-struct-field: + name: __dd_produceChannel + type: "__dd_messageChan" + + - id: Trace kafka.Producer#Events + join-point: + one-of: + - function-body: + function: + - receiver: '*github.com/confluentinc/confluent-kafka-go/kafka.Producer' + - name: Events + - function-body: + function: + - receiver: '*github.com/confluentinc/confluent-kafka-go/v2/kafka.Producer' + - name: Events + advice: + - prepend-statements: + template: |- + {{- $p := .Function.Receiver -}} + {{- $events := .Function.Result 0 -}} + __dd_initProducer({{ $p }}) + defer func() { + {{ $events }} = {{ $p }}.__dd_events + }() + + - id: Trace kafka.Producer#ProduceChannel + join-point: + one-of: + - function-body: + function: + - receiver: '*github.com/confluentinc/confluent-kafka-go/kafka.Producer' + - name: ProduceChannel + - function-body: + function: + - receiver: '*github.com/confluentinc/confluent-kafka-go/v2/kafka.Producer' + - name: ProduceChannel + advice: + - prepend-statements: + template: |- + {{- $p := .Function.Receiver -}} + {{- $produceChannel := .Function.Result 0 -}} + __dd_initProducer({{ $p }}) + defer func() { + {{ $produceChannel }} = {{ $p }}.__dd_produceChannel + }() + + - id: Trace kafka.Producer#Close + join-point: + one-of: + - function-body: + function: + - receiver: '*github.com/confluentinc/confluent-kafka-go/kafka.Producer' + - name: Close + - function-body: + function: + - receiver: '*github.com/confluentinc/confluent-kafka-go/v2/kafka.Producer' + - name: Close + advice: + - prepend-statements: + template: |- + {{- $p := .Function.Receiver -}} + __dd_initProducer({{ $p }}) + close({{ $p }}.__dd_produceChannel) + + - id: Trace kafka.Producer#Produce + join-point: + one-of: + - function-body: + function: + - receiver: '*github.com/confluentinc/confluent-kafka-go/kafka.Producer' + - name: Produce + - function-body: + function: + - receiver: '*github.com/confluentinc/confluent-kafka-go/v2/kafka.Producer' + - name: Produce + advice: + - prepend-statements: + imports: + tracing: gopkg.in/DataDog/dd-trace-go.v1/contrib/confluentinc/confluent-kafka-go/internal/tracing + tracer: gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer + template: |- + {{- $p := .Function.Receiver -}} + {{- $msg := .Function.Argument 0 -}} + {{- $deliveryChan := .Function.Argument 1 -}} + {{- $err := .Function.Result 0 -}} + __dd_initProducer({{ $p }}) + tMsg := __dd_wrapMessage({{ $msg }}) + span := p.__dd_tracer.StartProduceSpan(tMsg) + + var errChan chan error + {{ $deliveryChan }}, errChan = tracing.WrapDeliveryChannel({{ $p }}.__dd_tracer, {{ $deliveryChan }}, span, __dd_wrapEvent) + + {{ $p }}.__dd_tracer.SetProduceCheckpoint(tMsg) + defer func() { + if {{ $err }} != nil { + if errChan != nil { + errChan <- {{ $err }} + } else { + span.Finish(tracer.WithError({{ $err }})) + } + } + }()