Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

metrics/generic: fix uint64 alignment #1007

Merged
merged 2 commits into from
Sep 15, 2020

Conversation

ldez
Copy link
Contributor

@ldez ldez commented Aug 24, 2020

Fixes uint64 alignment on 32-bit arch.

panic on Counter
Stack: goroutine 59 [running]: 
runtime/debug.Stack(0x4d20140, 0x2662937, 0x17)
        /usr/local/go/src/runtime/debug/stack.go:24 +0x78
github.com/containous/traefik/v2/pkg/safe.defaultRecoverGoroutine(0x2232840, 0x41a7570)
        /go/src/github.com/containous/traefik/pkg/safe/routine.go:66 +0x90
github.com/containous/traefik/v2/pkg/safe.GoWithRecover.func1.1(0x276cc34)
        /go/src/github.com/containous/traefik/pkg/safe/routine.go:56 +0x44
panic(0x2232840, 0x41a7570)
        /usr/local/go/src/runtime/panic.go:969 +0x118
runtime/internal/atomic.goLoad64(0x4fbab54, 0x51b6920, 0x2350f01)
        /usr/local/go/src/runtime/internal/atomic/atomic_arm.go:131 +0x1c
github.com/go-kit/kit/metrics/generic.(*Counter).Add(0x4fbab40, 0x0, 0x3ff00000)
        /go/pkg/mod/github.com/go-kit/kit@v0.9.0/metrics/generic/generic.go:46 +0x28
github.com/containous/traefik/v2/pkg/metrics.(*pilotCounter).Add(0x4c0ea70, 0x0, 0x3ff00000)
        /go/src/github.com/containous/traefik/pkg/metrics/pilot.go:229 +0xa4
github.com/go-kit/kit/metrics/multi.Counter.Add(0x4d11940, 0x2, 0x2, 0x0, 0x3ff00000)
        /go/pkg/mod/github.com/go-kit/kit@v0.9.0/metrics/multi/multi.go:20 +0x40
main.setupServer.func3(0x4fcd810, 0x51b68f8, 0x51b6900, 0x51a1f00)
        /go/src/github.com/containous/traefik/cmd/traefik/traefik.go:258 +0x4c
github.com/containous/traefik/v2/pkg/server.(*ConfigurationWatcher).loadMessage(0x51265a0, 0x2626245, 0x4, 0x4fcd710)
        /go/src/github.com/containous/traefik/pkg/server/configurationwatcher.go:150 +0x14c
github.com/containous/traefik/v2/pkg/server.(*ConfigurationWatcher).listenConfigurations(0x51265a0, 0x2ae2d18, 0x4fba0c0)
        /go/src/github.com/containous/traefik/pkg/server/configurationwatcher.go:132 +0x2c
github.com/containous/traefik/v2/pkg/safe.(*Pool).GoCtx.func1()
        /go/src/github.com/containous/traefik/pkg/safe/routine.go:36 +0x5c
github.com/containous/traefik/v2/pkg/safe.GoWithRecover.func1(0x276cc34, 0x51c8010)
        /go/src/github.com/containous/traefik/pkg/safe/routine.go:59 +0x48
created by github.com/containous/traefik/v2/pkg/safe.GoWithRecover
        /go/src/github.com/containous/traefik/pkg/safe/routine.go:53 +0x34
panic on Gauge
runtime/debug.Stack(0x44ae140, 0x2653087, 0x17)
	/usr/local/go/src/runtime/debug/stack.go:24 +0x78
github.com/containous/traefik/v2/pkg/safe.defaultRecoverGoroutine(0x2222e48, 0x3e24e78)
	/go/src/github.com/containous/traefik/pkg/safe/routine.go:66 +0x90
github.com/containous/traefik/v2/pkg/safe.GoWithRecover.func1.1(0x275c22c)
	/go/src/github.com/containous/traefik/pkg/safe/routine.go:56 +0x44
panic(0x2222e48, 0x3e24e78)
	/usr/local/go/src/runtime/panic.go:969 +0x118
github.com/go-kit/kit/metrics/generic.(*Gauge).Set(...)
	/go/src/github.com/go-kit/kit/metrics/generic/generic.go:107
github.com/containous/traefik/v2/pkg/metrics.(*pilotGauge).Set(0x440e680, 0x79400000, 0x41d7d0ed)
	/go/src/github.com/containous/traefik/pkg/metrics/pilot.go:261 +0xbc
github.com/go-kit/kit/metrics/multi.Gauge.Set(0x440e780, 0x1, 0x1, 0x79400000, 0x41d7d0ed)
	/go/src/github.com/go-kit/kit/metrics/multi/multi.go:44 +0x40
main.setupServer.func3(0x47de1f0, 0x4713bb8, 0x4713bc0, 0x47dc7a0)
	/go/src/github.com/containous/traefik/cmd/traefik/traefik.go:259 +0xf0
github.com/containous/traefik/v2/pkg/server.(*ConfigurationWatcher).loadMessage(0x488a360, 0x2620f52, 0x8, 0x47de1a0)
	/go/src/github.com/containous/traefik/pkg/server/configurationwatcher.go:150 +0x14c
github.com/containous/traefik/v2/pkg/server.(*ConfigurationWatcher).listenConfigurations(0x488a360, 0x2ad1dc0, 0x46f28a0)
	/go/src/github.com/containous/traefik/pkg/server/configurationwatcher.go:132 +0x2c
github.com/containous/traefik/v2/pkg/safe.(*Pool).GoCtx.func1()
	/go/src/github.com/containous/traefik/pkg/safe/routine.go:36 +0x5c
github.com/containous/traefik/v2/pkg/safe.GoWithRecover.func1(0x275c22c, 0x4605ae0)
	/go/src/github.com/containous/traefik/pkg/safe/routine.go:59 +0x48
created by github.com/containous/traefik/v2/pkg/safe.GoWithRecover
	/go/src/github.com/containous/traefik/pkg/safe/routine.go:53 +0x34 

Related to traefik/traefik#7207

@ldez ldez force-pushed the fix/unit64aligment branch from ed1ab96 to 093af6f Compare August 24, 2020 13:19
@ldez ldez changed the title metrics/generic: fix unit64 alignment metrics/generic: fix uint64 alignment Aug 24, 2020
@ldez ldez force-pushed the fix/unit64aligment branch 2 times, most recently from 74f16a5 to b138422 Compare August 24, 2020 13:33
@peterbourgon
Copy link
Member

Sure! Please add a test :)

@ldez
Copy link
Contributor Author

ldez commented Aug 25, 2020

🤔 sure but could you help me?

  • how to add a test to check the alignment without unsafe?
  • how to add a test to check the alignment in a 32-bit arch from a 64-bit arch?

I don't write this kind of test every day so any help would be welcome.

@ldez ldez force-pushed the fix/unit64aligment branch from b138422 to aec653a Compare August 27, 2020 08:34
@ldez
Copy link
Contributor Author

ldez commented Sep 4, 2020

@peterbourgon friendly ping 😉

@peterbourgon
Copy link
Member

peterbourgon commented Sep 7, 2020 via email

@ldez
Copy link
Contributor Author

ldez commented Sep 7, 2020

Without a 32bit arch it's not possible to create a simple test about alignment problem on a 32bits arch.
The problem of alignment appears at runtime, not at the compile time.

I see only one solution: be able to run the tests of the project on a CI that use a 32bit arch.
The GitHub Action only provide 64bit arch.

In all cases, this kind of change of the CI seems out of the scope of my PR.


As a kind of prof, I will give you some dumps.

On a 32bit arch

Created from an old PI2-B (arm)

Previous version:

generic.Counter:
 Name at offset 0, size=8, align=4
 lvs at offset 8, size=12, align=4
 bits at offset 20, size=8, align=4

the bits offset is 20, but 20 is not a multiple of 8.

My version:

generic.Counter:
 bits at offset 0, size=8, align=4
 Name at offset 8, size=8, align=4
 lvs at offset 16, size=12, align=4

On a 64bit arch

Previous version:

generic.Counter:
 Name at offset 0, size=16, align=8
 lvs at offset 16, size=24, align=8
 bits at offset 40, size=8, align=8

My version:

generic.Counter:
 bits at offset 0, size=8, align=8
 Name at offset 8, size=16, align=8
 lvs at offset 24, size=24, align=8

@peterbourgon
Copy link
Member

In all cases, this kind of change of the CI seems out of the scope of my PR.

Well, it's important to the long-term maintainability of the project that changes come with regression tests, so I don't accidentally undo your work in a future refactor. Can you think of any other way to accomplish that?

@ldez
Copy link
Contributor Author

ldez commented Sep 7, 2020

I put a comment on the structure to explain why the field should be placed at the top of the structure.
It's a complex problem without simple solution, except if you are able to use the 32bit arch to run the tests.

@ldez ldez force-pushed the fix/unit64aligment branch from aec653a to 12171c7 Compare September 8, 2020 01:38
@ldez
Copy link
Contributor Author

ldez commented Sep 8, 2020

I added a test, but it's a weak and complex test, the maintainability is low, because the real solution is to run the tests on a 32-bit arch.

FYI even staticcheck is not able to catch this misalignment properly without a 32-bit arch. Currently, I don't know any linter that can properly check this without a 32-bit arch.

@ldez ldez force-pushed the fix/unit64aligment branch from 12171c7 to 0250207 Compare September 8, 2020 01:58
@ldez ldez force-pushed the fix/unit64aligment branch from 0250207 to aec4993 Compare September 8, 2020 02:01
@ldez
Copy link
Contributor Author

ldez commented Sep 14, 2020

@peterbourgon friendly ping 😉

@peterbourgon
Copy link
Member

Wow that is an... astonishing test ;)

OK, I'm happy with this. Final question, though — is there a command I could run on the relevant architectures that would return one result if the alignment is "good" and a different result if the alignment was "bad"?

@ldez
Copy link
Contributor Author

ldez commented Sep 14, 2020

As I explained in the code comment and in my previous message, you just have to run the existing tests or :

package main

import (
	"fmt"

	"github.com/go-kit/kit/metrics/generic"
)

func main() {
	counter := generic.Counter{}
	counter.Add(6)
	fmt.Println(counter)
}
go test ./... (on ARM)
ok  	github.com/go-kit/kit/auth/basic	0.069s
ok  	github.com/go-kit/kit/auth/casbin	0.644s
ok  	github.com/go-kit/kit/auth/jwt	0.213s
ok  	github.com/go-kit/kit/circuitbreaker	0.392s
ok  	github.com/go-kit/kit/cmd/kitgen	73.047s
?   	github.com/go-kit/kit/cmd/kitgen/templates	[no test files]
ok  	github.com/go-kit/kit/endpoint	0.032s
?   	github.com/go-kit/kit/examples/addsvc/cmd/addcli	[no test files]
ok  	github.com/go-kit/kit/examples/addsvc/cmd/addsvc	0.106s
?   	github.com/go-kit/kit/examples/addsvc/pb	[no test files]
?   	github.com/go-kit/kit/examples/addsvc/pkg/addendpoint	[no test files]
?   	github.com/go-kit/kit/examples/addsvc/pkg/addservice	[no test files]
?   	github.com/go-kit/kit/examples/addsvc/pkg/addtransport	[no test files]
?   	github.com/go-kit/kit/examples/addsvc/thrift/gen-go/addsvc	[no test files]
?   	github.com/go-kit/kit/examples/addsvc/thrift/gen-go/addsvc/add_service-remote	[no test files]
?   	github.com/go-kit/kit/examples/apigateway	[no test files]
?   	github.com/go-kit/kit/examples/profilesvc	[no test files]
?   	github.com/go-kit/kit/examples/profilesvc/client	[no test files]
?   	github.com/go-kit/kit/examples/profilesvc/cmd/profilesvc	[no test files]
?   	github.com/go-kit/kit/examples/shipping	[no test files]
?   	github.com/go-kit/kit/examples/shipping/booking	[no test files]
?   	github.com/go-kit/kit/examples/shipping/cargo	[no test files]
?   	github.com/go-kit/kit/examples/shipping/handling	[no test files]
?   	github.com/go-kit/kit/examples/shipping/inmem	[no test files]
?   	github.com/go-kit/kit/examples/shipping/inspection	[no test files]
?   	github.com/go-kit/kit/examples/shipping/location	[no test files]
?   	github.com/go-kit/kit/examples/shipping/routing	[no test files]
?   	github.com/go-kit/kit/examples/shipping/tracking	[no test files]
?   	github.com/go-kit/kit/examples/shipping/voyage	[no test files]
?   	github.com/go-kit/kit/examples/stringsvc1	[no test files]
?   	github.com/go-kit/kit/examples/stringsvc2	[no test files]
?   	github.com/go-kit/kit/examples/stringsvc3	[no test files]
?   	github.com/go-kit/kit/examples/stringsvc4	[no test files]
ok  	github.com/go-kit/kit/log	0.686s
ok  	github.com/go-kit/kit/log/deprecated_levels	0.094s
ok  	github.com/go-kit/kit/log/level	0.070s
ok  	github.com/go-kit/kit/log/logrus	0.066s
ok  	github.com/go-kit/kit/log/syslog	0.404s
ok  	github.com/go-kit/kit/log/term	0.281s
ok  	github.com/go-kit/kit/log/zap	0.064s
ok  	github.com/go-kit/kit/metrics	0.583s
ok  	github.com/go-kit/kit/metrics/cloudwatch	1.651s
ok  	github.com/go-kit/kit/metrics/cloudwatch2	0.065s
?   	github.com/go-kit/kit/metrics/discard	[no test files]
--- FAIL: TestGauge (0.00s)
panic: runtime error: invalid memory address or nil pointer dereference [recovered]
	panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x12180]

goroutine 8 [running]:
testing.tRunner.func1.1(0x1356d8, 0x221f50)
	/usr/local/go/src/testing/testing.go:1076 +0x264
testing.tRunner.func1(0x401880)
	/usr/local/go/src/testing/testing.go:1079 +0x364
panic(0x1356d8, 0x221f50)
	/usr/local/go/src/runtime/panic.go:969 +0x118
runtime/internal/atomic.goLoad64(0x40cc54, 0x0, 0x11e84)
	/usr/local/go/src/runtime/internal/atomic/atomic_arm.go:131 +0x1c
github.com/go-kit/kit/metrics/generic.(*Gauge).With(0x40cc40, 0x43df50, 0x2, 0x2, 0x46e908, 0x46e908)
	/home/pi/go/src/github.com/go-kit/kit/metrics/generic/generic.go:100 +0x24
github.com/go-kit/kit/metrics/dogstatsd.(*Gauge).With(0x40e1b0, 0x42a750, 0x2, 0x2, 0x4184c0, 0x32)
	/home/pi/go/src/github.com/go-kit/kit/metrics/dogstatsd/dogstatsd.go:292 +0x9c
github.com/go-kit/kit/metrics/dogstatsd.TestGauge(0x401880)
	/home/pi/go/src/github.com/go-kit/kit/metrics/dogstatsd/dogstatsd_test.go:34 +0x280
testing.tRunner(0x401880, 0x1581bc)
	/usr/local/go/src/testing/testing.go:1127 +0xbc
created by testing.(*T).Run
	/usr/local/go/src/testing/testing.go:1178 +0x2d4
FAIL	github.com/go-kit/kit/metrics/dogstatsd	0.051s
ok  	github.com/go-kit/kit/metrics/expvar	0.792s
--- FAIL: TestCounter (0.00s)
panic: runtime error: invalid memory address or nil pointer dereference [recovered]
	panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x11ce8]

goroutine 18 [running]:
testing.tRunner.func1.1(0x123908, 0x201c40)
	/usr/local/go/src/testing/testing.go:1076 +0x264
testing.tRunner.func1(0x882700)
	/usr/local/go/src/testing/testing.go:1079 +0x364
panic(0x123908, 0x201c40)
	/usr/local/go/src/runtime/panic.go:969 +0x118
runtime/internal/atomic.goLoad64(0x89a534, 0x1c, 0x89a520)
	/usr/local/go/src/runtime/internal/atomic/atomic_arm.go:131 +0x1c
github.com/go-kit/kit/metrics/generic.(*Counter).With(0x89a520, 0x8d4f80, 0x2, 0x2, 0x0, 0xcfef4)
	/home/pi/go/src/github.com/go-kit/kit/metrics/generic/generic.go:37 +0x24
github.com/go-kit/kit/metrics/generic_test.TestCounter(0x882700)
	/home/pi/go/src/github.com/go-kit/kit/metrics/generic/generic_test.go:19 +0x7c
testing.tRunner(0x882700, 0x1434b4)
	/usr/local/go/src/testing/testing.go:1127 +0xbc
created by testing.(*T).Run
	/usr/local/go/src/testing/testing.go:1178 +0x2d4
FAIL	github.com/go-kit/kit/metrics/generic	0.055s
--- FAIL: TestCounter (0.00s)
panic: runtime error: invalid memory address or nil pointer dereference [recovered]
	panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x12180]

goroutine 6 [running]:
testing.tRunner.func1.1(0x135448, 0x221f40)
	/usr/local/go/src/testing/testing.go:1076 +0x264
testing.tRunner.func1(0x14015e0)
	/usr/local/go/src/testing/testing.go:1079 +0x364
panic(0x135448, 0x221f40)
	/usr/local/go/src/runtime/panic.go:969 +0x118
runtime/internal/atomic.goLoad64(0x140c974, 0x10f56c, 0x140e0f0)
	/usr/local/go/src/runtime/internal/atomic/atomic_arm.go:131 +0x1c
github.com/go-kit/kit/metrics/generic.(*Counter).Add(0x140c960, 0x0, 0x40570000)
	/home/pi/go/src/github.com/go-kit/kit/metrics/generic/generic.go:46 +0x28
github.com/go-kit/kit/metrics/graphite.(*Counter).Add(0x1410458, 0x0, 0x40570000)
	/home/pi/go/src/github.com/go-kit/kit/metrics/graphite/graphite.go:173 +0x28
github.com/go-kit/kit/metrics/teststat.FillCounter(0x177cb8, 0x1410458, 0x118c2c, 0x1451100)
	/home/pi/go/src/github.com/go-kit/kit/metrics/teststat/teststat.go:35 +0xa0
github.com/go-kit/kit/metrics/teststat.TestCounter(0x177cb8, 0x1410458, 0x140c980, 0x1b, 0x140c980)
	/home/pi/go/src/github.com/go-kit/kit/metrics/teststat/teststat.go:19 +0x24
github.com/go-kit/kit/metrics/graphite.TestCounter(0x14015e0)
	/home/pi/go/src/github.com/go-kit/kit/metrics/graphite/graphite_test.go:20 +0x174
testing.tRunner(0x14015e0, 0x157470)
	/usr/local/go/src/testing/testing.go:1127 +0xbc
created by testing.(*T).Run
	/usr/local/go/src/testing/testing.go:1178 +0x2d4
FAIL	github.com/go-kit/kit/metrics/graphite	0.035s
ok  	github.com/go-kit/kit/metrics/influx	0.556s
--- FAIL: TestGauge (0.00s)
panic: runtime error: invalid memory address or nil pointer dereference [recovered]
	panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x12180]

goroutine 21 [running]:
testing.tRunner.func1.1(0x1356e0, 0x221f50)
	/usr/local/go/src/testing/testing.go:1076 +0x264
testing.tRunner.func1(0x2106a80)
	/usr/local/go/src/testing/testing.go:1079 +0x364
panic(0x1356e0, 0x221f50)
	/usr/local/go/src/runtime/panic.go:969 +0x118
runtime/internal/atomic.goLoad64(0x2116bf4, 0x0, 0x11e84)
	/usr/local/go/src/runtime/internal/atomic/atomic_arm.go:131 +0x1c
github.com/go-kit/kit/metrics/generic.(*Gauge).With(0x2116be0, 0x2038f50, 0x2, 0x2, 0x2120ba8, 0x2120ba8)
	/home/pi/go/src/github.com/go-kit/kit/metrics/generic/generic.go:100 +0x24
github.com/go-kit/kit/metrics/influxstatsd.(*Gauge).With(0x2128180, 0x202a750, 0x2, 0x2, 0x211a120, 0x30)
	/home/pi/go/src/github.com/go-kit/kit/metrics/influxstatsd/influxstatsd.go:278 +0x9c
github.com/go-kit/kit/metrics/influxstatsd.TestGauge(0x2106a80)
	/home/pi/go/src/github.com/go-kit/kit/metrics/influxstatsd/influxstatsd_test.go:34 +0x284
testing.tRunner(0x2106a80, 0x15816c)
	/usr/local/go/src/testing/testing.go:1127 +0xbc
created by testing.(*T).Run
	/usr/local/go/src/testing/testing.go:1178 +0x2d4
FAIL	github.com/go-kit/kit/metrics/influxstatsd	0.060s
--- FAIL: TestCounterHistogramConversion (0.00s)
panic: runtime error: invalid memory address or nil pointer dereference [recovered]
	panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x11ce8]

goroutine 6 [running]:
testing.tRunner.func1.1(0x1236a0, 0x201c38)
	/usr/local/go/src/testing/testing.go:1076 +0x264
testing.tRunner.func1(0x2000ee0)
	/usr/local/go/src/testing/testing.go:1079 +0x364
panic(0x1236a0, 0x201c38)
	/usr/local/go/src/runtime/panic.go:969 +0x118
runtime/internal/atomic.goLoad64(0x200a574, 0x66d45c06, 0x1e4057)
	/usr/local/go/src/runtime/internal/atomic/atomic_arm.go:131 +0x1c
github.com/go-kit/kit/metrics/generic.(*Counter).With(0x200a560, 0x200c060, 0x2, 0x2, 0x19bbc, 0x76f79088)
	/home/pi/go/src/github.com/go-kit/kit/metrics/generic/generic.go:37 +0x24
github.com/go-kit/kit/metrics/internal/convert.counterHistogram.With(...)
	/home/pi/go/src/github.com/go-kit/kit/metrics/internal/convert/convert.go:19
github.com/go-kit/kit/metrics/internal/convert.histogramCounter.With(...)
	/home/pi/go/src/github.com/go-kit/kit/metrics/internal/convert/convert.go:39
github.com/go-kit/kit/metrics/internal/convert.TestCounterHistogramConversion(0x2000ee0)
	/home/pi/go/src/github.com/go-kit/kit/metrics/internal/convert/convert_test.go:14 +0xfc
testing.tRunner(0x2000ee0, 0x143118)
	/usr/local/go/src/testing/testing.go:1127 +0xbc
created by testing.(*T).Run
	/usr/local/go/src/testing/testing.go:1178 +0x2d4
FAIL	github.com/go-kit/kit/metrics/internal/convert	0.030s
ok  	github.com/go-kit/kit/metrics/internal/lv	0.051s
?   	github.com/go-kit/kit/metrics/internal/ratemap	[no test files]
ok  	github.com/go-kit/kit/metrics/multi	0.081s
ok  	github.com/go-kit/kit/metrics/pcp	30.861s
ok  	github.com/go-kit/kit/metrics/prometheus	0.749s
?   	github.com/go-kit/kit/metrics/provider	[no test files]
ok  	github.com/go-kit/kit/metrics/statsd	2.727s
?   	github.com/go-kit/kit/metrics/teststat	[no test files]
ok  	github.com/go-kit/kit/ratelimit	0.026s
ok  	github.com/go-kit/kit/sd	0.073s
ok  	github.com/go-kit/kit/sd/consul	0.153s
ok  	github.com/go-kit/kit/sd/dnssrv	0.241s
ok  	github.com/go-kit/kit/sd/etcd	0.128s
ok  	github.com/go-kit/kit/sd/etcdv3	3.121s
ok  	github.com/go-kit/kit/sd/eureka	2.482s
ok  	github.com/go-kit/kit/sd/internal/instance	0.069s
ok  	github.com/go-kit/kit/sd/lb	1.695s
ok  	github.com/go-kit/kit/sd/zk	1.228s
?   	github.com/go-kit/kit/tracing	[no test files]
ok  	github.com/go-kit/kit/tracing/opencensus	2.767s
ok  	github.com/go-kit/kit/tracing/opentracing	0.054s
ok  	github.com/go-kit/kit/tracing/zipkin	1.479s
ok  	github.com/go-kit/kit/transport	0.035s
ok  	github.com/go-kit/kit/transport/amqp	0.208s
ok  	github.com/go-kit/kit/transport/awslambda	0.128s
ok  	github.com/go-kit/kit/transport/grpc	0.100s
ok  	github.com/go-kit/kit/transport/http	1.210s
ok  	github.com/go-kit/kit/transport/http/jsonrpc	0.201s
ok  	github.com/go-kit/kit/transport/http/proto	0.063s
ok  	github.com/go-kit/kit/transport/httprp	0.076s
ok  	github.com/go-kit/kit/transport/nats	1.310s
ok  	github.com/go-kit/kit/util/conn	0.236s
FAIL

If you are asking for a linter or something like that: no linter is perfect and this problem is complex, so I can not recommend a tool.

@ldez
Copy link
Contributor Author

ldez commented Sep 15, 2020

@peterbourgon ping 🙏

@peterbourgon peterbourgon merged commit 439c4d2 into go-kit:master Sep 15, 2020
@ldez ldez deleted the fix/unit64aligment branch September 15, 2020 14:36
@sagikazarmark sagikazarmark added this to the v0.11.0 milestone Jun 19, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants