Update go otel 1.0.1
This fixes the issue with the usage of the deprecated attribute.Any function that original caused build issues. Signed-off-by: Brian Goff <cpuguy83@gmail.com>
This commit is contained in:
		| @@ -8,7 +8,7 @@ require ( | ||||
| 	github.com/gogo/googleapis v1.4.0 | ||||
| 	github.com/gogo/protobuf v1.3.2 | ||||
| 	github.com/opencontainers/go-digest v1.0.0 | ||||
| 	google.golang.org/grpc v1.40.0 | ||||
| 	google.golang.org/grpc v1.41.0 | ||||
| ) | ||||
|  | ||||
| replace ( | ||||
|   | ||||
							
								
								
									
										18
									
								
								api/go.sum
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								api/go.sum
									
									
									
									
									
								
							| @@ -1,14 +1,13 @@ | ||||
| cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= | ||||
| cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= | ||||
| github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= | ||||
| github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= | ||||
| github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= | ||||
| github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= | ||||
| github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= | ||||
| github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= | ||||
| github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= | ||||
| github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= | ||||
| github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= | ||||
| github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= | ||||
| github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= | ||||
| github.com/containerd/ttrpc v1.0.2 h1:2/O3oTZN36q2xRolk0a2WWGgh7/Vf/liElg5hFYLX9U= | ||||
| github.com/containerd/ttrpc v1.0.2/go.mod h1:UAxOpgT9ziI0gJrmKvgcZivgxOp8iFPSk8httJEt98Y= | ||||
| github.com/containerd/typeurl v1.0.2 h1:Chlt8zIieDbzQFzXzAeBEF92KhExuE4p9p92/QmY7aY= | ||||
| @@ -20,7 +19,7 @@ github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymF | ||||
| github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= | ||||
| github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= | ||||
| github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= | ||||
| github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= | ||||
| github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= | ||||
| github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= | ||||
| github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= | ||||
| github.com/gogo/googleapis v1.3.2 h1:kX1es4djPJrsDhY7aZKJy7aZasdcB5oSOEphMjSB53c= | ||||
| @@ -68,12 +67,12 @@ github.com/prometheus/procfs v0.0.0-20190522114515-bc1a522cf7b1/go.mod h1:TjEm7z | ||||
| github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= | ||||
| github.com/sirupsen/logrus v1.4.2 h1:SPIRibHv4MatM3XXNO2BJeFLZwZ2LvZgfQ5+UNI2im4= | ||||
| github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= | ||||
| github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= | ||||
| github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | ||||
| github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | ||||
| github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= | ||||
| github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4= | ||||
| github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= | ||||
| github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= | ||||
| github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= | ||||
| github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | ||||
| github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= | ||||
| go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= | ||||
| @@ -131,8 +130,8 @@ google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8 | ||||
| google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= | ||||
| google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= | ||||
| google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= | ||||
| google.golang.org/grpc v1.40.0 h1:AGJ0Ih4mHjSeibYkFGh1dD9KJ/eOtZ93I6hoHhukQ5Q= | ||||
| google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= | ||||
| google.golang.org/grpc v1.41.0 h1:f+PlOh7QV4iIJkPrx5NQ7qaNGFQ3OTse67yaDHfju4E= | ||||
| google.golang.org/grpc v1.41.0/go.mod h1:U3l9uK9J0sini8mHphKoXyaqDA/8VyGnDee1zzIUK6k= | ||||
| google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= | ||||
| google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= | ||||
| google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= | ||||
| @@ -144,6 +143,7 @@ google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4 | ||||
| google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | ||||
| gopkg.in/yaml.v2 v2.2.3 h1:fvjTMHxHEw/mxHbtzPi3JCcKXQRAnQTBRo6YCJSVHKI= | ||||
| gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | ||||
| gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= | ||||
| gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | ||||
| honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= | ||||
|   | ||||
							
								
								
									
										12
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								go.mod
									
									
									
									
									
								
							| @@ -55,15 +55,15 @@ require ( | ||||
| 	github.com/tchap/go-patricia v2.2.6+incompatible | ||||
| 	github.com/urfave/cli v1.22.2 | ||||
| 	go.etcd.io/bbolt v1.3.6 | ||||
| 	go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.21.0 | ||||
| 	go.opentelemetry.io/otel v1.0.0-RC2 | ||||
| 	go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.0.0-RC2 | ||||
| 	go.opentelemetry.io/otel/sdk v1.0.0-RC2 | ||||
| 	go.opentelemetry.io/otel/trace v1.0.0-RC2 | ||||
| 	go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.24.0 | ||||
| 	go.opentelemetry.io/otel v1.0.1 | ||||
| 	go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.0.1 | ||||
| 	go.opentelemetry.io/otel/sdk v1.0.1 | ||||
| 	go.opentelemetry.io/otel/trace v1.0.1 | ||||
| 	golang.org/x/net v0.0.0-20210520170846-37e1c6afe023 | ||||
| 	golang.org/x/sync v0.0.0-20210220032951-036812b2e83c | ||||
| 	golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c | ||||
| 	google.golang.org/grpc v1.40.0 | ||||
| 	google.golang.org/grpc v1.41.0 | ||||
| 	google.golang.org/protobuf v1.27.1 | ||||
| 	gotest.tools/v3 v3.0.3 | ||||
| 	k8s.io/api v0.22.0 | ||||
|   | ||||
							
								
								
									
										42
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										42
									
								
								go.sum
									
									
									
									
									
								
							| @@ -98,6 +98,7 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk | ||||
| github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= | ||||
| github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= | ||||
| github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= | ||||
| github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= | ||||
| github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h6jFvWxBdQXxjopDMZyH2UVceIRfR84bdzbkoKrsWNo= | ||||
| github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoCr5oaCLELYA= | ||||
| github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= | ||||
| @@ -188,6 +189,7 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m | ||||
| github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= | ||||
| github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= | ||||
| github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= | ||||
| github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= | ||||
| github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= | ||||
| github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= | ||||
| github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= | ||||
| @@ -571,42 +573,38 @@ go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8= | ||||
| go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= | ||||
| go.opencensus.io v0.22.3 h1:8sGtKOrtQqkN1bp2AtX+misvLIlOmsEsNd+9NIcPEm8= | ||||
| go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= | ||||
| go.opentelemetry.io/contrib v0.20.0 h1:ubFQUn0VCZ0gPwIoJfBJVpeBlyRMxu8Mm/huKWYd9p0= | ||||
| go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= | ||||
| go.opentelemetry.io/contrib v0.21.0 h1:RMJ6GlUVzLYp/zmItxTTdAmr1gnpO/HHMFmvjAhvJQM= | ||||
| go.opentelemetry.io/contrib v0.21.0/go.mod h1:EH4yDYeNoaTqn/8yCWQmfNB78VHfGX2Jt2bvnvzBlGM= | ||||
| go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0/go.mod h1:oVGt1LRbBOBq1A5BQLlUg9UaU/54aiHw8cgjV3aWZ/E= | ||||
| go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.21.0 h1:68WZYF6CrnsXIVDYc51cR9VmTX2IM7y0svo7s4lu5kQ= | ||||
| go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.21.0/go.mod h1:Vm5u/mtkj1OMhtao0v+BGo2LUoLCgHYXvRmj0jWITlE= | ||||
| go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.24.0 h1:1hCzM7mwQbFQgk3Q4lAVEsGV6NB4Uj6Jt3EU+OiSBc8= | ||||
| go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.24.0/go.mod h1:O0cG0vP6TP3c323kh70JmeG1jN69Sn9Z5HxgmeASFWY= | ||||
| go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0/go.mod h1:2AboqHi0CiIZU0qwhtUfCYD1GeUzvvIXWNkhDt7ZMG4= | ||||
| go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= | ||||
| go.opentelemetry.io/otel v1.0.0-RC1/go.mod h1:x9tRa9HK4hSSq7jf2TKbqFbtt58/TGk0f9XiEYISI1I= | ||||
| go.opentelemetry.io/otel v1.0.0-RC2 h1:SHhxSjB+omnGZPgGlKe+QMp3MyazcOHdQ8qwo89oKbg= | ||||
| go.opentelemetry.io/otel v1.0.0-RC2/go.mod h1:w1thVQ7qbAy8MHb0IFj8a5Q2QU0l2ksf8u/CN8m3NOM= | ||||
| go.opentelemetry.io/otel v1.0.0/go.mod h1:AjRVh9A5/5DE7S+mZtTR6t8vpKKryam+0lREnfmS4cg= | ||||
| go.opentelemetry.io/otel v1.0.1 h1:4XKyXmfqJLOQ7feyV5DB6gsBFZ0ltB8vLtp6pj4JIcc= | ||||
| go.opentelemetry.io/otel v1.0.1/go.mod h1:OPEOD4jIT2SlZPMmwT6FqZz2C0ZNdQqiWcoK6M0SNFU= | ||||
| go.opentelemetry.io/otel/exporters/otlp v0.20.0 h1:PTNgq9MRmQqqJY0REVbZFvwkYOA85vbdQU/nVfxDyqg= | ||||
| go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= | ||||
| go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.0.0-RC2 h1:Z/91DSYkOqnVuECrd+hxCU9lzeo5Fihjp28uq0Izfpw= | ||||
| go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.0.0-RC2/go.mod h1:T+s8GKi1OqMwPuZ+ouDtZW4vWYpJuzIzh2Matq4Jo9k= | ||||
| go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.0.0-RC2 h1:PaSlrCE+hRbamroLGGgFDmzDamCxp7ID+hBvPmOhcSc= | ||||
| go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.0.0-RC2/go.mod h1:3shayJIFcDqHi9/GT2fAHyMI/bRgc6FO0CAkhaDkhi0= | ||||
| go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.0.1 h1:ofMbch7i29qIUf7VtF+r0HRF6ac0SBaPSziSsKp7wkk= | ||||
| go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.0.1/go.mod h1:Kv8liBeVNFkkkbilbgWRpV+wWuu+H5xdOT6HAgd30iw= | ||||
| go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.0.1 h1:CFMFNoz+CGprjFAFy+RJFrfEe4GBia3RRm2a4fREvCA= | ||||
| go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.0.1/go.mod h1:xOvWoTOrQjxjW61xtOmD/WKGRYb/P4NzRo3bs65U6Rk= | ||||
| go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= | ||||
| go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= | ||||
| go.opentelemetry.io/otel/oteltest v1.0.0-RC1 h1:G685iP3XiskCwk/z0eIabL55XUl2gk0cljhGk9sB0Yk= | ||||
| go.opentelemetry.io/otel/oteltest v1.0.0-RC1/go.mod h1:+eoIG0gdEOaPNftuy1YScLr1Gb4mL/9lpDkZ0JjMRq4= | ||||
| go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc= | ||||
| go.opentelemetry.io/otel/sdk v1.0.0-RC2 h1:ROuteeSCBaZNjiT9JcFzZepmInDvLktR28Y6qKo8bCs= | ||||
| go.opentelemetry.io/otel/sdk v1.0.0-RC2/go.mod h1:fgwHyiDn4e5k40TD9VX243rOxXR+jzsWBZYA2P5jpEw= | ||||
| go.opentelemetry.io/otel/sdk v1.0.1 h1:wXxFEWGo7XfXupPwVJvTBOaPBC9FEg0wB8hMNrKk+cA= | ||||
| go.opentelemetry.io/otel/sdk v1.0.1/go.mod h1:HrdXne+BiwsOHYYkBE5ysIcv2bvdZstxzmCQhxTcZkI= | ||||
| go.opentelemetry.io/otel/sdk/export/metric v0.20.0/go.mod h1:h7RBNMsDJ5pmI1zExLi+bJK+Dr8NQCh0qGhm1KDnNlE= | ||||
| go.opentelemetry.io/otel/sdk/metric v0.20.0/go.mod h1:knxiS8Xd4E/N+ZqKmUPf3gTTZ4/0TjTXukfxjzSTpHE= | ||||
| go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= | ||||
| go.opentelemetry.io/otel/trace v1.0.0-RC1/go.mod h1:86UHmyHWFEtWjfWPSbu0+d0Pf9Q6e1U+3ViBOc+NXAg= | ||||
| go.opentelemetry.io/otel/trace v1.0.0-RC2 h1:dunAP0qDULMIT82atj34m5RgvsIK6LcsXf1c/MsYg1w= | ||||
| go.opentelemetry.io/otel/trace v1.0.0-RC2/go.mod h1:JPQ+z6nNw9mqEGT8o3eoPTdnNI+Aj5JcxEsVGREIAy4= | ||||
| go.opentelemetry.io/otel/trace v1.0.0/go.mod h1:PXTWqayeFUlJV1YDNhsJYB184+IvAH814St6o6ajzIs= | ||||
| go.opentelemetry.io/otel/trace v1.0.1 h1:StTeIH6Q3G4r0Fiw34LTokUFESZgIDUr0qIJ7mKmAfw= | ||||
| go.opentelemetry.io/otel/trace v1.0.1/go.mod h1:5g4i4fKLaX2BQpSBsxw8YYcgKpMMSW3x7ZTuYBr3sUk= | ||||
| go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= | ||||
| go.opentelemetry.io/proto/otlp v0.9.0 h1:C0g6TWmQYvjKRnljRULLWUVJGy8Uvu0NEL/5frY2/t4= | ||||
| go.opentelemetry.io/proto/otlp v0.9.0/go.mod h1:1vKfU9rv61e9EVGthD1zNvUbiwPcimSsOPU9brfSHJg= | ||||
| go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= | ||||
| go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= | ||||
| go.uber.org/goleak v1.1.10 h1:z+mqJhf6ss6BSfSM671tgKyZBFPTTJM+HLxnhPC3wu0= | ||||
| go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= | ||||
| go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= | ||||
| go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= | ||||
| @@ -643,7 +641,6 @@ golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHl | ||||
| golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= | ||||
| golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs= | ||||
| golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= | ||||
| golang.org/x/lint v0.0.0-20200302205851-738671d3881b h1:Wh+f8QHJXR411sJR8/vRBTZ7YapZaRvUcLFFJhusH0k= | ||||
| golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= | ||||
| golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE= | ||||
| golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o= | ||||
| @@ -820,7 +817,6 @@ golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapK | ||||
| golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= | ||||
| golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= | ||||
| golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= | ||||
| golang.org/x/tools v0.0.0-20210106214847-113979e3529a h1:CB3a9Nez8M13wwlr/E2YtwoU+qYHKfC+JrDa45RXXoQ= | ||||
| golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= | ||||
| golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| @@ -861,9 +857,9 @@ google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAG | ||||
| google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= | ||||
| google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= | ||||
| google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= | ||||
| google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= | ||||
| google.golang.org/grpc v1.40.0 h1:AGJ0Ih4mHjSeibYkFGh1dD9KJ/eOtZ93I6hoHhukQ5Q= | ||||
| google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= | ||||
| google.golang.org/grpc v1.41.0 h1:f+PlOh7QV4iIJkPrx5NQ7qaNGFQ3OTse67yaDHfju4E= | ||||
| google.golang.org/grpc v1.41.0/go.mod h1:U3l9uK9J0sini8mHphKoXyaqDA/8VyGnDee1zzIUK6k= | ||||
| google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= | ||||
| google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= | ||||
| google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= | ||||
|   | ||||
| @@ -95,6 +95,7 @@ github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDk | ||||
| github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= | ||||
| github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= | ||||
| github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= | ||||
| github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= | ||||
| github.com/cockroachdb/datadriven v0.0.0-20200714090401-bf6692d28da5/go.mod h1:h6jFvWxBdQXxjopDMZyH2UVceIRfR84bdzbkoKrsWNo= | ||||
| github.com/cockroachdb/errors v1.2.4/go.mod h1:rQD95gz6FARkaKkQXUksEje/d9a6wBJoCr5oaCLELYA= | ||||
| github.com/cockroachdb/logtags v0.0.0-20190617123548-eb05cc24525f/go.mod h1:i/u985jwjWRlyHXQbwatDASoW0RMlZ/3i9yJHE2xLkI= | ||||
| @@ -176,6 +177,7 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m | ||||
| github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= | ||||
| github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= | ||||
| github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= | ||||
| github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= | ||||
| github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= | ||||
| github.com/evanphx/json-patch v4.11.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= | ||||
| github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= | ||||
| @@ -530,26 +532,24 @@ go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= | ||||
| go.opencensus.io v0.22.3 h1:8sGtKOrtQqkN1bp2AtX+misvLIlOmsEsNd+9NIcPEm8= | ||||
| go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= | ||||
| go.opentelemetry.io/contrib v0.20.0/go.mod h1:G/EtFaa6qaN7+LxqfIAT3GiZa7Wv5DTBUzl5H4LY0Kc= | ||||
| go.opentelemetry.io/contrib v0.21.0/go.mod h1:EH4yDYeNoaTqn/8yCWQmfNB78VHfGX2Jt2bvnvzBlGM= | ||||
| go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.20.0/go.mod h1:oVGt1LRbBOBq1A5BQLlUg9UaU/54aiHw8cgjV3aWZ/E= | ||||
| go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.21.0/go.mod h1:Vm5u/mtkj1OMhtao0v+BGo2LUoLCgHYXvRmj0jWITlE= | ||||
| go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.24.0/go.mod h1:O0cG0vP6TP3c323kh70JmeG1jN69Sn9Z5HxgmeASFWY= | ||||
| go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.20.0/go.mod h1:2AboqHi0CiIZU0qwhtUfCYD1GeUzvvIXWNkhDt7ZMG4= | ||||
| go.opentelemetry.io/otel v0.20.0/go.mod h1:Y3ugLH2oa81t5QO+Lty+zXf8zC9L26ax4Nzoxm/dooo= | ||||
| go.opentelemetry.io/otel v1.0.0-RC1/go.mod h1:x9tRa9HK4hSSq7jf2TKbqFbtt58/TGk0f9XiEYISI1I= | ||||
| go.opentelemetry.io/otel v1.0.0-RC2/go.mod h1:w1thVQ7qbAy8MHb0IFj8a5Q2QU0l2ksf8u/CN8m3NOM= | ||||
| go.opentelemetry.io/otel v1.0.0/go.mod h1:AjRVh9A5/5DE7S+mZtTR6t8vpKKryam+0lREnfmS4cg= | ||||
| go.opentelemetry.io/otel v1.0.1/go.mod h1:OPEOD4jIT2SlZPMmwT6FqZz2C0ZNdQqiWcoK6M0SNFU= | ||||
| go.opentelemetry.io/otel/exporters/otlp v0.20.0/go.mod h1:YIieizyaN77rtLJra0buKiNBOm9XQfkPEKBeuhoMwAM= | ||||
| go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.0.0-RC2/go.mod h1:T+s8GKi1OqMwPuZ+ouDtZW4vWYpJuzIzh2Matq4Jo9k= | ||||
| go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.0.0-RC2/go.mod h1:3shayJIFcDqHi9/GT2fAHyMI/bRgc6FO0CAkhaDkhi0= | ||||
| go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.0.1/go.mod h1:Kv8liBeVNFkkkbilbgWRpV+wWuu+H5xdOT6HAgd30iw= | ||||
| go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.0.1/go.mod h1:xOvWoTOrQjxjW61xtOmD/WKGRYb/P4NzRo3bs65U6Rk= | ||||
| go.opentelemetry.io/otel/metric v0.20.0/go.mod h1:598I5tYlH1vzBjn+BTuhzTCSb/9debfNp6R3s7Pr1eU= | ||||
| go.opentelemetry.io/otel/oteltest v0.20.0/go.mod h1:L7bgKf9ZB7qCwT9Up7i9/pn0PWIa9FqQ2IQ8LoxiGnw= | ||||
| go.opentelemetry.io/otel/oteltest v1.0.0-RC1/go.mod h1:+eoIG0gdEOaPNftuy1YScLr1Gb4mL/9lpDkZ0JjMRq4= | ||||
| go.opentelemetry.io/otel/sdk v0.20.0/go.mod h1:g/IcepuwNsoiX5Byy2nNV0ySUF1em498m7hBWC279Yc= | ||||
| go.opentelemetry.io/otel/sdk v1.0.0-RC2/go.mod h1:fgwHyiDn4e5k40TD9VX243rOxXR+jzsWBZYA2P5jpEw= | ||||
| go.opentelemetry.io/otel/sdk v1.0.1/go.mod h1:HrdXne+BiwsOHYYkBE5ysIcv2bvdZstxzmCQhxTcZkI= | ||||
| go.opentelemetry.io/otel/sdk/export/metric v0.20.0/go.mod h1:h7RBNMsDJ5pmI1zExLi+bJK+Dr8NQCh0qGhm1KDnNlE= | ||||
| go.opentelemetry.io/otel/sdk/metric v0.20.0/go.mod h1:knxiS8Xd4E/N+ZqKmUPf3gTTZ4/0TjTXukfxjzSTpHE= | ||||
| go.opentelemetry.io/otel/trace v0.20.0/go.mod h1:6GjCW8zgDjwGHGa6GkyeB8+/5vjT16gUEi0Nf1iBdgw= | ||||
| go.opentelemetry.io/otel/trace v1.0.0-RC1/go.mod h1:86UHmyHWFEtWjfWPSbu0+d0Pf9Q6e1U+3ViBOc+NXAg= | ||||
| go.opentelemetry.io/otel/trace v1.0.0-RC2/go.mod h1:JPQ+z6nNw9mqEGT8o3eoPTdnNI+Aj5JcxEsVGREIAy4= | ||||
| go.opentelemetry.io/otel/trace v1.0.0/go.mod h1:PXTWqayeFUlJV1YDNhsJYB184+IvAH814St6o6ajzIs= | ||||
| go.opentelemetry.io/otel/trace v1.0.1/go.mod h1:5g4i4fKLaX2BQpSBsxw8YYcgKpMMSW3x7ZTuYBr3sUk= | ||||
| go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= | ||||
| go.opentelemetry.io/proto/otlp v0.9.0/go.mod h1:1vKfU9rv61e9EVGthD1zNvUbiwPcimSsOPU9brfSHJg= | ||||
| go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= | ||||
| @@ -805,9 +805,9 @@ google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAG | ||||
| google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= | ||||
| google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= | ||||
| google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= | ||||
| google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= | ||||
| google.golang.org/grpc v1.40.0 h1:AGJ0Ih4mHjSeibYkFGh1dD9KJ/eOtZ93I6hoHhukQ5Q= | ||||
| google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= | ||||
| google.golang.org/grpc v1.41.0 h1:f+PlOh7QV4iIJkPrx5NQ7qaNGFQ3OTse67yaDHfju4E= | ||||
| google.golang.org/grpc v1.41.0/go.mod h1:U3l9uK9J0sini8mHphKoXyaqDA/8VyGnDee1zzIUK6k= | ||||
| google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= | ||||
| google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= | ||||
| google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= | ||||
|   | ||||
| @@ -17,6 +17,9 @@ | ||||
| package tracing | ||||
|  | ||||
| import ( | ||||
| 	"encoding/json" | ||||
| 	"fmt" | ||||
|  | ||||
| 	"github.com/sirupsen/logrus" | ||||
| 	"go.opentelemetry.io/otel/attribute" | ||||
| 	"go.opentelemetry.io/otel/trace" | ||||
| @@ -60,7 +63,68 @@ func (h *LogrusHook) Fire(entry *logrus.Entry) error { | ||||
| func logrusDataToAttrs(data logrus.Fields) []attribute.KeyValue { | ||||
| 	attrs := make([]attribute.KeyValue, 0, len(data)) | ||||
| 	for k, v := range data { | ||||
| 		attrs = append(attrs, attribute.Any(k, v)) | ||||
| 		attrs = append(attrs, any(k, v)) | ||||
| 	} | ||||
| 	return attrs | ||||
| } | ||||
|  | ||||
| func any(k string, v interface{}) attribute.KeyValue { | ||||
| 	if v == nil { | ||||
| 		return attribute.String(k, "<nil>") | ||||
| 	} | ||||
|  | ||||
| 	switch typed := v.(type) { | ||||
| 	case bool: | ||||
| 		return attribute.Bool(k, typed) | ||||
| 	case []bool: | ||||
| 		return attribute.BoolSlice(k, typed) | ||||
| 	case int: | ||||
| 		return attribute.Int(k, typed) | ||||
| 	case []int: | ||||
| 		return attribute.IntSlice(k, typed) | ||||
| 	case int8: | ||||
| 		return attribute.Int(k, int(typed)) | ||||
| 	case []int8: | ||||
| 		ls := make([]int, 0, len(typed)) | ||||
| 		for _, i := range typed { | ||||
| 			ls = append(ls, int(i)) | ||||
| 		} | ||||
| 		return attribute.IntSlice(k, ls) | ||||
| 	case int16: | ||||
| 		return attribute.Int(k, int(typed)) | ||||
| 	case []int16: | ||||
| 		ls := make([]int, 0, len(typed)) | ||||
| 		for _, i := range typed { | ||||
| 			ls = append(ls, int(i)) | ||||
| 		} | ||||
| 		return attribute.IntSlice(k, ls) | ||||
| 	case int32: | ||||
| 		return attribute.Int64(k, int64(typed)) | ||||
| 	case []int32: | ||||
| 		ls := make([]int64, 0, len(typed)) | ||||
| 		for _, i := range typed { | ||||
| 			ls = append(ls, int64(i)) | ||||
| 		} | ||||
| 		return attribute.Int64Slice(k, ls) | ||||
| 	case int64: | ||||
| 		return attribute.Int64(k, typed) | ||||
| 	case []int64: | ||||
| 		return attribute.Int64Slice(k, typed) | ||||
| 	case float64: | ||||
| 		return attribute.Float64(k, typed) | ||||
| 	case []float64: | ||||
| 		return attribute.Float64Slice(k, typed) | ||||
| 	case string: | ||||
| 		return attribute.String(k, typed) | ||||
| 	case []string: | ||||
| 		return attribute.StringSlice(k, typed) | ||||
| 	} | ||||
|  | ||||
| 	if stringer, ok := v.(fmt.Stringer); ok { | ||||
| 		return attribute.String(k, stringer.String()) | ||||
| 	} | ||||
| 	if b, err := json.Marshal(v); b != nil && err == nil { | ||||
| 		return attribute.String(k, string(b)) | ||||
| 	} | ||||
| 	return attribute.String(k, fmt.Sprintf("%v", v)) | ||||
| } | ||||
|   | ||||
							
								
								
									
										3
									
								
								vendor/go.opentelemetry.io/contrib/.gitattributes
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/go.opentelemetry.io/contrib/.gitattributes
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,3 +0,0 @@ | ||||
| * text=auto eol=lf | ||||
| *.{cmd,[cC][mM][dD]} text eol=crlf | ||||
| *.{bat,[bB][aA][tT]} text eol=crlf | ||||
							
								
								
									
										13
									
								
								vendor/go.opentelemetry.io/contrib/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										13
									
								
								vendor/go.opentelemetry.io/contrib/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,13 +0,0 @@ | ||||
| .DS_Store | ||||
| Thumbs.db | ||||
|  | ||||
| .tools/ | ||||
| .idea/ | ||||
| .vscode/ | ||||
| *.iml | ||||
| *.so | ||||
| coverage.* | ||||
| example | ||||
|  | ||||
| instrumentation/google.golang.org/grpc/otelgrpc/example/server/server | ||||
| instrumentation/google.golang.org/grpc/otelgrpc/example/client/client | ||||
							
								
								
									
										32
									
								
								vendor/go.opentelemetry.io/contrib/.golangci.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										32
									
								
								vendor/go.opentelemetry.io/contrib/.golangci.yml
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,32 +0,0 @@ | ||||
| # See https://github.com/golangci/golangci-lint#config-file | ||||
| run: | ||||
|   issues-exit-code: 1 #Default | ||||
|   tests: true #Default | ||||
|  | ||||
| linters: | ||||
|   enable: | ||||
|     - misspell | ||||
|     - goimports | ||||
|     - revive | ||||
|     - gofmt | ||||
|  | ||||
| issues: | ||||
|   exclude-rules: | ||||
|     # helpers in tests often (rightfully) pass a *testing.T as their first argument | ||||
|     - path: _test\.go | ||||
|       text: "context.Context should be the first parameter of a function" | ||||
|       linters: | ||||
|         - revive | ||||
|     # Yes, they are, but it's okay in a test | ||||
|     - path: _test\.go | ||||
|       text: "exported func.*returns unexported type.*which can be annoying to use" | ||||
|       linters: | ||||
|         - revive | ||||
|  | ||||
| linters-settings: | ||||
|   misspell: | ||||
|     locale: US | ||||
|     #ignore-words: | ||||
|     #  - someword | ||||
|   goimports: | ||||
|     local-prefixes: go.opentelemetry.io | ||||
							
								
								
									
										336
									
								
								vendor/go.opentelemetry.io/contrib/CHANGELOG.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										336
									
								
								vendor/go.opentelemetry.io/contrib/CHANGELOG.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,336 +0,0 @@ | ||||
| # Changelog | ||||
|  | ||||
| All notable changes to this project will be documented in this file. | ||||
|  | ||||
| The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). | ||||
|  | ||||
| This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). | ||||
|  | ||||
| ## [Unreleased] | ||||
|  | ||||
| ## [0.21.0] - 2021-06-18 | ||||
|  | ||||
| ### Fixed | ||||
|  | ||||
| - Dockerfile based examples for `otelgin` and `otelmacaron`. (#767) | ||||
|  | ||||
| ### Changed | ||||
|  | ||||
| - Supported minimum version of Go bumped from 1.14 to 1.15. (#787) | ||||
| - EKS Resource Detector now use the Kubernetes Go client to obtain the ConfigMap. (#813) | ||||
|  | ||||
| ### Removed | ||||
|  | ||||
| - Remove service name from `otelmongodb` configuration and span attributes. (#763) | ||||
|  | ||||
| ## [0.20.0] - 2021-04-23 | ||||
|  | ||||
| ### Changed | ||||
|  | ||||
| - The `go.opentelemetry.io/contrib/instrumentation/go.mongodb.org/mongo-driver/mongo/otelmongo` instrumentation now accepts a `WithCommandAttributeDisabled`,  | ||||
|    so the caller can specify whether to opt-out of tracing the mongo command. (#712) | ||||
| - Upgrade to v0.20.0 of `go.opentelemetry.io/otel`. (#758) | ||||
| - The B3 and Jaeger propagators now store their debug or deferred state in the context.Context instead of the SpanContext. (#758) | ||||
|  | ||||
| ## [0.19.0] - 2021-03-19 | ||||
|  | ||||
| ### Changed | ||||
|  | ||||
| - Upgrade to v0.19.0 of `go.opentelemetry.io/otel`. | ||||
| - Fix Span names created in HTTP Instrumentation package to conform with guidelines. (#757) | ||||
|  | ||||
| ## [0.18.0] - 2021-03-04 | ||||
|  | ||||
| ### Fixed | ||||
|  | ||||
| - `otelmemcache` no longer sets span status to OK instead of leaving it unset. (#477) | ||||
| - Fix goroutine leak in gRPC `StreamClientInterceptor`. (#581) | ||||
|  | ||||
| ### Removed | ||||
|  | ||||
| - Remove service name from `otelmemcache` configuration and span attributes. (#477) | ||||
|  | ||||
| ## [0.17.0] - 2021-02-15 | ||||
|  | ||||
| ### Added | ||||
|  | ||||
| - Add `ot-tracer` propagator (#562) | ||||
|  | ||||
| ### Changed | ||||
|  | ||||
| - Rename project default branch from `master` to `main`. | ||||
|  | ||||
| ### Fixed | ||||
|  | ||||
| - Added failure message for AWS ECS resource detector for better debugging (#568) | ||||
| - Goroutine leak in gRPC StreamClientInterceptor while streamer returns an error. (#581) | ||||
|  | ||||
| ## [0.16.0] - 2021-01-13 | ||||
|  | ||||
| ### Fixed | ||||
|  | ||||
| - Fix module path for AWS ECS resource detector (#517) | ||||
|  | ||||
| ## [0.15.1] - 2020-12-14 | ||||
|  | ||||
| ### Added | ||||
|  | ||||
| - Add registry link check to `Makefile` and pre-release script. (#446) | ||||
| - A new AWS X-Ray ID Generator (#459) | ||||
| - Migrate CircleCI jobs to GitHub Actions (#476) | ||||
| - Add CodeQL GitHub Action (#506) | ||||
| - Add gosec workflow to GitHub Actions (#507) | ||||
|  | ||||
| ### Fixed | ||||
|  | ||||
| - Fixes the body replacement in otelhttp to not to mutate a nil body. (#484) | ||||
|  | ||||
| ## [0.15.0] - 2020-12-11 | ||||
|  | ||||
| ### Added | ||||
|  | ||||
| - A new Amazon EKS resource detector. (#465) | ||||
| - A new `gcp.CloudRun` detector for detecting resource from a Cloud Run instance. (#455) | ||||
|  | ||||
| ## [0.14.0] - 2020-11-20 | ||||
|  | ||||
| ### Added | ||||
|  | ||||
| - `otelhttp.{Get,Head,Post,PostForm}` convenience wrappers for their `http` counterparts. (#390) | ||||
| - The AWS detector now adds the cloud zone, host image ID, host type, and host name to the returned `Resource`. (#410) | ||||
| - Add Amazon ECS Resource Detector for AWS X-Ray. (#466) | ||||
| - Add propagator for AWS X-Ray (#462) | ||||
|  | ||||
| ### Changed | ||||
|  | ||||
| - Add semantic version to `Tracer` / `Meter` created by instrumentation packages `otelsaram`, `otelrestful`, `otelmongo`, `otelhttp` and `otelhttptrace`. (#412) | ||||
| - Update instrumentation guidelines about tracer / meter semantic version. (#412) | ||||
| - Replace internal tracer and meter helpers by helpers from `go.opentelemetry.io/otel`. (#414) | ||||
| - gRPC instrumentation sets span attribute `rpc.grpc.status_code`. (#453) | ||||
|  | ||||
| ## Fixed | ||||
|  | ||||
| - `/detectors/aws` no longer fails if instance metadata is not available (e.g. not running in AWS) (#401) | ||||
| - The AWS detector now returns a partial resource and an appropriate error if it encounters an error part way through determining a `Resource` identity. (#410) | ||||
| - The `host` instrumentation unit test has been updated to not depend on the system it runs on. (#426) | ||||
|  | ||||
| ## [0.13.0] - 2020-10-09 | ||||
|  | ||||
| ## Added | ||||
|  | ||||
| - A Jaeger propagator. (#375) | ||||
|  | ||||
| ## Changed | ||||
|  | ||||
| - The `go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc` package instrumentation no longer accepts a `Tracer` as an argument to the interceptor function. | ||||
|    Instead, a new `WithTracerProvider` option is added to configure the `TracerProvider` used when creating the `Tracer` for the instrumentation. (#373) | ||||
| - The `go.opentelemetry.io/contrib/instrumentation/gopkg.in/macaron.v1/otelmacaron` instrumentation now accepts a `TracerProvider` rather than a `Tracer`. (#374) | ||||
| - Remove `go.opentelemetry.io/otel/sdk` dependency from instrumentation. (#381) | ||||
| - Use `httpsnoop` in `go.opentelemetry.io/contrib/instrumentation/github.com/gorilla/mux/otelmux` to ensure `http.ResponseWriter` additional interfaces are preserved. (#388) | ||||
|  | ||||
| ### Fixed | ||||
|  | ||||
| - The `go.opentelemetry.io/contrib/instrumentation/github.com/labstack/echo/otelecho.Middleware` no longer sends duplicate errors to the global `ErrorHandler`. (#377, #364) | ||||
| - The import comment in `go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp` is now correctly quoted. (#379) | ||||
| - The B3 propagator sets the sample bitmask when the sampling decision is `debug`. (#369) | ||||
|  | ||||
| ## [0.12.0] - 2020-09-25 | ||||
|  | ||||
| ### Changed | ||||
|  | ||||
| - Replace `WithTracer` with `WithTracerProvider` in the `go.opentelemetry.io/contrib/instrumentation/gopkg.in/macaron.v1/otelmacaron` instrumentation. (#374) | ||||
|  | ||||
| ### Added | ||||
|  | ||||
| - Benchmark tests for the gRPC instrumentation. (#296) | ||||
| - Integration testing for the gRPC instrumentation. (#297) | ||||
| - Allow custom labels to be added to net/http metrics. (#306) | ||||
| - Added B3 propagator, moving it out of open.telemetry.io/otel repo. (#344) | ||||
|  | ||||
| ### Changed | ||||
|  | ||||
| - Unify instrumentation about provider options for `go.mongodb.org/mongo-driver`, `gin-gonic/gin`, `gorilla/mux`, | ||||
|   `labstack/echo`, `emicklei/go-restful`, `bradfitz/gomemcache`, `Shopify/sarama`, `net/http` and `beego`. (#303) | ||||
| - Update instrumentation guidelines about uniform provider options. Also, update style guide. (#303) | ||||
| - Make config struct of instrumentation unexported. (#303) | ||||
| - Instrumentations have been updated to adhere to the [configuration style guide's](https://github.com/open-telemetry/opentelemetry-go/blob/master/CONTRIBUTING.md#config) | ||||
|    updated recommendation to use `newConfig()` instead of `configure()`. (#336) | ||||
| - A new instrumentation naming scheme is implemented to avoid package name conflicts for instrumented packages while still remaining discoverable. (#359) | ||||
|   - `google.golang.org/grpc` -> `google.golang.org/grpc/otelgrpc` | ||||
|   - `go.mongodb.org/mongo-driver` -> `go.mongodb.org/mongo-driver/mongo/otelmongo` | ||||
|   - `net/http` -> `net/http/otelhttp` | ||||
|   - `net/http/httptrace` -> `net/http/httptrace/otelhttptrace` | ||||
|   - `github.com/labstack/echo` -> `github.com/labstack/echo/otelecho` | ||||
|   - `github.com/bradfitz/gomemcache` -> `github.com/bradfitz/gomemcache/memcache/otelmemcache` | ||||
|   - `github.com/gin-gonic/gin` -> `github.com/gin-gonic/gin/otelgin` | ||||
|   - `github.com/gocql/gocql` -> `github.com/gocql/gocql/otelgocql` | ||||
|   - `github.com/emicklei/go-restful` -> `github.com/emicklei/go-restful/otelrestful` | ||||
|   - `github.com/Shopify/sarama` -> `github.com/Shopify/sarama/otelsarama` | ||||
|   - `github.com/gorilla/mux` -> `github.com/gorilla/mux/otelmux` | ||||
|   - `github.com/astaxie/beego` -> `github.com/astaxie/beego/otelbeego` | ||||
|   - `gopkg.in/macaron.v1` -> `gopkg.in/macaron.v1/otelmacaron` | ||||
| - Rename `OTelBeegoHandler` to `Handler` in the `go.opentelemetry.io/contrib/instrumentation/github.com/astaxie/beego/otelbeego` package. (#359) | ||||
|  | ||||
| ## [0.11.0] - 2020-08-25 | ||||
|  | ||||
| ### Added | ||||
|  | ||||
| - Top-level `Version()` and `SemVersion()` functions defining the current version of the contrib package. (#225) | ||||
| - Instrumentation for the `github.com/astaxie/beego` package. (#200) | ||||
| - Instrumentation for the `github.com/bradfitz/gomemcache` package. (#204) | ||||
| - Host metrics instrumentation. (#231) | ||||
| - Cortex histogram and distribution support. (#237) | ||||
| - Cortex example project. (#238) | ||||
| - Cortex HTTP authentication. (#246) | ||||
|  | ||||
| ### Changed | ||||
|  | ||||
| - Remove service name as a parameter of Sarama instrumentation. (#221) | ||||
| - Replace `WithTracer` with `WithTracerProvider` in Sarama instrumentation. (#221) | ||||
| - Switch to use common top-level module `SemVersion()` when creating versioned tracer in `bradfitz/gomemcache`. (#226) | ||||
| - Use `IntegrationShouldRun` in `gomemcache_test`. (#254) | ||||
| - Use Go 1.15 for CI builds. (#236) | ||||
| - Improved configuration for `runtime` instrumentation. (#224) | ||||
|  | ||||
| ### Fixed | ||||
|  | ||||
| - Update dependabot configuration to include newly added `bradfitz/gomemcache` package. (#226) | ||||
| - Correct `runtime` instrumentation name. (#241) | ||||
|  | ||||
| ## [0.10.1] - 2020-08-13 | ||||
|  | ||||
| ### Added | ||||
|  | ||||
| - The `go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc` module has been added to replace the instrumentation that had previoiusly existed in the `go.opentelemetry.io/otel/instrumentation/grpctrace` package. (#189) | ||||
| - Instrumentation for the stdlib `net/http` and `net/http/httptrace` packages. (#190) | ||||
| - Initial Cortex exporter. (#202, #205, #210, #211, #215) | ||||
|  | ||||
| ### Fixed | ||||
|  | ||||
| - Bump google.golang.org/grpc from 1.30.0 to 1.31.0. (#166) | ||||
| - Bump go.mongodb.org/mongo-driver from 1.3.5 to 1.4.0 in /instrumentation/go.mongodb.org/mongo-driver. (#170) | ||||
| - Bump google.golang.org/grpc in /instrumentation/github.com/gin-gonic/gin. (#173) | ||||
| - Bump google.golang.org/grpc in /instrumentation/github.com/labstack/echo. (#176) | ||||
| - Bump google.golang.org/grpc from 1.30.0 to 1.31.0 in /instrumentation/github.com/Shopify/sarama. (#179) | ||||
| - Bump cloud.google.com/go from 0.61.0 to 0.63.0 in /detectors/gcp. (#181, #199) | ||||
| - Bump github.com/aws/aws-sdk-go from 1.33.15 to 1.34.1 in /detectors/aws. (#184, #192, #193, #198, #201, #203) | ||||
| - Bump github.com/golangci/golangci-lint from 1.29.0 to 1.30.0 in /tools. (#186) | ||||
| - Setup CI to run tests that require external resources (Cassandra and MongoDB). (#191) | ||||
| - Bump github.com/Shopify/sarama from 1.26.4 to 1.27.0 in /instrumentation/github.com/Shopify/sarama. (#206) | ||||
|  | ||||
| ## [0.10.0] - 2020-07-31 | ||||
|  | ||||
| This release upgrades its [go.opentelemetry.io/otel](https://github.com/open-telemetry/opentelemetry-go/releases/tag/v0.10.0) dependency to v0.10.0 and includes new instrumentation for popular Kafka and Cassandra clients. | ||||
|  | ||||
| ### Added | ||||
|  | ||||
| - A detector that generate resources from GCE instance. (#132) | ||||
| - A detector that generate resources from AWS instances. (#139) | ||||
| - Instrumentation for the Kafka client github.com/Shopify/sarama. (#134, #153) | ||||
| - Links and status message for mock span in the internal testing library. (#134) | ||||
| - Instrumentation for the Cassandra client github.com/gocql/gocql. (#137) | ||||
| - A detector that generate resources from GKE clusters. (#154) | ||||
|  | ||||
| ### Fixed | ||||
|  | ||||
| - Bump github.com/aws/aws-sdk-go from 1.33.8 to 1.33.15 in /detectors/aws. (#155, #157, #159, #162) | ||||
| - Bump github.com/golangci/golangci-lint from 1.28.3 to 1.29.0 in /tools. (#146) | ||||
|  | ||||
| ## [0.9.0] - 2020-07-20 | ||||
|  | ||||
| This release upgrades its [go.opentelemetry.io/otel](https://github.com/open-telemetry/opentelemetry-go/releases/tag/v0.9.0) dependency to v0.9.0. | ||||
|  | ||||
| ### Fixed | ||||
|  | ||||
| - Bump github.com/emicklei/go-restful/v3 from 3.0.0 to 3.2.0 in /instrumentation/github.com/emicklei/go-restful. (#133) | ||||
| - Update dependabot configuration to correctly check all included packages. (#131) | ||||
| - Update `RELEASING.md` with correct `tag.sh` command. (#130) | ||||
|  | ||||
| ## [0.8.0] - 2020-07-10 | ||||
|  | ||||
| This release upgrades its [go.opentelemetry.io/otel](https://github.com/open-telemetry/opentelemetry-go/releases/tag/v0.8.0) dependency to v0.8.0, includes minor fixes, and new instrumentation. | ||||
|  | ||||
| ### Added | ||||
|  | ||||
| - Create this `CHANGELOG.md`. (#114) | ||||
| - Add `emicklei/go-restful/v3` trace instrumentation. (#115) | ||||
|  | ||||
| ### Changed | ||||
|  | ||||
| - Update `CONTRIBUTING.md` to ask for updates to `CHANGELOG.md` with each pull request. (#114) | ||||
| - Move all `github.com` package instrumentation under a `github.com` directory. (#118) | ||||
|  | ||||
| ### Fixed | ||||
|  | ||||
| - Update README to include information about external instrumentation. | ||||
|    To start, this includes native instrumentation found in the `go-redis/redis` package. (#117) | ||||
| - Bump github.com/golangci/golangci-lint from 1.27.0 to 1.28.2 in /tools. (#122, #123, #125) | ||||
| - Bump go.mongodb.org/mongo-driver from 1.3.4 to 1.3.5 in /instrumentation/go.mongodb.org/mongo-driver. (#124) | ||||
|  | ||||
| ## [0.7.0] - 2020-06-29 | ||||
|  | ||||
| This release upgrades its [go.opentelemetry.io/otel](https://github.com/open-telemetry/opentelemetry-go/releases/tag/v0.7.0) dependency to v0.7.0. | ||||
|  | ||||
| ### Added | ||||
|  | ||||
| - Create `RELEASING.md` instructions. (#101) | ||||
| - Apply transitive dependabot go.mod updates as part of a new automatic Github workflow. (#94) | ||||
| - New dependabot integration to automate package upgrades. (#61) | ||||
| - Add automatic tag generation script for release. (#60) | ||||
|  | ||||
| ### Changed | ||||
|  | ||||
| - Upgrade Datadog metrics exporter to include Resource tags. (#46) | ||||
| - Added output validation to Datadog example. (#96) | ||||
| - Move Macaron package to match layout guidelines. (#92) | ||||
| - Update top-level README and instrumentation README. (#92) | ||||
| - Bump google.golang.org/grpc from 1.29.1 to 1.30.0. (#99) | ||||
| - Bump github.com/golangci/golangci-lint from 1.21.0 to 1.27.0 in /tools. (#77) | ||||
| - Bump go.mongodb.org/mongo-driver from 1.3.2 to 1.3.4 in /instrumentation/go.mongodb.org/mongo-driver. (#76) | ||||
| - Bump github.com/stretchr/testify from 1.5.1 to 1.6.1. (#74) | ||||
| - Bump gopkg.in/macaron.v1 from 1.3.5 to 1.3.9 in /instrumentation/macaron. (#68) | ||||
| - Bump github.com/gin-gonic/gin from 1.6.2 to 1.6.3 in /instrumentation/gin-gonic/gin. (#73) | ||||
| - Bump github.com/DataDog/datadog-go from 3.5.0+incompatible to 3.7.2+incompatible in /exporters/metric/datadog. (#78) | ||||
| - Replaced `internal/trace/http.go` helpers with `api/standard` helpers from otel-go repo. (#112) | ||||
|  | ||||
| ## [0.6.1] - 2020-06-08 | ||||
|  | ||||
| First official tagged release of `contrib` repository. | ||||
|  | ||||
| ### Added | ||||
|  | ||||
| - `labstack/echo` trace instrumentation (#42) | ||||
| - `mongodb` trace instrumentation (#26) | ||||
| - Go Runtime metrics (#9) | ||||
| - `gorilla/mux` trace instrumentation (#19) | ||||
| - `gin-gonic` trace instrumentation (#15) | ||||
| - `macaron` trace instrumentation (#20) | ||||
| - `dogstatsd` metrics exporter (#10) | ||||
| - `datadog` metrics exporter (#22) | ||||
| - Tags to all modules in repository | ||||
| - Repository folder structure and automated build (#3) | ||||
|  | ||||
| ### Changes | ||||
|  | ||||
| - Prefix support for dogstatsd (#34) | ||||
| - Update Go Runtime package to use batch observer (#44) | ||||
|  | ||||
| [Unreleased]: https://github.com/open-telemetry/opentelemetry-go-contrib/compare/v0.21.0...HEAD | ||||
| [0.21.0]: https://github.com/open-telemetry/opentelemetry-go-contrib/releases/tag/v0.21.0 | ||||
| [0.20.0]: https://github.com/open-telemetry/opentelemetry-go-contrib/releases/tag/v0.20.0 | ||||
| [0.19.0]: https://github.com/open-telemetry/opentelemetry-go-contrib/releases/tag/v0.19.0 | ||||
| [0.18.0]: https://github.com/open-telemetry/opentelemetry-go-contrib/releases/tag/v0.18.0 | ||||
| [0.17.0]: https://github.com/open-telemetry/opentelemetry-go-contrib/releases/tag/v0.17.0 | ||||
| [0.16.0]: https://github.com/open-telemetry/opentelemetry-go-contrib/releases/tag/v0.16.0 | ||||
| [0.15.1]: https://github.com/open-telemetry/opentelemetry-go-contrib/releases/tag/v0.15.1 | ||||
| [0.15.0]: https://github.com/open-telemetry/opentelemetry-go-contrib/releases/tag/v0.15.0 | ||||
| [0.14.0]: https://github.com/open-telemetry/opentelemetry-go-contrib/releases/tag/v0.14.0 | ||||
| [0.13.0]: https://github.com/open-telemetry/opentelemetry-go-contrib/releases/tag/v0.13.0 | ||||
| [0.12.0]: https://github.com/open-telemetry/opentelemetry-go-contrib/releases/tag/v0.12.0 | ||||
| [0.11.0]: https://github.com/open-telemetry/opentelemetry-go-contrib/releases/tag/v0.11.0 | ||||
| [0.10.1]: https://github.com/open-telemetry/opentelemetry-go-contrib/releases/tag/v0.10.1 | ||||
| [0.10.0]: https://github.com/open-telemetry/opentelemetry-go-contrib/releases/tag/v0.10.0 | ||||
| [0.9.0]: https://github.com/open-telemetry/opentelemetry-go-contrib/releases/tag/v0.9.0 | ||||
| [0.8.0]: https://github.com/open-telemetry/opentelemetry-go-contrib/releases/tag/v0.8.0 | ||||
| [0.7.0]: https://github.com/open-telemetry/opentelemetry-go-contrib/releases/tag/v0.7.0 | ||||
| [0.6.1]: https://github.com/open-telemetry/opentelemetry-go-contrib/releases/tag/v0.6.1 | ||||
							
								
								
									
										17
									
								
								vendor/go.opentelemetry.io/contrib/CODEOWNERS
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										17
									
								
								vendor/go.opentelemetry.io/contrib/CODEOWNERS
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,17 +0,0 @@ | ||||
| ##################################################### | ||||
| # | ||||
| # List of approvers for this repository | ||||
| # | ||||
| ##################################################### | ||||
| # | ||||
| # Learn about membership in OpenTelemetry community: | ||||
| #  https://github.com/open-telemetry/community/blob/main/community-membership.md | ||||
| # | ||||
| # | ||||
| # Learn about CODEOWNERS file format: | ||||
| #  https://help.github.com/en/articles/about-code-owners | ||||
| # | ||||
|  | ||||
| * @jmacd @MrAlias @Aneurysm9 @evantorrie @XSAM @dashpole @paivagustavo @MadVikingGod | ||||
|  | ||||
| CODEOWNERS @MrAlias @Aneurysm9 | ||||
							
								
								
									
										136
									
								
								vendor/go.opentelemetry.io/contrib/CONTRIBUTING.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										136
									
								
								vendor/go.opentelemetry.io/contrib/CONTRIBUTING.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,136 +0,0 @@ | ||||
| # Contributing to opentelemetry-go-contrib | ||||
|  | ||||
| The Go special interest group (SIG) meets regularly. See the | ||||
| OpenTelemetry | ||||
| [community](https://github.com/open-telemetry/community#golang-sdk) | ||||
| repo for information on this and other language SIGs. | ||||
|  | ||||
| See the [public meeting | ||||
| notes](https://docs.google.com/document/d/1A63zSWX0x2CyCK_LoNhmQC4rqhLpYXJzXbEPDUQ2n6w/edit#heading=h.9tngw7jdwd6b) | ||||
| for a summary description of past meetings. To request edit access, | ||||
| join the meeting or get in touch on | ||||
| [Slack](https://cloud-native.slack.com/archives/C01NPAXACKT). | ||||
|  | ||||
| ## Development | ||||
|  | ||||
| There are some generated files checked into the repo. To make sure | ||||
| that the generated files are up-to-date, run `make` (or `make | ||||
| precommit` - the `precommit` target is the default). | ||||
|  | ||||
| The `precommit` target also fixes the formatting of the code and | ||||
| checks the status of the go module files. | ||||
|  | ||||
| If after running `make precommit` the output of `git status` contains | ||||
| `nothing to commit, working tree clean` then it means that everything | ||||
| is up-to-date and properly formatted. | ||||
|  | ||||
| ## Pull Requests | ||||
|  | ||||
| ### How to Send Pull Requests | ||||
|  | ||||
| Everyone is welcome to contribute code to `opentelemetry-go-contrib` via | ||||
| GitHub pull requests (PRs). | ||||
|  | ||||
| To create a new PR, fork the project in GitHub and clone the upstream | ||||
| repo: | ||||
|  | ||||
| ```sh | ||||
| $ git clone https://github.com/open-telemetry/opentelemetry-go-contrib | ||||
| ``` | ||||
| This would put the project in the `opentelemetry-go-contrib` directory in | ||||
| current working directory. | ||||
|  | ||||
| Enter the newly created directory and add your fork as a new remote: | ||||
|  | ||||
| ```sh | ||||
| $ git remote add <YOUR_FORK> git@github.com:<YOUR_GITHUB_USERNAME>/opentelemetry-go | ||||
| ``` | ||||
|  | ||||
| Check out a new branch, make modifications, run linters and tests, update | ||||
| `CHANGELOG.md` and push the branch to your fork: | ||||
|  | ||||
| ```sh | ||||
| $ git checkout -b <YOUR_BRANCH_NAME> | ||||
| # edit files | ||||
| # update changelog | ||||
| $ make precommit | ||||
| $ git add -p | ||||
| $ git commit | ||||
| $ git push <YOUR_FORK> <YOUR_BRANCH_NAME> | ||||
| ``` | ||||
|  | ||||
| Open a pull request against the main `opentelemetry-go-contrib` repo. Be sure to add the pull | ||||
| request ID to the entry you added to `CHANGELOG.md`. | ||||
|  | ||||
| ### How to Receive Comments | ||||
|  | ||||
| * If the PR is not ready for review, please put `[WIP]` in the title, | ||||
|   tag it as `work-in-progress`, or mark it as | ||||
|   [`draft`](https://github.blog/2019-02-14-introducing-draft-pull-requests/). | ||||
| * Make sure CLA is signed and CI is clear. | ||||
|  | ||||
| ### How to Get PRs Merged | ||||
|  | ||||
| A PR is considered to be **ready to merge** when: | ||||
|  | ||||
| * It has received two approvals from Approvers/Maintainers (at | ||||
|   different companies). | ||||
| * Feedback has been addressed. | ||||
| * Any substantive changes to your PR will require that you clear any prior | ||||
|   Approval reviews, this includes changes resulting from other feedback. Unless | ||||
|   the approver explicitly stated that their approval will persist across | ||||
|   changes it should be assumed that the PR needs their review again. Other | ||||
|   project members (e.g. approvers, maintainers) can help with this if there are | ||||
|   any questions or if you forget to clear reviews. | ||||
| * It has been open for review for at least one working day. This gives | ||||
|   people reasonable time to review. | ||||
| * Trivial change (typo, cosmetic, doc, etc.) doesn't have to wait for | ||||
|   one day. | ||||
| * `CHANGELOG.md` has been updated to reflect what has been | ||||
|   added, changed, removed, or fixed. | ||||
| * Urgent fix can take exception as long as it has been actively | ||||
|   communicated. | ||||
|  | ||||
| Any Maintainer can merge the PR once it is **ready to merge**. | ||||
|  | ||||
| ## Style Guide | ||||
|  | ||||
| * Make sure to run `make precommit` - this will find and fix the code | ||||
|   formatting. | ||||
| * Check [opentelemetry-go Style Guide](https://github.com/open-telemetry/opentelemetry-go/blob/main/CONTRIBUTING.md#style-guide) | ||||
|  | ||||
| ## Adding a new Contrib package | ||||
|  | ||||
| To add a new contrib package follow an existing one. An empty Sample instrumentation | ||||
| provides base structure with an example and a test. Each contrib package  | ||||
| should be its own module. A contrib package may contain more than one go package. | ||||
|  | ||||
| ### Folder Structure | ||||
| - instrumentation/\<instrumentation-package>  (**Common**) | ||||
| - instrumentation/\<instrumentation-package>/trace (**specific to trace**) | ||||
| - instrumentation/\<instrumentation-package>/metrics (**specific to metrics**) | ||||
|  | ||||
| #### Example | ||||
| - instrumentation/gorm/trace | ||||
| - instrumentation/kafka/metrics | ||||
|  | ||||
| ## Approvers and Maintainers | ||||
|  | ||||
| Approvers: | ||||
|  | ||||
| - [Evan Torrie](https://github.com/evantorrie), Verizon Media | ||||
| - [Josh MacDonald](https://github.com/jmacd), LightStep | ||||
| - [Sam Xie](https://github.com/XSAM) | ||||
| - [David Ashpole](https://github.com/dashpole), Google | ||||
| - [Gustavo Silva Paiva](https://github.com/paivagustavo), LightStep | ||||
| - [Aaron Clawson](https://github.com/MadVikingGod) | ||||
|  | ||||
| Maintainers: | ||||
|  | ||||
| - [Anthony Mirabella](https://github.com/Aneurysm9), Centene | ||||
| - [Tyler Yahn](https://github.com/MrAlias), New Relic | ||||
|  | ||||
| ### Become an Approver or a Maintainer | ||||
|  | ||||
| See the [community membership document in OpenTelemetry community | ||||
| repo](https://github.com/open-telemetry/community/blob/main/community-membership.md). | ||||
							
								
								
									
										201
									
								
								vendor/go.opentelemetry.io/contrib/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										201
									
								
								vendor/go.opentelemetry.io/contrib/LICENSE
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,201 +0,0 @@ | ||||
|                                  Apache License | ||||
|                            Version 2.0, January 2004 | ||||
|                         http://www.apache.org/licenses/ | ||||
|  | ||||
|    TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION | ||||
|  | ||||
|    1. Definitions. | ||||
|  | ||||
|       "License" shall mean the terms and conditions for use, reproduction, | ||||
|       and distribution as defined by Sections 1 through 9 of this document. | ||||
|  | ||||
|       "Licensor" shall mean the copyright owner or entity authorized by | ||||
|       the copyright owner that is granting the License. | ||||
|  | ||||
|       "Legal Entity" shall mean the union of the acting entity and all | ||||
|       other entities that control, are controlled by, or are under common | ||||
|       control with that entity. For the purposes of this definition, | ||||
|       "control" means (i) the power, direct or indirect, to cause the | ||||
|       direction or management of such entity, whether by contract or | ||||
|       otherwise, or (ii) ownership of fifty percent (50%) or more of the | ||||
|       outstanding shares, or (iii) beneficial ownership of such entity. | ||||
|  | ||||
|       "You" (or "Your") shall mean an individual or Legal Entity | ||||
|       exercising permissions granted by this License. | ||||
|  | ||||
|       "Source" form shall mean the preferred form for making modifications, | ||||
|       including but not limited to software source code, documentation | ||||
|       source, and configuration files. | ||||
|  | ||||
|       "Object" form shall mean any form resulting from mechanical | ||||
|       transformation or translation of a Source form, including but | ||||
|       not limited to compiled object code, generated documentation, | ||||
|       and conversions to other media types. | ||||
|  | ||||
|       "Work" shall mean the work of authorship, whether in Source or | ||||
|       Object form, made available under the License, as indicated by a | ||||
|       copyright notice that is included in or attached to the work | ||||
|       (an example is provided in the Appendix below). | ||||
|  | ||||
|       "Derivative Works" shall mean any work, whether in Source or Object | ||||
|       form, that is based on (or derived from) the Work and for which the | ||||
|       editorial revisions, annotations, elaborations, or other modifications | ||||
|       represent, as a whole, an original work of authorship. For the purposes | ||||
|       of this License, Derivative Works shall not include works that remain | ||||
|       separable from, or merely link (or bind by name) to the interfaces of, | ||||
|       the Work and Derivative Works thereof. | ||||
|  | ||||
|       "Contribution" shall mean any work of authorship, including | ||||
|       the original version of the Work and any modifications or additions | ||||
|       to that Work or Derivative Works thereof, that is intentionally | ||||
|       submitted to Licensor for inclusion in the Work by the copyright owner | ||||
|       or by an individual or Legal Entity authorized to submit on behalf of | ||||
|       the copyright owner. For the purposes of this definition, "submitted" | ||||
|       means any form of electronic, verbal, or written communication sent | ||||
|       to the Licensor or its representatives, including but not limited to | ||||
|       communication on electronic mailing lists, source code control systems, | ||||
|       and issue tracking systems that are managed by, or on behalf of, the | ||||
|       Licensor for the purpose of discussing and improving the Work, but | ||||
|       excluding communication that is conspicuously marked or otherwise | ||||
|       designated in writing by the copyright owner as "Not a Contribution." | ||||
|  | ||||
|       "Contributor" shall mean Licensor and any individual or Legal Entity | ||||
|       on behalf of whom a Contribution has been received by Licensor and | ||||
|       subsequently incorporated within the Work. | ||||
|  | ||||
|    2. Grant of Copyright License. Subject to the terms and conditions of | ||||
|       this License, each Contributor hereby grants to You a perpetual, | ||||
|       worldwide, non-exclusive, no-charge, royalty-free, irrevocable | ||||
|       copyright license to reproduce, prepare Derivative Works of, | ||||
|       publicly display, publicly perform, sublicense, and distribute the | ||||
|       Work and such Derivative Works in Source or Object form. | ||||
|  | ||||
|    3. Grant of Patent License. Subject to the terms and conditions of | ||||
|       this License, each Contributor hereby grants to You a perpetual, | ||||
|       worldwide, non-exclusive, no-charge, royalty-free, irrevocable | ||||
|       (except as stated in this section) patent license to make, have made, | ||||
|       use, offer to sell, sell, import, and otherwise transfer the Work, | ||||
|       where such license applies only to those patent claims licensable | ||||
|       by such Contributor that are necessarily infringed by their | ||||
|       Contribution(s) alone or by combination of their Contribution(s) | ||||
|       with the Work to which such Contribution(s) was submitted. If You | ||||
|       institute patent litigation against any entity (including a | ||||
|       cross-claim or counterclaim in a lawsuit) alleging that the Work | ||||
|       or a Contribution incorporated within the Work constitutes direct | ||||
|       or contributory patent infringement, then any patent licenses | ||||
|       granted to You under this License for that Work shall terminate | ||||
|       as of the date such litigation is filed. | ||||
|  | ||||
|    4. Redistribution. You may reproduce and distribute copies of the | ||||
|       Work or Derivative Works thereof in any medium, with or without | ||||
|       modifications, and in Source or Object form, provided that You | ||||
|       meet the following conditions: | ||||
|  | ||||
|       (a) You must give any other recipients of the Work or | ||||
|           Derivative Works a copy of this License; and | ||||
|  | ||||
|       (b) You must cause any modified files to carry prominent notices | ||||
|           stating that You changed the files; and | ||||
|  | ||||
|       (c) You must retain, in the Source form of any Derivative Works | ||||
|           that You distribute, all copyright, patent, trademark, and | ||||
|           attribution notices from the Source form of the Work, | ||||
|           excluding those notices that do not pertain to any part of | ||||
|           the Derivative Works; and | ||||
|  | ||||
|       (d) If the Work includes a "NOTICE" text file as part of its | ||||
|           distribution, then any Derivative Works that You distribute must | ||||
|           include a readable copy of the attribution notices contained | ||||
|           within such NOTICE file, excluding those notices that do not | ||||
|           pertain to any part of the Derivative Works, in at least one | ||||
|           of the following places: within a NOTICE text file distributed | ||||
|           as part of the Derivative Works; within the Source form or | ||||
|           documentation, if provided along with the Derivative Works; or, | ||||
|           within a display generated by the Derivative Works, if and | ||||
|           wherever such third-party notices normally appear. The contents | ||||
|           of the NOTICE file are for informational purposes only and | ||||
|           do not modify the License. You may add Your own attribution | ||||
|           notices within Derivative Works that You distribute, alongside | ||||
|           or as an addendum to the NOTICE text from the Work, provided | ||||
|           that such additional attribution notices cannot be construed | ||||
|           as modifying the License. | ||||
|  | ||||
|       You may add Your own copyright statement to Your modifications and | ||||
|       may provide additional or different license terms and conditions | ||||
|       for use, reproduction, or distribution of Your modifications, or | ||||
|       for any such Derivative Works as a whole, provided Your use, | ||||
|       reproduction, and distribution of the Work otherwise complies with | ||||
|       the conditions stated in this License. | ||||
|  | ||||
|    5. Submission of Contributions. Unless You explicitly state otherwise, | ||||
|       any Contribution intentionally submitted for inclusion in the Work | ||||
|       by You to the Licensor shall be under the terms and conditions of | ||||
|       this License, without any additional terms or conditions. | ||||
|       Notwithstanding the above, nothing herein shall supersede or modify | ||||
|       the terms of any separate license agreement you may have executed | ||||
|       with Licensor regarding such Contributions. | ||||
|  | ||||
|    6. Trademarks. This License does not grant permission to use the trade | ||||
|       names, trademarks, service marks, or product names of the Licensor, | ||||
|       except as required for reasonable and customary use in describing the | ||||
|       origin of the Work and reproducing the content of the NOTICE file. | ||||
|  | ||||
|    7. Disclaimer of Warranty. Unless required by applicable law or | ||||
|       agreed to in writing, Licensor provides the Work (and each | ||||
|       Contributor provides its Contributions) on an "AS IS" BASIS, | ||||
|       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or | ||||
|       implied, including, without limitation, any warranties or conditions | ||||
|       of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A | ||||
|       PARTICULAR PURPOSE. You are solely responsible for determining the | ||||
|       appropriateness of using or redistributing the Work and assume any | ||||
|       risks associated with Your exercise of permissions under this License. | ||||
|  | ||||
|    8. Limitation of Liability. In no event and under no legal theory, | ||||
|       whether in tort (including negligence), contract, or otherwise, | ||||
|       unless required by applicable law (such as deliberate and grossly | ||||
|       negligent acts) or agreed to in writing, shall any Contributor be | ||||
|       liable to You for damages, including any direct, indirect, special, | ||||
|       incidental, or consequential damages of any character arising as a | ||||
|       result of this License or out of the use or inability to use the | ||||
|       Work (including but not limited to damages for loss of goodwill, | ||||
|       work stoppage, computer failure or malfunction, or any and all | ||||
|       other commercial damages or losses), even if such Contributor | ||||
|       has been advised of the possibility of such damages. | ||||
|  | ||||
|    9. Accepting Warranty or Additional Liability. While redistributing | ||||
|       the Work or Derivative Works thereof, You may choose to offer, | ||||
|       and charge a fee for, acceptance of support, warranty, indemnity, | ||||
|       or other liability obligations and/or rights consistent with this | ||||
|       License. However, in accepting such obligations, You may act only | ||||
|       on Your own behalf and on Your sole responsibility, not on behalf | ||||
|       of any other Contributor, and only if You agree to indemnify, | ||||
|       defend, and hold each Contributor harmless for any liability | ||||
|       incurred by, or claims asserted against, such Contributor by reason | ||||
|       of your accepting any such warranty or additional liability. | ||||
|  | ||||
|    END OF TERMS AND CONDITIONS | ||||
|  | ||||
|    APPENDIX: How to apply the Apache License to your work. | ||||
|  | ||||
|       To apply the Apache License to your work, attach the following | ||||
|       boilerplate notice, with the fields enclosed by brackets "[]" | ||||
|       replaced with your own identifying information. (Don't include | ||||
|       the brackets!)  The text should be enclosed in the appropriate | ||||
|       comment syntax for the file format. We also recommend that a | ||||
|       file or class name and description of purpose be included on the | ||||
|       same "printed page" as the copyright notice for easier | ||||
|       identification within third-party archives. | ||||
|  | ||||
|    Copyright [yyyy] [name of copyright owner] | ||||
|  | ||||
|    Licensed under the Apache License, Version 2.0 (the "License"); | ||||
|    you may not use this file except in compliance with the License. | ||||
|    You may obtain a copy of the License at | ||||
|  | ||||
|        http://www.apache.org/licenses/LICENSE-2.0 | ||||
|  | ||||
|    Unless required by applicable law or agreed to in writing, software | ||||
|    distributed under the License is distributed on an "AS IS" BASIS, | ||||
|    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
|    See the License for the specific language governing permissions and | ||||
|    limitations under the License. | ||||
							
								
								
									
										203
									
								
								vendor/go.opentelemetry.io/contrib/Makefile
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										203
									
								
								vendor/go.opentelemetry.io/contrib/Makefile
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,203 +0,0 @@ | ||||
| TOOLS_MOD_DIR := ./tools | ||||
|  | ||||
| # All source code and documents. Used in spell check. | ||||
| ALL_DOCS := $(shell find . -name '*.md' -type f | sort) | ||||
| # All directories with go.mod files related to opentelemetry library. Used for building, testing and linting. | ||||
| ALL_GO_MOD_DIRS := $(filter-out $(TOOLS_MOD_DIR), $(shell find . -type f -name 'go.mod' -exec dirname {} \; | sort)) | ||||
| ALL_COVERAGE_MOD_DIRS := $(shell find . -type f -name 'go.mod' -exec dirname {} \; | egrep -v '^./example|^$(TOOLS_MOD_DIR)' | sort) | ||||
|  | ||||
| # URLs to check if all contrib entries exist in the registry. | ||||
| REGISTRY_BASE_URL = https://raw.githubusercontent.com/open-telemetry/opentelemetry.io/main/content/en/registry | ||||
| CONTRIB_REPO_URL = https://github.com/open-telemetry/opentelemetry-go-contrib/tree/main | ||||
|  | ||||
| # Mac OS Catalina 10.5.x doesn't support 386. Hence skip 386 test | ||||
| SKIP_386_TEST = false | ||||
| UNAME_S := $(shell uname -s) | ||||
| ifeq ($(UNAME_S),Darwin) | ||||
| 	SW_VERS := $(shell sw_vers -productVersion) | ||||
| 	ifeq ($(shell echo $(SW_VERS) | egrep '^(10.1[5-9]|1[1-9]|[2-9])'), $(SW_VERS)) | ||||
| 		SKIP_386_TEST = true | ||||
| 	endif | ||||
| endif | ||||
|  | ||||
|  | ||||
| GOTEST_MIN = go test -v -timeout 30s | ||||
| GOTEST = $(GOTEST_MIN) -race | ||||
| GOTEST_WITH_COVERAGE = $(GOTEST) -coverprofile=coverage.out -covermode=atomic -coverpkg=./... | ||||
|  | ||||
| .DEFAULT_GOAL := precommit | ||||
|  | ||||
| .PHONY: precommit | ||||
|  | ||||
| TOOLS_DIR := $(abspath ./.tools) | ||||
|  | ||||
| $(TOOLS_DIR)/golangci-lint: $(TOOLS_MOD_DIR)/go.mod $(TOOLS_MOD_DIR)/go.sum $(TOOLS_MOD_DIR)/tools.go | ||||
| 	cd $(TOOLS_MOD_DIR) && \ | ||||
| 	go build -o $(TOOLS_DIR)/golangci-lint github.com/golangci/golangci-lint/cmd/golangci-lint | ||||
|  | ||||
| $(TOOLS_DIR)/misspell: $(TOOLS_MOD_DIR)/go.mod $(TOOLS_MOD_DIR)/go.sum $(TOOLS_MOD_DIR)/tools.go | ||||
| 	cd $(TOOLS_MOD_DIR) && \ | ||||
| 	go build -o $(TOOLS_DIR)/misspell github.com/client9/misspell/cmd/misspell | ||||
|  | ||||
| $(TOOLS_DIR)/stringer: $(TOOLS_MOD_DIR)/go.mod $(TOOLS_MOD_DIR)/go.sum $(TOOLS_MOD_DIR)/tools.go | ||||
| 	cd $(TOOLS_MOD_DIR) && \ | ||||
| 	go build -o $(TOOLS_DIR)/stringer golang.org/x/tools/cmd/stringer | ||||
|  | ||||
| precommit: dependabot-check license-check generate build lint test | ||||
|  | ||||
| .PHONY: test-with-coverage | ||||
| test-with-coverage: | ||||
| 	set -e; \ | ||||
| 	printf "" > coverage.txt; \ | ||||
| 	for dir in $(ALL_COVERAGE_MOD_DIRS); do \ | ||||
| 	  echo "go test ./... + coverage in $${dir}"; \ | ||||
| 	  (cd "$${dir}" && \ | ||||
| 	    $(GOTEST_WITH_COVERAGE) ./... && \ | ||||
| 	    go tool cover -html=coverage.out -o coverage.html); \ | ||||
| 	  [ -f "$${dir}/coverage.out" ] && cat "$${dir}/coverage.out" >> coverage.txt; \ | ||||
| 	done; \ | ||||
| 	sed -i.bak -e '2,$$ { /^mode: /d; }' coverage.txt && rm coverage.txt.bak | ||||
|  | ||||
| .PHONY: ci | ||||
| ci: precommit check-clean-work-tree test-with-coverage test-386 | ||||
|  | ||||
| .PHONY: test-gocql | ||||
| test-gocql: | ||||
| 	@if ./tools/should_build.sh gocql; then \ | ||||
| 	  set -e; \ | ||||
| 	  docker run --name cass-integ --rm -p 9042:9042 -d cassandra:3; \ | ||||
| 	  CMD=cassandra IMG_NAME=cass-integ ./tools/wait.sh; \ | ||||
| 	  (cd instrumentation/github.com/gocql/gocql/otelgocql && \ | ||||
| 	    $(GOTEST_WITH_COVERAGE) . && \ | ||||
| 	    go tool cover -html=coverage.out -o coverage.html); \ | ||||
| 	  docker stop cass-integ; \ | ||||
| 	fi | ||||
|  | ||||
| .PHONY: test-mongo-driver | ||||
| test-mongo-driver: | ||||
| 	@if ./tools/should_build.sh mongo-driver; then \ | ||||
| 	  set -e; \ | ||||
| 	  docker run --name mongo-integ --rm -p 27017:27017 -d mongo; \ | ||||
| 	  CMD=mongo IMG_NAME=mongo-integ ./tools/wait.sh; \ | ||||
| 	  (cd instrumentation/go.mongodb.org/mongo-driver/mongo/otelmongo && \ | ||||
| 	    $(GOTEST_WITH_COVERAGE) . && \ | ||||
| 	    go tool cover -html=coverage.out -o coverage.html); \ | ||||
| 	  docker stop mongo-integ; \ | ||||
| 	fi | ||||
|  | ||||
| .PHONY: test-gomemcache | ||||
| test-gomemcache: | ||||
| 	@if ./tools/should_build.sh gomemcache; then \ | ||||
| 	  set -e; \ | ||||
| 	  docker run --name gomemcache-integ --rm -p 11211:11211 -d memcached; \ | ||||
| 	  CMD=gomemcache IMG_NAME=gomemcache-integ  ./tools/wait.sh; \ | ||||
| 	  (cd instrumentation/github.com/bradfitz/gomemcache/memcache/otelmemcache && \ | ||||
| 	    $(GOTEST_WITH_COVERAGE) . && \ | ||||
| 	    go tool cover -html=coverage.out -o coverage.html); \ | ||||
| 	  docker stop gomemcache-integ ; \ | ||||
| 	fi | ||||
|  | ||||
| .PHONY: check-clean-work-tree | ||||
| check-clean-work-tree: | ||||
| 	@if ! git diff --quiet; then \ | ||||
| 	  echo; \ | ||||
| 	  echo 'Working tree is not clean, did you forget to run "make precommit"?'; \ | ||||
| 	  echo; \ | ||||
| 	  git status; \ | ||||
| 	  exit 1; \ | ||||
| 	fi | ||||
|  | ||||
| .PHONY: build | ||||
| build: | ||||
| 	# TODO: Fix this on windows. | ||||
| 	set -e; for dir in $(ALL_GO_MOD_DIRS); do \ | ||||
| 	  echo "compiling all packages in $${dir}"; \ | ||||
| 	  (cd "$${dir}" && \ | ||||
| 	    go build ./... && \ | ||||
| 	    go test -run xxxxxMatchNothingxxxxx ./... >/dev/null); \ | ||||
| 	done | ||||
|  | ||||
| .PHONY: test | ||||
| test: | ||||
| 	set -e; for dir in $(ALL_GO_MOD_DIRS); do \ | ||||
| 	  echo "go test ./... + race in $${dir}"; \ | ||||
| 	  (cd "$${dir}" && \ | ||||
| 	    $(GOTEST) ./...); \ | ||||
| 	done | ||||
|  | ||||
| .PHONY: test-386 | ||||
| test-386: | ||||
| 	if [ $(SKIP_386_TEST) = true ] ; then \ | ||||
| 		echo "skipping the test for GOARCH 386 as it is not supported on the current OS"; \ | ||||
|   else \ | ||||
|     set -e; for dir in $(ALL_GO_MOD_DIRS); do \ | ||||
|         echo "go test ./... GOARCH 386 in $${dir}"; \ | ||||
|         (cd "$${dir}" && \ | ||||
|           GOARCH=386 $(GOTEST_MIN) ./...); \ | ||||
| 	  done; \ | ||||
| 	fi | ||||
|  | ||||
| .PHONY: lint | ||||
| lint: $(TOOLS_DIR)/golangci-lint $(TOOLS_DIR)/misspell | ||||
| 	set -e; for dir in $(ALL_GO_MOD_DIRS); do \ | ||||
| 	  echo "golangci-lint in $${dir}"; \ | ||||
| 	  (cd "$${dir}" && \ | ||||
| 	    $(TOOLS_DIR)/golangci-lint run --fix && \ | ||||
| 	    $(TOOLS_DIR)/golangci-lint run); \ | ||||
| 	done | ||||
| 	$(TOOLS_DIR)/misspell -w $(ALL_DOCS) | ||||
| 	set -e; for dir in $(ALL_GO_MOD_DIRS) $(TOOLS_MOD_DIR); do \ | ||||
| 	  echo "go mod tidy in $${dir}"; \ | ||||
| 	  (cd "$${dir}" && \ | ||||
| 	    go mod tidy); \ | ||||
| 	done | ||||
|  | ||||
| .PHONY: generate | ||||
| generate: $(TOOLS_DIR)/stringer | ||||
| 	PATH="$(TOOLS_DIR):$${PATH}" go generate ./... | ||||
|  | ||||
| .PHONY: license-check | ||||
| license-check: | ||||
| 	@licRes=$$(for f in $$(find . -type f \( -iname '*.go' -o -iname '*.sh' \) ! -path './vendor/*' ! -path './exporters/otlp/internal/opentelemetry-proto/*') ; do \ | ||||
| 	           awk '/Copyright The OpenTelemetry Authors|generated|GENERATED/ && NR<=3 { found=1; next } END { if (!found) print FILENAME }' $$f; \ | ||||
| 	   done); \ | ||||
| 	   if [ -n "$${licRes}" ]; then \ | ||||
| 	           echo "license header checking failed:"; echo "$${licRes}"; \ | ||||
| 	           exit 1; \ | ||||
| 	   fi | ||||
|  | ||||
| .PHONY: registry-links-check | ||||
| registry-links-check: | ||||
| 	@checkRes=$$( \ | ||||
| 		for f in $$( find ./instrumentation ./exporters ./detectors ! -path './instrumentation/net/*' -type f -name 'go.mod' -exec dirname {} \; | egrep -v '/example|/utils' | sort ) \ | ||||
| 			./instrumentation/net/http; do \ | ||||
| 			TYPE="instrumentation"; \ | ||||
| 			if $$(echo "$$f" | grep -q "exporters"); then \ | ||||
| 				TYPE="exporter"; \ | ||||
| 			fi; \ | ||||
| 			if $$(echo "$$f" | grep -q "detectors"); then \ | ||||
| 				TYPE="detector"; \ | ||||
| 			fi; \ | ||||
| 			NAME=$$(echo "$$f" | sed -e 's/.*\///' -e 's/.*otel//'); \ | ||||
| 			LINK=$(CONTRIB_REPO_URL)/$$(echo "$$f" | sed -e 's/..//' -e 's/\/otel.*$$//'); \ | ||||
| 			if ! $$(curl -s $(REGISTRY_BASE_URL)/$${TYPE}-go-$${NAME}.md | grep -q "$${LINK}"); then \ | ||||
| 				echo "$$f"; \ | ||||
| 			fi \ | ||||
| 		done; \ | ||||
| 	); \ | ||||
| 	if [ -n "$$checkRes" ]; then \ | ||||
| 		echo "WARNING: registry link check failed for the following packages:"; echo "$${checkRes}"; \ | ||||
| 	fi | ||||
|  | ||||
| .PHONY: dependabot-check | ||||
| dependabot-check: | ||||
| 	@result=$$( \ | ||||
| 		for f in $$( find . -type f -name go.mod -exec dirname {} \; | sed 's/^.\/\?/\//' ); \ | ||||
| 			do grep -q "$$f" .github/dependabot.yml \ | ||||
| 			|| echo "$$f"; \ | ||||
| 		done; \ | ||||
| 	); \ | ||||
| 	if [ -n "$$result" ]; then \ | ||||
| 		echo "missing go.mod dependabot check:"; echo "$$result"; \ | ||||
| 		exit 1; \ | ||||
| 	fi | ||||
							
								
								
									
										40
									
								
								vendor/go.opentelemetry.io/contrib/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										40
									
								
								vendor/go.opentelemetry.io/contrib/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,40 +0,0 @@ | ||||
| # OpenTelemetry-Go Contrib | ||||
|  | ||||
| [](https://github.com/open-telemetry/opentelemetry-go-contrib/actions?query=workflow%3Abuild_and_test+branch%3Amain) | ||||
| [](https://app.codecov.io/gh/open-telemetry/opentelemetry-go-contrib?branch=main) | ||||
| [](https://pkg.go.dev/go.opentelemetry.io/contrib) | ||||
| [](https://goreportcard.com/report/go.opentelemetry.io/contrib) | ||||
| [](https://cloud-native.slack.com/archives/C01NPAXACKT) | ||||
|  | ||||
| Collection of 3rd-party instrumentation and exporters for [OpenTelemetry-Go](https://github.com/open-telemetry/opentelemetry-go). | ||||
|  | ||||
| ## Contents | ||||
|  | ||||
| - [Instrumentation](./instrumentation/): Packages providing OpenTelemetry instrumentation for 3rd-party libraries. | ||||
| - [Exporters](./exporters/): Packages providing OpenTelemetry exporters for 3rd-party telemetry systems. | ||||
| - [Propagators](./propagators/): Packages providing OpenTelemetry context propagators for 3rd-party propagation formats. | ||||
| - [Detectors](./detectors/): Packages providing OpenTelemetry resource detectors for 3rd-party cloud computing environments. | ||||
|  | ||||
| ## Project Status | ||||
|  | ||||
| This project is currently in a pre-GA phase. Our progress towards a GA release | ||||
| candidate is tracked in [this project | ||||
| board](https://github.com/orgs/open-telemetry/projects/5). | ||||
|  | ||||
| ### Compatibility | ||||
|  | ||||
| This project is tested on the following systems. | ||||
|  | ||||
| | OS      | Go Version | Architecture | | ||||
| | ------- | ---------- | ------------ | | ||||
| | Ubuntu  | 1.16       | amd64        | | ||||
| | Ubuntu  | 1.15       | amd64        | | ||||
| | Ubuntu  | 1.16       | 386          | | ||||
| | Ubuntu  | 1.15       | 386          | | ||||
|  | ||||
| While this project should work for other systems, no compatibility guarantees | ||||
| are made for those systems currently. | ||||
|  | ||||
| ## Contributing | ||||
|  | ||||
| For information on how to contribute, consult [the contributing guidelines](./CONTRIBUTING.md) | ||||
							
								
								
									
										96
									
								
								vendor/go.opentelemetry.io/contrib/RELEASING.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										96
									
								
								vendor/go.opentelemetry.io/contrib/RELEASING.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,96 +0,0 @@ | ||||
| # Release Process | ||||
|  | ||||
| There are two types of release for the `go.opentelemetry.io/contrib` repo | ||||
| and submodules. | ||||
|  | ||||
| 1. **Case 1** A release due to changes independent of the | ||||
| `go.opentelemetry.io/otel` module, e.g. perhaps a critical bug fix in | ||||
| one of the contrib modules. | ||||
|  | ||||
| 2. **Case 2** A release due to a breaking API change in | ||||
| `go.opentelemetry.io/otel` which all modules in this repo | ||||
| depend on. | ||||
|  | ||||
| ## Pre-Release | ||||
|  | ||||
| Update go.mod for submodules to depend on the upcoming new release of | ||||
| the module in this repo, `go.opentelemetry.io/contrib`.  Decide on the | ||||
| next version of the semantic tag to apply to the contrib | ||||
| module based on whether you fall into Case 1 or Case 2. | ||||
|  | ||||
| ### Case 1 | ||||
|  | ||||
| If the changes are all internal to this repo, then the new tag will | ||||
| most often be a patch or minor version upgrade to the existing tag on | ||||
| this module. Let's call this `<new_contrib_tag>`. | ||||
|  | ||||
| ### Case 2 | ||||
|  | ||||
| If a new release is required due to breaking changes in | ||||
| `go.opentelemetry.io/otel`, then the new semantic tag for this repo | ||||
| should be bumped to match the `go.opentelemetry.io/otel` new tag. | ||||
| Let's call this `<new_otel_tag>`. The script checks that | ||||
| `go.opentelemetry.io/otel@v<new_otel_tag>` is a valid tag, so you need | ||||
| to wait until that tag has been pushed in the main repo. | ||||
|  | ||||
| In nearly all cases, `<new_contrib_tag>` should be the same as | ||||
| `<new_otel_tag>`. | ||||
|  | ||||
| 1. Run `pre_release.sh` script to create a branch `pre_release_<new_contrib_tag>`. | ||||
|    The script will also run `go mod tidy` and `make ci`. | ||||
|  | ||||
|    * **Case 1** `./pre_release.sh -t <new_contrib_tag>` | ||||
|    * **Case 2** `./pre_release.sh -o <new_otel_tag> [-t <new_contrib_tag>]` | ||||
|  | ||||
| 2. If you used `-o <new_otel_tag>` to rewrite the modules to depend on | ||||
|    a new version of `go.opentelemetry.io/otel`, there will likely be | ||||
|    breaking changes that require fixes to the files in this | ||||
|    `contrib` repo.  Make the appropriate fixes to address any API | ||||
|    breaks and run through the | ||||
|  | ||||
|         ``` | ||||
|         git commit -m "fixes due to API changes" | ||||
|         make precommit | ||||
|         ``` | ||||
|  | ||||
|    cycle until everything passes | ||||
|  | ||||
| 4. Push the changes to upstream. | ||||
|  | ||||
|     ``` | ||||
|     git diff main | ||||
|     git push | ||||
|     ``` | ||||
|  | ||||
| 5. Create a PR on github and merge the PR once approved. | ||||
|  | ||||
|  | ||||
| ### Tag | ||||
| Now create a `<new_contrib_tag>` on the commit hash of the changes made in pre-release step, | ||||
|  | ||||
| 1. Run the tag.sh script. | ||||
|  | ||||
|     ``` | ||||
|     ./tag.sh <new_contrib_tag> <commit-hash> | ||||
|     ``` | ||||
| 2. Push tags upstream. Make sure you push upstream for all the sub-module tags as well. | ||||
|  | ||||
|     ``` | ||||
|     git push upstream <new_contrib_tag> | ||||
|     git push upstream <submodules-path/new_contrib_tag> | ||||
|     ... | ||||
|     ``` | ||||
|  | ||||
| ## Release | ||||
| Now create a release for the new `<new_contrib_tag>` on github. | ||||
| The release body should include all the release notes in the Changelog for this release. | ||||
| Additionally, the `tag.sh` script generates commit logs since last release which can be used to suppliment the release notes. | ||||
|  | ||||
| <!-- ## Verify Examples --> | ||||
| <!-- After releasing run following script to verify that examples build outside of the otel repo. --> | ||||
| <!-- The script copies examples into a different directory and builds them. --> | ||||
|  | ||||
| <!-- ``` --> | ||||
| <!-- ./verify_examples.sh --> | ||||
| <!-- ``` --> | ||||
|  | ||||
							
								
								
									
										20
									
								
								vendor/go.opentelemetry.io/contrib/doc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								vendor/go.opentelemetry.io/contrib/doc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,20 +0,0 @@ | ||||
| // Copyright The OpenTelemetry Authors | ||||
| // | ||||
| // Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| // you may not use this file except in compliance with the License. | ||||
| // You may obtain a copy of the License at | ||||
| // | ||||
| //     http://www.apache.org/licenses/LICENSE-2.0 | ||||
| // | ||||
| // Unless required by applicable law or agreed to in writing, software | ||||
| // distributed under the License is distributed on an "AS IS" BASIS, | ||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| // See the License for the specific language governing permissions and | ||||
| // limitations under the License. | ||||
|  | ||||
| // This package provides all of its functionality through its | ||||
| // submodules. The submodules in the exporters directory provide | ||||
| // implementations for trace and metric exporters for third-party | ||||
| // collectors, and submodules in the instrumentation directory provide the | ||||
| // instrumentation for the popular go libraries. | ||||
| package contrib | ||||
							
								
								
									
										3
									
								
								vendor/go.opentelemetry.io/contrib/go.mod
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/go.opentelemetry.io/contrib/go.mod
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,3 +0,0 @@ | ||||
| module go.opentelemetry.io/contrib | ||||
|  | ||||
| go 1.15 | ||||
							
								
								
									
										0
									
								
								vendor/go.opentelemetry.io/contrib/go.sum
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										0
									
								
								vendor/go.opentelemetry.io/contrib/go.sum
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -6,11 +6,7 @@ replace go.opentelemetry.io/contrib => ../../../../ | ||||
|  | ||||
| require ( | ||||
| 	github.com/golang/protobuf v1.5.2 | ||||
| 	github.com/stretchr/testify v1.7.0 | ||||
| 	go.opentelemetry.io/contrib v0.21.0 | ||||
| 	go.opentelemetry.io/otel v1.0.0-RC1 | ||||
| 	go.opentelemetry.io/otel/oteltest v1.0.0-RC1 | ||||
| 	go.opentelemetry.io/otel/trace v1.0.0-RC1 | ||||
| 	go.uber.org/goleak v1.1.10 | ||||
| 	google.golang.org/grpc v1.38.0 | ||||
| 	go.opentelemetry.io/otel v1.0.0 | ||||
| 	go.opentelemetry.io/otel/trace v1.0.0 | ||||
| 	google.golang.org/grpc v1.40.0 | ||||
| ) | ||||
|   | ||||
| @@ -1,19 +1,29 @@ | ||||
| cloud.google.com/go v0.26.0 h1:e0WKqKTd5BnrG8aKH3J3h+QvEIQtSUcf2n5UZ5ZgLtQ= | ||||
| cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= | ||||
| cloud.google.com/go v0.34.0 h1:eOI3/cP2VTU6uZLDYAoic+eyzzB9YyGmJ7eIjl8rOPg= | ||||
| cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= | ||||
| github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= | ||||
| github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= | ||||
| github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= | ||||
| github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= | ||||
| github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= | ||||
| github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= | ||||
| github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= | ||||
| github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= | ||||
| github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= | ||||
| github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= | ||||
| github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||
| github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= | ||||
| github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= | ||||
| github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= | ||||
| github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= | ||||
| github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= | ||||
| github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= | ||||
| github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= | ||||
| github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= | ||||
| github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= | ||||
| github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= | ||||
| github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= | ||||
| github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= | ||||
| github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= | ||||
| github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= | ||||
| github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= | ||||
| github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= | ||||
| @@ -21,6 +31,7 @@ github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:W | ||||
| github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= | ||||
| github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= | ||||
| github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= | ||||
| github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= | ||||
| github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= | ||||
| github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= | ||||
| github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= | ||||
| @@ -33,72 +44,72 @@ github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/ | ||||
| github.com/google/go-cmp v0.5.6 h1:BKbKCqvP6I+rmFHt06ZmyQtvB8xAkWdhFyr0ZUNZcxQ= | ||||
| github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= | ||||
| github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= | ||||
| github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= | ||||
| github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= | ||||
| github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= | ||||
| github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= | ||||
| github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= | ||||
| github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= | ||||
| github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= | ||||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||
| github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= | ||||
| github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= | ||||
| github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= | ||||
| github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | ||||
| 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.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= | ||||
| github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= | ||||
| go.opentelemetry.io/otel v1.0.0-RC1 h1:4CeoX93DNTWt8awGK9JmNXzF9j7TyOu9upscEdtcdXc= | ||||
| go.opentelemetry.io/otel v1.0.0-RC1/go.mod h1:x9tRa9HK4hSSq7jf2TKbqFbtt58/TGk0f9XiEYISI1I= | ||||
| go.opentelemetry.io/otel/oteltest v1.0.0-RC1 h1:G685iP3XiskCwk/z0eIabL55XUl2gk0cljhGk9sB0Yk= | ||||
| go.opentelemetry.io/otel/oteltest v1.0.0-RC1/go.mod h1:+eoIG0gdEOaPNftuy1YScLr1Gb4mL/9lpDkZ0JjMRq4= | ||||
| go.opentelemetry.io/otel/trace v1.0.0-RC1 h1:jrjqKJZEibFrDz+umEASeU3LvdVyWKlnTh7XEfwrT58= | ||||
| go.opentelemetry.io/otel/trace v1.0.0-RC1/go.mod h1:86UHmyHWFEtWjfWPSbu0+d0Pf9Q6e1U+3ViBOc+NXAg= | ||||
| go.uber.org/goleak v1.1.10 h1:z+mqJhf6ss6BSfSM671tgKyZBFPTTJM+HLxnhPC3wu0= | ||||
| go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= | ||||
| go.opentelemetry.io/otel v1.0.0 h1:qTTn6x71GVBvoafHK/yaRUmFzI4LcONZD0/kXxl5PHI= | ||||
| go.opentelemetry.io/otel v1.0.0/go.mod h1:AjRVh9A5/5DE7S+mZtTR6t8vpKKryam+0lREnfmS4cg= | ||||
| go.opentelemetry.io/otel/trace v1.0.0 h1:TSBr8GTEtKevYMG/2d21M989r5WJYVimhTHBKVEZuh4= | ||||
| go.opentelemetry.io/otel/trace v1.0.0/go.mod h1:PXTWqayeFUlJV1YDNhsJYB184+IvAH814St6o6ajzIs= | ||||
| go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= | ||||
| golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= | ||||
| golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= | ||||
| golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= | ||||
| golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= | ||||
| golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= | ||||
| golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= | ||||
| golang.org/x/lint v0.0.0-20190930215403-16217165b5de h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs= | ||||
| golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= | ||||
| golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | ||||
| golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | ||||
| golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | ||||
| golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= | ||||
| golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= | ||||
| golang.org/x/net v0.0.0-20190620200207-3b0461eec859 h1:R/3boaszxrf1GEUWTVDzSKVwLmSJpwZ1yqXm8j0v2QI= | ||||
| golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= | ||||
| golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be h1:vEDujvNQGv4jgYKudGeI/+DAX4Jffq6hpD55MmoEvKs= | ||||
| golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= | ||||
| golang.org/x/net v0.0.0-20200822124328-c89045814202 h1:VvcQYSHwXgi7W+TpUR6A9g6Up98WAHf3f/ulnJ62IyA= | ||||
| golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= | ||||
| golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= | ||||
| golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d h1:TzXSXBo42m9gQenoE3b9BGiEpg5IG2JkU5FkPIawgtw= | ||||
| golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= | ||||
| golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||||
| golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||||
| golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||||
| golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= | ||||
| golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | ||||
| golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= | ||||
| golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= | ||||
| golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd h1:xhmwyvizuTgC2qz7ZlMluP20uW+C3Rm0FD/WLDX8884= | ||||
| golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= | ||||
| golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= | ||||
| golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= | ||||
| golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= | ||||
| golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= | ||||
| golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= | ||||
| golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= | ||||
| golang.org/x/tools v0.0.0-20191108193012-7d206e10da11 h1:Yq9t9jnGoR+dBuitxdo9l6Q7xh/zOyNnYUtDKaQ3x0E= | ||||
| golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= | ||||
| golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= | ||||
| golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE= | ||||
| golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= | ||||
| google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= | ||||
| google.golang.org/appengine v1.4.0 h1:/wp5JvzpHIxhs/dumFmF7BXTf3Z+dd4uXta4kVyO508= | ||||
| google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= | ||||
| google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= | ||||
| google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= | ||||
| google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= | ||||
| google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY= | ||||
| google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= | ||||
| google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= | ||||
| google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= | ||||
| google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= | ||||
| google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= | ||||
| google.golang.org/grpc v1.38.0 h1:/9BgsAsa5nWe26HqOlvlgJnqBuktYOLCgjCPqsa56W0= | ||||
| google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= | ||||
| google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= | ||||
| google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= | ||||
| google.golang.org/grpc v1.40.0 h1:AGJ0Ih4mHjSeibYkFGh1dD9KJ/eOtZ93I6hoHhukQ5Q= | ||||
| google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= | ||||
| google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= | ||||
| google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= | ||||
| google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= | ||||
| @@ -111,10 +122,10 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba | ||||
| google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= | ||||
| google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/lk= | ||||
| google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= | ||||
| gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| 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.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= | ||||
| gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | ||||
| honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= | ||||
|   | ||||
| @@ -41,7 +41,7 @@ type config struct { | ||||
|  | ||||
| // Option applies an option value for a config. | ||||
| type Option interface { | ||||
| 	Apply(*config) | ||||
| 	apply(*config) | ||||
| } | ||||
|  | ||||
| // newConfig returns a config configured with all the passed Options. | ||||
| @@ -51,15 +51,17 @@ func newConfig(opts []Option) *config { | ||||
| 		TracerProvider: otel.GetTracerProvider(), | ||||
| 	} | ||||
| 	for _, o := range opts { | ||||
| 		o.Apply(c) | ||||
| 		o.apply(c) | ||||
| 	} | ||||
| 	return c | ||||
| } | ||||
|  | ||||
| type propagatorsOption struct{ p propagation.TextMapPropagator } | ||||
|  | ||||
| func (o propagatorsOption) Apply(c *config) { | ||||
| 	c.Propagators = o.p | ||||
| func (o propagatorsOption) apply(c *config) { | ||||
| 	if o.p != nil { | ||||
| 		c.Propagators = o.p | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // WithPropagators returns an Option to use the Propagators when extracting | ||||
| @@ -70,8 +72,10 @@ func WithPropagators(p propagation.TextMapPropagator) Option { | ||||
|  | ||||
| type tracerProviderOption struct{ tp trace.TracerProvider } | ||||
|  | ||||
| func (o tracerProviderOption) Apply(c *config) { | ||||
| 	c.TracerProvider = o.tp | ||||
| func (o tracerProviderOption) apply(c *config) { | ||||
| 	if o.tp != nil { | ||||
| 		c.TracerProvider = o.tp | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // WithTracerProvider returns an Option to use the TracerProvider when | ||||
|   | ||||
| @@ -20,7 +20,6 @@ import ( | ||||
| 	"context" | ||||
| 	"io" | ||||
| 	"net" | ||||
| 	"strings" | ||||
|  | ||||
| 	"github.com/golang/protobuf/proto" // nolint:staticcheck | ||||
|  | ||||
| @@ -30,13 +29,12 @@ import ( | ||||
| 	"google.golang.org/grpc/peer" | ||||
| 	"google.golang.org/grpc/status" | ||||
|  | ||||
| 	"go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/internal" | ||||
| 	"go.opentelemetry.io/otel/attribute" | ||||
| 	"go.opentelemetry.io/otel/baggage" | ||||
| 	"go.opentelemetry.io/otel/codes" | ||||
| 	semconv "go.opentelemetry.io/otel/semconv/v1.4.0" | ||||
| 	"go.opentelemetry.io/otel/trace" | ||||
|  | ||||
| 	otelcontrib "go.opentelemetry.io/contrib" | ||||
| ) | ||||
|  | ||||
| type messageType attribute.KeyValue | ||||
| @@ -80,7 +78,7 @@ func UnaryClientInterceptor(opts ...Option) grpc.UnaryClientInterceptor { | ||||
|  | ||||
| 		tracer := newConfig(opts).TracerProvider.Tracer( | ||||
| 			instrumentationName, | ||||
| 			trace.WithInstrumentationVersion(otelcontrib.SemVersion()), | ||||
| 			trace.WithInstrumentationVersion(SemVersion()), | ||||
| 		) | ||||
|  | ||||
| 		name, attr := spanInfo(method, cc.Target()) | ||||
| @@ -122,8 +120,7 @@ type streamEvent struct { | ||||
| } | ||||
|  | ||||
| const ( | ||||
| 	closeEvent streamEventType = iota | ||||
| 	receiveEndEvent | ||||
| 	receiveEndEvent streamEventType = iota | ||||
| 	errorEvent | ||||
| ) | ||||
|  | ||||
| @@ -188,19 +185,12 @@ func (w *clientStream) CloseSend() error { | ||||
|  | ||||
| 	if err != nil { | ||||
| 		w.sendStreamEvent(errorEvent, err) | ||||
| 	} else { | ||||
| 		w.sendStreamEvent(closeEvent, nil) | ||||
| 	} | ||||
|  | ||||
| 	return err | ||||
| } | ||||
|  | ||||
| const ( | ||||
| 	clientClosedState byte = 1 << iota | ||||
| 	receiveEndedState | ||||
| ) | ||||
|  | ||||
| func wrapClientStream(s grpc.ClientStream, desc *grpc.StreamDesc) *clientStream { | ||||
| func wrapClientStream(ctx context.Context, s grpc.ClientStream, desc *grpc.StreamDesc) *clientStream { | ||||
| 	events := make(chan streamEvent) | ||||
| 	eventsDone := make(chan struct{}) | ||||
| 	finished := make(chan error) | ||||
| @@ -208,22 +198,19 @@ func wrapClientStream(s grpc.ClientStream, desc *grpc.StreamDesc) *clientStream | ||||
| 	go func() { | ||||
| 		defer close(eventsDone) | ||||
|  | ||||
| 		// Both streams have to be closed | ||||
| 		state := byte(0) | ||||
|  | ||||
| 		for event := range events { | ||||
| 			switch event.Type { | ||||
| 			case closeEvent: | ||||
| 				state |= clientClosedState | ||||
| 			case receiveEndEvent: | ||||
| 				state |= receiveEndedState | ||||
| 			case errorEvent: | ||||
| 				finished <- event.Err | ||||
| 				return | ||||
| 			} | ||||
|  | ||||
| 			if state == clientClosedState|receiveEndedState { | ||||
| 				finished <- nil | ||||
| 		for { | ||||
| 			select { | ||||
| 			case event := <-events: | ||||
| 				switch event.Type { | ||||
| 				case receiveEndEvent: | ||||
| 					finished <- nil | ||||
| 					return | ||||
| 				case errorEvent: | ||||
| 					finished <- event.Err | ||||
| 					return | ||||
| 				} | ||||
| 			case <-ctx.Done(): | ||||
| 				finished <- ctx.Err() | ||||
| 				return | ||||
| 			} | ||||
| 		} | ||||
| @@ -261,7 +248,7 @@ func StreamClientInterceptor(opts ...Option) grpc.StreamClientInterceptor { | ||||
|  | ||||
| 		tracer := newConfig(opts).TracerProvider.Tracer( | ||||
| 			instrumentationName, | ||||
| 			trace.WithInstrumentationVersion(otelcontrib.SemVersion()), | ||||
| 			trace.WithInstrumentationVersion(SemVersion()), | ||||
| 		) | ||||
|  | ||||
| 		name, attr := spanInfo(method, cc.Target()) | ||||
| @@ -284,7 +271,7 @@ func StreamClientInterceptor(opts ...Option) grpc.StreamClientInterceptor { | ||||
| 			span.End() | ||||
| 			return s, err | ||||
| 		} | ||||
| 		stream := wrapClientStream(s, desc) | ||||
| 		stream := wrapClientStream(ctx, s, desc) | ||||
|  | ||||
| 		go func() { | ||||
| 			err := <-stream.finished | ||||
| @@ -321,7 +308,7 @@ func UnaryServerInterceptor(opts ...Option) grpc.UnaryServerInterceptor { | ||||
|  | ||||
| 		tracer := newConfig(opts).TracerProvider.Tracer( | ||||
| 			instrumentationName, | ||||
| 			trace.WithInstrumentationVersion(otelcontrib.SemVersion()), | ||||
| 			trace.WithInstrumentationVersion(SemVersion()), | ||||
| 		) | ||||
|  | ||||
| 		name, attr := spanInfo(info.FullMethod, peerFromCtx(ctx)) | ||||
| @@ -410,7 +397,7 @@ func StreamServerInterceptor(opts ...Option) grpc.StreamServerInterceptor { | ||||
|  | ||||
| 		tracer := newConfig(opts).TracerProvider.Tracer( | ||||
| 			instrumentationName, | ||||
| 			trace.WithInstrumentationVersion(otelcontrib.SemVersion()), | ||||
| 			trace.WithInstrumentationVersion(SemVersion()), | ||||
| 		) | ||||
|  | ||||
| 		name, attr := spanInfo(info.FullMethod, peerFromCtx(ctx)) | ||||
| @@ -440,7 +427,7 @@ func StreamServerInterceptor(opts ...Option) grpc.StreamServerInterceptor { | ||||
| // method and peer address. | ||||
| func spanInfo(fullMethod, peerAddress string) (string, []attribute.KeyValue) { | ||||
| 	attrs := []attribute.KeyValue{RPCSystemGRPC} | ||||
| 	name, mAttrs := parseFullMethod(fullMethod) | ||||
| 	name, mAttrs := internal.ParseFullMethod(fullMethod) | ||||
| 	attrs = append(attrs, mAttrs...) | ||||
| 	attrs = append(attrs, peerAttr(peerAddress)...) | ||||
| 	return name, attrs | ||||
| @@ -472,27 +459,6 @@ func peerFromCtx(ctx context.Context) string { | ||||
| 	return p.Addr.String() | ||||
| } | ||||
|  | ||||
| // parseFullMethod returns a span name following the OpenTelemetry semantic | ||||
| // conventions as well as all applicable span attribute.KeyValue attributes based | ||||
| // on a gRPC's FullMethod. | ||||
| func parseFullMethod(fullMethod string) (string, []attribute.KeyValue) { | ||||
| 	name := strings.TrimLeft(fullMethod, "/") | ||||
| 	parts := strings.SplitN(name, "/", 2) | ||||
| 	if len(parts) != 2 { | ||||
| 		// Invalid format, does not follow `/package.service/method`. | ||||
| 		return name, []attribute.KeyValue(nil) | ||||
| 	} | ||||
|  | ||||
| 	var attrs []attribute.KeyValue | ||||
| 	if service := parts[0]; service != "" { | ||||
| 		attrs = append(attrs, semconv.RPCServiceKey.String(service)) | ||||
| 	} | ||||
| 	if method := parts[1]; method != "" { | ||||
| 		attrs = append(attrs, semconv.RPCMethodKey.String(method)) | ||||
| 	} | ||||
| 	return name, attrs | ||||
| } | ||||
|  | ||||
| // statusCodeAttr returns status code attribute based on given gRPC code | ||||
| func statusCodeAttr(c grpc_codes.Code) attribute.KeyValue { | ||||
| 	return GRPCStatusCodeKey.Int64(int64(c)) | ||||
|   | ||||
							
								
								
									
										43
									
								
								vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/internal/parse.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										43
									
								
								vendor/go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc/internal/parse.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,43 @@ | ||||
| // Copyright The OpenTelemetry Authors | ||||
| // | ||||
| // Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| // you may not use this file except in compliance with the License. | ||||
| // You may obtain a copy of the License at | ||||
| // | ||||
| //     http://www.apache.org/licenses/LICENSE-2.0 | ||||
| // | ||||
| // Unless required by applicable law or agreed to in writing, software | ||||
| // distributed under the License is distributed on an "AS IS" BASIS, | ||||
| // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| // See the License for the specific language governing permissions and | ||||
| // limitations under the License. | ||||
|  | ||||
| package internal | ||||
|  | ||||
| import ( | ||||
| 	"strings" | ||||
|  | ||||
| 	"go.opentelemetry.io/otel/attribute" | ||||
| 	semconv "go.opentelemetry.io/otel/semconv/v1.4.0" | ||||
| ) | ||||
|  | ||||
| // ParseFullMethod returns a span name following the OpenTelemetry semantic | ||||
| // conventions as well as all applicable span attribute.KeyValue attributes based | ||||
| // on a gRPC's FullMethod. | ||||
| func ParseFullMethod(fullMethod string) (string, []attribute.KeyValue) { | ||||
| 	name := strings.TrimLeft(fullMethod, "/") | ||||
| 	parts := strings.SplitN(name, "/", 2) | ||||
| 	if len(parts) != 2 { | ||||
| 		// Invalid format, does not follow `/package.service/method`. | ||||
| 		return name, []attribute.KeyValue(nil) | ||||
| 	} | ||||
|  | ||||
| 	var attrs []attribute.KeyValue | ||||
| 	if service := parts[0]; service != "" { | ||||
| 		attrs = append(attrs, semconv.RPCServiceKey.String(service)) | ||||
| 	} | ||||
| 	if method := parts[1]; method != "" { | ||||
| 		attrs = append(attrs, semconv.RPCMethodKey.String(method)) | ||||
| 	} | ||||
| 	return name, attrs | ||||
| } | ||||
| @@ -12,13 +12,11 @@ | ||||
| // See the License for the specific language governing permissions and | ||||
| // limitations under the License. | ||||
| 
 | ||||
| // Package contrib contains common values used across all | ||||
| // instrumentation, exporter, and detector contributions. | ||||
| package contrib // import "go.opentelemetry.io/contrib" | ||||
| package otelgrpc | ||||
| 
 | ||||
| // Version is the current release version of OpenTelemetry Contrib in use. | ||||
| // Version is the current release version of the gRPC instrumentation. | ||||
| func Version() string { | ||||
| 	return "0.21.0" | ||||
| 	return "0.24.0" | ||||
| 	// This string is updated by the pre_release.sh script during release | ||||
| } | ||||
| 
 | ||||
							
								
								
									
										158
									
								
								vendor/go.opentelemetry.io/contrib/pre_release.sh
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										158
									
								
								vendor/go.opentelemetry.io/contrib/pre_release.sh
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,158 +0,0 @@ | ||||
| #!/usr/bin/env bash | ||||
|  | ||||
| # Copyright The OpenTelemetry Authors | ||||
| # | ||||
| # Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| # you may not use this file except in compliance with the License. | ||||
| # You may obtain a copy of the License at | ||||
| # | ||||
| #     http://www.apache.org/licenses/LICENSE-2.0 | ||||
| # | ||||
| # Unless required by applicable law or agreed to in writing, software | ||||
| # distributed under the License is distributed on an "AS IS" BASIS, | ||||
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| # See the License for the specific language governing permissions and | ||||
| # limitations under the License. | ||||
|  | ||||
| # | ||||
| # This script is used for | ||||
| # a) creating a new tagged release of go.opentelemetry.io/contrib | ||||
| # b) bumping the referenced version of go.opentelemetry.io/otel | ||||
| # | ||||
| # The options can be used together or individually. | ||||
| # | ||||
| set -e | ||||
|  | ||||
| declare CONTRIB_TAG | ||||
| declare OTEL_TAG | ||||
|  | ||||
| help() { | ||||
|    printf "\n" | ||||
|    printf "Usage: %s [-o otel_tag] [-t tag]\n" "$0" | ||||
|    printf "\t-o Otel release tag. Update all go.mod to reference go.opentelemetry.io/otel <otel_tag>.\n" | ||||
|    printf "\t-t New Contrib unreleased tag. Update all go.mod files with this tag.\n" | ||||
|    exit 1 # Exit script after printing help | ||||
| } | ||||
|  | ||||
| while getopts "t:o:" opt | ||||
| do | ||||
|    case "$opt" in | ||||
|       t ) CONTRIB_TAG="$OPTARG" ;; | ||||
|       o ) OTEL_TAG="$OPTARG" ;; | ||||
|       ? ) help ;; # Print help | ||||
|    esac | ||||
| done | ||||
|  | ||||
| declare -r SEMVER_REGEX="^v(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(\\-[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?(\\+[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?$" | ||||
|  | ||||
| validate_tag() { | ||||
|     local tag_=$1 | ||||
|     if [[ "${tag_}" =~ ${SEMVER_REGEX} ]]; then | ||||
| 	    printf "%s is valid semver tag.\n" "${tag_}" | ||||
|     else | ||||
| 	    printf "%s is not a valid semver tag.\n" "${tag_}" | ||||
| 	    return 1 | ||||
|     fi | ||||
| } | ||||
|  | ||||
| # Print help in case parameters are empty | ||||
| if [[ -z "$CONTRIB_TAG" && -z "$OTEL_TAG" ]] | ||||
| then | ||||
|     printf "At least one of '-o' or '-t' must be specified.\n" | ||||
|     help | ||||
| fi | ||||
|  | ||||
|  | ||||
| ## Validate tags first | ||||
| if [ -n "${OTEL_TAG}" ]; then | ||||
|     validate_tag "${OTEL_TAG}" || exit $? | ||||
|  | ||||
|     # check that OTEL_TAG is a currently released tag for go.opentelemetry.io/otel | ||||
|     TMPDIR=$(mktemp -d "/tmp/otel-contrib.XXXXXX") || exit 1 | ||||
|     trap "rm -fr ${TMPDIR}" EXIT | ||||
|     (cd "${TMPDIR}" && go mod init tagtest) | ||||
|     # requires go 1.14 for support of '-modfile' | ||||
|     if ! go get -modfile="${TMPDIR}/go.mod" -d -v "go.opentelemetry.io/otel@${OTEL_TAG}"; then | ||||
|         printf "go.opentelemetry.io/otel %s does not exist. Please supply a valid tag\n" "${OTEL_TAG}" | ||||
|         exit 1 | ||||
|     fi | ||||
| fi | ||||
| if [ -n "${CONTRIB_TAG}" ]; then | ||||
|     validate_tag "${CONTRIB_TAG}" || exit $? | ||||
|     TAG_FOUND=$(git tag --list "${CONTRIB_TAG}") | ||||
|     if [[ ${TAG_FOUND} = "${CONTRIB_TAG}" ]] ; then | ||||
|         printf "Tag %s already exists in this repo\n" "${CONTRIB_TAG}" | ||||
|         exit 1 | ||||
|     fi | ||||
| else | ||||
|     CONTRIB_TAG=${OTEL_TAG}  # if contrib_tag not specified, but OTEL_TAG is, then set it to OTEL_TAG | ||||
| fi | ||||
|  | ||||
| # Get version for contrib.go | ||||
| OTEL_CONTRIB_VERSION=$(echo "${CONTRIB_TAG}" | egrep -o "${SEMVER_REGEX}") | ||||
| # Strip leading v | ||||
| OTEL_CONTRIB_VERSION="${OTEL_CONTRIB_VERSION#v}" | ||||
|  | ||||
| cd "$(dirname "$0")" | ||||
|  | ||||
| if ! git diff --quiet; then \ | ||||
|     printf "Working tree is not clean, can't proceed\n" | ||||
|     git status | ||||
|     git diff | ||||
|     exit 1 | ||||
| fi | ||||
|  | ||||
| # Update contrib.go version definition | ||||
| cp contrib.go contrib.go.bak | ||||
| sed "s/\(return \"\)[0-9]*\.[0-9]*\.[0-9]*\"/\1${OTEL_CONTRIB_VERSION}\"/" ./contrib.go.bak > ./contrib.go | ||||
| rm -f ./contrib.go.bak | ||||
|  | ||||
| declare -r BRANCH_NAME=pre_release_${CONTRIB_TAG} | ||||
|  | ||||
| patch_gomods() { | ||||
|     local pkg_=$1 | ||||
|     local tag_=$2 | ||||
|     # now do the same for all the directories underneath | ||||
|     PACKAGE_DIRS=$(find . -mindepth 2 -type f -name 'go.mod' -exec dirname {} \; | egrep -v 'tools' | sed 's|^\.\/||' | sort) | ||||
|     # quote any '.' characters in the pkg name | ||||
|     local quoted_pkg_=${pkg_//./\\.} | ||||
|     for dir in $PACKAGE_DIRS; do | ||||
| 	    cp "${dir}/go.mod" "${dir}/go.mod.bak" | ||||
| 	    sed "s|${quoted_pkg_}\([^ ]*\) v[0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*[^0-9]*.*$|${pkg_}\1 ${tag_}|" "${dir}/go.mod.bak" >"${dir}/go.mod" | ||||
| 	    rm -f "${dir}/go.mod.bak" | ||||
|     done | ||||
| } | ||||
|  | ||||
| # branch off from existing main | ||||
| git checkout -b "${BRANCH_NAME}" main | ||||
|  | ||||
| # Update go.mods | ||||
| if [ -n "${OTEL_TAG}" ]; then | ||||
|     # first update the top most module | ||||
|     go get "go.opentelemetry.io/otel@${OTEL_TAG}" | ||||
|     patch_gomods go.opentelemetry.io/otel "${OTEL_TAG}" | ||||
| fi | ||||
|  | ||||
| if [ -n "${CONTRIB_TAG}" ]; then | ||||
|     patch_gomods go.opentelemetry.io/contrib "${CONTRIB_TAG}" | ||||
| fi | ||||
|  | ||||
| git diff | ||||
| # Run lint to update go.sum | ||||
| make lint | ||||
|  | ||||
| # Add changes and commit. | ||||
| git add . | ||||
| make ci | ||||
| # Check whether registry links are up to date | ||||
| make registry-links-check | ||||
|  | ||||
| declare COMMIT_MSG="" | ||||
| if [ -n "${OTEL_TAG}" ]; then | ||||
|     COMMIT_MSG+="Bumping otel version to ${OTEL_TAG}" | ||||
| fi | ||||
| COMMIT_MSG+=".  Prepare for releasing ${CONTRIB_TAG}" | ||||
| git commit -m "${COMMIT_MSG}" | ||||
|  | ||||
| printf "Now run following to verify the changes.\ngit diff main\n" | ||||
| printf "\nThen push the changes to upstream\n" | ||||
							
								
								
									
										178
									
								
								vendor/go.opentelemetry.io/contrib/tag.sh
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										178
									
								
								vendor/go.opentelemetry.io/contrib/tag.sh
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,178 +0,0 @@ | ||||
| #!/usr/bin/env bash | ||||
|  | ||||
| # Copyright The OpenTelemetry Authors | ||||
| # | ||||
| # Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| # you may not use this file except in compliance with the License. | ||||
| # You may obtain a copy of the License at | ||||
| # | ||||
| #     http://www.apache.org/licenses/LICENSE-2.0 | ||||
| # | ||||
| # Unless required by applicable law or agreed to in writing, software | ||||
| # distributed under the License is distributed on an "AS IS" BASIS, | ||||
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| # See the License for the specific language governing permissions and | ||||
| # limitations under the License. | ||||
|  | ||||
| readonly PROGNAME=$(basename "$0") | ||||
| readonly PROGDIR=$(readlink -m "$(dirname "$0")") | ||||
|  | ||||
| readonly EXCLUDE_PACKAGES="tools" | ||||
| readonly SEMVER_REGEX="v(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(\\-[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?(\\+[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?" | ||||
|  | ||||
| usage() { | ||||
|     cat <<- EOF | ||||
| Usage: $PROGNAME [OPTIONS] SEMVER_TAG COMMIT_HASH | ||||
|  | ||||
| Creates git tag for all Go packages in project. | ||||
|  | ||||
| OPTIONS: | ||||
|   -h --help        Show this help. | ||||
|  | ||||
| ARGUMENTS: | ||||
|   SEMVER_TAG       Semantic version to tag with. | ||||
|   COMMIT_HASH      Git commit hash to tag. | ||||
| EOF | ||||
| } | ||||
|  | ||||
| cmdline() { | ||||
|     local arg commit | ||||
|  | ||||
|     for arg | ||||
|     do | ||||
|         local delim="" | ||||
|         case "$arg" in | ||||
|             # Translate long form options to short form. | ||||
|             --help)           args="${args}-h ";; | ||||
|             # Pass through for everything else. | ||||
|             *) [[ "${arg:0:1}" == "-" ]] || delim="\"" | ||||
|                 args="${args}${delim}${arg}${delim} ";; | ||||
|         esac | ||||
|     done | ||||
|  | ||||
|     # Reset and process short form options. | ||||
|     eval set -- "$args" | ||||
|  | ||||
|     while getopts "h" OPTION | ||||
|     do | ||||
|          case $OPTION in | ||||
|          h) | ||||
|              usage | ||||
|              exit 0 | ||||
|              ;; | ||||
|          *) | ||||
|              echo "unknown option: $OPTION" | ||||
|              usage | ||||
|              exit 1 | ||||
|              ;; | ||||
|         esac | ||||
|     done | ||||
|  | ||||
|     # Positional arguments. | ||||
|     shift $((OPTIND-1)) | ||||
|     readonly TAG="$1" | ||||
|     if [ -z "$TAG" ] | ||||
|     then | ||||
|         echo "missing SEMVER_TAG" | ||||
|         usage | ||||
|         exit 1 | ||||
|     fi | ||||
|     if [[ ! "$TAG" =~ $SEMVER_REGEX ]] | ||||
|     then | ||||
|         printf "invalid semantic version: %s\n" "$TAG" | ||||
|         exit 2 | ||||
|     fi | ||||
|     if [[ "$( git tag --list "$TAG" )" ]] | ||||
|     then | ||||
|         printf "tag already exists: %s\n" "$TAG" | ||||
|         exit 2 | ||||
|     fi | ||||
|  | ||||
|     shift | ||||
|     commit="$1" | ||||
|     if [ -z "$commit" ] | ||||
|     then | ||||
|         echo "missing COMMIT_HASH" | ||||
|         usage | ||||
|         exit 1 | ||||
|     fi | ||||
|     # Verify rev is for a commit and unify hashes into a complete SHA1. | ||||
|     readonly SHA="$( git rev-parse --quiet --verify "${commit}^{commit}" )" | ||||
|     if [ -z "$SHA" ] | ||||
|     then | ||||
|         printf "invalid commit hash: %s\n" "$commit" | ||||
|         exit 2 | ||||
|     fi | ||||
|     if [ "$( git merge-base "$SHA" HEAD )" != "$SHA" ] | ||||
|     then | ||||
|         printf "commit '%s' not found on this branch\n" "$commit" | ||||
|         exit 2 | ||||
|     fi | ||||
| } | ||||
|  | ||||
| package_dirs() { | ||||
|     # Return a list of package directories in the form: | ||||
|     # | ||||
|     #  package/directory/a | ||||
|     #  package/directory/b | ||||
|     #  deeper/package/directory/a | ||||
|     #  ... | ||||
|     # | ||||
|     # Making sure to exclude any packages in the EXCLUDE_PACKAGES regexp. | ||||
|     find . -mindepth 2 -type f -name 'go.mod' -exec dirname {} \; \ | ||||
|         | grep -E -v "$EXCLUDE_PACKAGES" \ | ||||
|         | sed 's/^\.\///' \ | ||||
|         | sort | ||||
| } | ||||
|  | ||||
| git_tag() { | ||||
|     local tag="$1" | ||||
|     local commit="$2" | ||||
|  | ||||
|     git tag -a "$tag" -s -m "Version $tag" "$commit" | ||||
| } | ||||
|  | ||||
| previous_version() { | ||||
|     local current="$1" | ||||
|  | ||||
|     # Requires git > 2.0 | ||||
|     git tag -l --sort=v:refname \ | ||||
|         | grep -E "^${SEMVER_REGEX}$" \ | ||||
|         | grep -v "$current" \ | ||||
|         | tail -1 | ||||
| } | ||||
|  | ||||
| print_changes() { | ||||
|     local tag="$1" | ||||
|     local previous | ||||
|  | ||||
|     previous="$( previous_version "$tag" )" | ||||
|     if [ -n "$previous" ] | ||||
|     then | ||||
|         printf "\nRaw changes made between %s and %s\n" "$previous" "$tag" | ||||
|         printf "======================================\n" | ||||
|         git --no-pager log --pretty=oneline "${previous}..$tag" | ||||
|     fi | ||||
| } | ||||
|  | ||||
| main() { | ||||
|     local dir | ||||
|  | ||||
|     cmdline "$@" | ||||
|  | ||||
|     cd "$PROGDIR" || exit 3 | ||||
|  | ||||
|     # Create tag for root package. | ||||
|     git_tag "$TAG" "$SHA" | ||||
|     printf "created tag: %s\n" "$TAG" | ||||
|  | ||||
|     # Create tag for all sub-packages. | ||||
|     for dir in $( package_dirs ) | ||||
|     do | ||||
|         git_tag "${dir}/$TAG" "$SHA" | ||||
|         printf "created tag: %s\n" "${dir}/$TAG" | ||||
|     done | ||||
|  | ||||
|     print_changes "$TAG" | ||||
| } | ||||
| main "$@" | ||||
							
								
								
									
										1
									
								
								vendor/go.opentelemetry.io/otel/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/go.opentelemetry.io/otel/.gitignore
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -10,6 +10,7 @@ coverage.* | ||||
|  | ||||
| gen/ | ||||
|  | ||||
| /example/fib/fib | ||||
| /example/jaeger/jaeger | ||||
| /example/namedtracer/namedtracer | ||||
| /example/opencensus/opencensus | ||||
|   | ||||
							
								
								
									
										92
									
								
								vendor/go.opentelemetry.io/otel/CHANGELOG.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										92
									
								
								vendor/go.opentelemetry.io/otel/CHANGELOG.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -8,21 +8,97 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm | ||||
|  | ||||
| ## [Unreleased] | ||||
|  | ||||
| ### Added | ||||
| ## [1.0.1] - 2021-10-01 | ||||
|  | ||||
| ### Fixed | ||||
|  | ||||
| - json stdout exporter no longer crashes due to concurrency bug. (#2265) | ||||
|  | ||||
| ## [Metrics 0.24.0] - 2021-10-01 | ||||
|  | ||||
| ### Changed | ||||
|  | ||||
| - NoopMeterProvider is now private and NewNoopMeterProvider must be used to obtain a noopMeterProvider. (#2237) | ||||
| - The Metric SDK `Export()` function takes a new two-level reader interface for iterating over results one instrumentation library at a time. (#2197) | ||||
|   - The former `"go.opentelemetry.io/otel/sdk/export/metric".CheckpointSet` is renamed `Reader`. | ||||
|   - The new interface is named `"go.opentelemetry.io/otel/sdk/export/metric".InstrumentationLibraryReader`. | ||||
|  | ||||
| ## [1.0.0] - 2021-09-20 | ||||
|  | ||||
| This is the first stable release for the project. | ||||
| This release includes an API and SDK for the tracing signal that will comply with the stability guarantees defined by the projects [versioning policy](./VERSIONING.md). | ||||
|  | ||||
| ### Added | ||||
|  | ||||
| - OTLP trace exporter now sets the `SchemaURL` field in the exported telemetry if the Tracer has `WithSchemaURL` option. (#2242) | ||||
|  | ||||
| ### Fixed | ||||
|  | ||||
| - Slice-valued attributes can correctly be used as map keys. (#2223) | ||||
|  | ||||
| ### Removed | ||||
|  | ||||
| - Removed the `"go.opentelemetry.io/otel/exporters/zipkin".WithSDKOptions` function. (#2248) | ||||
| - Removed the deprecated package `go.opentelemetry.io/otel/oteltest`. (#2234) | ||||
| - Removed the deprecated package `go.opentelemetry.io/otel/bridge/opencensus/utils`. (#2233) | ||||
| - Removed deprecated functions, types, and methods from `go.opentelemetry.io/otel/attribute` package. | ||||
|   Use the typed functions and methods added to the package instead. (#2235) | ||||
|   - The `Key.Array` method is removed. | ||||
|   - The `Array` function is removed. | ||||
|   - The `Any` function is removed. | ||||
|   - The `ArrayValue` function is removed. | ||||
|   - The `AsArray` function is removed. | ||||
|  | ||||
| ## [1.0.0-RC3] - 2021-09-02 | ||||
|  | ||||
| ### Added | ||||
|  | ||||
| - Added `ErrorHandlerFunc` to use a function as an `"go.opentelemetry.io/otel".ErrorHandler`. (#2149) | ||||
| - Added `"go.opentelemetry.io/otel/trace".WithStackTrace` option to add a stack trace when using `span.RecordError` or when panic is handled in `span.End`. (#2163) | ||||
| - Added typed slice attribute types and functionality to the `go.opentelemetry.io/otel/attribute` package to replace the existing array type and functions. (#2162) | ||||
|   - `BoolSlice`, `IntSlice`, `Int64Slice`, `Float64Slice`, and `StringSlice` replace the use of the `Array` function in the package. | ||||
| - Added the `go.opentelemetry.io/otel/example/fib` example package. | ||||
|   Included is an example application that computes Fibonacci numbers. (#2203) | ||||
|  | ||||
| ### Changed | ||||
|  | ||||
| - Metric instruments have been renamed to match the (feature-frozen) metric API specification: | ||||
|   - ValueRecorder becomes Histogram | ||||
|   - ValueObserver becomes Gauge | ||||
|   - SumObserver becomes CounterObserver | ||||
|   - UpDownSumObserver becomes UpDownCounterObserver | ||||
|   The API exported from this project is still considered experimental. (#2202) | ||||
| - Metric SDK/API implementation type `InstrumentKind` moves into `sdkapi` sub-package. (#2091) | ||||
| - The Metrics SDK export record no longer contains a Resource pointer, the SDK `"go.opentelemetry.io/otel/sdk/trace/export/metric".Exporter.Export()` function for push-based exporters now takes a single Resource argument, pull-based exporters use `"go.opentelemetry.io/otel/sdk/metric/controller/basic".Controller.Resource()`. (#2120) | ||||
| - The JSON output of the `go.opentelemetry.io/otel/exporters/stdout/stdouttrace` is harmonized now such that the output is "plain" JSON objects after each other of the form `{ ... } { ... } { ... }`. Earlier the JSON objects describing a span were wrapped in a slice for each `Exporter.ExportSpans` call, like `[ { ... } ][ { ... } { ... } ]`. Outputting JSON object directly after each other is consistent with JSON loggers, and a bit easier to parse and read. (#2196) | ||||
| - Update the `NewTracerConfig`, `NewSpanStartConfig`, `NewSpanEndConfig`, and `NewEventConfig` function in the `go.opentelemetry.io/otel/trace` package to return their respective configurations as structs instead of pointers to the struct. (#2212) | ||||
|  | ||||
| ### Deprecated | ||||
|  | ||||
| - The `go.opentelemetry.io/otel/bridge/opencensus/utils` package is deprecated. | ||||
|   All functionality from this package now exists in the `go.opentelemetry.io/otel/bridge/opencensus` package. | ||||
|   The functions from that package should be used instead. (#2166) | ||||
| - The `"go.opentelemetry.io/otel/attribute".Array` function and the related `ARRAY` value type is deprecated. | ||||
|   Use the typed `*Slice` functions and types added to the package instead. (#2162) | ||||
| - The `"go.opentelemetry.io/otel/attribute".Any` function is deprecated. | ||||
|   Use the typed functions instead. (#2181) | ||||
| - The `go.opentelemetry.io/otel/oteltest` package is deprecated. | ||||
|   The `"go.opentelemetry.io/otel/sdk/trace/tracetest".SpanRecorder` can be registered with the default SDK (`go.opentelemetry.io/otel/sdk/trace`) as a `SpanProcessor` and used as a replacement for this deprecated package. (#2188) | ||||
|  | ||||
| ### Removed | ||||
|  | ||||
| - Removed metrics test package `go.opentelemetry.io/otel/sdk/export/metric/metrictest`. (#2105) | ||||
|  | ||||
| ### Fixed | ||||
|  | ||||
| ### Security | ||||
| - The `fromEnv` detector no longer throws an error when `OTEL_RESOURCE_ATTRIBUTES` environment variable is not set or empty. (#2138) | ||||
| - Setting the global `ErrorHandler` with `"go.opentelemetry.io/otel".SetErrorHandler` multiple times is now supported. (#2160, #2140) | ||||
| - The `"go.opentelemetry.io/otel/attribute".Any` function now supports `int32` values. (#2169) | ||||
| - Multiple calls to `"go.opentelemetry.io/otel/sdk/metric/controller/basic".WithResource()` are handled correctly, and when no resources are provided `"go.opentelemetry.io/otel/sdk/resource".Default()` is used. (#2120) | ||||
| - The `WithoutTimestamps` option for the `go.opentelemetry.io/otel/exporters/stdout/stdouttrace` exporter causes the exporter to correctly ommit timestamps. (#2195) | ||||
| - Fixed typos in resources.go. (#2201) | ||||
|  | ||||
| ## [v1.0.0-RC2] - 2021-07-26 | ||||
| ## [1.0.0-RC2] - 2021-07-26 | ||||
|  | ||||
| ### Added | ||||
|  | ||||
| @@ -34,12 +110,13 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm | ||||
| - Added a new `Link` type under the SDK `otel/sdk/trace` package that counts the number of attributes that were dropped for surpassing the `AttributePerLinkCountLimit` configured in the Span's `SpanLimits`. | ||||
|   This new type replaces the equal-named API `Link` type found in the `otel/trace` package for most usages within the SDK. | ||||
|   For example, instances of this type are now returned by the `Links()` function of `ReadOnlySpan`s provided in places like the `OnEnd` function of `SpanProcessor` implementations. (#2118) | ||||
| - Added the `SpanRecorder` type to the `go.opentelemetry.io/otel/skd/trace/tracetest` package. | ||||
|   This type can be used with the default SDK as a `SpanProcessor` during testing. (#2132) | ||||
|  | ||||
| ### Changed | ||||
|  | ||||
| - The `SpanModels` function is now exported from the `go.opentelemetry.io/otel/exporters/zipkin` package to convert OpenTelemetry spans into Zipkin model spans. (#2027) | ||||
| - Rename the `"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc".RetrySettings` to `RetryConfig`. (#2095) | ||||
| - Rename the `"go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp".RetrySettings` to `RetryConfig`. (#2095) | ||||
|  | ||||
| ### Deprecated | ||||
|  | ||||
| @@ -66,6 +143,7 @@ This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.htm | ||||
| - The OTel span status is correctly transformed into the OTLP status in the `go.opentelemetry.io/otel/exporters/otlp/otlptrace` package. | ||||
|   This fix will by default set the status to `Unset` if it is not explicitly set to `Ok` or `Error`. (#2099 #2102) | ||||
| - The `Inject` method for the `"go.opentelemetry.io/otel/propagation".TraceContext` type no longer injects empty `tracestate` values. (#2108) | ||||
| - Use `6831` as default Jaeger agent port instead of `6832`. (#2131) | ||||
|  | ||||
| ## [Experimental Metrics v0.22.0] - 2021-07-19 | ||||
|  | ||||
| @@ -1472,7 +1550,11 @@ It contains api and sdk for trace and meter. | ||||
| - CircleCI build CI manifest files. | ||||
| - CODEOWNERS file to track owners of this project. | ||||
|  | ||||
| [Unreleased]: https://github.com/open-telemetry/opentelemetry-go/compare/v1.0.0-RC2...HEAD | ||||
| [Unreleased]: https://github.com/open-telemetry/opentelemetry-go/compare/v1.0.1...HEAD | ||||
| [1.0.1]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.0.1 | ||||
| [Metrics 0.24.0]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/metric/v0.24.0 | ||||
| [1.0.0]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.0.0 | ||||
| [1.0.0-RC3]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.0.0-RC3 | ||||
| [1.0.0-RC2]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.0.0-RC2 | ||||
| [Experimental Metrics v0.22.0]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/metric/v0.22.0 | ||||
| [1.0.0-RC1]: https://github.com/open-telemetry/opentelemetry-go/releases/tag/v1.0.0-RC1 | ||||
|   | ||||
							
								
								
									
										44
									
								
								vendor/go.opentelemetry.io/otel/Makefile
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										44
									
								
								vendor/go.opentelemetry.io/otel/Makefile
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -40,8 +40,11 @@ $(TOOLS)/%: | $(TOOLS) | ||||
| 	cd $(TOOLS_MOD_DIR) && \ | ||||
| 	$(GO) build -o $@ $(PACKAGE) | ||||
|  | ||||
| SEMCONVGEN = $(TOOLS)/semconv-gen | ||||
| $(TOOLS)/semconv-gen: PACKAGE=go.opentelemetry.io/otel/$(TOOLS_MOD_DIR)/semconv-gen | ||||
| MULTIMOD = $(TOOLS)/multimod | ||||
| $(TOOLS)/multimod: PACKAGE=go.opentelemetry.io/build-tools/multimod | ||||
|  | ||||
| SEMCONVGEN = $(TOOLS)/semconvgen | ||||
| $(TOOLS)/semconvgen: PACKAGE=go.opentelemetry.io/build-tools/semconvgen | ||||
|  | ||||
| CROSSLINK = $(TOOLS)/crosslink | ||||
| $(TOOLS)/crosslink: PACKAGE=go.opentelemetry.io/otel/$(TOOLS_MOD_DIR)/crosslink | ||||
| @@ -50,16 +53,22 @@ GOLANGCI_LINT = $(TOOLS)/golangci-lint | ||||
| $(TOOLS)/golangci-lint: PACKAGE=github.com/golangci/golangci-lint/cmd/golangci-lint | ||||
|  | ||||
| MISSPELL = $(TOOLS)/misspell | ||||
| $(TOOLS)/misspell: PACKAGE= github.com/client9/misspell/cmd/misspell | ||||
| $(TOOLS)/misspell: PACKAGE=github.com/client9/misspell/cmd/misspell | ||||
|  | ||||
| GOCOVMERGE = $(TOOLS)/gocovmerge | ||||
| $(TOOLS)/gocovmerge: PACKAGE=github.com/wadey/gocovmerge | ||||
|  | ||||
| STRINGER = $(TOOLS)/stringer | ||||
| $(TOOLS)/stringer: PACKAGE=golang.org/x/tools/cmd/stringer | ||||
|  | ||||
| PORTO = $(TOOLS)/porto | ||||
| $(TOOLS)/porto: PACKAGE=github.com/jcchavezs/porto/cmd/porto | ||||
|  | ||||
| GOJQ = $(TOOLS)/gojq | ||||
| $(TOOLS)/gojq: PACKAGE=github.com/itchyny/gojq/cmd/gojq | ||||
|  | ||||
| .PHONY: tools | ||||
| tools: $(CROSSLINK) $(GOLANGCI_LINT) $(MISSPELL) $(STRINGER) $(TOOLS)/gojq $(SEMCONVGEN) | ||||
|  | ||||
| tools: $(CROSSLINK) $(GOLANGCI_LINT) $(MISSPELL) $(GOCOVMERGE) $(STRINGER) $(PORTO) $(GOJQ) $(SEMCONVGEN) $(MULTIMOD) | ||||
|  | ||||
| # Build | ||||
|  | ||||
| @@ -75,7 +84,8 @@ generate: $(STRINGER) | ||||
| 	set -e; for dir in $(ALL_GO_MOD_DIRS); do \ | ||||
| 	  echo "$(GO) generate $${dir}/..."; \ | ||||
| 	  (cd "$${dir}" && \ | ||||
| 	    PATH="$(TOOLS):$${PATH}" $(GO) generate ./...); \ | ||||
| 	    PATH="$(TOOLS):$${PATH}" $(GO) generate ./... && \ | ||||
| 		$(PORTO) -w .); \ | ||||
| 	done | ||||
|  | ||||
| build: generate | ||||
| @@ -111,19 +121,18 @@ test: | ||||
| COVERAGE_MODE    = atomic | ||||
| COVERAGE_PROFILE = coverage.out | ||||
| .PHONY: test-coverage | ||||
| test-coverage: | ||||
| test-coverage: | $(GOCOVMERGE) | ||||
| 	@set -e; \ | ||||
| 	printf "" > coverage.txt; \ | ||||
| 	for dir in $(ALL_COVERAGE_MOD_DIRS); do \ | ||||
| 	  echo "$(GO) test -coverpkg=./... -covermode=$(COVERAGE_MODE) -coverprofile="$(COVERAGE_PROFILE)" $${dir}/..."; \ | ||||
| 	  echo "$(GO) test -coverpkg=go.opentelemetry.io/otel/... -covermode=$(COVERAGE_MODE) -coverprofile="$(COVERAGE_PROFILE)" $${dir}/..."; \ | ||||
| 	  (cd "$${dir}" && \ | ||||
| 	    $(GO) list ./... \ | ||||
| 	    | grep -v third_party \ | ||||
| 	    | xargs $(GO) test -coverpkg=./... -covermode=$(COVERAGE_MODE) -coverprofile="$(COVERAGE_PROFILE)" && \ | ||||
| 	  $(GO) tool cover -html=coverage.out -o coverage.html); \ | ||||
| 	  [ -f "$${dir}/coverage.out" ] && cat "$${dir}/coverage.out" >> coverage.txt; \ | ||||
| 	done; \ | ||||
| 	sed -i.bak -e '2,$$ { /^mode: /d; }' coverage.txt | ||||
| 	$(GOCOVMERGE) $$(find . -name coverage.out) > coverage.txt | ||||
|  | ||||
| .PHONY: lint | ||||
| lint: misspell lint-modules | $(GOLANGCI_LINT) | ||||
| @@ -134,6 +143,10 @@ lint: misspell lint-modules | $(GOLANGCI_LINT) | ||||
| 	    $(GOLANGCI_LINT) run); \ | ||||
| 	done | ||||
|  | ||||
| .PHONY: vanity-import-check | ||||
| vanity-import-check: | $(PORTO) | ||||
| 	$(PORTO) -l . | ||||
|  | ||||
| .PHONY: misspell | ||||
| misspell: | $(MISSPELL) | ||||
| 	$(MISSPELL) -w $(ALL_DOCS) | ||||
| @@ -181,3 +194,14 @@ check-clean-work-tree: | ||||
| 	  git status; \ | ||||
| 	  exit 1; \ | ||||
| 	fi | ||||
|  | ||||
| .PHONY: prerelease | ||||
| prerelease: | $(MULTIMOD) | ||||
| 	@[ "${MODSET}" ] || ( echo ">> env var MODSET is not set"; exit 1 ) | ||||
| 	$(MULTIMOD) verify && $(MULTIMOD) prerelease -m ${MODSET} | ||||
|  | ||||
| COMMIT ?= "HEAD" | ||||
| .PHONY: add-tags | ||||
| add-tags: | $(MULTIMOD) | ||||
| 	@[ "${MODSET}" ] || ( echo ">> env var MODSET is not set"; exit 1 ) | ||||
| 	$(MULTIMOD) verify && $(MULTIMOD) tag -m ${MODSET} -c ${COMMIT} | ||||
|   | ||||
							
								
								
									
										14
									
								
								vendor/go.opentelemetry.io/otel/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								vendor/go.opentelemetry.io/otel/README.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -11,15 +11,13 @@ It provides a set of APIs to directly measure performance and behavior of your s | ||||
|  | ||||
| ## Project Status | ||||
|  | ||||
| | Signal  | Status                 | Project                                                     | | ||||
| | ------- | ---------------------- | ----------------------------------------------------------- | | ||||
| | Traces  | Release Candidate      | [1.0.0](https://github.com/orgs/open-telemetry/projects/15) | | ||||
| | Metrics | Development paused [1] | N/A                                                         | | ||||
| | Logs    | Frozen [2]             | N/A                                                         | | ||||
| | Signal  | Status     | Project | | ||||
| | ------- | ---------- | ------- | | ||||
| | Traces  | Stable     | N/A     | | ||||
| | Metrics | Alpha      | N/A     | | ||||
| | Logs    | Frozen [1] | N/A     | | ||||
|  | ||||
| - [1]: The development of the metrics API and SDK has paused due to limited development resources, prioritization of a stable Traces release, and instability of the official overall design from the OpenTelemetry specification. | ||||
|    Pull Requests for metrics related issues are not being accepted currently outside of security vulnerability mitigations. | ||||
| - [2]: The Logs signal development is halted for this project while we develop both Traces and Metrics. | ||||
| - [1]: The Logs signal development is halted for this project while we develop both Traces and Metrics. | ||||
|    No Logs Pull Requests are currently being accepted. | ||||
|  | ||||
| Progress and status specific to this repository is tracked in our local | ||||
|   | ||||
							
								
								
									
										35
									
								
								vendor/go.opentelemetry.io/otel/RELEASING.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										35
									
								
								vendor/go.opentelemetry.io/otel/RELEASING.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -3,8 +3,8 @@ | ||||
| ## Semantic Convention Generation | ||||
|  | ||||
| If a new version of the OpenTelemetry Specification has been released it will be necessary to generate a new | ||||
| semantic convention package from the YAML definitions in the specification repository. There is a utility in | ||||
| `internal/tools/semconv-gen` that can be used to generate the a package with the name matching the specification | ||||
| semantic convention package from the YAML definitions in the specification repository. There is a `semconvgen` utility | ||||
| installed by `make tools` that can be used to generate the a package with the name matching the specification | ||||
| version number under the `semconv` package. This will ideally be done soon after the specification release is | ||||
| tagged. Make sure that the specification repo contains a checkout of the the latest tagged release so that the | ||||
| generated files match the released semantic conventions. | ||||
| @@ -12,9 +12,8 @@ generated files match the released semantic conventions. | ||||
| There are currently two categories of semantic conventions that must be generated, `resource` and `trace`. | ||||
|  | ||||
| ``` | ||||
| cd internal/tools/semconv-gen | ||||
| go run generator.go -i /path/to/specification/repo/semantic_conventions/resource | ||||
| go run generator.go -i /path/to/specification/repo/semantic_conventions/trace | ||||
| .tools/semconvgen -i /path/to/specification/repo/semantic_conventions/resource -t semconv/template.j2 | ||||
| .tools/semconvgen -i /path/to/specification/repo/semantic_conventions/trace -t semconv/template.j2 | ||||
| ``` | ||||
|  | ||||
| Using default values for all options other than `input` will result in using the `template.j2` template to | ||||
| @@ -35,21 +34,30 @@ pipeline if you like living on the edge. | ||||
|  | ||||
| ## Pre-Release | ||||
|  | ||||
| First, decide which module sets will be released and update their versions | ||||
| in `versions.yaml`.  Commit this change to a new branch. | ||||
|  | ||||
| Update go.mod for submodules to depend on the new release which will happen in the next step. | ||||
|  | ||||
| 1. Run the pre-release script. It creates a branch `pre_release_<new tag>` that will contain all release changes. | ||||
| 1. Run the `prerelease` make target. It creates a branch | ||||
|     `prerelease_<module set>_<new tag>` that will contain all release changes. | ||||
|  | ||||
|     ``` | ||||
|     ./pre_release.sh -t <new tag> | ||||
|     make prerelease MODSET=<module set> | ||||
|     ``` | ||||
|  | ||||
| 2. Verify the changes. | ||||
|  | ||||
|     ``` | ||||
|     git diff main | ||||
|     git diff ...prerelease_<module set>_<new tag> | ||||
|     ``` | ||||
|  | ||||
|     This should have changed the version for all modules to be `<new tag>`. | ||||
|     If these changes look correct, merge them into your pre-release branch: | ||||
|  | ||||
|     ```go | ||||
|     git merge prerelease_<module set>_<new tag> | ||||
|     ``` | ||||
|  | ||||
| 3. Update the [Changelog](./CHANGELOG.md). | ||||
|    - Make sure all relevant changes for this release are included and are in language that non-contributors to the project can understand. | ||||
| @@ -70,18 +78,23 @@ Update go.mod for submodules to depend on the new release which will happen in t | ||||
| Once the Pull Request with all the version changes has been approved and merged it is time to tag the merged commit. | ||||
|  | ||||
| ***IMPORTANT***: It is critical you use the same tag that you used in the Pre-Release step! | ||||
| Failure to do so will leave things in a broken state. | ||||
| Failure to do so will leave things in a broken state. As long as you do not | ||||
| change `versions.yaml` between pre-release and this step, things should be fine. | ||||
|  | ||||
| ***IMPORTANT***: [There is currently no way to remove an incorrectly tagged version of a Go module](https://github.com/golang/go/issues/34189). | ||||
| It is critical you make sure the version you push upstream is correct. | ||||
| [Failure to do so will lead to minor emergencies and tough to work around](https://github.com/open-telemetry/opentelemetry-go/issues/331). | ||||
|  | ||||
| 1. Run the tag.sh script using the `<commit-hash>` of the commit on the main branch for the merged Pull Request. | ||||
| 1. For each module set that will be released, run the `add-tags` make target | ||||
|     using the `<commit-hash>` of the commit on the main branch for the merged Pull Request. | ||||
|  | ||||
|     ``` | ||||
|     ./tag.sh <new tag> <commit-hash> | ||||
|     make add-tags MODSET=<module set> COMMIT=<commit hash> | ||||
|     ``` | ||||
|  | ||||
|     It should only be necessary to provide an explicit `COMMIT` value if the | ||||
|     current `HEAD` of your working directory is not the correct commit. | ||||
|  | ||||
| 2. Push tags to the upstream remote (not your fork: `github.com/open-telemetry/opentelemetry-go.git`). | ||||
|     Make sure you push all sub-modules as well. | ||||
|  | ||||
|   | ||||
							
								
								
									
										28
									
								
								vendor/go.opentelemetry.io/otel/VERSIONING.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										28
									
								
								vendor/go.opentelemetry.io/otel/VERSIONING.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -150,10 +150,10 @@ The `otel` package is refactored to remove its dependencies on `otel/metric` so | ||||
| it can be released as stable as well. With that done the following release | ||||
| candidates are made: | ||||
|  | ||||
| * `otel`: `v1.0.0-rc.1` | ||||
| * `otel/trace`: `v1.0.0-rc.1` | ||||
| * `otel/baggage`: `v1.0.0-rc.1` | ||||
| * `otel/sdk/trace`: `v1.0.0-rc.1` | ||||
| * `otel`: `v1.0.0-RC1` | ||||
| * `otel/trace`: `v1.0.0-RC1` | ||||
| * `otel/baggage`: `v1.0.0-RC1` | ||||
| * `otel/sdk/trace`: `v1.0.0-RC1` | ||||
|  | ||||
| The `otel/metric` and `otel/sdk/metric` modules remain at `v0.14.0`. | ||||
|  | ||||
| @@ -161,10 +161,10 @@ A few minor issues are discovered in the `otel/trace` package. These issues are | ||||
| resolved with some minor, but backwards incompatible, changes and are released | ||||
| as a second release candidate: | ||||
|  | ||||
| * `otel`: `v1.0.0-rc.2` | ||||
| * `otel/trace`: `v1.0.0-rc.2` | ||||
| * `otel/baggage`: `v1.0.0-rc.2` | ||||
| * `otel/sdk/trace`: `v1.0.0-rc.2` | ||||
| * `otel`: `v1.0.0-RC2` | ||||
| * `otel/trace`: `v1.0.0-RC2` | ||||
| * `otel/baggage`: `v1.0.0-RC2` | ||||
| * `otel/sdk/trace`: `v1.0.0-RC2` | ||||
|  | ||||
| Notice that all module version numbers are incremented to adhere to our | ||||
| versioning policy. | ||||
| @@ -205,12 +205,12 @@ As we progress, the `otel/metric` and `otel/sdk/metric` packages have reached a | ||||
| point where they should be evaluated for stability. The `otel` module is | ||||
| reintegrated with the `otel/metric` package and the following release is made: | ||||
|  | ||||
| * `otel`: `v1.1.0-rc.1` | ||||
| * `otel/trace`: `v1.1.0-rc.1` | ||||
| * `otel/metric`: `v1.1.0-rc.1` | ||||
| * `otel/baggage`: `v1.1.0-rc.1` | ||||
| * `otel/sdk/trace`: `v1.1.0-rc.1` | ||||
| * `otel/sdk/metric`: `v1.1.0-rc.1` | ||||
| * `otel`: `v1.1.0-RC1` | ||||
| * `otel/trace`: `v1.1.0-RC1` | ||||
| * `otel/metric`: `v1.1.0-RC1` | ||||
| * `otel/baggage`: `v1.1.0-RC1` | ||||
| * `otel/sdk/trace`: `v1.1.0-RC1` | ||||
| * `otel/sdk/metric`: `v1.1.0-RC1` | ||||
|  | ||||
| All the modules are evaluated and determined to a viable stable release. They | ||||
| are then released as version `v1.1.0` (the minor version is incremented to | ||||
|   | ||||
							
								
								
									
										5
									
								
								vendor/go.opentelemetry.io/otel/attribute/doc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/go.opentelemetry.io/otel/attribute/doc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -12,8 +12,5 @@ | ||||
| // See the License for the specific language governing permissions and | ||||
| // limitations under the License. | ||||
|  | ||||
| // package attribute provides key and value attributes. | ||||
| // | ||||
| // This package is currently in a Release Candidate phase. Backwards incompatible changes | ||||
| // may be introduced prior to v1.0.0, but we believe the current API is ready to stabilize. | ||||
| // Package attribute provides key and value attributes. | ||||
| package attribute // import "go.opentelemetry.io/otel/attribute" | ||||
|   | ||||
							
								
								
									
										140
									
								
								vendor/go.opentelemetry.io/otel/attribute/key.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										140
									
								
								vendor/go.opentelemetry.io/otel/attribute/key.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -20,10 +20,8 @@ type Key string | ||||
|  | ||||
| // Bool creates a KeyValue instance with a BOOL Value. | ||||
| // | ||||
| // If creating both key and a bool value at the same time, then | ||||
| // instead of calling Key(name).Bool(value) consider using a | ||||
| // convenience function provided by the api/key package - | ||||
| // key.Bool(name, value). | ||||
| // If creating both a key and value at the same time, use the provided | ||||
| // convenience function instead -- Bool(name, value). | ||||
| func (k Key) Bool(v bool) KeyValue { | ||||
| 	return KeyValue{ | ||||
| 		Key:   k, | ||||
| @@ -31,51 +29,21 @@ func (k Key) Bool(v bool) KeyValue { | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // Int64 creates a KeyValue instance with an INT64 Value. | ||||
| // BoolSlice creates a KeyValue instance with a BOOLSLICE Value. | ||||
| // | ||||
| // If creating both key and an int64 value at the same time, then | ||||
| // instead of calling Key(name).Int64(value) consider using a | ||||
| // convenience function provided by the api/key package - | ||||
| // key.Int64(name, value). | ||||
| func (k Key) Int64(v int64) KeyValue { | ||||
| // If creating both a key and value at the same time, use the provided | ||||
| // convenience function instead -- BoolSlice(name, value). | ||||
| func (k Key) BoolSlice(v []bool) KeyValue { | ||||
| 	return KeyValue{ | ||||
| 		Key:   k, | ||||
| 		Value: Int64Value(v), | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // Float64 creates a KeyValue instance with a FLOAT64 Value. | ||||
| // | ||||
| // If creating both key and a float64 value at the same time, then | ||||
| // instead of calling Key(name).Float64(value) consider using a | ||||
| // convenience function provided by the api/key package - | ||||
| // key.Float64(name, value). | ||||
| func (k Key) Float64(v float64) KeyValue { | ||||
| 	return KeyValue{ | ||||
| 		Key:   k, | ||||
| 		Value: Float64Value(v), | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // String creates a KeyValue instance with a STRING Value. | ||||
| // | ||||
| // If creating both key and a string value at the same time, then | ||||
| // instead of calling Key(name).String(value) consider using a | ||||
| // convenience function provided by the api/key package - | ||||
| // key.String(name, value). | ||||
| func (k Key) String(v string) KeyValue { | ||||
| 	return KeyValue{ | ||||
| 		Key:   k, | ||||
| 		Value: StringValue(v), | ||||
| 		Value: BoolSliceValue(v), | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // Int creates a KeyValue instance with an INT64 Value. | ||||
| // | ||||
| // If creating both key and an int value at the same time, then | ||||
| // instead of calling Key(name).Int(value) consider using a | ||||
| // convenience function provided by the api/key package - | ||||
| // key.Int(name, value). | ||||
| // If creating both a key and value at the same time, use the provided | ||||
| // convenience function instead -- Int(name, value). | ||||
| func (k Key) Int(v int) KeyValue { | ||||
| 	return KeyValue{ | ||||
| 		Key:   k, | ||||
| @@ -83,20 +51,84 @@ func (k Key) Int(v int) KeyValue { | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // IntSlice creates a KeyValue instance with an INT64SLICE Value. | ||||
| // | ||||
| // If creating both a key and value at the same time, use the provided | ||||
| // convenience function instead -- IntSlice(name, value). | ||||
| func (k Key) IntSlice(v []int) KeyValue { | ||||
| 	return KeyValue{ | ||||
| 		Key:   k, | ||||
| 		Value: IntSliceValue(v), | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // Int64 creates a KeyValue instance with an INT64 Value. | ||||
| // | ||||
| // If creating both a key and value at the same time, use the provided | ||||
| // convenience function instead -- Int64(name, value). | ||||
| func (k Key) Int64(v int64) KeyValue { | ||||
| 	return KeyValue{ | ||||
| 		Key:   k, | ||||
| 		Value: Int64Value(v), | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // Int64Slice creates a KeyValue instance with an INT64SLICE Value. | ||||
| // | ||||
| // If creating both a key and value at the same time, use the provided | ||||
| // convenience function instead -- Int64Slice(name, value). | ||||
| func (k Key) Int64Slice(v []int64) KeyValue { | ||||
| 	return KeyValue{ | ||||
| 		Key:   k, | ||||
| 		Value: Int64SliceValue(v), | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // Float64 creates a KeyValue instance with a FLOAT64 Value. | ||||
| // | ||||
| // If creating both a key and value at the same time, use the provided | ||||
| // convenience function instead -- Float64(name, value). | ||||
| func (k Key) Float64(v float64) KeyValue { | ||||
| 	return KeyValue{ | ||||
| 		Key:   k, | ||||
| 		Value: Float64Value(v), | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // Float64Slice creates a KeyValue instance with a FLOAT64SLICE Value. | ||||
| // | ||||
| // If creating both a key and value at the same time, use the provided | ||||
| // convenience function instead -- Float64(name, value). | ||||
| func (k Key) Float64Slice(v []float64) KeyValue { | ||||
| 	return KeyValue{ | ||||
| 		Key:   k, | ||||
| 		Value: Float64SliceValue(v), | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // String creates a KeyValue instance with a STRING Value. | ||||
| // | ||||
| // If creating both a key and value at the same time, use the provided | ||||
| // convenience function instead -- String(name, value). | ||||
| func (k Key) String(v string) KeyValue { | ||||
| 	return KeyValue{ | ||||
| 		Key:   k, | ||||
| 		Value: StringValue(v), | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // StringSlice creates a KeyValue instance with a STRINGSLICE Value. | ||||
| // | ||||
| // If creating both a key and value at the same time, use the provided | ||||
| // convenience function instead -- StringSlice(name, value). | ||||
| func (k Key) StringSlice(v []string) KeyValue { | ||||
| 	return KeyValue{ | ||||
| 		Key:   k, | ||||
| 		Value: StringSliceValue(v), | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // Defined returns true for non-empty keys. | ||||
| func (k Key) Defined() bool { | ||||
| 	return len(k) != 0 | ||||
| } | ||||
|  | ||||
| // Array creates a KeyValue instance with a ARRAY Value. | ||||
| // | ||||
| // If creating both key and a array value at the same time, then | ||||
| // instead of calling Key(name).String(value) consider using a | ||||
| // convenience function provided by the api/key package - | ||||
| // key.Array(name, value). | ||||
| func (k Key) Array(v interface{}) KeyValue { | ||||
| 	return KeyValue{ | ||||
| 		Key:   k, | ||||
| 		Value: ArrayValue(v), | ||||
| 	} | ||||
| } | ||||
|   | ||||
							
								
								
									
										90
									
								
								vendor/go.opentelemetry.io/otel/attribute/kv.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										90
									
								
								vendor/go.opentelemetry.io/otel/attribute/kv.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -15,9 +15,7 @@ | ||||
| package attribute // import "go.opentelemetry.io/otel/attribute" | ||||
|  | ||||
| import ( | ||||
| 	"encoding/json" | ||||
| 	"fmt" | ||||
| 	"reflect" | ||||
| ) | ||||
|  | ||||
| // KeyValue holds a key and value pair. | ||||
| @@ -31,78 +29,58 @@ func (kv KeyValue) Valid() bool { | ||||
| 	return kv.Key != "" && kv.Value.Type() != INVALID | ||||
| } | ||||
|  | ||||
| // Bool creates a new key-value pair with a passed name and a bool | ||||
| // value. | ||||
| // Bool creates a KeyValue with a BOOL Value type. | ||||
| func Bool(k string, v bool) KeyValue { | ||||
| 	return Key(k).Bool(v) | ||||
| } | ||||
|  | ||||
| // Int64 creates a new key-value pair with a passed name and an int64 | ||||
| // value. | ||||
| // BoolSlice creates a KeyValue with a BOOLSLICE Value type. | ||||
| func BoolSlice(k string, v []bool) KeyValue { | ||||
| 	return Key(k).BoolSlice(v) | ||||
| } | ||||
|  | ||||
| // Int creates a KeyValue with an INT64 Value type. | ||||
| func Int(k string, v int) KeyValue { | ||||
| 	return Key(k).Int(v) | ||||
| } | ||||
|  | ||||
| // IntSlice creates a KeyValue with an INT64SLICE Value type. | ||||
| func IntSlice(k string, v []int) KeyValue { | ||||
| 	return Key(k).IntSlice(v) | ||||
| } | ||||
|  | ||||
| // Int64 creates a KeyValue with an INT64 Value type. | ||||
| func Int64(k string, v int64) KeyValue { | ||||
| 	return Key(k).Int64(v) | ||||
| } | ||||
|  | ||||
| // Float64 creates a new key-value pair with a passed name and a float64 | ||||
| // value. | ||||
| // Int64Slice creates a KeyValue with an INT64SLICE Value type. | ||||
| func Int64Slice(k string, v []int64) KeyValue { | ||||
| 	return Key(k).Int64Slice(v) | ||||
| } | ||||
|  | ||||
| // Float64 creates a KeyValue with a FLOAT64 Value type. | ||||
| func Float64(k string, v float64) KeyValue { | ||||
| 	return Key(k).Float64(v) | ||||
| } | ||||
|  | ||||
| // String creates a new key-value pair with a passed name and a string | ||||
| // value. | ||||
| // Float64Slice creates a KeyValue with a FLOAT64SLICE Value type. | ||||
| func Float64Slice(k string, v []float64) KeyValue { | ||||
| 	return Key(k).Float64Slice(v) | ||||
| } | ||||
|  | ||||
| // String creates a KeyValue with a STRING Value type. | ||||
| func String(k, v string) KeyValue { | ||||
| 	return Key(k).String(v) | ||||
| } | ||||
|  | ||||
| // StringSlice creates a KeyValue with a STRINGSLICE Value type. | ||||
| func StringSlice(k string, v []string) KeyValue { | ||||
| 	return Key(k).StringSlice(v) | ||||
| } | ||||
|  | ||||
| // Stringer creates a new key-value pair with a passed name and a string | ||||
| // value generated by the passed Stringer interface. | ||||
| func Stringer(k string, v fmt.Stringer) KeyValue { | ||||
| 	return Key(k).String(v.String()) | ||||
| } | ||||
|  | ||||
| // Int creates a new key-value pair instance with a passed name and | ||||
| // either an int32 or an int64 value, depending on whether the int | ||||
| // type is 32 or 64 bits wide. | ||||
| func Int(k string, v int) KeyValue { | ||||
| 	return Key(k).Int(v) | ||||
| } | ||||
|  | ||||
| // Array creates a new key-value pair with a passed name and a array. | ||||
| // Only arrays of primitive type are supported. | ||||
| func Array(k string, v interface{}) KeyValue { | ||||
| 	return Key(k).Array(v) | ||||
| } | ||||
|  | ||||
| // Any creates a new key-value pair instance with a passed name and | ||||
| // automatic type inference. This is slower, and not type-safe. | ||||
| func Any(k string, value interface{}) KeyValue { | ||||
| 	if value == nil { | ||||
| 		return String(k, "<nil>") | ||||
| 	} | ||||
|  | ||||
| 	if stringer, ok := value.(fmt.Stringer); ok { | ||||
| 		return String(k, stringer.String()) | ||||
| 	} | ||||
|  | ||||
| 	rv := reflect.ValueOf(value) | ||||
|  | ||||
| 	switch rv.Kind() { | ||||
| 	case reflect.Array, reflect.Slice: | ||||
| 		return Array(k, value) | ||||
| 	case reflect.Bool: | ||||
| 		return Bool(k, rv.Bool()) | ||||
| 	case reflect.Int, reflect.Int8, reflect.Int16: | ||||
| 		return Int(k, int(rv.Int())) | ||||
| 	case reflect.Int64: | ||||
| 		return Int64(k, rv.Int()) | ||||
| 	case reflect.Float64: | ||||
| 		return Float64(k, rv.Float()) | ||||
| 	case reflect.String: | ||||
| 		return String(k, rv.String()) | ||||
| 	} | ||||
| 	if b, err := json.Marshal(value); b != nil && err == nil { | ||||
| 		return String(k, string(b)) | ||||
| 	} | ||||
| 	return String(k, fmt.Sprint(value)) | ||||
| } | ||||
|   | ||||
							
								
								
									
										11
									
								
								vendor/go.opentelemetry.io/otel/attribute/type_string.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								vendor/go.opentelemetry.io/otel/attribute/type_string.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,6 +1,6 @@ | ||||
| // Code generated by "stringer -type=Type"; DO NOT EDIT. | ||||
|  | ||||
| package attribute | ||||
| package attribute // import "go.opentelemetry.io/otel/attribute" | ||||
|  | ||||
| import "strconv" | ||||
|  | ||||
| @@ -13,12 +13,15 @@ func _() { | ||||
| 	_ = x[INT64-2] | ||||
| 	_ = x[FLOAT64-3] | ||||
| 	_ = x[STRING-4] | ||||
| 	_ = x[ARRAY-5] | ||||
| 	_ = x[BOOLSLICE-5] | ||||
| 	_ = x[INT64SLICE-6] | ||||
| 	_ = x[FLOAT64SLICE-7] | ||||
| 	_ = x[STRINGSLICE-8] | ||||
| } | ||||
|  | ||||
| const _Type_name = "INVALIDBOOLINT64FLOAT64STRINGARRAY" | ||||
| const _Type_name = "INVALIDBOOLINT64FLOAT64STRINGBOOLSLICEINT64SLICEFLOAT64SLICESTRINGSLICE" | ||||
|  | ||||
| var _Type_index = [...]uint8{0, 7, 11, 16, 23, 29, 34} | ||||
| var _Type_index = [...]uint8{0, 7, 11, 16, 23, 29, 38, 48, 60, 71} | ||||
|  | ||||
| func (i Type) String() string { | ||||
| 	if i < 0 || i >= Type(len(_Type_index)-1) { | ||||
|   | ||||
							
								
								
									
										159
									
								
								vendor/go.opentelemetry.io/otel/attribute/value.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										159
									
								
								vendor/go.opentelemetry.io/otel/attribute/value.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -17,7 +17,6 @@ package attribute // import "go.opentelemetry.io/otel/attribute" | ||||
| import ( | ||||
| 	"encoding/json" | ||||
| 	"fmt" | ||||
| 	"reflect" | ||||
| 	"strconv" | ||||
|  | ||||
| 	"go.opentelemetry.io/otel/internal" | ||||
| @@ -33,9 +32,7 @@ type Value struct { | ||||
| 	vtype    Type | ||||
| 	numeric  uint64 | ||||
| 	stringly string | ||||
| 	// TODO Lazy value type? | ||||
|  | ||||
| 	array interface{} | ||||
| 	slice    interface{} | ||||
| } | ||||
|  | ||||
| const ( | ||||
| @@ -49,10 +46,14 @@ const ( | ||||
| 	FLOAT64 | ||||
| 	// STRING is a string Type Value. | ||||
| 	STRING | ||||
| 	// ARRAY is an array Type Value used to store 1-dimensional slices or | ||||
| 	// arrays of bool, int, int32, int64, uint, uint32, uint64, float, | ||||
| 	// float32, float64, or string types. | ||||
| 	ARRAY | ||||
| 	// BOOLSLICE is a slice of booleans Type Value. | ||||
| 	BOOLSLICE | ||||
| 	// INT64SLICE is a slice of 64-bit signed integral numbers Type Value. | ||||
| 	INT64SLICE | ||||
| 	// FLOAT64SLICE is a slice of 64-bit floating point numbers Type Value. | ||||
| 	FLOAT64SLICE | ||||
| 	// STRINGSLICE is a slice of strings Type Value. | ||||
| 	STRINGSLICE | ||||
| ) | ||||
|  | ||||
| // BoolValue creates a BOOL Value. | ||||
| @@ -63,6 +64,33 @@ func BoolValue(v bool) Value { | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // BoolSliceValue creates a BOOLSLICE Value. | ||||
| func BoolSliceValue(v []bool) Value { | ||||
| 	cp := make([]bool, len(v)) | ||||
| 	copy(cp, v) | ||||
| 	return Value{ | ||||
| 		vtype: BOOLSLICE, | ||||
| 		slice: &cp, | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // IntValue creates an INT64 Value. | ||||
| func IntValue(v int) Value { | ||||
| 	return Int64Value(int64(v)) | ||||
| } | ||||
|  | ||||
| // IntSliceValue creates an INTSLICE Value. | ||||
| func IntSliceValue(v []int) Value { | ||||
| 	cp := make([]int64, 0, len(v)) | ||||
| 	for _, i := range v { | ||||
| 		cp = append(cp, int64(i)) | ||||
| 	} | ||||
| 	return Value{ | ||||
| 		vtype: INT64SLICE, | ||||
| 		slice: &cp, | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // Int64Value creates an INT64 Value. | ||||
| func Int64Value(v int64) Value { | ||||
| 	return Value{ | ||||
| @@ -71,6 +99,16 @@ func Int64Value(v int64) Value { | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // Int64SliceValue creates an INT64SLICE Value. | ||||
| func Int64SliceValue(v []int64) Value { | ||||
| 	cp := make([]int64, len(v)) | ||||
| 	copy(cp, v) | ||||
| 	return Value{ | ||||
| 		vtype: INT64SLICE, | ||||
| 		slice: &cp, | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // Float64Value creates a FLOAT64 Value. | ||||
| func Float64Value(v float64) Value { | ||||
| 	return Value{ | ||||
| @@ -79,6 +117,16 @@ func Float64Value(v float64) Value { | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // Float64SliceValue creates a FLOAT64SLICE Value. | ||||
| func Float64SliceValue(v []float64) Value { | ||||
| 	cp := make([]float64, len(v)) | ||||
| 	copy(cp, v) | ||||
| 	return Value{ | ||||
| 		vtype: FLOAT64SLICE, | ||||
| 		slice: &cp, | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // StringValue creates a STRING Value. | ||||
| func StringValue(v string) Value { | ||||
| 	return Value{ | ||||
| @@ -87,38 +135,14 @@ func StringValue(v string) Value { | ||||
| 	} | ||||
| } | ||||
|  | ||||
| // IntValue creates an INT64 Value. | ||||
| func IntValue(v int) Value { | ||||
| 	return Int64Value(int64(v)) | ||||
| } | ||||
|  | ||||
| // ArrayValue creates an ARRAY value from an array or slice. | ||||
| // Only arrays or slices of bool, int, int64, float, float64, or string types are allowed. | ||||
| // Specifically, arrays  and slices can not contain other arrays, slices, structs, or non-standard | ||||
| // types. If the passed value is not an array or slice of these types an | ||||
| // INVALID value is returned. | ||||
| func ArrayValue(v interface{}) Value { | ||||
| 	switch reflect.TypeOf(v).Kind() { | ||||
| 	case reflect.Array, reflect.Slice: | ||||
| 		// get array type regardless of dimensions | ||||
| 		typ := reflect.TypeOf(v).Elem() | ||||
| 		kind := typ.Kind() | ||||
| 		switch kind { | ||||
| 		case reflect.Bool, reflect.Int, reflect.Int64, | ||||
| 			reflect.Float64, reflect.String: | ||||
| 			val := reflect.ValueOf(v) | ||||
| 			length := val.Len() | ||||
| 			frozen := reflect.Indirect(reflect.New(reflect.ArrayOf(length, typ))) | ||||
| 			reflect.Copy(frozen, val) | ||||
| 			return Value{ | ||||
| 				vtype: ARRAY, | ||||
| 				array: frozen.Interface(), | ||||
| 			} | ||||
| 		default: | ||||
| 			return Value{vtype: INVALID} | ||||
| 		} | ||||
| // StringSliceValue creates a STRINGSLICE Value. | ||||
| func StringSliceValue(v []string) Value { | ||||
| 	cp := make([]string, len(v)) | ||||
| 	copy(cp, v) | ||||
| 	return Value{ | ||||
| 		vtype: STRINGSLICE, | ||||
| 		slice: &cp, | ||||
| 	} | ||||
| 	return Value{vtype: INVALID} | ||||
| } | ||||
|  | ||||
| // Type returns a type of the Value. | ||||
| @@ -132,27 +156,58 @@ func (v Value) AsBool() bool { | ||||
| 	return internal.RawToBool(v.numeric) | ||||
| } | ||||
|  | ||||
| // AsBoolSlice returns the []bool value. Make sure that the Value's type is | ||||
| // BOOLSLICE. | ||||
| func (v Value) AsBoolSlice() []bool { | ||||
| 	if s, ok := v.slice.(*[]bool); ok { | ||||
| 		return *s | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // AsInt64 returns the int64 value. Make sure that the Value's type is | ||||
| // INT64. | ||||
| func (v Value) AsInt64() int64 { | ||||
| 	return internal.RawToInt64(v.numeric) | ||||
| } | ||||
|  | ||||
| // AsInt64Slice returns the []int64 value. Make sure that the Value's type is | ||||
| // INT64SLICE. | ||||
| func (v Value) AsInt64Slice() []int64 { | ||||
| 	if s, ok := v.slice.(*[]int64); ok { | ||||
| 		return *s | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // AsFloat64 returns the float64 value. Make sure that the Value's | ||||
| // type is FLOAT64. | ||||
| func (v Value) AsFloat64() float64 { | ||||
| 	return internal.RawToFloat64(v.numeric) | ||||
| } | ||||
|  | ||||
| // AsFloat64Slice returns the []float64 value. Make sure that the Value's type is | ||||
| // INT64SLICE. | ||||
| func (v Value) AsFloat64Slice() []float64 { | ||||
| 	if s, ok := v.slice.(*[]float64); ok { | ||||
| 		return *s | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // AsString returns the string value. Make sure that the Value's type | ||||
| // is STRING. | ||||
| func (v Value) AsString() string { | ||||
| 	return v.stringly | ||||
| } | ||||
|  | ||||
| // AsArray returns the array Value as an interface{}. | ||||
| func (v Value) AsArray() interface{} { | ||||
| 	return v.array | ||||
| // AsStringSlice returns the []string value. Make sure that the Value's type is | ||||
| // INT64SLICE. | ||||
| func (v Value) AsStringSlice() []string { | ||||
| 	if s, ok := v.slice.(*[]string); ok { | ||||
| 		return *s | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| type unknownValueType struct{} | ||||
| @@ -160,16 +215,22 @@ type unknownValueType struct{} | ||||
| // AsInterface returns Value's data as interface{}. | ||||
| func (v Value) AsInterface() interface{} { | ||||
| 	switch v.Type() { | ||||
| 	case ARRAY: | ||||
| 		return v.AsArray() | ||||
| 	case BOOL: | ||||
| 		return v.AsBool() | ||||
| 	case BOOLSLICE: | ||||
| 		return v.AsBoolSlice() | ||||
| 	case INT64: | ||||
| 		return v.AsInt64() | ||||
| 	case INT64SLICE: | ||||
| 		return v.AsInt64Slice() | ||||
| 	case FLOAT64: | ||||
| 		return v.AsFloat64() | ||||
| 	case FLOAT64SLICE: | ||||
| 		return v.AsFloat64Slice() | ||||
| 	case STRING: | ||||
| 		return v.stringly | ||||
| 	case STRINGSLICE: | ||||
| 		return v.AsStringSlice() | ||||
| 	} | ||||
| 	return unknownValueType{} | ||||
| } | ||||
| @@ -177,14 +238,20 @@ func (v Value) AsInterface() interface{} { | ||||
| // Emit returns a string representation of Value's data. | ||||
| func (v Value) Emit() string { | ||||
| 	switch v.Type() { | ||||
| 	case ARRAY: | ||||
| 		return fmt.Sprint(v.array) | ||||
| 	case BOOLSLICE: | ||||
| 		return fmt.Sprint(*(v.slice.(*[]bool))) | ||||
| 	case BOOL: | ||||
| 		return strconv.FormatBool(v.AsBool()) | ||||
| 	case INT64SLICE: | ||||
| 		return fmt.Sprint(*(v.slice.(*[]int64))) | ||||
| 	case INT64: | ||||
| 		return strconv.FormatInt(v.AsInt64(), 10) | ||||
| 	case FLOAT64SLICE: | ||||
| 		return fmt.Sprint(*(v.slice.(*[]float64))) | ||||
| 	case FLOAT64: | ||||
| 		return fmt.Sprint(v.AsFloat64()) | ||||
| 	case STRINGSLICE: | ||||
| 		return fmt.Sprint(*(v.slice.(*[]string))) | ||||
| 	case STRING: | ||||
| 		return v.stringly | ||||
| 	default: | ||||
|   | ||||
							
								
								
									
										2
									
								
								vendor/go.opentelemetry.io/otel/baggage/baggage.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/go.opentelemetry.io/otel/baggage/baggage.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -12,7 +12,7 @@ | ||||
| // See the License for the specific language governing permissions and | ||||
| // limitations under the License. | ||||
|  | ||||
| package baggage | ||||
| package baggage // import "go.opentelemetry.io/otel/baggage" | ||||
|  | ||||
| import ( | ||||
| 	"errors" | ||||
|   | ||||
							
								
								
									
										3
									
								
								vendor/go.opentelemetry.io/otel/baggage/doc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/go.opentelemetry.io/otel/baggage/doc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -16,8 +16,5 @@ | ||||
| Package baggage provides functionality for storing and retrieving | ||||
| baggage items in Go context. For propagating the baggage, see the | ||||
| go.opentelemetry.io/otel/propagation package. | ||||
|  | ||||
| This package is currently in a Release Candidate phase. Backwards incompatible changes | ||||
| may be introduced prior to v1.0.0, but we believe the current API is ready to stabilize. | ||||
| */ | ||||
| package baggage // import "go.opentelemetry.io/otel/baggage" | ||||
|   | ||||
							
								
								
									
										3
									
								
								vendor/go.opentelemetry.io/otel/codes/doc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/go.opentelemetry.io/otel/codes/doc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -15,9 +15,6 @@ | ||||
| /* | ||||
| Package codes defines the canonical error codes used by OpenTelemetry. | ||||
|  | ||||
| This package is currently in a Release Candidate phase. Backwards incompatible changes | ||||
| may be introduced prior to v1.0.0, but we believe the current API is ready to stabilize. | ||||
|  | ||||
| It conforms to [the OpenTelemetry | ||||
| specification](https://github.com/open-telemetry/opentelemetry-specification/blob/main/specification/trace/api.md#statuscanonicalcode). | ||||
| */ | ||||
|   | ||||
							
								
								
									
										3
									
								
								vendor/go.opentelemetry.io/otel/doc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/go.opentelemetry.io/otel/doc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -16,9 +16,6 @@ | ||||
| Package otel provides global access to the OpenTelemetry API. The subpackages of | ||||
| the otel package provide an implementation of the OpenTelemetry API. | ||||
|  | ||||
| This package is currently in a Release Candidate phase. Backwards incompatible changes | ||||
| may be introduced prior to v1.0.0, but we believe the current API is ready to stabilize. | ||||
|  | ||||
| The provided API is used to instrument code and measure data about that code's | ||||
| performance and operation. The measured data, by default, is not processed or | ||||
| transmitted anywhere. An implementation of the OpenTelemetry SDK, like the | ||||
|   | ||||
							
								
								
									
										11
									
								
								vendor/go.opentelemetry.io/otel/error_handler.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										11
									
								
								vendor/go.opentelemetry.io/otel/error_handler.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -25,3 +25,14 @@ type ErrorHandler interface { | ||||
| 	// DO NOT CHANGE: any modification will not be backwards compatible and | ||||
| 	// must never be done outside of a new major release. | ||||
| } | ||||
|  | ||||
| // ErrorHandlerFunc is a convenience adapter to allow the use of a function | ||||
| // as an ErrorHandler. | ||||
| type ErrorHandlerFunc func(error) | ||||
|  | ||||
| var _ ErrorHandler = ErrorHandlerFunc(nil) | ||||
|  | ||||
| // Handle handles the irremediable error by calling the ErrorHandlerFunc itself. | ||||
| func (f ErrorHandlerFunc) Handle(err error) { | ||||
| 	f(err) | ||||
| } | ||||
|   | ||||
							
								
								
									
										47
									
								
								vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										47
									
								
								vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/README.md
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,47 @@ | ||||
| # OpenTelemetry-Go OTLP Span Exporter | ||||
|  | ||||
| [](https://pkg.go.dev/go.opentelemetry.io/otel/exporters/otlp/otlptrace) | ||||
|  | ||||
| [OpenTelemetry Protocol Exporter](https://github.com/open-telemetry/opentelemetry-specification/blob/v1.5.0/specification/protocol/exporter.md) implementation. | ||||
|  | ||||
| ## Installation | ||||
|  | ||||
| ``` | ||||
| go get -u go.opentelemetry.io/otel/exporters/otlp/otlptrace | ||||
| ``` | ||||
|  | ||||
| ## Examples | ||||
|  | ||||
| - [Exporter setup and examples](./otlptracehttp/example_test.go) | ||||
| - [Full example sending telemetry to a local collector](../../../example/otel-collector) | ||||
|  | ||||
| ## [`otlptrace`](https://pkg.go.dev/go.opentelemetry.io/otel/exporters/otlp/otlptrace) | ||||
|  | ||||
| The `otlptrace` package provides an exporter implementing the OTel span exporter interface. | ||||
| This exporter is configured using a client satisfying the `otlptrace.Client` interface. | ||||
| This client handles the transformation of data into wire format and the transmission of that data to the collector. | ||||
|  | ||||
| ## [`otlptracegrpc`](https://pkg.go.dev/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc) | ||||
|  | ||||
| The `otlptracegrpc` package implements a client for the span exporter that sends trace telemetry data to the collector using gRPC with protobuf-encoded payloads. | ||||
|  | ||||
| ## [`otlptracehttp`](https://pkg.go.dev/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp) | ||||
|  | ||||
| The `otlptracehttp` package implements a client for the span exporter that sends trace telemetry data to the collector using HTTP with protobuf-encoded payloads. | ||||
|  | ||||
| ## Configuration | ||||
|  | ||||
| ### Environment Variables | ||||
|  | ||||
| The following environment variables can be used | ||||
| (instead of options objects) to override the default configuration. | ||||
|  | ||||
| | Environment variable                                                     | Option                        | Default value                       | | ||||
| | ------------------------------------------------------------------------ |------------------------------ | ----------------------------------- | | ||||
| | `OTEL_EXPORTER_OTLP_ENDPOINT` `OTEL_EXPORTER_OTLP_TRACES_ENDPOINT`       | `WithEndpoint` `WithInsecure` | `https://localhost:4317`            | | ||||
| | `OTEL_EXPORTER_OTLP_CERTIFICATE` `OTEL_EXPORTER_OTLP_TRACES_CERTIFICATE` | `WithTLSClientConfig`         |                                     | | ||||
| | `OTEL_EXPORTER_OTLP_HEADERS` `OTEL_EXPORTER_OTLP_TRACES_HEADERS`         | `WithHeaders`                 |                                     | | ||||
| | `OTEL_EXPORTER_OTLP_COMPRESSION` `OTEL_EXPORTER_OTLP_TRACES_COMPRESSION` | `WithCompression`             |                                     | | ||||
| | `OTEL_EXPORTER_OTLP_TIMEOUT` `OTEL_EXPORTER_OTLP_TRACES_TIMEOUT`         | `WithTimeout`                 | `10s`                               | | ||||
|  | ||||
| Configuration using options have precedence over the environment variables. | ||||
							
								
								
									
										14
									
								
								vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/go.mod
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/go.mod
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -6,12 +6,12 @@ require ( | ||||
| 	github.com/cenkalti/backoff/v4 v4.1.1 | ||||
| 	github.com/google/go-cmp v0.5.6 | ||||
| 	github.com/stretchr/testify v1.7.0 | ||||
| 	go.opentelemetry.io/otel v1.0.0-RC2 | ||||
| 	go.opentelemetry.io/otel/sdk v1.0.0-RC2 | ||||
| 	go.opentelemetry.io/otel/trace v1.0.0-RC2 | ||||
| 	go.opentelemetry.io/otel v1.0.1 | ||||
| 	go.opentelemetry.io/otel/sdk v1.0.1 | ||||
| 	go.opentelemetry.io/otel/trace v1.0.1 | ||||
| 	go.opentelemetry.io/proto/otlp v0.9.0 | ||||
| 	google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 | ||||
| 	google.golang.org/grpc v1.39.0 | ||||
| 	google.golang.org/grpc v1.41.0 | ||||
| 	google.golang.org/protobuf v1.27.1 | ||||
| ) | ||||
|  | ||||
| @@ -21,8 +21,6 @@ replace go.opentelemetry.io/otel/sdk => ../../../sdk | ||||
|  | ||||
| replace go.opentelemetry.io/otel/metric => ../../../metric | ||||
|  | ||||
| replace go.opentelemetry.io/otel/oteltest => ../../../oteltest | ||||
|  | ||||
| replace go.opentelemetry.io/otel/trace => ../../../trace | ||||
|  | ||||
| replace go.opentelemetry.io/otel/bridge/opencensus => ../../../bridge/opencensus | ||||
| @@ -74,3 +72,7 @@ replace go.opentelemetry.io/otel/exporters/stdout/stdoutmetric => ../../stdout/s | ||||
| replace go.opentelemetry.io/otel/exporters/stdout/stdouttrace => ../../stdout/stdouttrace | ||||
|  | ||||
| replace go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp => ../otlpmetric/otlpmetrichttp | ||||
|  | ||||
| replace go.opentelemetry.io/otel/bridge/opencensus/test => ../../../bridge/opencensus/test | ||||
|  | ||||
| replace go.opentelemetry.io/otel/example/fib => ../../../example/fib | ||||
|   | ||||
							
								
								
									
										9
									
								
								vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/go.sum
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/go.sum
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -5,10 +5,11 @@ github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kd | ||||
| github.com/cenkalti/backoff/v4 v4.1.1 h1:G2HAfAmvm/GcKan2oOQpBXOd2tT2G57ZnZGWa1PxPBQ= | ||||
| github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= | ||||
| github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= | ||||
| github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= | ||||
| github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= | ||||
| github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= | ||||
| github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= | ||||
| github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= | ||||
| github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= | ||||
| github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= | ||||
| github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||
| github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= | ||||
| @@ -16,7 +17,7 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m | ||||
| github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= | ||||
| github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= | ||||
| github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= | ||||
| github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= | ||||
| github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= | ||||
| github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= | ||||
| github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= | ||||
| github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= | ||||
| @@ -106,8 +107,8 @@ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8 | ||||
| google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= | ||||
| google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= | ||||
| google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= | ||||
| google.golang.org/grpc v1.39.0 h1:Klz8I9kdtkIN6EpHHUOMLCYhTn/2WAe5a0s1hcBkdTI= | ||||
| google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= | ||||
| google.golang.org/grpc v1.41.0 h1:f+PlOh7QV4iIJkPrx5NQ7qaNGFQ3OTse67yaDHfju4E= | ||||
| google.golang.org/grpc v1.41.0/go.mod h1:U3l9uK9J0sini8mHphKoXyaqDA/8VyGnDee1zzIUK6k= | ||||
| google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= | ||||
| google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= | ||||
| google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= | ||||
|   | ||||
| @@ -12,7 +12,7 @@ | ||||
| // See the License for the specific language governing permissions and | ||||
| // limitations under the License. | ||||
|  | ||||
| package otlpconfig // import "go.opentelemetry.io/otel/exporters/otlp/internal/otlpconfig" | ||||
| package otlpconfig // import "go.opentelemetry.io/otel/exporters/otlp/otlptrace/internal/otlpconfig" | ||||
|  | ||||
| import ( | ||||
| 	"crypto/tls" | ||||
|   | ||||
| @@ -15,127 +15,145 @@ | ||||
| package tracetransform | ||||
|  | ||||
| import ( | ||||
| 	"reflect" | ||||
|  | ||||
| 	"go.opentelemetry.io/otel/attribute" | ||||
| 	commonpb "go.opentelemetry.io/proto/otlp/common/v1" | ||||
|  | ||||
| 	"go.opentelemetry.io/otel/sdk/resource" | ||||
| ) | ||||
|  | ||||
| // Attributes transforms a slice of KeyValues into a slice of OTLP attribute key-values. | ||||
| func Attributes(attrs []attribute.KeyValue) []*commonpb.KeyValue { | ||||
| // KeyValues transforms a slice of attribute KeyValues into OTLP key-values. | ||||
| func KeyValues(attrs []attribute.KeyValue) []*commonpb.KeyValue { | ||||
| 	if len(attrs) == 0 { | ||||
| 		return nil | ||||
| 	} | ||||
|  | ||||
| 	out := make([]*commonpb.KeyValue, 0, len(attrs)) | ||||
| 	for _, kv := range attrs { | ||||
| 		out = append(out, toAttribute(kv)) | ||||
| 		out = append(out, KeyValue(kv)) | ||||
| 	} | ||||
| 	return out | ||||
| } | ||||
|  | ||||
| // ResourceAttributes transforms a Resource into a slice of OTLP attribute key-values. | ||||
| func ResourceAttributes(resource *resource.Resource) []*commonpb.KeyValue { | ||||
| 	if resource.Len() == 0 { | ||||
| // Iterator transforms an attribute iterator into OTLP key-values. | ||||
| func Iterator(iter attribute.Iterator) []*commonpb.KeyValue { | ||||
| 	l := iter.Len() | ||||
| 	if l == 0 { | ||||
| 		return nil | ||||
| 	} | ||||
|  | ||||
| 	out := make([]*commonpb.KeyValue, 0, resource.Len()) | ||||
| 	for iter := resource.Iter(); iter.Next(); { | ||||
| 		out = append(out, toAttribute(iter.Attribute())) | ||||
| 	out := make([]*commonpb.KeyValue, 0, l) | ||||
| 	for iter.Next() { | ||||
| 		out = append(out, KeyValue(iter.Attribute())) | ||||
| 	} | ||||
|  | ||||
| 	return out | ||||
| } | ||||
|  | ||||
| func toAttribute(v attribute.KeyValue) *commonpb.KeyValue { | ||||
| 	result := &commonpb.KeyValue{ | ||||
| 		Key:   string(v.Key), | ||||
| 		Value: new(commonpb.AnyValue), | ||||
| 	} | ||||
| 	switch v.Value.Type() { | ||||
| // ResourceAttributes transforms a Resource OTLP key-values. | ||||
| func ResourceAttributes(resource *resource.Resource) []*commonpb.KeyValue { | ||||
| 	return Iterator(resource.Iter()) | ||||
| } | ||||
|  | ||||
| // KeyValue transforms an attribute KeyValue into an OTLP key-value. | ||||
| func KeyValue(kv attribute.KeyValue) *commonpb.KeyValue { | ||||
| 	return &commonpb.KeyValue{Key: string(kv.Key), Value: Value(kv.Value)} | ||||
| } | ||||
|  | ||||
| // Value transforms an attribute Value into an OTLP AnyValue. | ||||
| func Value(v attribute.Value) *commonpb.AnyValue { | ||||
| 	av := new(commonpb.AnyValue) | ||||
| 	switch v.Type() { | ||||
| 	case attribute.BOOL: | ||||
| 		result.Value.Value = &commonpb.AnyValue_BoolValue{ | ||||
| 			BoolValue: v.Value.AsBool(), | ||||
| 		av.Value = &commonpb.AnyValue_BoolValue{ | ||||
| 			BoolValue: v.AsBool(), | ||||
| 		} | ||||
| 	case attribute.BOOLSLICE: | ||||
| 		av.Value = &commonpb.AnyValue_ArrayValue{ | ||||
| 			ArrayValue: &commonpb.ArrayValue{ | ||||
| 				Values: boolSliceValues(v.AsBoolSlice()), | ||||
| 			}, | ||||
| 		} | ||||
| 	case attribute.INT64: | ||||
| 		result.Value.Value = &commonpb.AnyValue_IntValue{ | ||||
| 			IntValue: v.Value.AsInt64(), | ||||
| 		av.Value = &commonpb.AnyValue_IntValue{ | ||||
| 			IntValue: v.AsInt64(), | ||||
| 		} | ||||
| 	case attribute.INT64SLICE: | ||||
| 		av.Value = &commonpb.AnyValue_ArrayValue{ | ||||
| 			ArrayValue: &commonpb.ArrayValue{ | ||||
| 				Values: int64SliceValues(v.AsInt64Slice()), | ||||
| 			}, | ||||
| 		} | ||||
| 	case attribute.FLOAT64: | ||||
| 		result.Value.Value = &commonpb.AnyValue_DoubleValue{ | ||||
| 			DoubleValue: v.Value.AsFloat64(), | ||||
| 		av.Value = &commonpb.AnyValue_DoubleValue{ | ||||
| 			DoubleValue: v.AsFloat64(), | ||||
| 		} | ||||
| 	case attribute.FLOAT64SLICE: | ||||
| 		av.Value = &commonpb.AnyValue_ArrayValue{ | ||||
| 			ArrayValue: &commonpb.ArrayValue{ | ||||
| 				Values: float64SliceValues(v.AsFloat64Slice()), | ||||
| 			}, | ||||
| 		} | ||||
| 	case attribute.STRING: | ||||
| 		result.Value.Value = &commonpb.AnyValue_StringValue{ | ||||
| 			StringValue: v.Value.AsString(), | ||||
| 		av.Value = &commonpb.AnyValue_StringValue{ | ||||
| 			StringValue: v.AsString(), | ||||
| 		} | ||||
| 	case attribute.ARRAY: | ||||
| 		result.Value.Value = &commonpb.AnyValue_ArrayValue{ | ||||
| 	case attribute.STRINGSLICE: | ||||
| 		av.Value = &commonpb.AnyValue_ArrayValue{ | ||||
| 			ArrayValue: &commonpb.ArrayValue{ | ||||
| 				Values: arrayValues(v), | ||||
| 				Values: stringSliceValues(v.AsStringSlice()), | ||||
| 			}, | ||||
| 		} | ||||
| 	default: | ||||
| 		result.Value.Value = &commonpb.AnyValue_StringValue{ | ||||
| 		av.Value = &commonpb.AnyValue_StringValue{ | ||||
| 			StringValue: "INVALID", | ||||
| 		} | ||||
| 	} | ||||
| 	return result | ||||
| 	return av | ||||
| } | ||||
|  | ||||
| func arrayValues(kv attribute.KeyValue) []*commonpb.AnyValue { | ||||
| 	a := kv.Value.AsArray() | ||||
| 	aType := reflect.TypeOf(a) | ||||
| 	var valueFunc func(reflect.Value) *commonpb.AnyValue | ||||
| 	switch aType.Elem().Kind() { | ||||
| 	case reflect.Bool: | ||||
| 		valueFunc = func(v reflect.Value) *commonpb.AnyValue { | ||||
| 			return &commonpb.AnyValue{ | ||||
| 				Value: &commonpb.AnyValue_BoolValue{ | ||||
| 					BoolValue: v.Bool(), | ||||
| 				}, | ||||
| 			} | ||||
| 		} | ||||
| 	case reflect.Int, reflect.Int64: | ||||
| 		valueFunc = func(v reflect.Value) *commonpb.AnyValue { | ||||
| 			return &commonpb.AnyValue{ | ||||
| 				Value: &commonpb.AnyValue_IntValue{ | ||||
| 					IntValue: v.Int(), | ||||
| 				}, | ||||
| 			} | ||||
| 		} | ||||
| 	case reflect.Uintptr: | ||||
| 		valueFunc = func(v reflect.Value) *commonpb.AnyValue { | ||||
| 			return &commonpb.AnyValue{ | ||||
| 				Value: &commonpb.AnyValue_IntValue{ | ||||
| 					IntValue: int64(v.Uint()), | ||||
| 				}, | ||||
| 			} | ||||
| 		} | ||||
| 	case reflect.Float64: | ||||
| 		valueFunc = func(v reflect.Value) *commonpb.AnyValue { | ||||
| 			return &commonpb.AnyValue{ | ||||
| 				Value: &commonpb.AnyValue_DoubleValue{ | ||||
| 					DoubleValue: v.Float(), | ||||
| 				}, | ||||
| 			} | ||||
| 		} | ||||
| 	case reflect.String: | ||||
| 		valueFunc = func(v reflect.Value) *commonpb.AnyValue { | ||||
| 			return &commonpb.AnyValue{ | ||||
| 				Value: &commonpb.AnyValue_StringValue{ | ||||
| 					StringValue: v.String(), | ||||
| 				}, | ||||
| 			} | ||||
| func boolSliceValues(vals []bool) []*commonpb.AnyValue { | ||||
| 	converted := make([]*commonpb.AnyValue, len(vals)) | ||||
| 	for i, v := range vals { | ||||
| 		converted[i] = &commonpb.AnyValue{ | ||||
| 			Value: &commonpb.AnyValue_BoolValue{ | ||||
| 				BoolValue: v, | ||||
| 			}, | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	results := make([]*commonpb.AnyValue, aType.Len()) | ||||
| 	for i, aValue := 0, reflect.ValueOf(a); i < aValue.Len(); i++ { | ||||
| 		results[i] = valueFunc(aValue.Index(i)) | ||||
| 	} | ||||
| 	return results | ||||
| 	return converted | ||||
| } | ||||
|  | ||||
| func int64SliceValues(vals []int64) []*commonpb.AnyValue { | ||||
| 	converted := make([]*commonpb.AnyValue, len(vals)) | ||||
| 	for i, v := range vals { | ||||
| 		converted[i] = &commonpb.AnyValue{ | ||||
| 			Value: &commonpb.AnyValue_IntValue{ | ||||
| 				IntValue: v, | ||||
| 			}, | ||||
| 		} | ||||
| 	} | ||||
| 	return converted | ||||
| } | ||||
|  | ||||
| func float64SliceValues(vals []float64) []*commonpb.AnyValue { | ||||
| 	converted := make([]*commonpb.AnyValue, len(vals)) | ||||
| 	for i, v := range vals { | ||||
| 		converted[i] = &commonpb.AnyValue{ | ||||
| 			Value: &commonpb.AnyValue_DoubleValue{ | ||||
| 				DoubleValue: v, | ||||
| 			}, | ||||
| 		} | ||||
| 	} | ||||
| 	return converted | ||||
| } | ||||
|  | ||||
| func stringSliceValues(vals []string) []*commonpb.AnyValue { | ||||
| 	converted := make([]*commonpb.AnyValue, len(vals)) | ||||
| 	for i, v := range vals { | ||||
| 		converted[i] = &commonpb.AnyValue{ | ||||
| 			Value: &commonpb.AnyValue_StringValue{ | ||||
| 				StringValue: v, | ||||
| 			}, | ||||
| 		} | ||||
| 	} | ||||
| 	return converted | ||||
| } | ||||
|   | ||||
| @@ -60,6 +60,7 @@ func Spans(sdl []tracesdk.ReadOnlySpan) []*tracepb.ResourceSpans { | ||||
| 			ils = &tracepb.InstrumentationLibrarySpans{ | ||||
| 				InstrumentationLibrary: InstrumentationLibrary(sd.InstrumentationLibrary()), | ||||
| 				Spans:                  []*tracepb.Span{}, | ||||
| 				SchemaUrl:              sd.InstrumentationLibrary().SchemaURL, | ||||
| 			} | ||||
| 		} | ||||
| 		ils.Spans = append(ils.Spans, span(sd)) | ||||
| @@ -72,6 +73,7 @@ func Spans(sdl []tracesdk.ReadOnlySpan) []*tracepb.ResourceSpans { | ||||
| 			rs = &tracepb.ResourceSpans{ | ||||
| 				Resource:                    Resource(sd.Resource()), | ||||
| 				InstrumentationLibrarySpans: []*tracepb.InstrumentationLibrarySpans{ils}, | ||||
| 				SchemaUrl:                   sd.Resource().SchemaURL(), | ||||
| 			} | ||||
| 			rsm[rKey] = rs | ||||
| 			continue | ||||
| @@ -114,7 +116,7 @@ func span(sd tracesdk.ReadOnlySpan) *tracepb.Span { | ||||
| 		Links:                  links(sd.Links()), | ||||
| 		Kind:                   spanKind(sd.SpanKind()), | ||||
| 		Name:                   sd.Name(), | ||||
| 		Attributes:             Attributes(sd.Attributes()), | ||||
| 		Attributes:             KeyValues(sd.Attributes()), | ||||
| 		Events:                 spanEvents(sd.Events()), | ||||
| 		DroppedAttributesCount: uint32(sd.DroppedAttributes()), | ||||
| 		DroppedEventsCount:     uint32(sd.DroppedEvents()), | ||||
| @@ -163,7 +165,7 @@ func links(links []tracesdk.Link) []*tracepb.Span_Link { | ||||
| 		sl = append(sl, &tracepb.Span_Link{ | ||||
| 			TraceId:    tid[:], | ||||
| 			SpanId:     sid[:], | ||||
| 			Attributes: Attributes(otLink.Attributes), | ||||
| 			Attributes: KeyValues(otLink.Attributes), | ||||
| 		}) | ||||
| 	} | ||||
| 	return sl | ||||
| @@ -192,7 +194,7 @@ func spanEvents(es []tracesdk.Event) []*tracepb.Span_Event { | ||||
| 			&tracepb.Span_Event{ | ||||
| 				Name:         e.Name, | ||||
| 				TimeUnixNano: uint64(e.Time.UnixNano()), | ||||
| 				Attributes:   Attributes(e.Attributes), | ||||
| 				Attributes:   KeyValues(e.Attributes), | ||||
| 				// TODO (rghetia) : Add Drop Counts when supported. | ||||
| 			}, | ||||
| 		) | ||||
|   | ||||
							
								
								
									
										14
									
								
								vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/go.mod
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										14
									
								
								vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/go.mod
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -4,11 +4,11 @@ go 1.15 | ||||
|  | ||||
| require ( | ||||
| 	github.com/stretchr/testify v1.7.0 | ||||
| 	go.opentelemetry.io/otel v1.0.0-RC2 | ||||
| 	go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.0.0-RC2 | ||||
| 	go.opentelemetry.io/otel/sdk v1.0.0-RC2 | ||||
| 	go.opentelemetry.io/otel v1.0.1 | ||||
| 	go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.0.1 | ||||
| 	go.opentelemetry.io/otel/sdk v1.0.1 | ||||
| 	go.opentelemetry.io/proto/otlp v0.9.0 | ||||
| 	google.golang.org/grpc v1.39.0 | ||||
| 	google.golang.org/grpc v1.41.0 | ||||
| ) | ||||
|  | ||||
| replace go.opentelemetry.io/otel => ../../../.. | ||||
| @@ -19,8 +19,6 @@ replace go.opentelemetry.io/otel/exporters/otlp/otlptrace => ../ | ||||
|  | ||||
| replace go.opentelemetry.io/otel/metric => ../../../../metric | ||||
|  | ||||
| replace go.opentelemetry.io/otel/oteltest => ../../../../oteltest | ||||
|  | ||||
| replace go.opentelemetry.io/otel/trace => ../../../../trace | ||||
|  | ||||
| replace go.opentelemetry.io/otel/bridge/opencensus => ../../../../bridge/opencensus | ||||
| @@ -70,3 +68,7 @@ replace go.opentelemetry.io/otel/exporters/stdout/stdoutmetric => ../../../stdou | ||||
| replace go.opentelemetry.io/otel/exporters/stdout/stdouttrace => ../../../stdout/stdouttrace | ||||
|  | ||||
| replace go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp => ../../otlpmetric/otlpmetrichttp | ||||
|  | ||||
| replace go.opentelemetry.io/otel/bridge/opencensus/test => ../../../../bridge/opencensus/test | ||||
|  | ||||
| replace go.opentelemetry.io/otel/example/fib => ../../../../example/fib | ||||
|   | ||||
							
								
								
									
										9
									
								
								vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/go.sum
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								vendor/go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc/go.sum
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -5,10 +5,11 @@ github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kd | ||||
| github.com/cenkalti/backoff/v4 v4.1.1 h1:G2HAfAmvm/GcKan2oOQpBXOd2tT2G57ZnZGWa1PxPBQ= | ||||
| github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= | ||||
| github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= | ||||
| github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= | ||||
| github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= | ||||
| github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= | ||||
| github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= | ||||
| github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= | ||||
| github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= | ||||
| github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= | ||||
| github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||
| github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= | ||||
| @@ -16,7 +17,7 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m | ||||
| github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= | ||||
| github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= | ||||
| github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= | ||||
| github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= | ||||
| github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= | ||||
| github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= | ||||
| github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= | ||||
| github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= | ||||
| @@ -106,8 +107,8 @@ google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8 | ||||
| google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= | ||||
| google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= | ||||
| google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= | ||||
| google.golang.org/grpc v1.39.0 h1:Klz8I9kdtkIN6EpHHUOMLCYhTn/2WAe5a0s1hcBkdTI= | ||||
| google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= | ||||
| google.golang.org/grpc v1.41.0 h1:f+PlOh7QV4iIJkPrx5NQ7qaNGFQ3OTse67yaDHfju4E= | ||||
| google.golang.org/grpc v1.41.0/go.mod h1:U3l9uK9J0sini8mHphKoXyaqDA/8VyGnDee1zzIUK6k= | ||||
| google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= | ||||
| google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= | ||||
| google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= | ||||
|   | ||||
							
								
								
									
										8
									
								
								vendor/go.opentelemetry.io/otel/go.mod
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								vendor/go.opentelemetry.io/otel/go.mod
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -5,7 +5,7 @@ go 1.15 | ||||
| require ( | ||||
| 	github.com/google/go-cmp v0.5.6 | ||||
| 	github.com/stretchr/testify v1.7.0 | ||||
| 	go.opentelemetry.io/otel/trace v1.0.0-RC2 | ||||
| 	go.opentelemetry.io/otel/trace v1.0.1 | ||||
| ) | ||||
|  | ||||
| replace go.opentelemetry.io/otel => ./ | ||||
| @@ -42,8 +42,6 @@ replace go.opentelemetry.io/otel/internal/metric => ./internal/metric | ||||
|  | ||||
| replace go.opentelemetry.io/otel/metric => ./metric | ||||
|  | ||||
| replace go.opentelemetry.io/otel/oteltest => ./oteltest | ||||
|  | ||||
| replace go.opentelemetry.io/otel/sdk/export/metric => ./sdk/export/metric | ||||
|  | ||||
| replace go.opentelemetry.io/otel/sdk/metric => ./sdk/metric | ||||
| @@ -67,3 +65,7 @@ replace go.opentelemetry.io/otel/exporters/stdout/stdoutmetric => ./exporters/st | ||||
| replace go.opentelemetry.io/otel/exporters/stdout/stdouttrace => ./exporters/stdout/stdouttrace | ||||
|  | ||||
| replace go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp => ./exporters/otlp/otlpmetric/otlpmetrichttp | ||||
|  | ||||
| replace go.opentelemetry.io/otel/bridge/opencensus/test => ./bridge/opencensus/test | ||||
|  | ||||
| replace go.opentelemetry.io/otel/example/fib => ./example/fib | ||||
|   | ||||
							
								
								
									
										62
									
								
								vendor/go.opentelemetry.io/otel/handler.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										62
									
								
								vendor/go.opentelemetry.io/otel/handler.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -26,36 +26,42 @@ var ( | ||||
| 	// throughout an OpenTelemetry instrumented project. When a user | ||||
| 	// specified ErrorHandler is registered (`SetErrorHandler`) all calls to | ||||
| 	// `Handle` and will be delegated to the registered ErrorHandler. | ||||
| 	globalErrorHandler = &loggingErrorHandler{ | ||||
| 		l: log.New(os.Stderr, "", log.LstdFlags), | ||||
| 	} | ||||
| 	globalErrorHandler = defaultErrorHandler() | ||||
|  | ||||
| 	// delegateErrorHandlerOnce ensures that a user provided ErrorHandler is | ||||
| 	// only ever registered once. | ||||
| 	delegateErrorHandlerOnce sync.Once | ||||
|  | ||||
| 	// Comiple time check that loggingErrorHandler implements ErrorHandler. | ||||
| 	_ ErrorHandler = (*loggingErrorHandler)(nil) | ||||
| 	// Compile-time check that delegator implements ErrorHandler. | ||||
| 	_ ErrorHandler = (*delegator)(nil) | ||||
| ) | ||||
|  | ||||
| // loggingErrorHandler logs all errors to STDERR. | ||||
| type loggingErrorHandler struct { | ||||
| type holder struct { | ||||
| 	eh ErrorHandler | ||||
| } | ||||
|  | ||||
| func defaultErrorHandler() *atomic.Value { | ||||
| 	v := &atomic.Value{} | ||||
| 	v.Store(holder{eh: &delegator{l: log.New(os.Stderr, "", log.LstdFlags)}}) | ||||
| 	return v | ||||
| } | ||||
|  | ||||
| // delegator logs errors if no delegate is set, otherwise they are delegated. | ||||
| type delegator struct { | ||||
| 	delegate atomic.Value | ||||
|  | ||||
| 	l *log.Logger | ||||
| } | ||||
|  | ||||
| // setDelegate sets the ErrorHandler delegate if one is not already set. | ||||
| func (h *loggingErrorHandler) setDelegate(d ErrorHandler) { | ||||
| 	if h.delegate.Load() != nil { | ||||
| 		// Delegate already registered | ||||
| 		return | ||||
| 	} | ||||
| // setDelegate sets the ErrorHandler delegate. | ||||
| func (h *delegator) setDelegate(d ErrorHandler) { | ||||
| 	// It is critical this is guarded with delegateErrorHandlerOnce, if it is | ||||
| 	// called again with a different concrete type it will panic. | ||||
| 	h.delegate.Store(d) | ||||
| } | ||||
|  | ||||
| // Handle implements ErrorHandler. | ||||
| func (h *loggingErrorHandler) Handle(err error) { | ||||
| // Handle logs err if no delegate is set, otherwise it is delegated. | ||||
| func (h *delegator) Handle(err error) { | ||||
| 	if d := h.delegate.Load(); d != nil { | ||||
| 		d.(ErrorHandler).Handle(err) | ||||
| 		return | ||||
| @@ -63,27 +69,39 @@ func (h *loggingErrorHandler) Handle(err error) { | ||||
| 	h.l.Print(err) | ||||
| } | ||||
|  | ||||
| // GetErrorHandler returns the global ErrorHandler instance. If no ErrorHandler | ||||
| // instance has been set (`SetErrorHandler`), the default ErrorHandler which | ||||
| // logs errors to STDERR is returned. | ||||
| // GetErrorHandler returns the global ErrorHandler instance. | ||||
| // | ||||
| // The default ErrorHandler instance returned will log all errors to STDERR | ||||
| // until an override ErrorHandler is set with SetErrorHandler. All | ||||
| // ErrorHandler returned prior to this will automatically forward errors to | ||||
| // the set instance instead of logging. | ||||
| // | ||||
| // Subsequent calls to SetErrorHandler after the first will not forward errors | ||||
| // to the new ErrorHandler for prior returned instances. | ||||
| func GetErrorHandler() ErrorHandler { | ||||
| 	return globalErrorHandler | ||||
| 	return globalErrorHandler.Load().(holder).eh | ||||
| } | ||||
|  | ||||
| // SetErrorHandler sets the global ErrorHandler to be h. | ||||
| // SetErrorHandler sets the global ErrorHandler to h. | ||||
| // | ||||
| // The first time this is called all ErrorHandler previously returned from | ||||
| // GetErrorHandler will send errors to h instead of the default logging | ||||
| // ErrorHandler. Subsequent calls will set the global ErrorHandler, but not | ||||
| // delegate errors to h. | ||||
| func SetErrorHandler(h ErrorHandler) { | ||||
| 	delegateErrorHandlerOnce.Do(func() { | ||||
| 		current := GetErrorHandler() | ||||
| 		if current == h { | ||||
| 			return | ||||
| 		} | ||||
| 		if internalHandler, ok := current.(*loggingErrorHandler); ok { | ||||
| 		if internalHandler, ok := current.(*delegator); ok { | ||||
| 			internalHandler.setDelegate(h) | ||||
| 		} | ||||
| 	}) | ||||
| 	globalErrorHandler.Store(holder{eh: h}) | ||||
| } | ||||
|  | ||||
| // Handle is a convience function for ErrorHandler().Handle(err) | ||||
| // Handle is a convenience function for ErrorHandler().Handle(err) | ||||
| func Handle(err error) { | ||||
| 	GetErrorHandler().Handle(err) | ||||
| } | ||||
|   | ||||
							
								
								
									
										3
									
								
								vendor/go.opentelemetry.io/otel/internal/global/trace.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/go.opentelemetry.io/otel/internal/global/trace.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -90,9 +90,10 @@ func (p *tracerProvider) Tracer(name string, opts ...trace.TracerOption) trace.T | ||||
|  | ||||
| 	// At this moment it is guaranteed that no sdk is installed, save the tracer in the tracers map. | ||||
|  | ||||
| 	c := trace.NewTracerConfig(opts...) | ||||
| 	key := il{ | ||||
| 		name:    name, | ||||
| 		version: trace.NewTracerConfig(opts...).InstrumentationVersion(), | ||||
| 		version: c.InstrumentationVersion(), | ||||
| 	} | ||||
|  | ||||
| 	if p.tracers == nil { | ||||
|   | ||||
							
								
								
									
										3
									
								
								vendor/go.opentelemetry.io/otel/propagation/doc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/go.opentelemetry.io/otel/propagation/doc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -15,9 +15,6 @@ | ||||
| /* | ||||
| Package propagation contains OpenTelemetry context propagators. | ||||
|  | ||||
| This package is currently in a Release Candidate phase. Backwards incompatible changes | ||||
| may be introduced prior to v1.0.0, but we believe the current API is ready to stabilize. | ||||
|  | ||||
| OpenTelemetry propagators are used to extract and inject context data from and | ||||
| into messages exchanged by applications. The propagator supported by this | ||||
| package is the W3C Trace Context encoding | ||||
|   | ||||
							
								
								
									
										2
									
								
								vendor/go.opentelemetry.io/otel/propagation/propagation.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/go.opentelemetry.io/otel/propagation/propagation.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -78,7 +78,7 @@ type TextMapPropagator interface { | ||||
| 	// DO NOT CHANGE: any modification will not be backwards compatible and | ||||
| 	// must never be done outside of a new major release. | ||||
|  | ||||
| 	// Fields returns the keys who's values are set with Inject. | ||||
| 	// Fields returns the keys whose values are set with Inject. | ||||
| 	Fields() []string | ||||
| 	// DO NOT CHANGE: any modification will not be backwards compatible and | ||||
| 	// must never be done outside of a new major release. | ||||
|   | ||||
							
								
								
									
										3
									
								
								vendor/go.opentelemetry.io/otel/sdk/instrumentation/library.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/go.opentelemetry.io/otel/sdk/instrumentation/library.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -16,9 +16,6 @@ | ||||
| Package instrumentation provides an instrumentation library structure to be | ||||
| passed to both the OpenTelemetry Tracer and Meter components. | ||||
|  | ||||
| This package is currently in a Release Candidate phase. Backwards incompatible changes | ||||
| may be introduced prior to v1.0.0, but we believe the current API is ready to stabilize. | ||||
|  | ||||
| For more information see | ||||
| [this](https://github.com/open-telemetry/oteps/blob/main/text/0083-component.md). | ||||
| */ | ||||
|   | ||||
							
								
								
									
										3
									
								
								vendor/go.opentelemetry.io/otel/sdk/resource/doc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/go.opentelemetry.io/otel/sdk/resource/doc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -14,9 +14,6 @@ | ||||
|  | ||||
| // Package resource provides detecting and representing resources. | ||||
| // | ||||
| // This package is currently in a Release Candidate phase. Backwards incompatible changes | ||||
| // may be introduced prior to v1.0.0, but we believe the current API is ready to stabilize. | ||||
| // | ||||
| // The fundamental struct is a Resource which holds identifying information | ||||
| // about the entities for which telemetry is exported. | ||||
| // | ||||
|   | ||||
							
								
								
									
										3
									
								
								vendor/go.opentelemetry.io/otel/sdk/resource/env.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/go.opentelemetry.io/otel/sdk/resource/env.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -76,6 +76,9 @@ func (fromEnv) Detect(context.Context) (*Resource, error) { | ||||
| } | ||||
|  | ||||
| func constructOTResources(s string) (*Resource, error) { | ||||
| 	if s == "" { | ||||
| 		return Empty(), nil | ||||
| 	} | ||||
| 	pairs := strings.Split(s, ",") | ||||
| 	attrs := []attribute.KeyValue{} | ||||
| 	var invalid []string | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/go.opentelemetry.io/otel/sdk/resource/os_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/go.opentelemetry.io/otel/sdk/resource/os_unix.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -12,6 +12,7 @@ | ||||
| // See the License for the specific language governing permissions and | ||||
| // limitations under the License. | ||||
|  | ||||
| //go:build aix || darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris || zos | ||||
| // +build aix darwin dragonfly freebsd linux netbsd openbsd solaris zos | ||||
|  | ||||
| package resource // import "go.opentelemetry.io/otel/sdk/resource" | ||||
|   | ||||
							
								
								
									
										2
									
								
								vendor/go.opentelemetry.io/otel/sdk/resource/process.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/go.opentelemetry.io/otel/sdk/resource/process.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -138,7 +138,7 @@ func (processExecutablePathDetector) Detect(ctx context.Context) (*Resource, err | ||||
| // Detect returns a *Resource that describes all the command arguments as received | ||||
| // by the process. | ||||
| func (processCommandArgsDetector) Detect(ctx context.Context) (*Resource, error) { | ||||
| 	return NewWithAttributes(semconv.SchemaURL, semconv.ProcessCommandArgsKey.Array(commandArgs())), nil | ||||
| 	return NewWithAttributes(semconv.SchemaURL, semconv.ProcessCommandArgsKey.StringSlice(commandArgs())), nil | ||||
| } | ||||
|  | ||||
| // Detect returns a *Resource that describes the username of the user that owns the | ||||
|   | ||||
							
								
								
									
										13
									
								
								vendor/go.opentelemetry.io/otel/sdk/resource/resource.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										13
									
								
								vendor/go.opentelemetry.io/otel/sdk/resource/resource.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -132,10 +132,13 @@ func (r *Resource) Attributes() []attribute.KeyValue { | ||||
| } | ||||
|  | ||||
| func (r *Resource) SchemaURL() string { | ||||
| 	if r == nil { | ||||
| 		return "" | ||||
| 	} | ||||
| 	return r.schemaURL | ||||
| } | ||||
|  | ||||
| // Iter returns an interator of the Resource attributes. | ||||
| // Iter returns an iterator of the Resource attributes. | ||||
| // This is ideal to use if you do not want a copy of the attributes. | ||||
| func (r *Resource) Iter() attribute.Iterator { | ||||
| 	if r == nil { | ||||
| @@ -199,14 +202,14 @@ func Merge(a, b *Resource) (*Resource, error) { | ||||
| 	return merged, nil | ||||
| } | ||||
|  | ||||
| // Empty returns an instance of Resource with no attributes.  It is | ||||
| // Empty returns an instance of Resource with no attributes. It is | ||||
| // equivalent to a `nil` Resource. | ||||
| func Empty() *Resource { | ||||
| 	return &emptyResource | ||||
| } | ||||
|  | ||||
| // Default returns an instance of Resource with a default | ||||
| // "service.name" and OpenTelemetrySDK attributes | ||||
| // "service.name" and OpenTelemetrySDK attributes. | ||||
| func Default() *Resource { | ||||
| 	return defaultResource | ||||
| } | ||||
| @@ -223,13 +226,13 @@ func Environment() *Resource { | ||||
| } | ||||
|  | ||||
| // Equivalent returns an object that can be compared for equality | ||||
| // between two resources.  This value is suitable for use as a key in | ||||
| // between two resources. This value is suitable for use as a key in | ||||
| // a map. | ||||
| func (r *Resource) Equivalent() attribute.Distinct { | ||||
| 	return r.Set().Equivalent() | ||||
| } | ||||
|  | ||||
| // Set returns the equivalent *attribute.Set of this resources attributes. | ||||
| // Set returns the equivalent *attribute.Set of this resource's attributes. | ||||
| func (r *Resource) Set() *attribute.Set { | ||||
| 	if r == nil { | ||||
| 		r = Empty() | ||||
|   | ||||
							
								
								
									
										3
									
								
								vendor/go.opentelemetry.io/otel/sdk/trace/doc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/go.opentelemetry.io/otel/sdk/trace/doc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -15,9 +15,6 @@ | ||||
| /* | ||||
| Package trace contains support for OpenTelemetry distributed tracing. | ||||
|  | ||||
| This package is currently in a Release Candidate phase. Backwards incompatible changes | ||||
| may be introduced prior to v1.0.0, but we believe the current API is ready to stabilize. | ||||
|  | ||||
| The following assumes a basic familiarity with OpenTelemetry concepts. | ||||
| See https://opentelemetry.io. | ||||
| */ | ||||
|   | ||||
							
								
								
									
										2
									
								
								vendor/go.opentelemetry.io/otel/sdk/trace/event.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/go.opentelemetry.io/otel/sdk/trace/event.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -12,7 +12,7 @@ | ||||
| // See the License for the specific language governing permissions and | ||||
| // limitations under the License. | ||||
|  | ||||
| package trace | ||||
| package trace // import "go.opentelemetry.io/otel/sdk/trace" | ||||
|  | ||||
| import ( | ||||
| 	"time" | ||||
|   | ||||
							
								
								
									
										2
									
								
								vendor/go.opentelemetry.io/otel/sdk/trace/snapshot.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/go.opentelemetry.io/otel/sdk/trace/snapshot.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -12,7 +12,7 @@ | ||||
| // See the License for the specific language governing permissions and | ||||
| // limitations under the License. | ||||
|  | ||||
| package trace | ||||
| package trace // import "go.opentelemetry.io/otel/sdk/trace" | ||||
|  | ||||
| import ( | ||||
| 	"time" | ||||
|   | ||||
							
								
								
									
										230
									
								
								vendor/go.opentelemetry.io/otel/sdk/trace/span.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										230
									
								
								vendor/go.opentelemetry.io/otel/sdk/trace/span.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -18,6 +18,8 @@ import ( | ||||
| 	"context" | ||||
| 	"fmt" | ||||
| 	"reflect" | ||||
| 	"runtime" | ||||
| 	rt "runtime/trace" | ||||
| 	"sync" | ||||
| 	"time" | ||||
|  | ||||
| @@ -97,9 +99,9 @@ type ReadWriteSpan interface { | ||||
| 	ReadOnlySpan | ||||
| } | ||||
|  | ||||
| // span is an implementation of the OpenTelemetry Span API representing the | ||||
| // individual component of a trace. | ||||
| type span struct { | ||||
| // recordingSpan is an implementation of the OpenTelemetry Span API | ||||
| // representing the individual component of a trace that is sampled. | ||||
| type recordingSpan struct { | ||||
| 	// mu protects the contents of this span. | ||||
| 	mu sync.Mutex | ||||
|  | ||||
| @@ -156,10 +158,11 @@ type span struct { | ||||
| 	spanLimits SpanLimits | ||||
| } | ||||
|  | ||||
| var _ trace.Span = &span{} | ||||
| var _ ReadWriteSpan = (*recordingSpan)(nil) | ||||
| var _ runtimeTracer = (*recordingSpan)(nil) | ||||
|  | ||||
| // SpanContext returns the SpanContext of this span. | ||||
| func (s *span) SpanContext() trace.SpanContext { | ||||
| func (s *recordingSpan) SpanContext() trace.SpanContext { | ||||
| 	if s == nil { | ||||
| 		return trace.SpanContext{} | ||||
| 	} | ||||
| @@ -168,21 +171,21 @@ func (s *span) SpanContext() trace.SpanContext { | ||||
|  | ||||
| // IsRecording returns if this span is being recorded. If this span has ended | ||||
| // this will return false. | ||||
| func (s *span) IsRecording() bool { | ||||
| func (s *recordingSpan) IsRecording() bool { | ||||
| 	if s == nil { | ||||
| 		return false | ||||
| 	} | ||||
| 	s.mu.Lock() | ||||
| 	defer s.mu.Unlock() | ||||
|  | ||||
| 	return !s.startTime.IsZero() && s.endTime.IsZero() | ||||
| 	return s.endTime.IsZero() | ||||
| } | ||||
|  | ||||
| // SetStatus sets the status of the Span in the form of a code and a | ||||
| // description, overriding previous values set. The description is only | ||||
| // included in the set status when the code is for an error. If this span is | ||||
| // not being recorded than this method does nothing. | ||||
| func (s *span) SetStatus(code codes.Code, description string) { | ||||
| func (s *recordingSpan) SetStatus(code codes.Code, description string) { | ||||
| 	if !s.IsRecording() { | ||||
| 		return | ||||
| 	} | ||||
| @@ -203,7 +206,7 @@ func (s *span) SetStatus(code codes.Code, description string) { | ||||
| // will be overwritten with the value contained in attributes. | ||||
| // | ||||
| // If this span is not being recorded than this method does nothing. | ||||
| func (s *span) SetAttributes(attributes ...attribute.KeyValue) { | ||||
| func (s *recordingSpan) SetAttributes(attributes ...attribute.KeyValue) { | ||||
| 	if !s.IsRecording() { | ||||
| 		return | ||||
| 	} | ||||
| @@ -218,7 +221,7 @@ func (s *span) SetAttributes(attributes ...attribute.KeyValue) { | ||||
| // | ||||
| // If this method is called while panicking an error event is added to the | ||||
| // Span before ending it and the panic is continued. | ||||
| func (s *span) End(options ...trace.SpanEndOption) { | ||||
| func (s *recordingSpan) End(options ...trace.SpanEndOption) { | ||||
| 	// Do not start by checking if the span is being recorded which requires | ||||
| 	// acquiring a lock. Make a minimal check that the span is not nil. | ||||
| 	if s == nil { | ||||
| @@ -235,24 +238,30 @@ func (s *span) End(options ...trace.SpanEndOption) { | ||||
| 		return | ||||
| 	} | ||||
|  | ||||
| 	config := trace.NewSpanEndConfig(options...) | ||||
| 	if recovered := recover(); recovered != nil { | ||||
| 		// Record but don't stop the panic. | ||||
| 		defer panic(recovered) | ||||
| 		s.addEvent( | ||||
| 			semconv.ExceptionEventName, | ||||
| 		opts := []trace.EventOption{ | ||||
| 			trace.WithAttributes( | ||||
| 				semconv.ExceptionTypeKey.String(typeStr(recovered)), | ||||
| 				semconv.ExceptionMessageKey.String(fmt.Sprint(recovered)), | ||||
| 			), | ||||
| 		) | ||||
| 		} | ||||
|  | ||||
| 		if config.StackTrace() { | ||||
| 			opts = append(opts, trace.WithAttributes( | ||||
| 				semconv.ExceptionStacktraceKey.String(recordStackTrace()), | ||||
| 			)) | ||||
| 		} | ||||
|  | ||||
| 		s.addEvent(semconv.ExceptionEventName, opts...) | ||||
| 	} | ||||
|  | ||||
| 	if s.executionTracerTaskEnd != nil { | ||||
| 		s.executionTracerTaskEnd() | ||||
| 	} | ||||
|  | ||||
| 	config := trace.NewSpanEndConfig(options...) | ||||
|  | ||||
| 	s.mu.Lock() | ||||
| 	// Setting endTime to non-zero marks the span as ended and not recording. | ||||
| 	if config.Timestamp().IsZero() { | ||||
| @@ -277,7 +286,7 @@ func (s *span) End(options ...trace.SpanEndOption) { | ||||
| // SetStatus is required if the Status of the Span should be set to Error, this method | ||||
| // does not change the Span status. If this span is not being recorded or err is nil | ||||
| // than this method does nothing. | ||||
| func (s *span) RecordError(err error, opts ...trace.EventOption) { | ||||
| func (s *recordingSpan) RecordError(err error, opts ...trace.EventOption) { | ||||
| 	if s == nil || err == nil || !s.IsRecording() { | ||||
| 		return | ||||
| 	} | ||||
| @@ -286,6 +295,14 @@ func (s *span) RecordError(err error, opts ...trace.EventOption) { | ||||
| 		semconv.ExceptionTypeKey.String(typeStr(err)), | ||||
| 		semconv.ExceptionMessageKey.String(err.Error()), | ||||
| 	)) | ||||
|  | ||||
| 	c := trace.NewEventConfig(opts...) | ||||
| 	if c.StackTrace() { | ||||
| 		opts = append(opts, trace.WithAttributes( | ||||
| 			semconv.ExceptionStacktraceKey.String(recordStackTrace()), | ||||
| 		)) | ||||
| 	} | ||||
|  | ||||
| 	s.addEvent(semconv.ExceptionEventName, opts...) | ||||
| } | ||||
|  | ||||
| @@ -298,16 +315,23 @@ func typeStr(i interface{}) string { | ||||
| 	return fmt.Sprintf("%s.%s", t.PkgPath(), t.Name()) | ||||
| } | ||||
|  | ||||
| func recordStackTrace() string { | ||||
| 	stackTrace := make([]byte, 2048) | ||||
| 	n := runtime.Stack(stackTrace, false) | ||||
|  | ||||
| 	return string(stackTrace[0:n]) | ||||
| } | ||||
|  | ||||
| // AddEvent adds an event with the provided name and options. If this span is | ||||
| // not being recorded than this method does nothing. | ||||
| func (s *span) AddEvent(name string, o ...trace.EventOption) { | ||||
| func (s *recordingSpan) AddEvent(name string, o ...trace.EventOption) { | ||||
| 	if !s.IsRecording() { | ||||
| 		return | ||||
| 	} | ||||
| 	s.addEvent(name, o...) | ||||
| } | ||||
|  | ||||
| func (s *span) addEvent(name string, o ...trace.EventOption) { | ||||
| func (s *recordingSpan) addEvent(name string, o ...trace.EventOption) { | ||||
| 	c := trace.NewEventConfig(o...) | ||||
|  | ||||
| 	// Discard over limited attributes | ||||
| @@ -329,7 +353,7 @@ func (s *span) addEvent(name string, o ...trace.EventOption) { | ||||
|  | ||||
| // SetName sets the name of this span. If this span is not being recorded than | ||||
| // this method does nothing. | ||||
| func (s *span) SetName(name string) { | ||||
| func (s *recordingSpan) SetName(name string) { | ||||
| 	if !s.IsRecording() { | ||||
| 		return | ||||
| 	} | ||||
| @@ -340,28 +364,28 @@ func (s *span) SetName(name string) { | ||||
| } | ||||
|  | ||||
| // Name returns the name of this span. | ||||
| func (s *span) Name() string { | ||||
| func (s *recordingSpan) Name() string { | ||||
| 	s.mu.Lock() | ||||
| 	defer s.mu.Unlock() | ||||
| 	return s.name | ||||
| } | ||||
|  | ||||
| // Name returns the SpanContext of this span's parent span. | ||||
| func (s *span) Parent() trace.SpanContext { | ||||
| func (s *recordingSpan) Parent() trace.SpanContext { | ||||
| 	s.mu.Lock() | ||||
| 	defer s.mu.Unlock() | ||||
| 	return s.parent | ||||
| } | ||||
|  | ||||
| // SpanKind returns the SpanKind of this span. | ||||
| func (s *span) SpanKind() trace.SpanKind { | ||||
| func (s *recordingSpan) SpanKind() trace.SpanKind { | ||||
| 	s.mu.Lock() | ||||
| 	defer s.mu.Unlock() | ||||
| 	return s.spanKind | ||||
| } | ||||
|  | ||||
| // StartTime returns the time this span started. | ||||
| func (s *span) StartTime() time.Time { | ||||
| func (s *recordingSpan) StartTime() time.Time { | ||||
| 	s.mu.Lock() | ||||
| 	defer s.mu.Unlock() | ||||
| 	return s.startTime | ||||
| @@ -369,14 +393,14 @@ func (s *span) StartTime() time.Time { | ||||
|  | ||||
| // EndTime returns the time this span ended. For spans that have not yet | ||||
| // ended, the returned value will be the zero value of time.Time. | ||||
| func (s *span) EndTime() time.Time { | ||||
| func (s *recordingSpan) EndTime() time.Time { | ||||
| 	s.mu.Lock() | ||||
| 	defer s.mu.Unlock() | ||||
| 	return s.endTime | ||||
| } | ||||
|  | ||||
| // Attributes returns the attributes of this span. | ||||
| func (s *span) Attributes() []attribute.KeyValue { | ||||
| func (s *recordingSpan) Attributes() []attribute.KeyValue { | ||||
| 	s.mu.Lock() | ||||
| 	defer s.mu.Unlock() | ||||
| 	if s.attributes.evictList.Len() == 0 { | ||||
| @@ -386,7 +410,7 @@ func (s *span) Attributes() []attribute.KeyValue { | ||||
| } | ||||
|  | ||||
| // Links returns the links of this span. | ||||
| func (s *span) Links() []Link { | ||||
| func (s *recordingSpan) Links() []Link { | ||||
| 	s.mu.Lock() | ||||
| 	defer s.mu.Unlock() | ||||
| 	if len(s.links.queue) == 0 { | ||||
| @@ -396,7 +420,7 @@ func (s *span) Links() []Link { | ||||
| } | ||||
|  | ||||
| // Events returns the events of this span. | ||||
| func (s *span) Events() []Event { | ||||
| func (s *recordingSpan) Events() []Event { | ||||
| 	s.mu.Lock() | ||||
| 	defer s.mu.Unlock() | ||||
| 	if len(s.events.queue) == 0 { | ||||
| @@ -406,7 +430,7 @@ func (s *span) Events() []Event { | ||||
| } | ||||
|  | ||||
| // Status returns the status of this span. | ||||
| func (s *span) Status() Status { | ||||
| func (s *recordingSpan) Status() Status { | ||||
| 	s.mu.Lock() | ||||
| 	defer s.mu.Unlock() | ||||
| 	return s.status | ||||
| @@ -414,7 +438,7 @@ func (s *span) Status() Status { | ||||
|  | ||||
| // InstrumentationLibrary returns the instrumentation.Library associated with | ||||
| // the Tracer that created this span. | ||||
| func (s *span) InstrumentationLibrary() instrumentation.Library { | ||||
| func (s *recordingSpan) InstrumentationLibrary() instrumentation.Library { | ||||
| 	s.mu.Lock() | ||||
| 	defer s.mu.Unlock() | ||||
| 	return s.instrumentationLibrary | ||||
| @@ -422,13 +446,13 @@ func (s *span) InstrumentationLibrary() instrumentation.Library { | ||||
|  | ||||
| // Resource returns the Resource associated with the Tracer that created this | ||||
| // span. | ||||
| func (s *span) Resource() *resource.Resource { | ||||
| func (s *recordingSpan) Resource() *resource.Resource { | ||||
| 	s.mu.Lock() | ||||
| 	defer s.mu.Unlock() | ||||
| 	return s.resource | ||||
| } | ||||
|  | ||||
| func (s *span) addLink(link trace.Link) { | ||||
| func (s *recordingSpan) addLink(link trace.Link) { | ||||
| 	if !s.IsRecording() { | ||||
| 		return | ||||
| 	} | ||||
| @@ -448,7 +472,7 @@ func (s *span) addLink(link trace.Link) { | ||||
|  | ||||
| // DroppedAttributes returns the number of attributes dropped by the span | ||||
| // due to limits being reached. | ||||
| func (s *span) DroppedAttributes() int { | ||||
| func (s *recordingSpan) DroppedAttributes() int { | ||||
| 	s.mu.Lock() | ||||
| 	defer s.mu.Unlock() | ||||
| 	return s.attributes.droppedCount | ||||
| @@ -456,7 +480,7 @@ func (s *span) DroppedAttributes() int { | ||||
|  | ||||
| // DroppedLinks returns the number of links dropped by the span due to limits | ||||
| // being reached. | ||||
| func (s *span) DroppedLinks() int { | ||||
| func (s *recordingSpan) DroppedLinks() int { | ||||
| 	s.mu.Lock() | ||||
| 	defer s.mu.Unlock() | ||||
| 	return s.links.droppedCount | ||||
| @@ -464,7 +488,7 @@ func (s *span) DroppedLinks() int { | ||||
|  | ||||
| // DroppedEvents returns the number of events dropped by the span due to | ||||
| // limits being reached. | ||||
| func (s *span) DroppedEvents() int { | ||||
| func (s *recordingSpan) DroppedEvents() int { | ||||
| 	s.mu.Lock() | ||||
| 	defer s.mu.Unlock() | ||||
| 	return s.events.droppedCount | ||||
| @@ -472,7 +496,7 @@ func (s *span) DroppedEvents() int { | ||||
|  | ||||
| // ChildSpanCount returns the count of spans that consider the span a | ||||
| // direct parent. | ||||
| func (s *span) ChildSpanCount() int { | ||||
| func (s *recordingSpan) ChildSpanCount() int { | ||||
| 	s.mu.Lock() | ||||
| 	defer s.mu.Unlock() | ||||
| 	return s.childSpanCount | ||||
| @@ -480,12 +504,12 @@ func (s *span) ChildSpanCount() int { | ||||
|  | ||||
| // TracerProvider returns a trace.TracerProvider that can be used to generate | ||||
| // additional Spans on the same telemetry pipeline as the current Span. | ||||
| func (s *span) TracerProvider() trace.TracerProvider { | ||||
| func (s *recordingSpan) TracerProvider() trace.TracerProvider { | ||||
| 	return s.tracer.provider | ||||
| } | ||||
|  | ||||
| // snapshot creates a read-only copy of the current state of the span. | ||||
| func (s *span) snapshot() ReadOnlySpan { | ||||
| func (s *recordingSpan) snapshot() ReadOnlySpan { | ||||
| 	var sd snapshot | ||||
| 	s.mu.Lock() | ||||
| 	defer s.mu.Unlock() | ||||
| @@ -516,7 +540,7 @@ func (s *span) snapshot() ReadOnlySpan { | ||||
| 	return &sd | ||||
| } | ||||
|  | ||||
| func (s *span) interfaceArrayToLinksArray() []Link { | ||||
| func (s *recordingSpan) interfaceArrayToLinksArray() []Link { | ||||
| 	linkArr := make([]Link, 0) | ||||
| 	for _, value := range s.links.queue { | ||||
| 		linkArr = append(linkArr, value.(Link)) | ||||
| @@ -524,7 +548,7 @@ func (s *span) interfaceArrayToLinksArray() []Link { | ||||
| 	return linkArr | ||||
| } | ||||
|  | ||||
| func (s *span) interfaceArrayToEventArray() []Event { | ||||
| func (s *recordingSpan) interfaceArrayToEventArray() []Event { | ||||
| 	eventArr := make([]Event, 0) | ||||
| 	for _, value := range s.events.queue { | ||||
| 		eventArr = append(eventArr, value.(Event)) | ||||
| @@ -532,7 +556,7 @@ func (s *span) interfaceArrayToEventArray() []Event { | ||||
| 	return eventArr | ||||
| } | ||||
|  | ||||
| func (s *span) copyToCappedAttributes(attributes ...attribute.KeyValue) { | ||||
| func (s *recordingSpan) copyToCappedAttributes(attributes ...attribute.KeyValue) { | ||||
| 	s.mu.Lock() | ||||
| 	defer s.mu.Unlock() | ||||
| 	for _, a := range attributes { | ||||
| @@ -544,7 +568,7 @@ func (s *span) copyToCappedAttributes(attributes ...attribute.KeyValue) { | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func (s *span) addChild() { | ||||
| func (s *recordingSpan) addChild() { | ||||
| 	if !s.IsRecording() { | ||||
| 		return | ||||
| 	} | ||||
| @@ -553,82 +577,66 @@ func (s *span) addChild() { | ||||
| 	s.mu.Unlock() | ||||
| } | ||||
|  | ||||
| func (*span) private() {} | ||||
| func (*recordingSpan) private() {} | ||||
|  | ||||
| func startSpanInternal(ctx context.Context, tr *tracer, name string, o *trace.SpanConfig) *span { | ||||
| 	span := &span{} | ||||
|  | ||||
| 	provider := tr.provider | ||||
|  | ||||
| 	// If told explicitly to make this a new root use a zero value SpanContext | ||||
| 	// as a parent which contains an invalid trace ID and is not remote. | ||||
| 	var psc trace.SpanContext | ||||
| 	if o.NewRoot() { | ||||
| 		ctx = trace.ContextWithSpanContext(ctx, psc) | ||||
| 	} else { | ||||
| 		psc = trace.SpanContextFromContext(ctx) | ||||
| // runtimeTrace starts a "runtime/trace".Task for the span and returns a | ||||
| // context containing the task. | ||||
| func (s *recordingSpan) runtimeTrace(ctx context.Context) context.Context { | ||||
| 	if !rt.IsEnabled() { | ||||
| 		// Avoid additional overhead if runtime/trace is not enabled. | ||||
| 		return ctx | ||||
| 	} | ||||
| 	nctx, task := rt.NewTask(ctx, s.name) | ||||
|  | ||||
| 	// If there is a valid parent trace ID, use it to ensure the continuity of | ||||
| 	// the trace. Always generate a new span ID so other components can rely | ||||
| 	// on a unique span ID, even if the Span is non-recording. | ||||
| 	var tid trace.TraceID | ||||
| 	var sid trace.SpanID | ||||
| 	if !psc.TraceID().IsValid() { | ||||
| 		tid, sid = provider.idGenerator.NewIDs(ctx) | ||||
| 	} else { | ||||
| 		tid = psc.TraceID() | ||||
| 		sid = provider.idGenerator.NewSpanID(ctx, tid) | ||||
| 	} | ||||
| 	s.mu.Lock() | ||||
| 	s.executionTracerTaskEnd = task.End | ||||
| 	s.mu.Unlock() | ||||
|  | ||||
| 	spanLimits := provider.spanLimits | ||||
| 	span.attributes = newAttributesMap(spanLimits.AttributeCountLimit) | ||||
| 	span.events = newEvictedQueue(spanLimits.EventCountLimit) | ||||
| 	span.links = newEvictedQueue(spanLimits.LinkCountLimit) | ||||
| 	span.spanLimits = spanLimits | ||||
|  | ||||
| 	samplingResult := provider.sampler.ShouldSample(SamplingParameters{ | ||||
| 		ParentContext: ctx, | ||||
| 		TraceID:       tid, | ||||
| 		Name:          name, | ||||
| 		Kind:          o.SpanKind(), | ||||
| 		Attributes:    o.Attributes(), | ||||
| 		Links:         o.Links(), | ||||
| 	}) | ||||
|  | ||||
| 	scc := trace.SpanContextConfig{ | ||||
| 		TraceID:    tid, | ||||
| 		SpanID:     sid, | ||||
| 		TraceState: samplingResult.Tracestate, | ||||
| 	} | ||||
| 	if isSampled(samplingResult) { | ||||
| 		scc.TraceFlags = psc.TraceFlags() | trace.FlagsSampled | ||||
| 	} else { | ||||
| 		scc.TraceFlags = psc.TraceFlags() &^ trace.FlagsSampled | ||||
| 	} | ||||
| 	span.spanContext = trace.NewSpanContext(scc) | ||||
|  | ||||
| 	if !isRecording(samplingResult) { | ||||
| 		return span | ||||
| 	} | ||||
|  | ||||
| 	startTime := o.Timestamp() | ||||
| 	if startTime.IsZero() { | ||||
| 		startTime = time.Now() | ||||
| 	} | ||||
| 	span.startTime = startTime | ||||
|  | ||||
| 	span.spanKind = trace.ValidateSpanKind(o.SpanKind()) | ||||
| 	span.name = name | ||||
| 	span.parent = psc | ||||
| 	span.resource = provider.resource | ||||
| 	span.instrumentationLibrary = tr.instrumentationLibrary | ||||
|  | ||||
| 	span.SetAttributes(samplingResult.Attributes...) | ||||
|  | ||||
| 	return span | ||||
| 	return nctx | ||||
| } | ||||
|  | ||||
| // nonRecordingSpan is a minimal implementation of the OpenTelemetry Span API | ||||
| // that wraps a SpanContext. It performs no operations other than to return | ||||
| // the wrapped SpanContext or TracerProvider that created it. | ||||
| type nonRecordingSpan struct { | ||||
| 	// tracer is the SDK tracer that created this span. | ||||
| 	tracer *tracer | ||||
| 	sc     trace.SpanContext | ||||
| } | ||||
|  | ||||
| var _ trace.Span = nonRecordingSpan{} | ||||
|  | ||||
| // SpanContext returns the wrapped SpanContext. | ||||
| func (s nonRecordingSpan) SpanContext() trace.SpanContext { return s.sc } | ||||
|  | ||||
| // IsRecording always returns false. | ||||
| func (nonRecordingSpan) IsRecording() bool { return false } | ||||
|  | ||||
| // SetStatus does nothing. | ||||
| func (nonRecordingSpan) SetStatus(codes.Code, string) {} | ||||
|  | ||||
| // SetError does nothing. | ||||
| func (nonRecordingSpan) SetError(bool) {} | ||||
|  | ||||
| // SetAttributes does nothing. | ||||
| func (nonRecordingSpan) SetAttributes(...attribute.KeyValue) {} | ||||
|  | ||||
| // End does nothing. | ||||
| func (nonRecordingSpan) End(...trace.SpanEndOption) {} | ||||
|  | ||||
| // RecordError does nothing. | ||||
| func (nonRecordingSpan) RecordError(error, ...trace.EventOption) {} | ||||
|  | ||||
| // AddEvent does nothing. | ||||
| func (nonRecordingSpan) AddEvent(string, ...trace.EventOption) {} | ||||
|  | ||||
| // SetName does nothing. | ||||
| func (nonRecordingSpan) SetName(string) {} | ||||
|  | ||||
| // TracerProvider returns the trace.TracerProvider that provided the Tracer | ||||
| // that created this span. | ||||
| func (s nonRecordingSpan) TracerProvider() trace.TracerProvider { return s.tracer.provider } | ||||
|  | ||||
| func isRecording(s SamplingResult) bool { | ||||
| 	return s.Decision == RecordOnly || s.Decision == RecordAndSample | ||||
| } | ||||
|   | ||||
							
								
								
									
										128
									
								
								vendor/go.opentelemetry.io/otel/sdk/trace/tracer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										128
									
								
								vendor/go.opentelemetry.io/otel/sdk/trace/tracer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -16,7 +16,7 @@ package trace // import "go.opentelemetry.io/otel/sdk/trace" | ||||
|  | ||||
| import ( | ||||
| 	"context" | ||||
| 	rt "runtime/trace" | ||||
| 	"time" | ||||
|  | ||||
| 	"go.opentelemetry.io/otel/trace" | ||||
|  | ||||
| @@ -34,42 +34,120 @@ var _ trace.Tracer = &tracer{} | ||||
| // | ||||
| // The Span is created with the provided name and as a child of any existing | ||||
| // span context found in the passed context. The created Span will be | ||||
| // configured appropriately by any SpanOption passed. Any Timestamp option | ||||
| // passed will be used as the start time of the Span's life-cycle. | ||||
| // configured appropriately by any SpanOption passed. | ||||
| func (tr *tracer) Start(ctx context.Context, name string, options ...trace.SpanStartOption) (context.Context, trace.Span) { | ||||
| 	config := trace.NewSpanStartConfig(options...) | ||||
|  | ||||
| 	// For local spans created by this SDK, track child span count. | ||||
| 	if p := trace.SpanFromContext(ctx); p != nil { | ||||
| 		if sdkSpan, ok := p.(*span); ok { | ||||
| 		if sdkSpan, ok := p.(*recordingSpan); ok { | ||||
| 			sdkSpan.addChild() | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	span := startSpanInternal(ctx, tr, name, config) | ||||
| 	for _, l := range config.Links() { | ||||
| 		span.addLink(l) | ||||
| 	} | ||||
| 	span.SetAttributes(config.Attributes()...) | ||||
|  | ||||
| 	span.tracer = tr | ||||
|  | ||||
| 	if span.IsRecording() { | ||||
| 	s := tr.newSpan(ctx, name, &config) | ||||
| 	if rw, ok := s.(ReadWriteSpan); ok && s.IsRecording() { | ||||
| 		sps, _ := tr.provider.spanProcessors.Load().(spanProcessorStates) | ||||
| 		for _, sp := range sps { | ||||
| 			sp.sp.OnStart(ctx, span) | ||||
| 			sp.sp.OnStart(ctx, rw) | ||||
| 		} | ||||
| 	} | ||||
| 	if rtt, ok := s.(runtimeTracer); ok { | ||||
| 		ctx = rtt.runtimeTrace(ctx) | ||||
| 	} | ||||
|  | ||||
| 	ctx, span.executionTracerTaskEnd = func(ctx context.Context) (context.Context, func()) { | ||||
| 		if !rt.IsEnabled() { | ||||
| 			// Avoid additional overhead if | ||||
| 			// runtime/trace is not enabled. | ||||
| 			return ctx, func() {} | ||||
| 		} | ||||
| 		nctx, task := rt.NewTask(ctx, name) | ||||
| 		return nctx, task.End | ||||
| 	}(ctx) | ||||
|  | ||||
| 	return trace.ContextWithSpan(ctx, span), span | ||||
| 	return trace.ContextWithSpan(ctx, s), s | ||||
| } | ||||
|  | ||||
| type runtimeTracer interface { | ||||
| 	// runtimeTrace starts a "runtime/trace".Task for the span and | ||||
| 	// returns a context containing the task. | ||||
| 	runtimeTrace(ctx context.Context) context.Context | ||||
| } | ||||
|  | ||||
| // newSpan returns a new configured span. | ||||
| func (tr *tracer) newSpan(ctx context.Context, name string, config *trace.SpanConfig) trace.Span { | ||||
| 	// If told explicitly to make this a new root use a zero value SpanContext | ||||
| 	// as a parent which contains an invalid trace ID and is not remote. | ||||
| 	var psc trace.SpanContext | ||||
| 	if config.NewRoot() { | ||||
| 		ctx = trace.ContextWithSpanContext(ctx, psc) | ||||
| 	} else { | ||||
| 		psc = trace.SpanContextFromContext(ctx) | ||||
| 	} | ||||
|  | ||||
| 	// If there is a valid parent trace ID, use it to ensure the continuity of | ||||
| 	// the trace. Always generate a new span ID so other components can rely | ||||
| 	// on a unique span ID, even if the Span is non-recording. | ||||
| 	var tid trace.TraceID | ||||
| 	var sid trace.SpanID | ||||
| 	if !psc.TraceID().IsValid() { | ||||
| 		tid, sid = tr.provider.idGenerator.NewIDs(ctx) | ||||
| 	} else { | ||||
| 		tid = psc.TraceID() | ||||
| 		sid = tr.provider.idGenerator.NewSpanID(ctx, tid) | ||||
| 	} | ||||
|  | ||||
| 	samplingResult := tr.provider.sampler.ShouldSample(SamplingParameters{ | ||||
| 		ParentContext: ctx, | ||||
| 		TraceID:       tid, | ||||
| 		Name:          name, | ||||
| 		Kind:          config.SpanKind(), | ||||
| 		Attributes:    config.Attributes(), | ||||
| 		Links:         config.Links(), | ||||
| 	}) | ||||
|  | ||||
| 	scc := trace.SpanContextConfig{ | ||||
| 		TraceID:    tid, | ||||
| 		SpanID:     sid, | ||||
| 		TraceState: samplingResult.Tracestate, | ||||
| 	} | ||||
| 	if isSampled(samplingResult) { | ||||
| 		scc.TraceFlags = psc.TraceFlags() | trace.FlagsSampled | ||||
| 	} else { | ||||
| 		scc.TraceFlags = psc.TraceFlags() &^ trace.FlagsSampled | ||||
| 	} | ||||
| 	sc := trace.NewSpanContext(scc) | ||||
|  | ||||
| 	if !isRecording(samplingResult) { | ||||
| 		return tr.newNonRecordingSpan(sc) | ||||
| 	} | ||||
| 	return tr.newRecordingSpan(psc, sc, name, samplingResult, config) | ||||
| } | ||||
|  | ||||
| // newRecordingSpan returns a new configured recordingSpan. | ||||
| func (tr *tracer) newRecordingSpan(psc, sc trace.SpanContext, name string, sr SamplingResult, config *trace.SpanConfig) *recordingSpan { | ||||
| 	startTime := config.Timestamp() | ||||
| 	if startTime.IsZero() { | ||||
| 		startTime = time.Now() | ||||
| 	} | ||||
|  | ||||
| 	s := &recordingSpan{ | ||||
| 		parent:                 psc, | ||||
| 		spanContext:            sc, | ||||
| 		spanKind:               trace.ValidateSpanKind(config.SpanKind()), | ||||
| 		name:                   name, | ||||
| 		startTime:              startTime, | ||||
| 		attributes:             newAttributesMap(tr.provider.spanLimits.AttributeCountLimit), | ||||
| 		events:                 newEvictedQueue(tr.provider.spanLimits.EventCountLimit), | ||||
| 		links:                  newEvictedQueue(tr.provider.spanLimits.LinkCountLimit), | ||||
| 		tracer:                 tr, | ||||
| 		spanLimits:             tr.provider.spanLimits, | ||||
| 		resource:               tr.provider.resource, | ||||
| 		instrumentationLibrary: tr.instrumentationLibrary, | ||||
| 	} | ||||
|  | ||||
| 	for _, l := range config.Links() { | ||||
| 		s.addLink(l) | ||||
| 	} | ||||
|  | ||||
| 	s.SetAttributes(sr.Attributes...) | ||||
| 	s.SetAttributes(config.Attributes()...) | ||||
|  | ||||
| 	return s | ||||
| } | ||||
|  | ||||
| // newNonRecordingSpan returns a new configured nonRecordingSpan. | ||||
| func (tr *tracer) newNonRecordingSpan(sc trace.SpanContext) nonRecordingSpan { | ||||
| 	return nonRecordingSpan{tracer: tr, sc: sc} | ||||
| } | ||||
|   | ||||
							
								
								
									
										3
									
								
								vendor/go.opentelemetry.io/otel/semconv/v1.4.0/doc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/go.opentelemetry.io/otel/semconv/v1.4.0/doc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -14,9 +14,6 @@ | ||||
|  | ||||
| // Package semconv implements OpenTelemetry semantic conventions. | ||||
| // | ||||
| // This package is currently in a Release Candidate phase. Backwards incompatible changes | ||||
| // may be introduced prior to v1.0.0, but we believe the current API is ready to stabilize. | ||||
| // | ||||
| // OpenTelemetry semantic conventions are agreed standardized naming | ||||
| // patterns for OpenTelemetry things. This package represents the conventions | ||||
| // as of the v1.4.0 version of the OpenTelemetry specification. | ||||
|   | ||||
							
								
								
									
										2
									
								
								vendor/go.opentelemetry.io/otel/semconv/v1.4.0/exception.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/go.opentelemetry.io/otel/semconv/v1.4.0/exception.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -12,7 +12,7 @@ | ||||
| // See the License for the specific language governing permissions and | ||||
| // limitations under the License. | ||||
|  | ||||
| package semconv | ||||
| package semconv // import "go.opentelemetry.io/otel/semconv/v1.4.0" | ||||
|  | ||||
| const ( | ||||
| 	// ExceptionEventName is the name of the Span event representing an exception. | ||||
|   | ||||
							
								
								
									
										2
									
								
								vendor/go.opentelemetry.io/otel/semconv/v1.4.0/schema.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/go.opentelemetry.io/otel/semconv/v1.4.0/schema.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -12,7 +12,7 @@ | ||||
| // See the License for the specific language governing permissions and | ||||
| // limitations under the License. | ||||
|  | ||||
| package semconv | ||||
| package semconv // import "go.opentelemetry.io/otel/semconv/v1.4.0" | ||||
|  | ||||
| // SchemaURL is the schema URL that matches the version of the semantic conventions | ||||
| // that this package defines. Semconv packages starting from v1.4.0 must declare | ||||
|   | ||||
							
								
								
									
										4
									
								
								vendor/go.opentelemetry.io/otel/trace.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/go.opentelemetry.io/otel/trace.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -31,9 +31,9 @@ func Tracer(name string, opts ...trace.TracerOption) trace.Tracer { | ||||
| // If none is registered then an instance of NoopTracerProvider is returned. | ||||
| // | ||||
| // Use the trace provider to create a named tracer. E.g. | ||||
| //     tracer := global.GetTracerProvider().Tracer("example.com/foo") | ||||
| //     tracer := otel.GetTracerProvider().Tracer("example.com/foo") | ||||
| // or | ||||
| //     tracer := global.Tracer("example.com/foo") | ||||
| //     tracer := otel.Tracer("example.com/foo") | ||||
| func GetTracerProvider() trace.TracerProvider { | ||||
| 	return global.TracerProvider() | ||||
| } | ||||
|   | ||||
							
								
								
									
										59
									
								
								vendor/go.opentelemetry.io/otel/trace/config.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										59
									
								
								vendor/go.opentelemetry.io/otel/trace/config.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -38,10 +38,10 @@ func (t *TracerConfig) SchemaURL() string { | ||||
| } | ||||
|  | ||||
| // NewTracerConfig applies all the options to a returned TracerConfig. | ||||
| func NewTracerConfig(options ...TracerOption) *TracerConfig { | ||||
| 	config := new(TracerConfig) | ||||
| func NewTracerConfig(options ...TracerOption) TracerConfig { | ||||
| 	var config TracerConfig | ||||
| 	for _, option := range options { | ||||
| 		option.apply(config) | ||||
| 		option.apply(&config) | ||||
| 	} | ||||
| 	return config | ||||
| } | ||||
| @@ -64,6 +64,7 @@ type SpanConfig struct { | ||||
| 	links      []Link | ||||
| 	newRoot    bool | ||||
| 	spanKind   SpanKind | ||||
| 	stackTrace bool | ||||
| } | ||||
|  | ||||
| // Attributes describe the associated qualities of a Span. | ||||
| @@ -76,6 +77,11 @@ func (cfg *SpanConfig) Timestamp() time.Time { | ||||
| 	return cfg.timestamp | ||||
| } | ||||
|  | ||||
| // StackTrace checks whether stack trace capturing is enabled. | ||||
| func (cfg *SpanConfig) StackTrace() bool { | ||||
| 	return cfg.stackTrace | ||||
| } | ||||
|  | ||||
| // Links are the associations a Span has with other Spans. | ||||
| func (cfg *SpanConfig) Links() []Link { | ||||
| 	return cfg.links | ||||
| @@ -97,10 +103,10 @@ func (cfg *SpanConfig) SpanKind() SpanKind { | ||||
| // No validation is performed on the returned SpanConfig (e.g. no uniqueness | ||||
| // checking or bounding of data), it is left to the SDK to perform this | ||||
| // action. | ||||
| func NewSpanStartConfig(options ...SpanStartOption) *SpanConfig { | ||||
| 	c := new(SpanConfig) | ||||
| func NewSpanStartConfig(options ...SpanStartOption) SpanConfig { | ||||
| 	var c SpanConfig | ||||
| 	for _, option := range options { | ||||
| 		option.applySpanStart(c) | ||||
| 		option.applySpanStart(&c) | ||||
| 	} | ||||
| 	return c | ||||
| } | ||||
| @@ -109,10 +115,10 @@ func NewSpanStartConfig(options ...SpanStartOption) *SpanConfig { | ||||
| // No validation is performed on the returned SpanConfig (e.g. no uniqueness | ||||
| // checking or bounding of data), it is left to the SDK to perform this | ||||
| // action. | ||||
| func NewSpanEndConfig(options ...SpanEndOption) *SpanConfig { | ||||
| 	c := new(SpanConfig) | ||||
| func NewSpanEndConfig(options ...SpanEndOption) SpanConfig { | ||||
| 	var c SpanConfig | ||||
| 	for _, option := range options { | ||||
| 		option.applySpanEnd(c) | ||||
| 		option.applySpanEnd(&c) | ||||
| 	} | ||||
| 	return c | ||||
| } | ||||
| @@ -139,6 +145,7 @@ type SpanEndOption interface { | ||||
| type EventConfig struct { | ||||
| 	attributes []attribute.KeyValue | ||||
| 	timestamp  time.Time | ||||
| 	stackTrace bool | ||||
| } | ||||
|  | ||||
| // Attributes describe the associated qualities of an Event. | ||||
| @@ -151,14 +158,19 @@ func (cfg *EventConfig) Timestamp() time.Time { | ||||
| 	return cfg.timestamp | ||||
| } | ||||
|  | ||||
| // NewEventConfig applies all the EventOptions to a returned SpanConfig. If no | ||||
| // timestamp option is passed, the returned SpanConfig will have a Timestamp | ||||
| // StackTrace checks whether stack trace capturing is enabled. | ||||
| func (cfg *EventConfig) StackTrace() bool { | ||||
| 	return cfg.stackTrace | ||||
| } | ||||
|  | ||||
| // NewEventConfig applies all the EventOptions to a returned EventConfig. If no | ||||
| // timestamp option is passed, the returned EventConfig will have a Timestamp | ||||
| // set to the call time, otherwise no validation is performed on the returned | ||||
| // SpanConfig. | ||||
| func NewEventConfig(options ...EventOption) *EventConfig { | ||||
| 	c := new(EventConfig) | ||||
| // EventConfig. | ||||
| func NewEventConfig(options ...EventOption) EventConfig { | ||||
| 	var c EventConfig | ||||
| 	for _, option := range options { | ||||
| 		option.applyEvent(c) | ||||
| 		option.applyEvent(&c) | ||||
| 	} | ||||
| 	if c.timestamp.IsZero() { | ||||
| 		c.timestamp = time.Now() | ||||
| @@ -183,6 +195,12 @@ type SpanStartEventOption interface { | ||||
| 	EventOption | ||||
| } | ||||
|  | ||||
| // SpanEndEventOption are options that can be used at the end of a span, or with an event. | ||||
| type SpanEndEventOption interface { | ||||
| 	SpanEndOption | ||||
| 	EventOption | ||||
| } | ||||
|  | ||||
| type attributeOption []attribute.KeyValue | ||||
|  | ||||
| func (o attributeOption) applySpan(c *SpanConfig) { | ||||
| @@ -229,6 +247,17 @@ func WithTimestamp(t time.Time) SpanEventOption { | ||||
| 	return timestampOption(t) | ||||
| } | ||||
|  | ||||
| type stackTraceOption bool | ||||
|  | ||||
| func (o stackTraceOption) applyEvent(c *EventConfig)  { c.stackTrace = bool(o) } | ||||
| func (o stackTraceOption) applySpan(c *SpanConfig)    { c.stackTrace = bool(o) } | ||||
| func (o stackTraceOption) applySpanEnd(c *SpanConfig) { o.applySpan(c) } | ||||
|  | ||||
| // WithStackTrace sets the flag to capture the error with stack trace (e.g. true, false). | ||||
| func WithStackTrace(b bool) SpanEndEventOption { | ||||
| 	return stackTraceOption(b) | ||||
| } | ||||
|  | ||||
| // WithLinks adds links to a Span. The links are added to the existing Span | ||||
| // links, i.e. this does not overwrite. | ||||
| func WithLinks(links ...Link) SpanStartOption { | ||||
|   | ||||
							
								
								
									
										3
									
								
								vendor/go.opentelemetry.io/otel/trace/doc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/go.opentelemetry.io/otel/trace/doc.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -16,9 +16,6 @@ | ||||
| Package trace provides an implementation of the tracing part of the | ||||
| OpenTelemetry API. | ||||
|  | ||||
| This package is currently in a Release Candidate phase. Backwards incompatible changes | ||||
| may be introduced prior to v1.0.0, but we believe the current API is ready to stabilize. | ||||
|  | ||||
| To participate in distributed traces a Span needs to be created for the | ||||
| operation being performed as part of a traced workflow. It its simplest form: | ||||
|  | ||||
|   | ||||
							
								
								
									
										8
									
								
								vendor/go.opentelemetry.io/otel/trace/go.mod
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										8
									
								
								vendor/go.opentelemetry.io/otel/trace/go.mod
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -32,8 +32,6 @@ replace go.opentelemetry.io/otel/internal/tools => ../internal/tools | ||||
|  | ||||
| replace go.opentelemetry.io/otel/metric => ../metric | ||||
|  | ||||
| replace go.opentelemetry.io/otel/oteltest => ../oteltest | ||||
|  | ||||
| replace go.opentelemetry.io/otel/sdk => ../sdk | ||||
|  | ||||
| replace go.opentelemetry.io/otel/sdk/export/metric => ../sdk/export/metric | ||||
| @@ -45,7 +43,7 @@ replace go.opentelemetry.io/otel/trace => ./ | ||||
| require ( | ||||
| 	github.com/google/go-cmp v0.5.6 | ||||
| 	github.com/stretchr/testify v1.7.0 | ||||
| 	go.opentelemetry.io/otel v1.0.0-RC2 | ||||
| 	go.opentelemetry.io/otel v1.0.1 | ||||
| ) | ||||
|  | ||||
| replace go.opentelemetry.io/otel/example/passthrough => ../example/passthrough | ||||
| @@ -67,3 +65,7 @@ replace go.opentelemetry.io/otel/exporters/stdout/stdoutmetric => ../exporters/s | ||||
| replace go.opentelemetry.io/otel/exporters/stdout/stdouttrace => ../exporters/stdout/stdouttrace | ||||
|  | ||||
| replace go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetrichttp => ../exporters/otlp/otlpmetric/otlpmetrichttp | ||||
|  | ||||
| replace go.opentelemetry.io/otel/bridge/opencensus/test => ../bridge/opencensus/test | ||||
|  | ||||
| replace go.opentelemetry.io/otel/example/fib => ../example/fib | ||||
|   | ||||
							
								
								
									
										2
									
								
								vendor/go.opentelemetry.io/otel/trace/tracestate.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/go.opentelemetry.io/otel/trace/tracestate.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -12,7 +12,7 @@ | ||||
| // See the License for the specific language governing permissions and | ||||
| // limitations under the License. | ||||
|  | ||||
| package trace | ||||
| package trace // import "go.opentelemetry.io/otel/trace" | ||||
|  | ||||
| import ( | ||||
| 	"encoding/json" | ||||
|   | ||||
							
								
								
									
										2
									
								
								vendor/go.opentelemetry.io/otel/version.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/go.opentelemetry.io/otel/version.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -16,5 +16,5 @@ package otel // import "go.opentelemetry.io/otel" | ||||
|  | ||||
| // Version is the current release version of OpenTelemetry in use. | ||||
| func Version() string { | ||||
| 	return "1.0.0-RC1" | ||||
| 	return "1.0.1" | ||||
| } | ||||
|   | ||||
							
								
								
									
										9
									
								
								vendor/go.opentelemetry.io/otel/versions.yaml
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								vendor/go.opentelemetry.io/otel/versions.yaml
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -14,10 +14,11 @@ | ||||
|  | ||||
| module-sets: | ||||
|   stable-v1: | ||||
|     version: v1.0.0-RC2 | ||||
|     version: v1.0.1 | ||||
|     modules: | ||||
|       - go.opentelemetry.io/otel | ||||
|       - go.opentelemetry.io/otel/bridge/opentracing | ||||
|       - go.opentelemetry.io/otel/example/fib | ||||
|       - go.opentelemetry.io/otel/example/jaeger | ||||
|       - go.opentelemetry.io/otel/example/namedtracer | ||||
|       - go.opentelemetry.io/otel/example/otel-collector | ||||
| @@ -29,11 +30,10 @@ module-sets: | ||||
|       - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc | ||||
|       - go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp | ||||
|       - go.opentelemetry.io/otel/exporters/stdout/stdouttrace | ||||
|       - go.opentelemetry.io/otel/oteltest | ||||
|       - go.opentelemetry.io/otel/trace | ||||
|       - go.opentelemetry.io/otel/sdk | ||||
|   experimental-metrics: | ||||
|     version: v0.22.0 | ||||
|     version: v0.24.0 | ||||
|     modules: | ||||
|       - go.opentelemetry.io/otel/example/prometheus | ||||
|       - go.opentelemetry.io/otel/exporters/otlp/otlpmetric | ||||
| @@ -46,9 +46,10 @@ module-sets: | ||||
|       - go.opentelemetry.io/otel/sdk/export/metric | ||||
|       - go.opentelemetry.io/otel/sdk/metric | ||||
|   bridge: | ||||
|     version: v0.21.0 | ||||
|     version: v0.24.0 | ||||
|     modules: | ||||
|       - go.opentelemetry.io/otel/bridge/opencensus | ||||
|       - go.opentelemetry.io/otel/bridge/opencensus/test | ||||
|       - go.opentelemetry.io/otel/example/opencensus | ||||
| excluded-modules: | ||||
|   - go.opentelemetry.io/otel/internal/tools | ||||
|   | ||||
							
								
								
									
										5
									
								
								vendor/google.golang.org/grpc/MAINTAINERS.md
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/google.golang.org/grpc/MAINTAINERS.md
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -8,17 +8,18 @@ See [CONTRIBUTING.md](https://github.com/grpc/grpc-community/blob/master/CONTRIB | ||||
| for general contribution guidelines. | ||||
|  | ||||
| ## Maintainers (in alphabetical order) | ||||
| - [canguler](https://github.com/canguler), Google LLC | ||||
|  | ||||
| - [cesarghali](https://github.com/cesarghali), Google LLC | ||||
| - [dfawley](https://github.com/dfawley), Google LLC | ||||
| - [easwars](https://github.com/easwars), Google LLC | ||||
| - [jadekler](https://github.com/jadekler), Google LLC | ||||
| - [menghanl](https://github.com/menghanl), Google LLC | ||||
| - [srini100](https://github.com/srini100), Google LLC | ||||
|  | ||||
| ## Emeritus Maintainers (in alphabetical order) | ||||
| - [adelez](https://github.com/adelez), Google LLC | ||||
| - [canguler](https://github.com/canguler), Google LLC | ||||
| - [iamqizhao](https://github.com/iamqizhao), Google LLC | ||||
| - [jadekler](https://github.com/jadekler), Google LLC | ||||
| - [jtattermusch](https://github.com/jtattermusch), Google LLC | ||||
| - [lyuxuan](https://github.com/lyuxuan), Google LLC | ||||
| - [makmukhi](https://github.com/makmukhi), Google LLC | ||||
|   | ||||
							
								
								
									
										2
									
								
								vendor/google.golang.org/grpc/Makefile
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/google.golang.org/grpc/Makefile
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -41,8 +41,6 @@ vetdeps: | ||||
| 	clean \ | ||||
| 	proto \ | ||||
| 	test \ | ||||
| 	testappengine \ | ||||
| 	testappenginedeps \ | ||||
| 	testrace \ | ||||
| 	vet \ | ||||
| 	vetdeps | ||||
|   | ||||
							
								
								
									
										13
									
								
								vendor/google.golang.org/grpc/NOTICE.txt
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								vendor/google.golang.org/grpc/NOTICE.txt
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,13 @@ | ||||
| Copyright 2014 gRPC authors. | ||||
|  | ||||
| Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| you may not use this file except in compliance with the License. | ||||
| You may obtain a copy of the License at | ||||
|  | ||||
|     http://www.apache.org/licenses/LICENSE-2.0 | ||||
|  | ||||
| Unless required by applicable law or agreed to in writing, software | ||||
| distributed under the License is distributed on an "AS IS" BASIS, | ||||
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
| See the License for the specific language governing permissions and | ||||
| limitations under the License. | ||||
							
								
								
									
										68
									
								
								vendor/google.golang.org/grpc/balancer/balancer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										68
									
								
								vendor/google.golang.org/grpc/balancer/balancer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -75,24 +75,26 @@ func Get(name string) Builder { | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| // SubConn represents a gRPC sub connection. | ||||
| // Each sub connection contains a list of addresses. gRPC will | ||||
| // try to connect to them (in sequence), and stop trying the | ||||
| // remainder once one connection is successful. | ||||
| // A SubConn represents a single connection to a gRPC backend service. | ||||
| // | ||||
| // The reconnect backoff will be applied on the list, not a single address. | ||||
| // For example, try_on_all_addresses -> backoff -> try_on_all_addresses. | ||||
| // Each SubConn contains a list of addresses. | ||||
| // | ||||
| // All SubConns start in IDLE, and will not try to connect. To trigger | ||||
| // the connecting, Balancers must call Connect. | ||||
| // When the connection encounters an error, it will reconnect immediately. | ||||
| // When the connection becomes IDLE, it will not reconnect unless Connect is | ||||
| // called. | ||||
| // All SubConns start in IDLE, and will not try to connect. To trigger the | ||||
| // connecting, Balancers must call Connect.  If a connection re-enters IDLE, | ||||
| // Balancers must call Connect again to trigger a new connection attempt. | ||||
| // | ||||
| // This interface is to be implemented by gRPC. Users should not need a | ||||
| // brand new implementation of this interface. For the situations like | ||||
| // testing, the new implementation should embed this interface. This allows | ||||
| // gRPC to add new methods to this interface. | ||||
| // gRPC will try to connect to the addresses in sequence, and stop trying the | ||||
| // remainder once the first connection is successful. If an attempt to connect | ||||
| // to all addresses encounters an error, the SubConn will enter | ||||
| // TRANSIENT_FAILURE for a backoff period, and then transition to IDLE. | ||||
| // | ||||
| // Once established, if a connection is lost, the SubConn will transition | ||||
| // directly to IDLE. | ||||
| // | ||||
| // This interface is to be implemented by gRPC. Users should not need their own | ||||
| // implementation of this interface. For situations like testing, any | ||||
| // implementations should embed this interface. This allows gRPC to add new | ||||
| // methods to this interface. | ||||
| type SubConn interface { | ||||
| 	// UpdateAddresses updates the addresses used in this SubConn. | ||||
| 	// gRPC checks if currently-connected address is still in the new list. | ||||
| @@ -326,6 +328,20 @@ type Balancer interface { | ||||
| 	Close() | ||||
| } | ||||
|  | ||||
| // ExitIdler is an optional interface for balancers to implement.  If | ||||
| // implemented, ExitIdle will be called when ClientConn.Connect is called, if | ||||
| // the ClientConn is idle.  If unimplemented, ClientConn.Connect will cause | ||||
| // all SubConns to connect. | ||||
| // | ||||
| // Notice: it will be required for all balancers to implement this in a future | ||||
| // release. | ||||
| type ExitIdler interface { | ||||
| 	// ExitIdle instructs the LB policy to reconnect to backends / exit the | ||||
| 	// IDLE state, if appropriate and possible.  Note that SubConns that enter | ||||
| 	// the IDLE state will not reconnect until SubConn.Connect is called. | ||||
| 	ExitIdle() | ||||
| } | ||||
|  | ||||
| // SubConnState describes the state of a SubConn. | ||||
| type SubConnState struct { | ||||
| 	// ConnectivityState is the connectivity state of the SubConn. | ||||
| @@ -353,8 +369,10 @@ var ErrBadResolverState = errors.New("bad resolver state") | ||||
| // | ||||
| // It's not thread safe. | ||||
| type ConnectivityStateEvaluator struct { | ||||
| 	numReady      uint64 // Number of addrConns in ready state. | ||||
| 	numConnecting uint64 // Number of addrConns in connecting state. | ||||
| 	numReady            uint64 // Number of addrConns in ready state. | ||||
| 	numConnecting       uint64 // Number of addrConns in connecting state. | ||||
| 	numTransientFailure uint64 // Number of addrConns in transient failure state. | ||||
| 	numIdle             uint64 // Number of addrConns in idle state. | ||||
| } | ||||
|  | ||||
| // RecordTransition records state change happening in subConn and based on that | ||||
| @@ -362,9 +380,11 @@ type ConnectivityStateEvaluator struct { | ||||
| // | ||||
| //  - If at least one SubConn in Ready, the aggregated state is Ready; | ||||
| //  - Else if at least one SubConn in Connecting, the aggregated state is Connecting; | ||||
| //  - Else the aggregated state is TransientFailure. | ||||
| //  - Else if at least one SubConn is TransientFailure, the aggregated state is Transient Failure; | ||||
| //  - Else if at least one SubConn is Idle, the aggregated state is Idle; | ||||
| //  - Else there are no subconns and the aggregated state is Transient Failure | ||||
| // | ||||
| // Idle and Shutdown are not considered. | ||||
| // Shutdown is not considered. | ||||
| func (cse *ConnectivityStateEvaluator) RecordTransition(oldState, newState connectivity.State) connectivity.State { | ||||
| 	// Update counters. | ||||
| 	for idx, state := range []connectivity.State{oldState, newState} { | ||||
| @@ -374,6 +394,10 @@ func (cse *ConnectivityStateEvaluator) RecordTransition(oldState, newState conne | ||||
| 			cse.numReady += updateVal | ||||
| 		case connectivity.Connecting: | ||||
| 			cse.numConnecting += updateVal | ||||
| 		case connectivity.TransientFailure: | ||||
| 			cse.numTransientFailure += updateVal | ||||
| 		case connectivity.Idle: | ||||
| 			cse.numIdle += updateVal | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| @@ -384,5 +408,11 @@ func (cse *ConnectivityStateEvaluator) RecordTransition(oldState, newState conne | ||||
| 	if cse.numConnecting > 0 { | ||||
| 		return connectivity.Connecting | ||||
| 	} | ||||
| 	if cse.numTransientFailure > 0 { | ||||
| 		return connectivity.TransientFailure | ||||
| 	} | ||||
| 	if cse.numIdle > 0 { | ||||
| 		return connectivity.Idle | ||||
| 	} | ||||
| 	return connectivity.TransientFailure | ||||
| } | ||||
|   | ||||
							
								
								
									
										15
									
								
								vendor/google.golang.org/grpc/balancer/base/balancer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										15
									
								
								vendor/google.golang.org/grpc/balancer/base/balancer.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -133,6 +133,7 @@ func (b *baseBalancer) UpdateClientConnState(s balancer.ClientConnState) error { | ||||
| 			} | ||||
| 			b.subConns[aNoAttrs] = subConnInfo{subConn: sc, attrs: a.Attributes} | ||||
| 			b.scStates[sc] = connectivity.Idle | ||||
| 			b.csEvltr.RecordTransition(connectivity.Shutdown, connectivity.Idle) | ||||
| 			sc.Connect() | ||||
| 		} else { | ||||
| 			// Always update the subconn's address in case the attributes | ||||
| @@ -213,10 +214,14 @@ func (b *baseBalancer) UpdateSubConnState(sc balancer.SubConn, state balancer.Su | ||||
| 		} | ||||
| 		return | ||||
| 	} | ||||
| 	if oldS == connectivity.TransientFailure && s == connectivity.Connecting { | ||||
| 		// Once a subconn enters TRANSIENT_FAILURE, ignore subsequent | ||||
| 	if oldS == connectivity.TransientFailure && | ||||
| 		(s == connectivity.Connecting || s == connectivity.Idle) { | ||||
| 		// Once a subconn enters TRANSIENT_FAILURE, ignore subsequent IDLE or | ||||
| 		// CONNECTING transitions to prevent the aggregated state from being | ||||
| 		// always CONNECTING when many backends exist but are all down. | ||||
| 		if s == connectivity.Idle { | ||||
| 			sc.Connect() | ||||
| 		} | ||||
| 		return | ||||
| 	} | ||||
| 	b.scStates[sc] = s | ||||
| @@ -242,7 +247,6 @@ func (b *baseBalancer) UpdateSubConnState(sc balancer.SubConn, state balancer.Su | ||||
| 		b.state == connectivity.TransientFailure { | ||||
| 		b.regeneratePicker() | ||||
| 	} | ||||
|  | ||||
| 	b.cc.UpdateState(balancer.State{ConnectivityState: b.state, Picker: b.picker}) | ||||
| } | ||||
|  | ||||
| @@ -251,6 +255,11 @@ func (b *baseBalancer) UpdateSubConnState(sc balancer.SubConn, state balancer.Su | ||||
| func (b *baseBalancer) Close() { | ||||
| } | ||||
|  | ||||
| // ExitIdle is a nop because the base balancer attempts to stay connected to | ||||
| // all SubConns at all times. | ||||
| func (b *baseBalancer) ExitIdle() { | ||||
| } | ||||
|  | ||||
| // NewErrPicker returns a Picker that always returns err on Pick(). | ||||
| func NewErrPicker(err error) balancer.Picker { | ||||
| 	return &errPicker{err: err} | ||||
|   | ||||
							
								
								
									
										4
									
								
								vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/google.golang.org/grpc/balancer/roundrobin/roundrobin.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -47,11 +47,11 @@ func init() { | ||||
| type rrPickerBuilder struct{} | ||||
|  | ||||
| func (*rrPickerBuilder) Build(info base.PickerBuildInfo) balancer.Picker { | ||||
| 	logger.Infof("roundrobinPicker: newPicker called with info: %v", info) | ||||
| 	logger.Infof("roundrobinPicker: Build called with info: %v", info) | ||||
| 	if len(info.ReadySCs) == 0 { | ||||
| 		return base.NewErrPicker(balancer.ErrNoSubConnAvailable) | ||||
| 	} | ||||
| 	var scs []balancer.SubConn | ||||
| 	scs := make([]balancer.SubConn, 0, len(info.ReadySCs)) | ||||
| 	for sc := range info.ReadySCs { | ||||
| 		scs = append(scs, sc) | ||||
| 	} | ||||
|   | ||||
							
								
								
									
										53
									
								
								vendor/google.golang.org/grpc/balancer_conn_wrappers.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										53
									
								
								vendor/google.golang.org/grpc/balancer_conn_wrappers.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -37,15 +37,20 @@ type scStateUpdate struct { | ||||
| 	err   error | ||||
| } | ||||
|  | ||||
| // exitIdle contains no data and is just a signal sent on the updateCh in | ||||
| // ccBalancerWrapper to instruct the balancer to exit idle. | ||||
| type exitIdle struct{} | ||||
|  | ||||
| // ccBalancerWrapper is a wrapper on top of cc for balancers. | ||||
| // It implements balancer.ClientConn interface. | ||||
| type ccBalancerWrapper struct { | ||||
| 	cc         *ClientConn | ||||
| 	balancerMu sync.Mutex // synchronizes calls to the balancer | ||||
| 	balancer   balancer.Balancer | ||||
| 	updateCh   *buffer.Unbounded | ||||
| 	closed     *grpcsync.Event | ||||
| 	done       *grpcsync.Event | ||||
| 	cc          *ClientConn | ||||
| 	balancerMu  sync.Mutex // synchronizes calls to the balancer | ||||
| 	balancer    balancer.Balancer | ||||
| 	hasExitIdle bool | ||||
| 	updateCh    *buffer.Unbounded | ||||
| 	closed      *grpcsync.Event | ||||
| 	done        *grpcsync.Event | ||||
|  | ||||
| 	mu       sync.Mutex | ||||
| 	subConns map[*acBalancerWrapper]struct{} | ||||
| @@ -61,6 +66,7 @@ func newCCBalancerWrapper(cc *ClientConn, b balancer.Builder, bopts balancer.Bui | ||||
| 	} | ||||
| 	go ccb.watcher() | ||||
| 	ccb.balancer = b.Build(ccb, bopts) | ||||
| 	_, ccb.hasExitIdle = ccb.balancer.(balancer.ExitIdler) | ||||
| 	return ccb | ||||
| } | ||||
|  | ||||
| @@ -86,6 +92,17 @@ func (ccb *ccBalancerWrapper) watcher() { | ||||
| 					ccb.cc.removeAddrConn(u.getAddrConn(), errConnDrain) | ||||
| 				} | ||||
| 				ccb.mu.Unlock() | ||||
| 			case exitIdle: | ||||
| 				if ccb.cc.GetState() == connectivity.Idle { | ||||
| 					if ei, ok := ccb.balancer.(balancer.ExitIdler); ok { | ||||
| 						// We already checked that the balancer implements | ||||
| 						// ExitIdle before pushing the event to updateCh, but | ||||
| 						// check conditionally again as defensive programming. | ||||
| 						ccb.balancerMu.Lock() | ||||
| 						ei.ExitIdle() | ||||
| 						ccb.balancerMu.Unlock() | ||||
| 					} | ||||
| 				} | ||||
| 			default: | ||||
| 				logger.Errorf("ccBalancerWrapper.watcher: unknown update %+v, type %T", t, t) | ||||
| 			} | ||||
| @@ -118,6 +135,14 @@ func (ccb *ccBalancerWrapper) close() { | ||||
| 	<-ccb.done.Done() | ||||
| } | ||||
|  | ||||
| func (ccb *ccBalancerWrapper) exitIdle() bool { | ||||
| 	if !ccb.hasExitIdle { | ||||
| 		return false | ||||
| 	} | ||||
| 	ccb.updateCh.Put(exitIdle{}) | ||||
| 	return true | ||||
| } | ||||
|  | ||||
| func (ccb *ccBalancerWrapper) handleSubConnStateChange(sc balancer.SubConn, s connectivity.State, err error) { | ||||
| 	// When updating addresses for a SubConn, if the address in use is not in | ||||
| 	// the new addresses, the old ac will be tearDown() and a new ac will be | ||||
| @@ -144,8 +169,8 @@ func (ccb *ccBalancerWrapper) updateClientConnState(ccs *balancer.ClientConnStat | ||||
|  | ||||
| func (ccb *ccBalancerWrapper) resolverError(err error) { | ||||
| 	ccb.balancerMu.Lock() | ||||
| 	defer ccb.balancerMu.Unlock() | ||||
| 	ccb.balancer.ResolverError(err) | ||||
| 	ccb.balancerMu.Unlock() | ||||
| } | ||||
|  | ||||
| func (ccb *ccBalancerWrapper) NewSubConn(addrs []resolver.Address, opts balancer.NewSubConnOptions) (balancer.SubConn, error) { | ||||
| @@ -239,17 +264,17 @@ func (acbw *acBalancerWrapper) UpdateAddresses(addrs []resolver.Address) { | ||||
| 			return | ||||
| 		} | ||||
|  | ||||
| 		ac, err := cc.newAddrConn(addrs, opts) | ||||
| 		newAC, err := cc.newAddrConn(addrs, opts) | ||||
| 		if err != nil { | ||||
| 			channelz.Warningf(logger, acbw.ac.channelzID, "acBalancerWrapper: UpdateAddresses: failed to newAddrConn: %v", err) | ||||
| 			return | ||||
| 		} | ||||
| 		acbw.ac = ac | ||||
| 		ac.mu.Lock() | ||||
| 		ac.acbw = acbw | ||||
| 		ac.mu.Unlock() | ||||
| 		acbw.ac = newAC | ||||
| 		newAC.mu.Lock() | ||||
| 		newAC.acbw = acbw | ||||
| 		newAC.mu.Unlock() | ||||
| 		if acState != connectivity.Idle { | ||||
| 			ac.connect() | ||||
| 			go newAC.connect() | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
| @@ -257,7 +282,7 @@ func (acbw *acBalancerWrapper) UpdateAddresses(addrs []resolver.Address) { | ||||
| func (acbw *acBalancerWrapper) Connect() { | ||||
| 	acbw.mu.Lock() | ||||
| 	defer acbw.mu.Unlock() | ||||
| 	acbw.ac.connect() | ||||
| 	go acbw.ac.connect() | ||||
| } | ||||
|  | ||||
| func (acbw *acBalancerWrapper) getAddrConn() *addrConn { | ||||
|   | ||||
							
								
								
									
										342
									
								
								vendor/google.golang.org/grpc/clientconn.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										342
									
								
								vendor/google.golang.org/grpc/clientconn.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -322,6 +322,7 @@ func DialContext(ctx context.Context, target string, opts ...DialOption) (conn * | ||||
| 	// A blocking dial blocks until the clientConn is ready. | ||||
| 	if cc.dopts.block { | ||||
| 		for { | ||||
| 			cc.Connect() | ||||
| 			s := cc.GetState() | ||||
| 			if s == connectivity.Ready { | ||||
| 				break | ||||
| @@ -539,12 +540,31 @@ func (cc *ClientConn) WaitForStateChange(ctx context.Context, sourceState connec | ||||
| // | ||||
| // Experimental | ||||
| // | ||||
| // Notice: This API is EXPERIMENTAL and may be changed or removed in a | ||||
| // later release. | ||||
| // Notice: This API is EXPERIMENTAL and may be changed or removed in a later | ||||
| // release. | ||||
| func (cc *ClientConn) GetState() connectivity.State { | ||||
| 	return cc.csMgr.getState() | ||||
| } | ||||
|  | ||||
| // Connect causes all subchannels in the ClientConn to attempt to connect if | ||||
| // the channel is idle.  Does not wait for the connection attempts to begin | ||||
| // before returning. | ||||
| // | ||||
| // Experimental | ||||
| // | ||||
| // Notice: This API is EXPERIMENTAL and may be changed or removed in a later | ||||
| // release. | ||||
| func (cc *ClientConn) Connect() { | ||||
| 	cc.mu.Lock() | ||||
| 	defer cc.mu.Unlock() | ||||
| 	if cc.balancerWrapper != nil && cc.balancerWrapper.exitIdle() { | ||||
| 		return | ||||
| 	} | ||||
| 	for ac := range cc.conns { | ||||
| 		go ac.connect() | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func (cc *ClientConn) scWatcher() { | ||||
| 	for { | ||||
| 		select { | ||||
| @@ -845,8 +865,7 @@ func (ac *addrConn) connect() error { | ||||
| 	ac.updateConnectivityState(connectivity.Connecting, nil) | ||||
| 	ac.mu.Unlock() | ||||
|  | ||||
| 	// Start a goroutine connecting to the server asynchronously. | ||||
| 	go ac.resetTransport() | ||||
| 	ac.resetTransport() | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| @@ -883,6 +902,10 @@ func (ac *addrConn) tryUpdateAddrs(addrs []resolver.Address) bool { | ||||
| 	// ac.state is Ready, try to find the connected address. | ||||
| 	var curAddrFound bool | ||||
| 	for _, a := range addrs { | ||||
| 		// a.ServerName takes precedent over ClientConn authority, if present. | ||||
| 		if a.ServerName == "" { | ||||
| 			a.ServerName = ac.cc.authority | ||||
| 		} | ||||
| 		if reflect.DeepEqual(ac.curAddr, a) { | ||||
| 			curAddrFound = true | ||||
| 			break | ||||
| @@ -1135,112 +1158,86 @@ func (ac *addrConn) adjustParams(r transport.GoAwayReason) { | ||||
| } | ||||
|  | ||||
| func (ac *addrConn) resetTransport() { | ||||
| 	for i := 0; ; i++ { | ||||
| 		if i > 0 { | ||||
| 			ac.cc.resolveNow(resolver.ResolveNowOptions{}) | ||||
| 		} | ||||
|  | ||||
| 		ac.mu.Lock() | ||||
| 		if ac.state == connectivity.Shutdown { | ||||
| 			ac.mu.Unlock() | ||||
| 			return | ||||
| 		} | ||||
|  | ||||
| 		addrs := ac.addrs | ||||
| 		backoffFor := ac.dopts.bs.Backoff(ac.backoffIdx) | ||||
| 		// This will be the duration that dial gets to finish. | ||||
| 		dialDuration := minConnectTimeout | ||||
| 		if ac.dopts.minConnectTimeout != nil { | ||||
| 			dialDuration = ac.dopts.minConnectTimeout() | ||||
| 		} | ||||
|  | ||||
| 		if dialDuration < backoffFor { | ||||
| 			// Give dial more time as we keep failing to connect. | ||||
| 			dialDuration = backoffFor | ||||
| 		} | ||||
| 		// We can potentially spend all the time trying the first address, and | ||||
| 		// if the server accepts the connection and then hangs, the following | ||||
| 		// addresses will never be tried. | ||||
| 		// | ||||
| 		// The spec doesn't mention what should be done for multiple addresses. | ||||
| 		// https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md#proposed-backoff-algorithm | ||||
| 		connectDeadline := time.Now().Add(dialDuration) | ||||
|  | ||||
| 		ac.updateConnectivityState(connectivity.Connecting, nil) | ||||
| 		ac.transport = nil | ||||
| 	ac.mu.Lock() | ||||
| 	if ac.state == connectivity.Shutdown { | ||||
| 		ac.mu.Unlock() | ||||
|  | ||||
| 		newTr, addr, reconnect, err := ac.tryAllAddrs(addrs, connectDeadline) | ||||
| 		if err != nil { | ||||
| 			// After exhausting all addresses, the addrConn enters | ||||
| 			// TRANSIENT_FAILURE. | ||||
| 			ac.mu.Lock() | ||||
| 			if ac.state == connectivity.Shutdown { | ||||
| 				ac.mu.Unlock() | ||||
| 				return | ||||
| 			} | ||||
| 			ac.updateConnectivityState(connectivity.TransientFailure, err) | ||||
|  | ||||
| 			// Backoff. | ||||
| 			b := ac.resetBackoff | ||||
| 			ac.mu.Unlock() | ||||
|  | ||||
| 			timer := time.NewTimer(backoffFor) | ||||
| 			select { | ||||
| 			case <-timer.C: | ||||
| 				ac.mu.Lock() | ||||
| 				ac.backoffIdx++ | ||||
| 				ac.mu.Unlock() | ||||
| 			case <-b: | ||||
| 				timer.Stop() | ||||
| 			case <-ac.ctx.Done(): | ||||
| 				timer.Stop() | ||||
| 				return | ||||
| 			} | ||||
| 			continue | ||||
| 		} | ||||
|  | ||||
| 		ac.mu.Lock() | ||||
| 		if ac.state == connectivity.Shutdown { | ||||
| 			ac.mu.Unlock() | ||||
| 			newTr.Close(fmt.Errorf("reached connectivity state: SHUTDOWN")) | ||||
| 			return | ||||
| 		} | ||||
| 		ac.curAddr = addr | ||||
| 		ac.transport = newTr | ||||
| 		ac.backoffIdx = 0 | ||||
|  | ||||
| 		hctx, hcancel := context.WithCancel(ac.ctx) | ||||
| 		ac.startHealthCheck(hctx) | ||||
| 		ac.mu.Unlock() | ||||
|  | ||||
| 		// Block until the created transport is down. And when this happens, | ||||
| 		// we restart from the top of the addr list. | ||||
| 		<-reconnect.Done() | ||||
| 		hcancel() | ||||
| 		// restart connecting - the top of the loop will set state to | ||||
| 		// CONNECTING.  This is against the current connectivity semantics doc, | ||||
| 		// however it allows for graceful behavior for RPCs not yet dispatched | ||||
| 		// - unfortunate timing would otherwise lead to the RPC failing even | ||||
| 		// though the TRANSIENT_FAILURE state (called for by the doc) would be | ||||
| 		// instantaneous. | ||||
| 		// | ||||
| 		// Ideally we should transition to Idle here and block until there is | ||||
| 		// RPC activity that leads to the balancer requesting a reconnect of | ||||
| 		// the associated SubConn. | ||||
| 		return | ||||
| 	} | ||||
|  | ||||
| 	addrs := ac.addrs | ||||
| 	backoffFor := ac.dopts.bs.Backoff(ac.backoffIdx) | ||||
| 	// This will be the duration that dial gets to finish. | ||||
| 	dialDuration := minConnectTimeout | ||||
| 	if ac.dopts.minConnectTimeout != nil { | ||||
| 		dialDuration = ac.dopts.minConnectTimeout() | ||||
| 	} | ||||
|  | ||||
| 	if dialDuration < backoffFor { | ||||
| 		// Give dial more time as we keep failing to connect. | ||||
| 		dialDuration = backoffFor | ||||
| 	} | ||||
| 	// We can potentially spend all the time trying the first address, and | ||||
| 	// if the server accepts the connection and then hangs, the following | ||||
| 	// addresses will never be tried. | ||||
| 	// | ||||
| 	// The spec doesn't mention what should be done for multiple addresses. | ||||
| 	// https://github.com/grpc/grpc/blob/master/doc/connection-backoff.md#proposed-backoff-algorithm | ||||
| 	connectDeadline := time.Now().Add(dialDuration) | ||||
|  | ||||
| 	ac.updateConnectivityState(connectivity.Connecting, nil) | ||||
| 	ac.mu.Unlock() | ||||
|  | ||||
| 	if err := ac.tryAllAddrs(addrs, connectDeadline); err != nil { | ||||
| 		ac.cc.resolveNow(resolver.ResolveNowOptions{}) | ||||
| 		// After exhausting all addresses, the addrConn enters | ||||
| 		// TRANSIENT_FAILURE. | ||||
| 		ac.mu.Lock() | ||||
| 		if ac.state == connectivity.Shutdown { | ||||
| 			ac.mu.Unlock() | ||||
| 			return | ||||
| 		} | ||||
| 		ac.updateConnectivityState(connectivity.TransientFailure, err) | ||||
|  | ||||
| 		// Backoff. | ||||
| 		b := ac.resetBackoff | ||||
| 		ac.mu.Unlock() | ||||
|  | ||||
| 		timer := time.NewTimer(backoffFor) | ||||
| 		select { | ||||
| 		case <-timer.C: | ||||
| 			ac.mu.Lock() | ||||
| 			ac.backoffIdx++ | ||||
| 			ac.mu.Unlock() | ||||
| 		case <-b: | ||||
| 			timer.Stop() | ||||
| 		case <-ac.ctx.Done(): | ||||
| 			timer.Stop() | ||||
| 			return | ||||
| 		} | ||||
|  | ||||
| 		ac.mu.Lock() | ||||
| 		if ac.state != connectivity.Shutdown { | ||||
| 			ac.updateConnectivityState(connectivity.Idle, err) | ||||
| 		} | ||||
| 		ac.mu.Unlock() | ||||
| 		return | ||||
| 	} | ||||
| 	// Success; reset backoff. | ||||
| 	ac.mu.Lock() | ||||
| 	ac.backoffIdx = 0 | ||||
| 	ac.mu.Unlock() | ||||
| } | ||||
|  | ||||
| // tryAllAddrs tries to creates a connection to the addresses, and stop when at the | ||||
| // first successful one. It returns the transport, the address and a Event in | ||||
| // the successful case. The Event fires when the returned transport disconnects. | ||||
| func (ac *addrConn) tryAllAddrs(addrs []resolver.Address, connectDeadline time.Time) (transport.ClientTransport, resolver.Address, *grpcsync.Event, error) { | ||||
| // tryAllAddrs tries to creates a connection to the addresses, and stop when at | ||||
| // the first successful one. It returns an error if no address was successfully | ||||
| // connected, or updates ac appropriately with the new transport. | ||||
| func (ac *addrConn) tryAllAddrs(addrs []resolver.Address, connectDeadline time.Time) error { | ||||
| 	var firstConnErr error | ||||
| 	for _, addr := range addrs { | ||||
| 		ac.mu.Lock() | ||||
| 		if ac.state == connectivity.Shutdown { | ||||
| 			ac.mu.Unlock() | ||||
| 			return nil, resolver.Address{}, nil, errConnClosing | ||||
| 			return errConnClosing | ||||
| 		} | ||||
|  | ||||
| 		ac.cc.mu.RLock() | ||||
| @@ -1255,9 +1252,9 @@ func (ac *addrConn) tryAllAddrs(addrs []resolver.Address, connectDeadline time.T | ||||
|  | ||||
| 		channelz.Infof(logger, ac.channelzID, "Subchannel picks a new address %q to connect", addr.Addr) | ||||
|  | ||||
| 		newTr, reconnect, err := ac.createTransport(addr, copts, connectDeadline) | ||||
| 		err := ac.createTransport(addr, copts, connectDeadline) | ||||
| 		if err == nil { | ||||
| 			return newTr, addr, reconnect, nil | ||||
| 			return nil | ||||
| 		} | ||||
| 		if firstConnErr == nil { | ||||
| 			firstConnErr = err | ||||
| @@ -1266,57 +1263,54 @@ func (ac *addrConn) tryAllAddrs(addrs []resolver.Address, connectDeadline time.T | ||||
| 	} | ||||
|  | ||||
| 	// Couldn't connect to any address. | ||||
| 	return nil, resolver.Address{}, nil, firstConnErr | ||||
| 	return firstConnErr | ||||
| } | ||||
|  | ||||
| // createTransport creates a connection to addr. It returns the transport and a | ||||
| // Event in the successful case. The Event fires when the returned transport | ||||
| // disconnects. | ||||
| func (ac *addrConn) createTransport(addr resolver.Address, copts transport.ConnectOptions, connectDeadline time.Time) (transport.ClientTransport, *grpcsync.Event, error) { | ||||
| 	prefaceReceived := make(chan struct{}) | ||||
| 	onCloseCalled := make(chan struct{}) | ||||
| 	reconnect := grpcsync.NewEvent() | ||||
| // createTransport creates a connection to addr. It returns an error if the | ||||
| // address was not successfully connected, or updates ac appropriately with the | ||||
| // new transport. | ||||
| func (ac *addrConn) createTransport(addr resolver.Address, copts transport.ConnectOptions, connectDeadline time.Time) error { | ||||
| 	// TODO: Delete prefaceReceived and move the logic to wait for it into the | ||||
| 	// transport. | ||||
| 	prefaceReceived := grpcsync.NewEvent() | ||||
| 	connClosed := grpcsync.NewEvent() | ||||
|  | ||||
| 	// addr.ServerName takes precedent over ClientConn authority, if present. | ||||
| 	if addr.ServerName == "" { | ||||
| 		addr.ServerName = ac.cc.authority | ||||
| 	} | ||||
|  | ||||
| 	once := sync.Once{} | ||||
| 	onGoAway := func(r transport.GoAwayReason) { | ||||
| 		ac.mu.Lock() | ||||
| 		ac.adjustParams(r) | ||||
| 		once.Do(func() { | ||||
| 			if ac.state == connectivity.Ready { | ||||
| 				// Prevent this SubConn from being used for new RPCs by setting its | ||||
| 				// state to Connecting. | ||||
| 				// | ||||
| 				// TODO: this should be Idle when grpc-go properly supports it. | ||||
| 				ac.updateConnectivityState(connectivity.Connecting, nil) | ||||
| 			} | ||||
| 		}) | ||||
| 		ac.mu.Unlock() | ||||
| 		reconnect.Fire() | ||||
| 	} | ||||
| 	hctx, hcancel := context.WithCancel(ac.ctx) | ||||
| 	hcStarted := false // protected by ac.mu | ||||
|  | ||||
| 	onClose := func() { | ||||
| 		ac.mu.Lock() | ||||
| 		once.Do(func() { | ||||
| 			if ac.state == connectivity.Ready { | ||||
| 				// Prevent this SubConn from being used for new RPCs by setting its | ||||
| 				// state to Connecting. | ||||
| 				// | ||||
| 				// TODO: this should be Idle when grpc-go properly supports it. | ||||
| 				ac.updateConnectivityState(connectivity.Connecting, nil) | ||||
| 			} | ||||
| 		}) | ||||
| 		ac.mu.Unlock() | ||||
| 		close(onCloseCalled) | ||||
| 		reconnect.Fire() | ||||
| 		defer ac.mu.Unlock() | ||||
| 		defer connClosed.Fire() | ||||
| 		if !hcStarted || hctx.Err() != nil { | ||||
| 			// We didn't start the health check or set the state to READY, so | ||||
| 			// no need to do anything else here. | ||||
| 			// | ||||
| 			// OR, we have already cancelled the health check context, meaning | ||||
| 			// we have already called onClose once for this transport.  In this | ||||
| 			// case it would be dangerous to clear the transport and update the | ||||
| 			// state, since there may be a new transport in this addrConn. | ||||
| 			return | ||||
| 		} | ||||
| 		hcancel() | ||||
| 		ac.transport = nil | ||||
| 		// Refresh the name resolver | ||||
| 		ac.cc.resolveNow(resolver.ResolveNowOptions{}) | ||||
| 		if ac.state != connectivity.Shutdown { | ||||
| 			ac.updateConnectivityState(connectivity.Idle, nil) | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	onPrefaceReceipt := func() { | ||||
| 		close(prefaceReceived) | ||||
| 	onGoAway := func(r transport.GoAwayReason) { | ||||
| 		ac.mu.Lock() | ||||
| 		ac.adjustParams(r) | ||||
| 		ac.mu.Unlock() | ||||
| 		onClose() | ||||
| 	} | ||||
|  | ||||
| 	connectCtx, cancel := context.WithDeadline(ac.ctx, connectDeadline) | ||||
| @@ -1325,27 +1319,67 @@ func (ac *addrConn) createTransport(addr resolver.Address, copts transport.Conne | ||||
| 		copts.ChannelzParentID = ac.channelzID | ||||
| 	} | ||||
|  | ||||
| 	newTr, err := transport.NewClientTransport(connectCtx, ac.cc.ctx, addr, copts, onPrefaceReceipt, onGoAway, onClose) | ||||
| 	newTr, err := transport.NewClientTransport(connectCtx, ac.cc.ctx, addr, copts, func() { prefaceReceived.Fire() }, onGoAway, onClose) | ||||
| 	if err != nil { | ||||
| 		// newTr is either nil, or closed. | ||||
| 		channelz.Warningf(logger, ac.channelzID, "grpc: addrConn.createTransport failed to connect to %v. Err: %v. Reconnecting...", addr, err) | ||||
| 		return nil, nil, err | ||||
| 		channelz.Warningf(logger, ac.channelzID, "grpc: addrConn.createTransport failed to connect to %v. Err: %v", addr, err) | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	select { | ||||
| 	case <-time.After(time.Until(connectDeadline)): | ||||
| 	case <-connectCtx.Done(): | ||||
| 		// We didn't get the preface in time. | ||||
| 		newTr.Close(fmt.Errorf("failed to receive server preface within timeout")) | ||||
| 		channelz.Warningf(logger, ac.channelzID, "grpc: addrConn.createTransport failed to connect to %v: didn't receive server preface in time. Reconnecting...", addr) | ||||
| 		return nil, nil, errors.New("timed out waiting for server handshake") | ||||
| 	case <-prefaceReceived: | ||||
| 		// The error we pass to Close() is immaterial since there are no open | ||||
| 		// streams at this point, so no trailers with error details will be sent | ||||
| 		// out. We just need to pass a non-nil error. | ||||
| 		newTr.Close(transport.ErrConnClosing) | ||||
| 		if connectCtx.Err() == context.DeadlineExceeded { | ||||
| 			err := errors.New("failed to receive server preface within timeout") | ||||
| 			channelz.Warningf(logger, ac.channelzID, "grpc: addrConn.createTransport failed to connect to %v: %v", addr, err) | ||||
| 			return err | ||||
| 		} | ||||
| 		return nil | ||||
| 	case <-prefaceReceived.Done(): | ||||
| 		// We got the preface - huzzah! things are good. | ||||
| 	case <-onCloseCalled: | ||||
| 		// The transport has already closed - noop. | ||||
| 		return nil, nil, errors.New("connection closed") | ||||
| 		// TODO(deklerk) this should bail on ac.ctx.Done(). Add a test and fix. | ||||
| 		ac.mu.Lock() | ||||
| 		defer ac.mu.Unlock() | ||||
| 		if connClosed.HasFired() { | ||||
| 			// onClose called first; go idle but do nothing else. | ||||
| 			if ac.state != connectivity.Shutdown { | ||||
| 				ac.updateConnectivityState(connectivity.Idle, nil) | ||||
| 			} | ||||
| 			return nil | ||||
| 		} | ||||
| 		if ac.state == connectivity.Shutdown { | ||||
| 			// This can happen if the subConn was removed while in `Connecting` | ||||
| 			// state. tearDown() would have set the state to `Shutdown`, but | ||||
| 			// would not have closed the transport since ac.transport would not | ||||
| 			// been set at that point. | ||||
| 			// | ||||
| 			// We run this in a goroutine because newTr.Close() calls onClose() | ||||
| 			// inline, which requires locking ac.mu. | ||||
| 			// | ||||
| 			// The error we pass to Close() is immaterial since there are no open | ||||
| 			// streams at this point, so no trailers with error details will be sent | ||||
| 			// out. We just need to pass a non-nil error. | ||||
| 			go newTr.Close(transport.ErrConnClosing) | ||||
| 			return nil | ||||
| 		} | ||||
| 		ac.curAddr = addr | ||||
| 		ac.transport = newTr | ||||
| 		hcStarted = true | ||||
| 		ac.startHealthCheck(hctx) // Will set state to READY if appropriate. | ||||
| 		return nil | ||||
| 	case <-connClosed.Done(): | ||||
| 		// The transport has already closed.  If we received the preface, too, | ||||
| 		// this is not an error. | ||||
| 		select { | ||||
| 		case <-prefaceReceived.Done(): | ||||
| 			return nil | ||||
| 		default: | ||||
| 			return errors.New("connection closed before server preface received") | ||||
| 		} | ||||
| 	} | ||||
| 	return newTr, reconnect, nil | ||||
| } | ||||
|  | ||||
| // startHealthCheck starts the health checking stream (RPC) to watch the health | ||||
|   | ||||
							
								
								
									
										35
									
								
								vendor/google.golang.org/grpc/connectivity/connectivity.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										35
									
								
								vendor/google.golang.org/grpc/connectivity/connectivity.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -18,7 +18,6 @@ | ||||
|  | ||||
| // Package connectivity defines connectivity semantics. | ||||
| // For details, see https://github.com/grpc/grpc/blob/master/doc/connectivity-semantics-and-api.md. | ||||
| // All APIs in this package are experimental. | ||||
| package connectivity | ||||
|  | ||||
| import ( | ||||
| @@ -45,7 +44,7 @@ func (s State) String() string { | ||||
| 		return "SHUTDOWN" | ||||
| 	default: | ||||
| 		logger.Errorf("unknown connectivity state: %d", s) | ||||
| 		return "Invalid-State" | ||||
| 		return "INVALID_STATE" | ||||
| 	} | ||||
| } | ||||
|  | ||||
| @@ -61,3 +60,35 @@ const ( | ||||
| 	// Shutdown indicates the ClientConn has started shutting down. | ||||
| 	Shutdown | ||||
| ) | ||||
|  | ||||
| // ServingMode indicates the current mode of operation of the server. | ||||
| // | ||||
| // Only xDS enabled gRPC servers currently report their serving mode. | ||||
| type ServingMode int | ||||
|  | ||||
| const ( | ||||
| 	// ServingModeStarting indicates that the server is starting up. | ||||
| 	ServingModeStarting ServingMode = iota | ||||
| 	// ServingModeServing indicates that the server contains all required | ||||
| 	// configuration and is serving RPCs. | ||||
| 	ServingModeServing | ||||
| 	// ServingModeNotServing indicates that the server is not accepting new | ||||
| 	// connections. Existing connections will be closed gracefully, allowing | ||||
| 	// in-progress RPCs to complete. A server enters this mode when it does not | ||||
| 	// contain the required configuration to serve RPCs. | ||||
| 	ServingModeNotServing | ||||
| ) | ||||
|  | ||||
| func (s ServingMode) String() string { | ||||
| 	switch s { | ||||
| 	case ServingModeStarting: | ||||
| 		return "STARTING" | ||||
| 	case ServingModeServing: | ||||
| 		return "SERVING" | ||||
| 	case ServingModeNotServing: | ||||
| 		return "NOT_SERVING" | ||||
| 	default: | ||||
| 		logger.Errorf("unknown serving mode: %d", s) | ||||
| 		return "INVALID_MODE" | ||||
| 	} | ||||
| } | ||||
|   | ||||
							
								
								
									
										30
									
								
								vendor/google.golang.org/grpc/credentials/go12.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										30
									
								
								vendor/google.golang.org/grpc/credentials/go12.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,30 +0,0 @@ | ||||
| // +build go1.12 | ||||
|  | ||||
| /* | ||||
|  * | ||||
|  * Copyright 2019 gRPC authors. | ||||
|  * | ||||
|  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||
|  * you may not use this file except in compliance with the License. | ||||
|  * You may obtain a copy of the License at | ||||
|  * | ||||
|  *     http://www.apache.org/licenses/LICENSE-2.0 | ||||
|  * | ||||
|  * Unless required by applicable law or agreed to in writing, software | ||||
|  * distributed under the License is distributed on an "AS IS" BASIS, | ||||
|  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
|  * See the License for the specific language governing permissions and | ||||
|  * limitations under the License. | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| package credentials | ||||
|  | ||||
| import "crypto/tls" | ||||
|  | ||||
| // This init function adds cipher suite constants only defined in Go 1.12. | ||||
| func init() { | ||||
| 	cipherSuiteLookup[tls.TLS_AES_128_GCM_SHA256] = "TLS_AES_128_GCM_SHA256" | ||||
| 	cipherSuiteLookup[tls.TLS_AES_256_GCM_SHA384] = "TLS_AES_256_GCM_SHA384" | ||||
| 	cipherSuiteLookup[tls.TLS_CHACHA20_POLY1305_SHA256] = "TLS_CHACHA20_POLY1305_SHA256" | ||||
| } | ||||
							
								
								
									
										3
									
								
								vendor/google.golang.org/grpc/credentials/tls.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/google.golang.org/grpc/credentials/tls.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -230,4 +230,7 @@ var cipherSuiteLookup = map[uint16]string{ | ||||
| 	tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256:   "TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256", | ||||
| 	tls.TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305:    "TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305", | ||||
| 	tls.TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305:  "TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305", | ||||
| 	tls.TLS_AES_128_GCM_SHA256:                  "TLS_AES_128_GCM_SHA256", | ||||
| 	tls.TLS_AES_256_GCM_SHA384:                  "TLS_AES_256_GCM_SHA384", | ||||
| 	tls.TLS_CHACHA20_POLY1305_SHA256:            "TLS_CHACHA20_POLY1305_SHA256", | ||||
| } | ||||
|   | ||||
							
								
								
									
										6
									
								
								vendor/google.golang.org/grpc/go.mod
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								vendor/google.golang.org/grpc/go.mod
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,11 +1,11 @@ | ||||
| module google.golang.org/grpc | ||||
|  | ||||
| go 1.11 | ||||
| go 1.14 | ||||
|  | ||||
| require ( | ||||
| 	github.com/cespare/xxhash v1.1.0 | ||||
| 	github.com/cespare/xxhash/v2 v2.1.1 | ||||
| 	github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403 | ||||
| 	github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0 | ||||
| 	github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021 | ||||
| 	github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b | ||||
| 	github.com/golang/protobuf v1.4.3 | ||||
| 	github.com/google/go-cmp v0.5.0 | ||||
|   | ||||
							
								
								
									
										22
									
								
								vendor/google.golang.org/grpc/go.sum
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										22
									
								
								vendor/google.golang.org/grpc/go.sum
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -2,27 +2,25 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMT | ||||
| cloud.google.com/go v0.34.0 h1:eOI3/cP2VTU6uZLDYAoic+eyzzB9YyGmJ7eIjl8rOPg= | ||||
| cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= | ||||
| github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= | ||||
| github.com/OneOfOne/xxhash v1.2.2 h1:KMrpdQIwFcEqXDklaen+P1axHaj9BSKzvpUUfnHldSE= | ||||
| github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= | ||||
| github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= | ||||
| github.com/census-instrumentation/opencensus-proto v0.2.1 h1:glEXhBS5PSLLv4IXzLA5yPRVX4bilULVyxxbrfOtDAk= | ||||
| github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= | ||||
| github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= | ||||
| github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= | ||||
| github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= | ||||
| github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= | ||||
| github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= | ||||
| github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= | ||||
| github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403 h1:cqQfy1jclcSy/FwLjemeg3SR1yaINm74aQyupQ0Bl8M= | ||||
| github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= | ||||
| github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed h1:OZmjad4L3H8ncOIR8rnb5MREYqG8ixi5+WbeUsquF0c= | ||||
| github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= | ||||
| github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158 h1:CevA8fI91PAnP8vpnXuB8ZYAZ5wqY86nAbxfgK8tWO4= | ||||
| github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= | ||||
| github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= | ||||
| github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= | ||||
| github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= | ||||
| github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= | ||||
| github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= | ||||
| github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= | ||||
| github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0 h1:dulLQAYQFYtG5MTplgNGHWuV2D+OBD+Z8lmDBmbLg+s= | ||||
| github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= | ||||
| github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021 h1:fP+fF0up6oPY49OrjPrhIJ8yQfdIM85NXMLkMg1EXVs= | ||||
| github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= | ||||
| github.com/envoyproxy/protoc-gen-validate v0.1.0 h1:EQciDnbrYxy13PgWoY8AqoxGiPrpgBZ1R8UNe3ddc+A= | ||||
| github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= | ||||
| github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= | ||||
| @@ -54,11 +52,10 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb | ||||
| github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= | ||||
| github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= | ||||
| github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= | ||||
| github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72 h1:qLC7fQah7D6K1B0ujays3HV9gkFtllcxhzImRR7ArPQ= | ||||
| github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= | ||||
| github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= | ||||
| github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4= | ||||
| github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= | ||||
| github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= | ||||
| github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= | ||||
| go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= | ||||
| golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= | ||||
| golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= | ||||
| @@ -122,7 +119,8 @@ google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlba | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= | ||||
| gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= | ||||
| gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | ||||
| gopkg.in/yaml.v2 v2.2.3 h1:fvjTMHxHEw/mxHbtzPi3JCcKXQRAnQTBRo6YCJSVHKI= | ||||
| gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= | ||||
| gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= | ||||
| gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= | ||||
| honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= | ||||
| honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= | ||||
|   | ||||
							
								
								
									
										6
									
								
								vendor/google.golang.org/grpc/install_gae.sh
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										6
									
								
								vendor/google.golang.org/grpc/install_gae.sh
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,6 +0,0 @@ | ||||
| #!/bin/bash | ||||
|  | ||||
| TMP=$(mktemp -d /tmp/sdk.XXX) \ | ||||
| && curl -o $TMP.zip "https://storage.googleapis.com/appengine-sdks/featured/go_appengine_sdk_linux_amd64-1.9.68.zip" \ | ||||
| && unzip -q $TMP.zip -d $TMP \ | ||||
| && export PATH="$PATH:$TMP/go_appengine" | ||||
							
								
								
									
										2
									
								
								vendor/google.golang.org/grpc/internal/channelz/funcs.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/google.golang.org/grpc/internal/channelz/funcs.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -630,7 +630,7 @@ func (c *channelMap) GetServerSockets(id int64, startID int64, maxResults int64) | ||||
| 	if count == 0 { | ||||
| 		end = true | ||||
| 	} | ||||
| 	var s []*SocketMetric | ||||
| 	s := make([]*SocketMetric, 0, len(sks)) | ||||
| 	for _, ns := range sks { | ||||
| 		sm := &SocketMetric{} | ||||
| 		sm.SocketData = ns.s.ChannelzMetric() | ||||
|   | ||||
							
								
								
									
										2
									
								
								vendor/google.golang.org/grpc/internal/channelz/types_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/google.golang.org/grpc/internal/channelz/types_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,5 +1,3 @@ | ||||
| // +build !appengine | ||||
|  | ||||
| /* | ||||
|  * | ||||
|  * Copyright 2018 gRPC authors. | ||||
|   | ||||
							
								
								
									
										5
									
								
								vendor/google.golang.org/grpc/internal/channelz/types_nonlinux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								vendor/google.golang.org/grpc/internal/channelz/types_nonlinux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,4 +1,5 @@ | ||||
| // +build !linux appengine | ||||
| //go:build !linux | ||||
| // +build !linux | ||||
|  | ||||
| /* | ||||
|  * | ||||
| @@ -37,6 +38,6 @@ type SocketOptionData struct { | ||||
| // Windows OS doesn't support Socket Option | ||||
| func (s *SocketOptionData) Getsockopt(fd uintptr) { | ||||
| 	once.Do(func() { | ||||
| 		logger.Warning("Channelz: socket options are not supported on non-linux os and appengine.") | ||||
| 		logger.Warning("Channelz: socket options are not supported on non-linux environments") | ||||
| 	}) | ||||
| } | ||||
|   | ||||
							
								
								
									
										2
									
								
								vendor/google.golang.org/grpc/internal/channelz/util_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/google.golang.org/grpc/internal/channelz/util_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,5 +1,3 @@ | ||||
| // +build linux,!appengine | ||||
|  | ||||
| /* | ||||
|  * | ||||
|  * Copyright 2018 gRPC authors. | ||||
|   | ||||
							
								
								
									
										3
									
								
								vendor/google.golang.org/grpc/internal/channelz/util_nonlinux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/google.golang.org/grpc/internal/channelz/util_nonlinux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,4 +1,5 @@ | ||||
| // +build !linux appengine | ||||
| //go:build !linux | ||||
| // +build !linux | ||||
|  | ||||
| /* | ||||
|  * | ||||
|   | ||||
							
								
								
									
										2
									
								
								vendor/google.golang.org/grpc/internal/credentials/spiffe.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/google.golang.org/grpc/internal/credentials/spiffe.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,5 +1,3 @@ | ||||
| // +build !appengine | ||||
|  | ||||
| /* | ||||
|  * | ||||
|  * Copyright 2020 gRPC authors. | ||||
|   | ||||
							
								
								
									
										31
									
								
								vendor/google.golang.org/grpc/internal/credentials/spiffe_appengine.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										31
									
								
								vendor/google.golang.org/grpc/internal/credentials/spiffe_appengine.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,31 +0,0 @@ | ||||
| // +build appengine | ||||
|  | ||||
| /* | ||||
|  * | ||||
|  * Copyright 2020 gRPC authors. | ||||
|  * | ||||
|  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||
|  * you may not use this file except in compliance with the License. | ||||
|  * You may obtain a copy of the License at | ||||
|  * | ||||
|  *     http://www.apache.org/licenses/LICENSE-2.0 | ||||
|  * | ||||
|  * Unless required by applicable law or agreed to in writing, software | ||||
|  * distributed under the License is distributed on an "AS IS" BASIS, | ||||
|  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
|  * See the License for the specific language governing permissions and | ||||
|  * limitations under the License. | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| package credentials | ||||
|  | ||||
| import ( | ||||
| 	"crypto/tls" | ||||
| 	"net/url" | ||||
| ) | ||||
|  | ||||
| // SPIFFEIDFromState is a no-op for appengine builds. | ||||
| func SPIFFEIDFromState(state tls.ConnectionState) *url.URL { | ||||
| 	return nil | ||||
| } | ||||
							
								
								
									
										2
									
								
								vendor/google.golang.org/grpc/internal/credentials/syscallconn.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/google.golang.org/grpc/internal/credentials/syscallconn.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,5 +1,3 @@ | ||||
| // +build !appengine | ||||
|  | ||||
| /* | ||||
|  * | ||||
|  * Copyright 2018 gRPC authors. | ||||
|   | ||||
							
								
								
									
										30
									
								
								vendor/google.golang.org/grpc/internal/credentials/syscallconn_appengine.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										30
									
								
								vendor/google.golang.org/grpc/internal/credentials/syscallconn_appengine.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -1,30 +0,0 @@ | ||||
| // +build appengine | ||||
|  | ||||
| /* | ||||
|  * | ||||
|  * Copyright 2018 gRPC authors. | ||||
|  * | ||||
|  * Licensed under the Apache License, Version 2.0 (the "License"); | ||||
|  * you may not use this file except in compliance with the License. | ||||
|  * You may obtain a copy of the License at | ||||
|  * | ||||
|  *     http://www.apache.org/licenses/LICENSE-2.0 | ||||
|  * | ||||
|  * Unless required by applicable law or agreed to in writing, software | ||||
|  * distributed under the License is distributed on an "AS IS" BASIS, | ||||
|  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||||
|  * See the License for the specific language governing permissions and | ||||
|  * limitations under the License. | ||||
|  * | ||||
|  */ | ||||
|  | ||||
| package credentials | ||||
|  | ||||
| import ( | ||||
| 	"net" | ||||
| ) | ||||
|  | ||||
| // WrapSyscallConn returns newConn on appengine. | ||||
| func WrapSyscallConn(rawConn, newConn net.Conn) net.Conn { | ||||
| 	return newConn | ||||
| } | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user
	 Brian Goff
					Brian Goff