42atomys / webhooked Goto Github PK
View Code? Open in Web Editor NEWA webhook receiver on steroids.
License: MIT License
A webhook receiver on steroids.
License: MIT License
Actually the postgres configuration has really basic and dont allow us to do anything.
# In which table do you want to store the data
tableName: 'webhooks_deliveries'
# In which column do you want to store the data (data is sent in string format on this field)
dataField: 'raw_data'
the reflected code behind is
request := fmt.Sprintf("INSERT INTO %s(%s) VALUES ($1)", c.config.TableName, c.config.DataField)
We cant perform an update, a delete, base the updated value or inserted value on some part of the payload.
To be able to use the same formating module in storages like redis and postgres to allow to do all actions according to the specs provided in the configuration
No response
No response
When the connection between webhooked and rabbitmq server is interrupted, webhooked dont reconnect automatically and never send events.
Weebhooked stay with closed error eternally
Webhooked needs to reconnect and send event asap
4:07PM INF Webhook is processed duration=1.259667ms secure=true spec=locations-close statusCode=500 version=v1alpha1
4:07PM ERR Error during webhook processing error="Exception (504) Reason: \"channel/connection is not open\"" apiVersion=v1alpha1
### Version of software
0.5
### Environment
Docker
### Environment version
_No response_
### Additional context
_No response_
### Code of Conduct
- [X] I agree to follow this project's Code of Conduct
Is your feature request related to a problem? Please describe.
No monitoring is actually available on Webhooked. To provide Webhooked production ready, we need a monitoring endpoint
Describe the solution you'd like
Actually, no data, logs or metrics is exposed about processing of webhook entries
Describe alternatives you've considered
I think create a Prometheus endpoints /metrics
with prometheus go package to expose basic informations like req_counts
, req_status
, req_execution_time
, webhook_entrypoint
, webhook_kind
, webhook_version
, has_secure
, storage_counts
, storage_process_time
, storage_kind
, etc...
In company, we need to split a single request to multiple http endpoint, only use webhooked as a forward to multiple endpoint without store it
As an universal webhooks receiver, have a feature to juste forward request to another url is a good point. For usage and security also
No response
No response
Tracking issue for:
When using a RabbitMQ storage with long time (24h~) the webhooked program will crash due to an overflow of goroutine
PANIC
No response
fatal error: concurrent map writes
goroutine 147366 [running]:
runtime.throw({0xb6b318, 0x10})
/usr/local/go/src/runtime/panic.go:1198 +0x71 fp=0xc00084f218 sp=0xc00084f1e8 pc=0x435c71
runtime.mapassign_faststr(0xaad3e0, 0xc00025f770, {0xb62c61, 0x5})
/usr/local/go/src/runtime/map_faststr.go:294 +0x38b fp=0xc00084f280 sp=0xc00084f218 pc=0x41300b
atomys.codes/webhooked/pkg/factory.(*Pipeline).Run(0xc0001f9740)
/build/pkg/factory/pipeline.go:95 +0x71b fp=0xc00084f448 sp=0xc00084f280 pc=0x7df31b
atomys.codes/webhooked/internal/server/v1alpha1.(*Server).runSecurity(0x7f8a20c79198, 0xc000778400, 0xc000d42500, {0xc000c70600, 0xdf, 0x10})
/build/internal/server/v1alpha1/handlers.go:147 +0x145 fp=0xc00084f4b0 sp=0xc00084f448 pc=0xa2e3e5
atomys.codes/webhooked/internal/server/v1alpha1.webhookService(0xc000270485, 0xc000087740, 0xc000d42500)
/build/internal/server/v1alpha1/handlers.go:103 +0x113 fp=0xc00084f600 sp=0xc00084f4b0 pc=0xa2ddf3
atomys.codes/webhooked/internal/server/v1alpha1.(*Server).WebhookHandler.func1({0xc3ef20, 0xc00045cc78}, 0xc000d42500)
/build/internal/server/v1alpha1/handlers.go:71 +0x218 fp=0xc00084f6f8 sp=0xc00084f600 pc=0xa2dab8
net/http.HandlerFunc.ServeHTTP(0x0, {0xc3ef20, 0xc00045cc78}, 0x74d6bd)
/usr/local/go/src/net/http/server.go:2047 +0x2f fp=0xc00084f720 sp=0xc00084f6f8 pc=0x71be2f
atomys.codes/webhooked/internal/server.prometheusMiddleware.func1({0xc3ef20, 0xc00045cc60}, 0xc000d42500)
/build/internal/server/middlewares.go:51 +0xf2 fp=0xc00084f848 sp=0xc00084f720 pc=0xa2e7f2
net/http.HandlerFunc.ServeHTTP(0x7f8a20a6cb28, {0xc3ef20, 0xc00045cc60}, 0x7f8a478cc5b8)
/usr/local/go/src/net/http/server.go:2047 +0x2f fp=0xc00084f870 sp=0xc00084f848 pc=0x71be2f
atomys.codes/webhooked/internal/server.loggingMiddleware.func1({0xc3fdf0, 0xc000734e00}, 0xc000d42500)
/build/internal/server/middlewares.go:73 +0xdd fp=0xc00084f970 sp=0xc00084f870 pc=0xa2ec9d
net/http.HandlerFunc.ServeHTTP(0xc000d42400, {0xc3fdf0, 0xc000734e00}, 0xc00084f9f8)
/usr/local/go/src/net/http/server.go:2047 +0x2f fp=0xc00084f998 sp=0xc00084f970 pc=0x71be2f
github.com/gorilla/mux.(*Router).ServeHTTP(0xc000266000, {0xc3fdf0, 0xc000734e00}, 0xc000d42300)
/go/pkg/mod/github.com/gorilla/[email protected]/mux.go:210 +0x1cf fp=0xc00084fac0 sp=0xc00084f998 pc=0xa0b90f
net/http.serverHandler.ServeHTTP({0xc3e5e8}, {0xc3fdf0, 0xc000734e00}, 0xc000d42300)
/usr/local/go/src/net/http/server.go:2879 +0x43b fp=0xc00084fb80 sp=0xc00084fac0 pc=0x71f39b
net/http.(*conn).serve(0xc000268460, {0xc43f28, 0xc00025ed80})
/usr/local/go/src/net/http/server.go:1930 +0xb08 fp=0xc00084ffb8 sp=0xc00084fb80 pc=0x71af08
net/http.(*Server).Serve·dwrap·87()
/usr/local/go/src/net/http/server.go:3034 +0x2e fp=0xc00084ffe0 sp=0xc00084ffb8 pc=0x71fcee
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:1581 +0x1 fp=0xc00084ffe8 sp=0xc00084ffe0 pc=0x465e81
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:3034 +0x4e8
goroutine 1 [IO wait]:
internal/poll.runtime_pollWait(0x7f8a20c483d8, 0x72)
/usr/local/go/src/runtime/netpoll.go:303 +0x85
internal/poll.(*pollDesc).wait(0xc000221e80, 0xc000046800, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Accept(0xc000221e80)
/usr/local/go/src/internal/poll/fd_unix.go:402 +0x22c
net.(*netFD).accept(0xc000221e80)
/usr/local/go/src/net/fd_unix.go:173 +0x35
net.(*TCPListener).accept(0xc00000d590)
/usr/local/go/src/net/tcpsock_posix.go:140 +0x28
net.(*TCPListener).Accept(0xc00000d590)
/usr/local/go/src/net/tcpsock.go:262 +0x3d
net/http.(*Server).Serve(0xc000264000, {0xc3fc10, 0xc00000d590})
/usr/local/go/src/net/http/server.go:3002 +0x394
net/http.(*Server).ListenAndServe(0xc000264000)
/usr/local/go/src/net/http/server.go:2931 +0x7d
atomys.codes/webhooked/internal/server.(*Server).Serve(0xc00000e190)
/build/internal/server/serve.go:59 +0x16a
atomys.codes/webhooked/cmd.glob..func1(0x10f1760, {0xb62016, 0x0, 0x0})
/build/cmd/serve.go:50 +0xd6
github.com/spf13/cobra.(*Command).execute(0x10f1760, {0x112c2b8, 0x0, 0x0})
/go/pkg/mod/github.com/spf13/[email protected]/command.go:860 +0x5f8
github.com/spf13/cobra.(*Command).ExecuteC(0x10f14e0)
/go/pkg/mod/github.com/spf13/[email protected]/command.go:974 +0x3bc
github.com/spf13/cobra.(*Command).Execute(...)
/go/pkg/mod/github.com/spf13/[email protected]/command.go:902
atomys.codes/webhooked/cmd.Execute()
/build/cmd/root.go:43 +0x25
main.main()
/build/main.go:44 +0x17
goroutine 11 [IO wait]:
internal/poll.runtime_pollWait(0x7f8a20c48888, 0x72)
/usr/local/go/src/runtime/netpoll.go:303 +0x85
internal/poll.(*pollDesc).wait(0xc000220780, 0xc000231000, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000220780, {0xc000231000, 0x1000, 0x1000})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc000220780, {0xc000231000, 0xadda05, 0xc000090de8})
/usr/local/go/src/net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc00000e058, {0xc000231000, 0x4, 0xc000090e18})
/usr/local/go/src/net/net.go:183 +0x45
bufio.(*Reader).Read(0xc00020c5a0, {0xc0006e0d80, 0x7, 0x40d3a7})
/usr/local/go/src/bufio/bufio.go:227 +0x1b4
io.ReadAtLeast({0xc35280, 0xc00020c5a0}, {0xc0006e0d80, 0x7, 0x7}, 0x7)
/usr/local/go/src/io/io.go:328 +0x9a
io.ReadFull(...)
/usr/local/go/src/io/io.go:347
github.com/streadway/amqp.(*reader).ReadFrame(0xc000090f30)
/go/pkg/mod/github.com/streadway/[email protected]/read.go:49 +0x53
github.com/streadway/amqp.(*Connection).reader(0xc000202140, {0xc35ee0, 0xc00000e058})
/go/pkg/mod/github.com/streadway/[email protected]/connection.go:521 +0x1ca
created by github.com/streadway/amqp.Open
/go/pkg/mod/github.com/streadway/[email protected]/connection.go:233 +0x365
goroutine 51 [select]:
github.com/streadway/amqp.(*Connection).heartbeater(0xc000202280, 0x2540be400, 0xc00020c900)
/go/pkg/mod/github.com/streadway/[email protected]/connection.go:551 +0x1c5
created by github.com/streadway/amqp.(*Connection).openTune
/go/pkg/mod/github.com/streadway/[email protected]/connection.go:782 +0x535
goroutine 66 [IO wait]:
internal/poll.runtime_pollWait(0x7f8a20c485b8, 0x72)
/usr/local/go/src/runtime/netpoll.go:303 +0x85
internal/poll.(*pollDesc).wait(0xc000221900, 0xc0002db000, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000221900, {0xc0002db000, 0x1000, 0x1000})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc000221900, {0xc0002db000, 0x5, 0x0})
/usr/local/go/src/net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc00009e920, {0xc0002db000, 0x4, 0xc00008ce18})
/usr/local/go/src/net/net.go:183 +0x45
bufio.(*Reader).Read(0xc0001f9e60, {0xc00052c240, 0x7, 0x40d3a7})
/usr/local/go/src/bufio/bufio.go:227 +0x1b4
io.ReadAtLeast({0xc35280, 0xc0001f9e60}, {0xc00052c240, 0x7, 0x7}, 0x7)
/usr/local/go/src/io/io.go:328 +0x9a
io.ReadFull(...)
/usr/local/go/src/io/io.go:347
github.com/streadway/amqp.(*reader).ReadFrame(0xc00008cf30)
/go/pkg/mod/github.com/streadway/[email protected]/read.go:49 +0x53
github.com/streadway/amqp.(*Connection).reader(0xc00019d400, {0xc35ee0, 0xc00009e920})
/go/pkg/mod/github.com/streadway/[email protected]/connection.go:521 +0x1ca
created by github.com/streadway/amqp.Open
/go/pkg/mod/github.com/streadway/[email protected]/connection.go:233 +0x365
goroutine 62 [select]:
github.com/streadway/amqp.(*Connection).heartbeater(0xc00019d400, 0x2540be400, 0xc00020d2c0)
/go/pkg/mod/github.com/streadway/[email protected]/connection.go:551 +0x1c5
created by github.com/streadway/amqp.(*Connection).openTune
/go/pkg/mod/github.com/streadway/[email protected]/connection.go:782 +0x535
goroutine 50 [IO wait]:
internal/poll.runtime_pollWait(0x7f8a20c486a8, 0x72)
/usr/local/go/src/runtime/netpoll.go:303 +0x85
internal/poll.(*pollDesc).wait(0xc000220c80, 0xc000233000, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000220c80, {0xc000233000, 0x1000, 0x1000})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc000220c80, {0xc000233000, 0x5, 0x0})
/usr/local/go/src/net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc00000e098, {0xc000233000, 0x4, 0xc000091e18})
/usr/local/go/src/net/net.go:183 +0x45
bufio.(*Reader).Read(0xc00020c8a0, {0xc0006e0d90, 0x7, 0x40d3a7})
/usr/local/go/src/bufio/bufio.go:227 +0x1b4
io.ReadAtLeast({0xc35280, 0xc00020c8a0}, {0xc0006e0d90, 0x7, 0x7}, 0x7)
/usr/local/go/src/io/io.go:328 +0x9a
io.ReadFull(...)
/usr/local/go/src/io/io.go:347
github.com/streadway/amqp.(*reader).ReadFrame(0xc000091f30)
/go/pkg/mod/github.com/streadway/[email protected]/read.go:49 +0x53
github.com/streadway/amqp.(*Connection).reader(0xc000202280, {0xc35ee0, 0xc00000e098})
/go/pkg/mod/github.com/streadway/[email protected]/connection.go:521 +0x1ca
created by github.com/streadway/amqp.Open
/go/pkg/mod/github.com/streadway/[email protected]/connection.go:233 +0x365
goroutine 12 [select]:
github.com/streadway/amqp.(*Connection).heartbeater(0xc000202140, 0x2540be400, 0xc00020c600)
/go/pkg/mod/github.com/streadway/[email protected]/connection.go:551 +0x1c5
created by github.com/streadway/amqp.(*Connection).openTune
/go/pkg/mod/github.com/streadway/[email protected]/connection.go:782 +0x535
goroutine 60 [IO wait]:
internal/poll.runtime_pollWait(0x7f8a20c48798, 0x72)
/usr/local/go/src/runtime/netpoll.go:303 +0x85
internal/poll.(*pollDesc).wait(0xc000221400, 0xc00024d000, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000221400, {0xc00024d000, 0x1000, 0x1000})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc000221400, {0xc00024d000, 0xb9b205, 0xc00020d0c0})
/usr/local/go/src/net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc00000e120, {0xc00024d000, 0x4, 0xc000092e18})
/usr/local/go/src/net/net.go:183 +0x45
bufio.(*Reader).Read(0xc00020d0e0, {0xc0008955f0, 0x7, 0x40d3a7})
/usr/local/go/src/bufio/bufio.go:227 +0x1b4
io.ReadAtLeast({0xc35280, 0xc00020d0e0}, {0xc0008955f0, 0x7, 0x7}, 0x7)
/usr/local/go/src/io/io.go:328 +0x9a
io.ReadFull(...)
/usr/local/go/src/io/io.go:347
github.com/streadway/amqp.(*reader).ReadFrame(0xc000092f30)
/go/pkg/mod/github.com/streadway/[email protected]/read.go:49 +0x53
github.com/streadway/amqp.(*Connection).reader(0xc0002023c0, {0xc35ee0, 0xc00000e120})
/go/pkg/mod/github.com/streadway/[email protected]/connection.go:521 +0x1ca
created by github.com/streadway/amqp.Open
/go/pkg/mod/github.com/streadway/[email protected]/connection.go:233 +0x365
goroutine 38 [select]:
github.com/streadway/amqp.(*Connection).heartbeater(0xc0002023c0, 0x2540be400, 0xc0001f9440)
/go/pkg/mod/github.com/streadway/[email protected]/connection.go:551 +0x1c5
created by github.com/streadway/amqp.(*Connection).openTune
/go/pkg/mod/github.com/streadway/[email protected]/connection.go:782 +0x535
goroutine 172970 [IO wait]:
internal/poll.runtime_pollWait(0x7f8a20a5ba58, 0x72)
/usr/local/go/src/runtime/netpoll.go:303 +0x85
internal/poll.(*pollDesc).wait(0xc0003b9680, 0xc0007c5000, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0003b9680, {0xc0007c5000, 0x1000, 0x1000})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc0003b9680, {0xc0007c5000, 0x496806, 0x47674d})
/usr/local/go/src/net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc000864bd8, {0xc0007c5000, 0x0, 0xc0007cac98})
/usr/local/go/src/net/net.go:183 +0x45
net/http.(*connReader).Read(0xc0007cac90, {0xc0007c5000, 0x1000, 0x1000})
/usr/local/go/src/net/http/server.go:780 +0x16d
bufio.(*Reader).fill(0xc0007099e0)
/usr/local/go/src/bufio/bufio.go:101 +0x103
bufio.(*Reader).Peek(0xc0007099e0, 0x4)
/usr/local/go/src/bufio/bufio.go:139 +0x5d
net/http.(*conn).readRequest(0xc000268be0, {0xc43e80, 0xc000779480})
/usr/local/go/src/net/http/server.go:963 +0x1f8
net/http.(*conn).serve(0xc000268be0, {0xc43f28, 0xc00025ed80})
/usr/local/go/src/net/http/server.go:1856 +0x865
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:3034 +0x4e8
goroutine 173039 [IO wait]:
internal/poll.runtime_pollWait(0x7f8a20a5b2d8, 0x72)
/usr/local/go/src/runtime/netpoll.go:303 +0x85
internal/poll.(*pollDesc).wait(0xc0008d5000, 0xc000a22000, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0008d5000, {0xc000a22000, 0x1000, 0x1000})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc0008d5000, {0xc000a22000, 0x496806, 0x47674d})
/usr/local/go/src/net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc00000fdb0, {0xc000a22000, 0x0, 0xc000a17f88})
/usr/local/go/src/net/net.go:183 +0x45
net/http.(*connReader).Read(0xc000a17f80, {0xc000a22000, 0x1000, 0x1000})
/usr/local/go/src/net/http/server.go:780 +0x16d
bufio.(*Reader).fill(0xc00064f6e0)
/usr/local/go/src/bufio/bufio.go:101 +0x103
bufio.(*Reader).Peek(0xc00064f6e0, 0x4)
/usr/local/go/src/bufio/bufio.go:139 +0x5d
net/http.(*conn).readRequest(0xc0001d6780, {0xc43e80, 0xc000a0d280})
/usr/local/go/src/net/http/server.go:963 +0x1f8
net/http.(*conn).serve(0xc0001d6780, {0xc43f28, 0xc00025ed80})
/usr/local/go/src/net/http/server.go:1856 +0x865
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:3034 +0x4e8
goroutine 82 [IO wait]:
internal/poll.runtime_pollWait(0x7f8a20c484c8, 0x72)
/usr/local/go/src/runtime/netpoll.go:303 +0x85
internal/poll.(*pollDesc).wait(0xc000221e00, 0xc000261000, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000221e00, {0xc000261000, 0x1000, 0x1000})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc000221e00, {0xc000261000, 0x5, 0x1})
/usr/local/go/src/net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc00000e178, {0xc000261000, 0x4, 0xc000093e18})
/usr/local/go/src/net/net.go:183 +0x45
bufio.(*Reader).Read(0xc00020d6e0, {0xc0005f0b70, 0x7, 0x40d3a7})
/usr/local/go/src/bufio/bufio.go:227 +0x1b4
io.ReadAtLeast({0xc35280, 0xc00020d6e0}, {0xc0005f0b70, 0x7, 0x7}, 0x7)
/usr/local/go/src/io/io.go:328 +0x9a
io.ReadFull(...)
/usr/local/go/src/io/io.go:347
github.com/streadway/amqp.(*reader).ReadFrame(0xc000093f30)
/go/pkg/mod/github.com/streadway/[email protected]/read.go:49 +0x53
github.com/streadway/amqp.(*Connection).reader(0xc000202500, {0xc35ee0, 0xc00000e178})
/go/pkg/mod/github.com/streadway/[email protected]/connection.go:521 +0x1ca
created by github.com/streadway/amqp.Open
/go/pkg/mod/github.com/streadway/[email protected]/connection.go:233 +0x365
goroutine 112 [IO wait]:
internal/poll.runtime_pollWait(0x7f8a20c48018, 0x72)
/usr/local/go/src/runtime/netpoll.go:303 +0x85
internal/poll.(*pollDesc).wait(0xc0002d8000, 0xc00045a000, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0002d8000, {0xc00045a000, 0x1000, 0x1000})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc0002d8000, {0xc00045a000, 0xb67fbc, 0x10})
/usr/local/go/src/net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc00009e018, {0xc00045a000, 0x28, 0xc000468098})
/usr/local/go/src/net/net.go:183 +0x45
net/http.(*connReader).Read(0xc000468090, {0xc00045a000, 0x1000, 0x1000})
/usr/local/go/src/net/http/server.go:780 +0x16d
bufio.(*Reader).fill(0xc0002dd260)
/usr/local/go/src/bufio/bufio.go:101 +0x103
bufio.(*Reader).ReadSlice(0xc0002dd260, 0x0)
/usr/local/go/src/bufio/bufio.go:360 +0x2f
bufio.(*Reader).ReadLine(0xc0002dd260)
/usr/local/go/src/bufio/bufio.go:389 +0x27
net/textproto.(*Reader).readLineSlice(0xc0006531a0)
/usr/local/go/src/net/textproto/reader.go:57 +0x99
net/textproto.(*Reader).ReadLine(...)
/usr/local/go/src/net/textproto/reader.go:38
net/http.readRequest(0xc00009e018)
/usr/local/go/src/net/http/request.go:1029 +0x79
net/http.(*conn).readRequest(0xc0002680a0, {0xc43e80, 0xc00047c040})
/usr/local/go/src/net/http/server.go:966 +0x225
net/http.(*conn).serve(0xc0002680a0, {0xc43f28, 0xc00025ed80})
/usr/local/go/src/net/http/server.go:1856 +0x865
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:3034 +0x4e8
goroutine 76 [select]:
github.com/streadway/amqp.(*Connection).heartbeater(0xc000202500, 0x2540be400, 0xc0002dc600)
/go/pkg/mod/github.com/streadway/[email protected]/connection.go:551 +0x1c5
created by github.com/streadway/amqp.(*Connection).openTune
/go/pkg/mod/github.com/streadway/[email protected]/connection.go:782 +0x535
goroutine 158353 [IO wait]:
internal/poll.runtime_pollWait(0x7f8a20a5bb48, 0x72)
/usr/local/go/src/runtime/netpoll.go:303 +0x85
internal/poll.(*pollDesc).wait(0xc000221880, 0xc000848000, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000221880, {0xc000848000, 0x1000, 0x1000})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc000221880, {0xc000848000, 0x496806, 0x47674d})
/usr/local/go/src/net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc00009f358, {0xc000848000, 0x0, 0xc0005cb208})
/usr/local/go/src/net/net.go:183 +0x45
net/http.(*connReader).Read(0xc0005cb200, {0xc000848000, 0x1000, 0x1000})
/usr/local/go/src/net/http/server.go:780 +0x16d
bufio.(*Reader).fill(0xc0002dd860)
/usr/local/go/src/bufio/bufio.go:101 +0x103
bufio.(*Reader).Peek(0xc0002dd860, 0x4)
/usr/local/go/src/bufio/bufio.go:139 +0x5d
net/http.(*conn).readRequest(0xc000268960, {0xc43e80, 0xc00083c600})
/usr/local/go/src/net/http/server.go:963 +0x1f8
net/http.(*conn).serve(0xc000268960, {0xc43f28, 0xc00025ed80})
/usr/local/go/src/net/http/server.go:1856 +0x865
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:3034 +0x4e8
goroutine 158354 [IO wait]:
internal/poll.runtime_pollWait(0x7f8a20c47a78, 0x72)
/usr/local/go/src/runtime/netpoll.go:303 +0x85
internal/poll.(*pollDesc).wait(0xc000221980, 0xc00086c000, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000221980, {0xc00086c000, 0x1000, 0x1000})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc000221980, {0xc00086c000, 0x496806, 0x47674d})
/usr/local/go/src/net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc00009f360, {0xc00086c000, 0x0, 0xc000574338})
/usr/local/go/src/net/net.go:183 +0x45
net/http.(*connReader).Read(0xc000574330, {0xc00086c000, 0x1000, 0x1000})
/usr/local/go/src/net/http/server.go:780 +0x16d
bufio.(*Reader).fill(0xc0002ddb60)
/usr/local/go/src/bufio/bufio.go:101 +0x103
bufio.(*Reader).Peek(0xc0002ddb60, 0x4)
/usr/local/go/src/bufio/bufio.go:139 +0x5d
net/http.(*conn).readRequest(0xc000268a00, {0xc43e80, 0xc00083cc80})
/usr/local/go/src/net/http/server.go:963 +0x1f8
net/http.(*conn).serve(0xc000268a00, {0xc43f28, 0xc00025ed80})
/usr/local/go/src/net/http/server.go:1856 +0x865
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:3034 +0x4e8
goroutine 173997 [runnable]:
net/http.(*connReader).startBackgroundRead·dwrap·75()
/usr/local/go/src/net/http/server.go:668
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:1581 +0x1
created by net/http.(*connReader).startBackgroundRead
/usr/local/go/src/net/http/server.go:668 +0xcf
goroutine 173103 [IO wait]:
internal/poll.runtime_pollWait(0x7f8a20a70ef8, 0x72)
/usr/local/go/src/runtime/netpoll.go:303 +0x85
internal/poll.(*pollDesc).wait(0xc000a33700, 0xc000589000, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000a33700, {0xc000589000, 0x1000, 0x1000})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc000a33700, {0xc000589000, 0x496806, 0x47674d})
/usr/local/go/src/net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc00000ffd0, {0xc000589000, 0x0, 0xc00084a8a8})
/usr/local/go/src/net/net.go:183 +0x45
net/http.(*connReader).Read(0xc00084a8a0, {0xc000589000, 0x1000, 0x1000})
/usr/local/go/src/net/http/server.go:780 +0x16d
bufio.(*Reader).fill(0xc0004bfd40)
/usr/local/go/src/bufio/bufio.go:101 +0x103
bufio.(*Reader).Peek(0xc0004bfd40, 0x4)
/usr/local/go/src/bufio/bufio.go:139 +0x5d
net/http.(*conn).readRequest(0xc0001d6b40, {0xc43e80, 0xc00042d200})
/usr/local/go/src/net/http/server.go:963 +0x1f8
net/http.(*conn).serve(0xc0001d6b40, {0xc43f28, 0xc00025ed80})
/usr/local/go/src/net/http/server.go:1856 +0x865
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:3034 +0x4e8
goroutine 173101 [IO wait]:
internal/poll.runtime_pollWait(0x7f8a20a710d8, 0x72)
/usr/local/go/src/runtime/netpoll.go:303 +0x85
internal/poll.(*pollDesc).wait(0xc000a33600, 0xc00021d000, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000a33600, {0xc00021d000, 0x1000, 0x1000})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc000a33600, {0xc00021d000, 0x496806, 0x47674d})
/usr/local/go/src/net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc00000ffc0, {0xc00021d000, 0x0, 0xc00076d5c8})
/usr/local/go/src/net/net.go:183 +0x45
net/http.(*connReader).Read(0xc00076d5c0, {0xc00021d000, 0x1000, 0x1000})
/usr/local/go/src/net/http/server.go:780 +0x16d
bufio.(*Reader).fill(0xc0004bf860)
/usr/local/go/src/bufio/bufio.go:101 +0x103
bufio.(*Reader).Peek(0xc0004bf860, 0x4)
/usr/local/go/src/bufio/bufio.go:139 +0x5d
net/http.(*conn).readRequest(0xc0001d6a00, {0xc43e80, 0xc00042c580})
/usr/local/go/src/net/http/server.go:963 +0x1f8
net/http.(*conn).serve(0xc0001d6a00, {0xc43f28, 0xc00025ed80})
/usr/local/go/src/net/http/server.go:1856 +0x865
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:3034 +0x4e8
goroutine 172994 [IO wait, 1 minutes]:
internal/poll.runtime_pollWait(0x7f8a20a5b4b8, 0x72)
/usr/local/go/src/runtime/netpoll.go:303 +0x85
internal/poll.(*pollDesc).wait(0xc0003b9a80, 0xc0009c5000, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0003b9a80, {0xc0009c5000, 0x1000, 0x1000})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc0003b9a80, {0xc0009c5000, 0x496806, 0x47674d})
/usr/local/go/src/net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc000864c18, {0xc0009c5000, 0x0, 0xc0009c1568})
/usr/local/go/src/net/net.go:183 +0x45
net/http.(*connReader).Read(0xc0009c1560, {0xc0009c5000, 0x1000, 0x1000})
/usr/local/go/src/net/http/server.go:780 +0x16d
bufio.(*Reader).fill(0xc0001f8ae0)
/usr/local/go/src/bufio/bufio.go:101 +0x103
bufio.(*Reader).Peek(0xc0001f8ae0, 0x4)
/usr/local/go/src/bufio/bufio.go:139 +0x5d
net/http.(*conn).readRequest(0xc000269220, {0xc43e80, 0xc00098f9c0})
/usr/local/go/src/net/http/server.go:963 +0x1f8
net/http.(*conn).serve(0xc000269220, {0xc43f28, 0xc00025ed80})
/usr/local/go/src/net/http/server.go:1856 +0x865
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:3034 +0x4e8
goroutine 172975 [IO wait, 1 minutes]:
internal/poll.runtime_pollWait(0x7f8a20a5b878, 0x72)
/usr/local/go/src/runtime/netpoll.go:303 +0x85
internal/poll.(*pollDesc).wait(0xc0003b9900, 0xc0009a1000, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0003b9900, {0xc0009a1000, 0x1000, 0x1000})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc0003b9900, {0xc0009a1000, 0x496806, 0x47674d})
/usr/local/go/src/net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc000864c00, {0xc0009a1000, 0x0, 0xc00098cf38})
/usr/local/go/src/net/net.go:183 +0x45
net/http.(*connReader).Read(0xc00098cf30, {0xc0009a1000, 0x1000, 0x1000})
/usr/local/go/src/net/http/server.go:780 +0x16d
bufio.(*Reader).fill(0xc000709f80)
/usr/local/go/src/bufio/bufio.go:101 +0x103
bufio.(*Reader).Peek(0xc000709f80, 0x4)
/usr/local/go/src/bufio/bufio.go:139 +0x5d
net/http.(*conn).readRequest(0xc000269040, {0xc43e80, 0xc00098e6c0})
/usr/local/go/src/net/http/server.go:963 +0x1f8
net/http.(*conn).serve(0xc000269040, {0xc43f28, 0xc00025ed80})
/usr/local/go/src/net/http/server.go:1856 +0x865
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:3034 +0x4e8
goroutine 172993 [IO wait, 1 minutes]:
internal/poll.runtime_pollWait(0x7f8a20a5b788, 0x72)
/usr/local/go/src/runtime/netpoll.go:303 +0x85
internal/poll.(*pollDesc).wait(0xc0003b9a00, 0xc0009b7000, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0003b9a00, {0xc0009b7000, 0x1000, 0x1000})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc0003b9a00, {0xc0009b7000, 0x496806, 0x47674d})
/usr/local/go/src/net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc000864c10, {0xc0009b7000, 0x0, 0xc0009c0788})
/usr/local/go/src/net/net.go:183 +0x45
net/http.(*connReader).Read(0xc0009c0780, {0xc0009b7000, 0x1000, 0x1000})
/usr/local/go/src/net/http/server.go:780 +0x16d
bufio.(*Reader).fill(0xc0001f86c0)
/usr/local/go/src/bufio/bufio.go:101 +0x103
bufio.(*Reader).Peek(0xc0001f86c0, 0x4)
/usr/local/go/src/bufio/bufio.go:139 +0x5d
net/http.(*conn).readRequest(0xc000269180, {0xc43e80, 0xc00098f380})
/usr/local/go/src/net/http/server.go:963 +0x1f8
net/http.(*conn).serve(0xc000269180, {0xc43f28, 0xc00025ed80})
/usr/local/go/src/net/http/server.go:1856 +0x865
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:3034 +0x4e8
goroutine 147367 [IO wait]:
internal/poll.runtime_pollWait(0x7f8a20a5bf08, 0x72)
/usr/local/go/src/runtime/netpoll.go:303 +0x85
internal/poll.(*pollDesc).wait(0xc000511100, 0xc00021b000, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000511100, {0xc00021b000, 0x1000, 0x1000})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc000511100, {0xc00021b000, 0x496806, 0x47674d})
/usr/local/go/src/net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc00009e298, {0xc00021b000, 0x0, 0xc0007b5688})
/usr/local/go/src/net/net.go:183 +0x45
net/http.(*connReader).Read(0xc0007b5680, {0xc00021b000, 0x1000, 0x1000})
/usr/local/go/src/net/http/server.go:780 +0x16d
bufio.(*Reader).fill(0xc000709920)
/usr/local/go/src/bufio/bufio.go:101 +0x103
bufio.(*Reader).Peek(0xc000709920, 0x4)
/usr/local/go/src/bufio/bufio.go:139 +0x5d
net/http.(*conn).readRequest(0xc000268500, {0xc43e80, 0xc000688200})
/usr/local/go/src/net/http/server.go:963 +0x1f8
net/http.(*conn).serve(0xc000268500, {0xc43f28, 0xc00025ed80})
/usr/local/go/src/net/http/server.go:1856 +0x865
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:3034 +0x4e8
goroutine 173998 [runnable]:
text/template/parse.(*lexer).emit(...)
/usr/local/go/src/text/template/parse/lex.go:157
text/template/parse.lexText(0xc000511980)
/usr/local/go/src/text/template/parse/lex.go:269 +0x44a
text/template/parse.(*lexer).run(0xc000511980)
/usr/local/go/src/text/template/parse/lex.go:230 +0x2a
created by text/template/parse.lex
/usr/local/go/src/text/template/parse/lex.go:223 +0x1cf
goroutine 158377 [IO wait]:
internal/poll.runtime_pollWait(0x7f8a20c48108, 0x72)
/usr/local/go/src/runtime/netpoll.go:303 +0x85
internal/poll.(*pollDesc).wait(0xc0001f7280, 0xc00089a000, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0001f7280, {0xc00089a000, 0x1000, 0x1000})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc0001f7280, {0xc00089a000, 0x496806, 0x47674d})
/usr/local/go/src/net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc00009f4d0, {0xc00089a000, 0x0, 0xc000896098})
/usr/local/go/src/net/net.go:183 +0x45
net/http.(*connReader).Read(0xc000896090, {0xc00089a000, 0x1000, 0x1000})
/usr/local/go/src/net/http/server.go:780 +0x16d
bufio.(*Reader).fill(0xc0001f8ea0)
/usr/local/go/src/bufio/bufio.go:101 +0x103
bufio.(*Reader).Peek(0xc0001f8ea0, 0x4)
/usr/local/go/src/bufio/bufio.go:139 +0x5d
net/http.(*conn).readRequest(0xc000268c80, {0xc43e80, 0xc000890500})
/usr/local/go/src/net/http/server.go:963 +0x1f8
net/http.(*conn).serve(0xc000268c80, {0xc43f28, 0xc00025ed80})
/usr/local/go/src/net/http/server.go:1856 +0x865
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:3034 +0x4e8
goroutine 124936 [runnable]:
text/template.builtins(...)
/usr/local/go/src/text/template/funcs.go:41
text/template.(*Template).Parse(0xc00083de80, {0xc0001d00c0, 0x1b})
/usr/local/go/src/text/template/template.go:210 +0x552
atomys.codes/webhooked/pkg/factory.goTemplateValue({0xc0001d00c0, 0x1b}, {0xae9340, 0xc0001f9740})
/build/pkg/factory/factory.go:191 +0x105
atomys.codes/webhooked/pkg/factory.(*Factory).processInputConfig(0xc0001a9490, 0xc000282fc0)
/build/pkg/factory/factory.go:174 +0x37d
atomys.codes/webhooked/pkg/factory.(*Factory).Input(0xc0001a9490, {0xb62a54, 0x203000})
/build/pkg/factory/factory.go:126 +0x130
atomys.codes/webhooked/pkg/factory.(*compareFactory).Func.func1(0xc0001a9490, 0x10)
/build/pkg/factory/f_compare.go:31 +0x50
atomys.codes/webhooked/pkg/factory.(*Factory).Run(0xc0001a9490)
/build/pkg/factory/factory.go:152 +0x2a
atomys.codes/webhooked/pkg/factory.(*Pipeline).Run(0xc0001f9740)
/build/pkg/factory/pipeline.go:76 +0x1af
atomys.codes/webhooked/internal/server/v1alpha1.(*Server).runSecurity(0x7f8a20c79198, 0xc00083cd80, 0xc00050ba00, {0xc00097e400, 0xdc, 0x10})
/build/internal/server/v1alpha1/handlers.go:147 +0x145
atomys.codes/webhooked/internal/server/v1alpha1.webhookService(0xc00009c455, 0xc000087740, 0xc00050ba00)
/build/internal/server/v1alpha1/handlers.go:103 +0x113
atomys.codes/webhooked/internal/server/v1alpha1.(*Server).WebhookHandler.func1({0xc3ef20, 0xc000726c90}, 0xc00050ba00)
/build/internal/server/v1alpha1/handlers.go:71 +0x218
net/http.HandlerFunc.ServeHTTP(0x0, {0xc3ef20, 0xc000726c90}, 0x74d6bd)
/usr/local/go/src/net/http/server.go:2047 +0x2f
atomys.codes/webhooked/internal/server.prometheusMiddleware.func1({0xc3ef20, 0xc000726c78}, 0xc00050ba00)
/build/internal/server/middlewares.go:51 +0xf2
net/http.HandlerFunc.ServeHTTP(0x7f8a20b66810, {0xc3ef20, 0xc000726c78}, 0x7f8a478cc108)
/usr/local/go/src/net/http/server.go:2047 +0x2f
atomys.codes/webhooked/internal/server.loggingMiddleware.func1({0xc3fdf0, 0xc000532700}, 0xc00050ba00)
/build/internal/server/middlewares.go:73 +0xdd
net/http.HandlerFunc.ServeHTTP(0xc00050b900, {0xc3fdf0, 0xc000532700}, 0xc0008ad9f8)
/usr/local/go/src/net/http/server.go:2047 +0x2f
github.com/gorilla/mux.(*Router).ServeHTTP(0xc000266000, {0xc3fdf0, 0xc000532700}, 0xc00050b800)
/go/pkg/mod/github.com/gorilla/[email protected]/mux.go:210 +0x1cf
net/http.serverHandler.ServeHTTP({0xc3e5e8}, {0xc3fdf0, 0xc000532700}, 0xc00050b800)
/usr/local/go/src/net/http/server.go:2879 +0x43b
net/http.(*conn).serve(0xc000268aa0, {0xc43f28, 0xc00025ed80})
/usr/local/go/src/net/http/server.go:1930 +0xb08
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:3034 +0x4e8
goroutine 173042 [IO wait, 1 minutes]:
internal/poll.runtime_pollWait(0x7f8a20a5b008, 0x72)
/usr/local/go/src/runtime/netpoll.go:303 +0x85
internal/poll.(*pollDesc).wait(0xc0008d5180, 0xc0008fe000, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0008d5180, {0xc0008fe000, 0x1000, 0x1000})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc0008d5180, {0xc0008fe000, 0x496806, 0x47674d})
/usr/local/go/src/net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc00000fdc8, {0xc0008fe000, 0x0, 0xc0008fa998})
/usr/local/go/src/net/net.go:183 +0x45
net/http.(*connReader).Read(0xc0008fa990, {0xc0008fe000, 0x1000, 0x1000})
/usr/local/go/src/net/http/server.go:780 +0x16d
bufio.(*Reader).fill(0xc00064ef00)
/usr/local/go/src/bufio/bufio.go:101 +0x103
bufio.(*Reader).Peek(0xc00064ef00, 0x4)
/usr/local/go/src/bufio/bufio.go:139 +0x5d
net/http.(*conn).readRequest(0xc0001d6960, {0xc43e80, 0xc0008cfbc0})
/usr/local/go/src/net/http/server.go:963 +0x1f8
net/http.(*conn).serve(0xc0001d6960, {0xc43f28, 0xc00025ed80})
/usr/local/go/src/net/http/server.go:1856 +0x865
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:3034 +0x4e8
goroutine 174000 [runnable]:
net/http.(*connReader).startBackgroundRead·dwrap·75()
/usr/local/go/src/net/http/server.go:668
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:1581 +0x1
created by net/http.(*connReader).startBackgroundRead
/usr/local/go/src/net/http/server.go:668 +0xcf
goroutine 173994 [IO wait]:
internal/poll.runtime_pollWait(0x7f8a20c47f28, 0x72)
/usr/local/go/src/runtime/netpoll.go:303 +0x85
internal/poll.(*pollDesc).wait(0xc0005ae980, 0xc0006ffb41, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0005ae980, {0xc0006ffb41, 0x1, 0x1})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc0005ae980, {0xc0006ffb41, 0x40537d, 0xc0009ec240})
/usr/local/go/src/net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc00000fb50, {0xc0006ffb41, 0xb619d5, 0xc0003e07a0})
/usr/local/go/src/net/net.go:183 +0x45
net/http.(*connReader).backgroundRead(0xc0006ffb30)
/usr/local/go/src/net/http/server.go:672 +0x3f
created by net/http.(*connReader).startBackgroundRead
/usr/local/go/src/net/http/server.go:668 +0xcf
goroutine 158336 [IO wait, 1 minutes]:
internal/poll.runtime_pollWait(0x7f8a20c47d48, 0x72)
/usr/local/go/src/runtime/netpoll.go:303 +0x85
internal/poll.(*pollDesc).wait(0xc000221800, 0xc00083a000, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000221800, {0xc00083a000, 0x1000, 0x1000})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc000221800, {0xc00083a000, 0x496806, 0x47674d})
/usr/local/go/src/net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc00009f350, {0xc00083a000, 0x0, 0xc0005ca398})
/usr/local/go/src/net/net.go:183 +0x45
net/http.(*connReader).Read(0xc0005ca390, {0xc00083a000, 0x1000, 0x1000})
/usr/local/go/src/net/http/server.go:780 +0x16d
bufio.(*Reader).fill(0xc0002dd560)
/usr/local/go/src/bufio/bufio.go:101 +0x103
bufio.(*Reader).Peek(0xc0002dd560, 0x4)
/usr/local/go/src/bufio/bufio.go:139 +0x5d
net/http.(*conn).readRequest(0xc000268780, {0xc43e80, 0xc0006e5f80})
/usr/local/go/src/net/http/server.go:963 +0x1f8
net/http.(*conn).serve(0xc000268780, {0xc43f28, 0xc00025ed80})
/usr/local/go/src/net/http/server.go:1856 +0x865
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:3034 +0x4e8
goroutine 173102 [IO wait]:
internal/poll.runtime_pollWait(0x7f8a20a70fe8, 0x72)
/usr/local/go/src/runtime/netpoll.go:303 +0x85
internal/poll.(*pollDesc).wait(0xc000a33680, 0xc000604000, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc000a33680, {0xc000604000, 0x1000, 0x1000})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc000a33680, {0xc000604000, 0x496806, 0x47674d})
/usr/local/go/src/net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc00000ffc8, {0xc000604000, 0x0, 0xc0008964e8})
/usr/local/go/src/net/net.go:183 +0x45
net/http.(*connReader).Read(0xc0008964e0, {0xc000604000, 0x1000, 0x1000})
/usr/local/go/src/net/http/server.go:780 +0x16d
bufio.(*Reader).fill(0xc0004bfaa0)
/usr/local/go/src/bufio/bufio.go:101 +0x103
bufio.(*Reader).Peek(0xc0004bfaa0, 0x4)
/usr/local/go/src/bufio/bufio.go:139 +0x5d
net/http.(*conn).readRequest(0xc0001d6aa0, {0xc43e80, 0xc00042cbc0})
/usr/local/go/src/net/http/server.go:963 +0x1f8
net/http.(*conn).serve(0xc0001d6aa0, {0xc43f28, 0xc00025ed80})
/usr/local/go/src/net/http/server.go:1856 +0x865
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:3034 +0x4e8
goroutine 172976 [IO wait]:
internal/poll.runtime_pollWait(0x7f8a20a5b968, 0x72)
/usr/local/go/src/runtime/netpoll.go:303 +0x85
internal/poll.(*pollDesc).wait(0xc0003b9980, 0xc0009a9000, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0003b9980, {0xc0009a9000, 0x1000, 0x1000})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc0003b9980, {0xc0009a9000, 0x496806, 0x47674d})
/usr/local/go/src/net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc000864c08, {0xc0009a9000, 0x0, 0xc00098d988})
/usr/local/go/src/net/net.go:183 +0x45
net/http.(*connReader).Read(0xc00098d980, {0xc0009a9000, 0x1000, 0x1000})
/usr/local/go/src/net/http/server.go:780 +0x16d
bufio.(*Reader).fill(0xc0001f8360)
/usr/local/go/src/bufio/bufio.go:101 +0x103
bufio.(*Reader).Peek(0xc0001f8360, 0x4)
/usr/local/go/src/bufio/bufio.go:139 +0x5d
net/http.(*conn).readRequest(0xc0002690e0, {0xc43e80, 0xc00098ed00})
/usr/local/go/src/net/http/server.go:963 +0x1f8
net/http.(*conn).serve(0xc0002690e0, {0xc43f28, 0xc00025ed80})
/usr/local/go/src/net/http/server.go:1856 +0x865
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:3034 +0x4e8
goroutine 172969 [IO wait]:
internal/poll.runtime_pollWait(0x7f8a20c47e38, 0x72)
/usr/local/go/src/runtime/netpoll.go:303 +0x85
internal/poll.(*pollDesc).wait(0xc0003b9600, 0xc000703000, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0003b9600, {0xc000703000, 0x1000, 0x1000})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc0003b9600, {0xc000703000, 0x496806, 0x47674d})
/usr/local/go/src/net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc000864bd0, {0xc000703000, 0x0, 0xc00077de98})
/usr/local/go/src/net/net.go:183 +0x45
net/http.(*connReader).Read(0xc00077de90, {0xc000703000, 0x1000, 0x1000})
/usr/local/go/src/net/http/server.go:780 +0x16d
bufio.(*Reader).fill(0xc000709740)
/usr/local/go/src/bufio/bufio.go:101 +0x103
bufio.(*Reader).Peek(0xc000709740, 0x4)
/usr/local/go/src/bufio/bufio.go:139 +0x5d
net/http.(*conn).readRequest(0xc0002688c0, {0xc43e80, 0xc000778e40})
/usr/local/go/src/net/http/server.go:963 +0x1f8
net/http.(*conn).serve(0xc0002688c0, {0xc43f28, 0xc00025ed80})
/usr/local/go/src/net/http/server.go:1856 +0x865
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:3034 +0x4e8
goroutine 158341 [IO wait]:
internal/poll.runtime_pollWait(0x7f8a20c47c58, 0x72)
/usr/local/go/src/runtime/netpoll.go:303 +0x85
internal/poll.(*pollDesc).wait(0xc0003b9200, 0xc0007ac000, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0003b9200, {0xc0007ac000, 0x1000, 0x1000})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc0003b9200, {0xc0007ac000, 0x496806, 0x47674d})
/usr/local/go/src/net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc00000f0b0, {0xc0007ac000, 0x0, 0xc0004e7e38})
/usr/local/go/src/net/net.go:183 +0x45
net/http.(*connReader).Read(0xc0004e7e30, {0xc0007ac000, 0x1000, 0x1000})
/usr/local/go/src/net/http/server.go:780 +0x16d
bufio.(*Reader).fill(0xc0004c2c60)
/usr/local/go/src/bufio/bufio.go:101 +0x103
bufio.(*Reader).Peek(0xc0004c2c60, 0x4)
/usr/local/go/src/bufio/bufio.go:139 +0x5d
net/http.(*conn).readRequest(0xc0001d63c0, {0xc43e80, 0xc0007a6180})
/usr/local/go/src/net/http/server.go:963 +0x1f8
net/http.(*conn).serve(0xc0001d63c0, {0xc43f28, 0xc00025ed80})
/usr/local/go/src/net/http/server.go:1856 +0x865
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:3034 +0x4e8
goroutine 158683 [runnable]:
internal/poll.runtime_pollWait(0x7f8a20a5b698, 0x72)
/usr/local/go/src/runtime/netpoll.go:303 +0x85
internal/poll.(*pollDesc).wait(0xc00053f600, 0xc00040d000, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc00053f600, {0xc00040d000, 0x1000, 0x1000})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc00053f600, {0xc00040d000, 0x496806, 0x47674d})
/usr/local/go/src/net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc00000f4d0, {0xc00040d000, 0x0, 0xc000671838})
/usr/local/go/src/net/net.go:183 +0x45
net/http.(*connReader).Read(0xc000671830, {0xc00040d000, 0x1000, 0x1000})
/usr/local/go/src/net/http/server.go:780 +0x16d
bufio.(*Reader).fill(0xc00064eba0)
/usr/local/go/src/bufio/bufio.go:101 +0x103
bufio.(*Reader).Peek(0xc00064eba0, 0x4)
/usr/local/go/src/bufio/bufio.go:139 +0x5d
net/http.(*conn).readRequest(0xc000268820, {0xc43e80, 0xc00067a1c0})
/usr/local/go/src/net/http/server.go:963 +0x1f8
net/http.(*conn).serve(0xc000268820, {0xc43f28, 0xc00025ed80})
/usr/local/go/src/net/http/server.go:1856 +0x865
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:3034 +0x4e8
goroutine 124937 [runnable]:
bytes.(*Buffer).Write(0xc000717a10, {0xc00052cdba, 0x2, 0x2})
/usr/local/go/src/bytes/buffer.go:168 +0xff
encoding/binary.Write({0xc35300, 0xc000717a10}, {0xc4ccb0, 0x112c2b8}, {0xa7f9e0, 0x10ad3c0})
/usr/local/go/src/encoding/binary/binary.go:375 +0x1088
github.com/streadway/amqp.(*headerFrame).write(0xc000532620, {0xc352a0, 0xc0002835c0})
/go/pkg/mod/github.com/streadway/[email protected]/write.go:72 +0x71
github.com/streadway/amqp.(*writer).WriteFrame(0xc0001fd2f0, {0xc3e1b0, 0xc000532620})
/go/pkg/mod/github.com/streadway/[email protected]/write.go:19 +0x36
github.com/streadway/amqp.(*Connection).send(0xc00019d400, {0xc3e1b0, 0xc000532620})
/go/pkg/mod/github.com/streadway/[email protected]/connection.go:364 +0x90
github.com/streadway/amqp.(*Channel).sendOpen(0xc0002c8360, {0xc44388, 0xc000cb0480})
/go/pkg/mod/github.com/streadway/[email protected]/channel.go:240 +0x2de
github.com/streadway/amqp.(*Channel).send(0xac8d20, {0xc44388, 0xc000cb0480})
/go/pkg/mod/github.com/streadway/[email protected]/channel.go:161 +0x3a
github.com/streadway/amqp.(*Channel).Publish(0xc0002c8360, {0x0, 0x0}, {0xc0000d90e0, _}, _, _, {0x0, {0xc0001d40e0, 0x10}, ...})
/go/pkg/mod/github.com/streadway/[email protected]/channel.go:1334 +0x3f1
atomys.codes/webhooked/pkg/storage/rabbitmq.storage.Push({0xc0001f9800, 0xc00019d400, 0xc0002c8360, {{0xc0000d90e0, 0x13}, 0x0, 0x1}}, {0xa7f820, 0xc000757340})
/build/pkg/storage/rabbitmq/rabbitmq.go:95 +0x1cb
atomys.codes/webhooked/internal/server/v1alpha1.webhookService(0xc00009c365, 0xc000087740, 0xc00050b600)
/build/internal/server/v1alpha1/handlers.go:122 +0x54e
atomys.codes/webhooked/internal/server/v1alpha1.(*Server).WebhookHandler.func1({0xc3ef20, 0xc000726b40}, 0xc00050b600)
/build/internal/server/v1alpha1/handlers.go:71 +0x218
net/http.HandlerFunc.ServeHTTP(0x0, {0xc3ef20, 0xc000726b40}, 0x74d6bd)
/usr/local/go/src/net/http/server.go:2047 +0x2f
atomys.codes/webhooked/internal/server.prometheusMiddleware.func1({0xc3ef20, 0xc000726b28}, 0xc00050b600)
/build/internal/server/middlewares.go:51 +0xf2
net/http.HandlerFunc.ServeHTTP(0x7f8a20b66810, {0xc3ef20, 0xc000726b28}, 0x7f8a478cc108)
/usr/local/go/src/net/http/server.go:2047 +0x2f
atomys.codes/webhooked/internal/server.loggingMiddleware.func1({0xc3fdf0, 0xc000532540}, 0xc00050b600)
/build/internal/server/middlewares.go:73 +0xdd
net/http.HandlerFunc.ServeHTTP(0xc00050b500, {0xc3fdf0, 0xc000532540}, 0xc00088d9f8)
/usr/local/go/src/net/http/server.go:2047 +0x2f
github.com/gorilla/mux.(*Router).ServeHTTP(0xc000266000, {0xc3fdf0, 0xc000532540}, 0xc00050b400)
/go/pkg/mod/github.com/gorilla/[email protected]/mux.go:210 +0x1cf
net/http.serverHandler.ServeHTTP({0xc3e5e8}, {0xc3fdf0, 0xc000532540}, 0xc00050b400)
/usr/local/go/src/net/http/server.go:2879 +0x43b
net/http.(*conn).serve(0xc000268b40, {0xc43f28, 0xc00025ed80})
/usr/local/go/src/net/http/server.go:1930 +0xb08
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:3034 +0x4e8
goroutine 172971 [IO wait]:
internal/poll.runtime_pollWait(0x7f8a20c481f8, 0x72)
/usr/local/go/src/runtime/netpoll.go:303 +0x85
internal/poll.(*pollDesc).wait(0xc0003b9700, 0xc0007eb000, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0003b9700, {0xc0007eb000, 0x1000, 0x1000})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc0003b9700, {0xc0007eb000, 0x496806, 0x47674d})
/usr/local/go/src/net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc000864be0, {0xc0007eb000, 0x0, 0xc0007cba78})
/usr/local/go/src/net/net.go:183 +0x45
net/http.(*connReader).Read(0xc0007cba70, {0xc0007eb000, 0x1000, 0x1000})
/usr/local/go/src/net/http/server.go:780 +0x16d
bufio.(*Reader).fill(0xc000709c20)
/usr/local/go/src/bufio/bufio.go:101 +0x103
bufio.(*Reader).Peek(0xc000709c20, 0x4)
/usr/local/go/src/bufio/bufio.go:139 +0x5d
net/http.(*conn).readRequest(0xc000268d20, {0xc43e80, 0xc000779ac0})
/usr/local/go/src/net/http/server.go:963 +0x1f8
net/http.(*conn).serve(0xc000268d20, {0xc43f28, 0xc00025ed80})
/usr/local/go/src/net/http/server.go:1856 +0x865
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:3034 +0x4e8
goroutine 173104 [sync.Cond.Wait]:
sync.runtime_notifyListWait(0xc000283fd0, 0x3)
/usr/local/go/src/runtime/sema.go:513 +0x13d
sync.(*Cond).Wait(0xc00000ffd8)
/usr/local/go/src/sync/cond.go:56 +0x8c
net/http.(*connReader).abortPendingRead(0xc00076c900)
/usr/local/go/src/net/http/server.go:720 +0xb5
net/http.(*response).finishRequest(0xc000734c40)
/usr/local/go/src/net/http/server.go:1611 +0x87
net/http.(*conn).serve(0xc0001d6be0, {0xc43f28, 0xc00025ed80})
/usr/local/go/src/net/http/server.go:1935 +0xb3f
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:3034 +0x4e8
goroutine 173040 [semacquire]:
sync.runtime_SemacquireMutex(0x0, 0x0, 0x0)
/usr/local/go/src/runtime/sema.go:71 +0x25
sync.(*Mutex).lockSlow(0xc0002c836c)
/usr/local/go/src/sync/mutex.go:138 +0x165
sync.(*Mutex).Lock(...)
/usr/local/go/src/sync/mutex.go:81
github.com/streadway/amqp.(*Channel).Publish(0xc0002c8360, {0x0, 0x0}, {0xc0000d90e0, _}, _, _, {0x0, {0xc0001d40e0, 0x10}, ...})
/go/pkg/mod/github.com/streadway/[email protected]/channel.go:1331 +0xb2
atomys.codes/webhooked/pkg/storage/rabbitmq.storage.Push({0xc0001f9800, 0xc00019d400, 0xc0002c8360, {{0xc0000d90e0, 0x13}, 0x0, 0x1}}, {0xa7f820, 0xc00055d530})
/build/pkg/storage/rabbitmq/rabbitmq.go:95 +0x1cb
atomys.codes/webhooked/internal/server/v1alpha1.webhookService(0xc000270185, 0xc000087740, 0xc000733400)
/build/internal/server/v1alpha1/handlers.go:122 +0x54e
atomys.codes/webhooked/internal/server/v1alpha1.(*Server).WebhookHandler.func1({0xc3ef20, 0xc00045c510}, 0xc000733400)
/build/internal/server/v1alpha1/handlers.go:71 +0x218
net/http.HandlerFunc.ServeHTTP(0x0, {0xc3ef20, 0xc00045c510}, 0x74d6bd)
/usr/local/go/src/net/http/server.go:2047 +0x2f
atomys.codes/webhooked/internal/server.prometheusMiddleware.func1({0xc3ef20, 0xc00045c4f8}, 0xc000733400)
/build/internal/server/middlewares.go:51 +0xf2
net/http.HandlerFunc.ServeHTTP(0x7f8a20b647a8, {0xc3ef20, 0xc00045c4f8}, 0x7f8a478cc5b8)
/usr/local/go/src/net/http/server.go:2047 +0x2f
atomys.codes/webhooked/internal/server.loggingMiddleware.func1({0xc3fdf0, 0xc0007348c0}, 0xc000733400)
/build/internal/server/middlewares.go:73 +0xdd
net/http.HandlerFunc.ServeHTTP(0xc000733300, {0xc3fdf0, 0xc0007348c0}, 0xc0009f59f8)
/usr/local/go/src/net/http/server.go:2047 +0x2f
github.com/gorilla/mux.(*Router).ServeHTTP(0xc000266000, {0xc3fdf0, 0xc0007348c0}, 0xc000733200)
/go/pkg/mod/github.com/gorilla/[email protected]/mux.go:210 +0x1cf
net/http.serverHandler.ServeHTTP({0xc3e5e8}, {0xc3fdf0, 0xc0007348c0}, 0xc000733200)
/usr/local/go/src/net/http/server.go:2879 +0x43b
net/http.(*conn).serve(0xc0001d6820, {0xc43f28, 0xc00025ed80})
/usr/local/go/src/net/http/server.go:1930 +0xb08
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:3034 +0x4e8
goroutine 172953 [semacquire]:
sync.runtime_SemacquireMutex(0x0, 0x0, 0x0)
/usr/local/go/src/runtime/sema.go:71 +0x25
sync.(*Mutex).lockSlow(0xc0002c836c)
/usr/local/go/src/sync/mutex.go:138 +0x165
sync.(*Mutex).Lock(...)
/usr/local/go/src/sync/mutex.go:81
github.com/streadway/amqp.(*Channel).Publish(0xc0002c8360, {0x0, 0x0}, {0xc0000d90e0, _}, _, _, {0x0, {0xc0001d40e0, 0x10}, ...})
/go/pkg/mod/github.com/streadway/[email protected]/channel.go:1331 +0xb2
atomys.codes/webhooked/pkg/storage/rabbitmq.storage.Push({0xc0001f9800, 0xc00019d400, 0xc0002c8360, {{0xc0000d90e0, 0x13}, 0x0, 0x1}}, {0xa7f820, 0xc000c92250})
/build/pkg/storage/rabbitmq/rabbitmq.go:95 +0x1cb
atomys.codes/webhooked/internal/server/v1alpha1.webhookService(0xc000270335, 0xc000087740, 0xc000733c00)
/build/internal/server/v1alpha1/handlers.go:122 +0x54e
atomys.codes/webhooked/internal/server/v1alpha1.(*Server).WebhookHandler.func1({0xc3ef20, 0xc00045c8b8}, 0xc000733c00)
/build/internal/server/v1alpha1/handlers.go:71 +0x218
net/http.HandlerFunc.ServeHTTP(0x0, {0xc3ef20, 0xc00045c8b8}, 0x74d6bd)
/usr/local/go/src/net/http/server.go:2047 +0x2f
atomys.codes/webhooked/internal/server.prometheusMiddleware.func1({0xc3ef20, 0xc00045c8a0}, 0xc000733c00)
/build/internal/server/middlewares.go:51 +0xf2
net/http.HandlerFunc.ServeHTTP(0x7f8a20b4bcc8, {0xc3ef20, 0xc00045c8a0}, 0x7f8a478cc5b8)
/usr/local/go/src/net/http/server.go:2047 +0x2f
atomys.codes/webhooked/internal/server.loggingMiddleware.func1({0xc3fdf0, 0xc000734b60}, 0xc000733c00)
/build/internal/server/middlewares.go:73 +0xdd
net/http.HandlerFunc.ServeHTTP(0xc000733b00, {0xc3fdf0, 0xc000734b60}, 0xc0008539f8)
/usr/local/go/src/net/http/server.go:2047 +0x2f
github.com/gorilla/mux.(*Router).ServeHTTP(0xc000266000, {0xc3fdf0, 0xc000734b60}, 0xc000733a00)
/go/pkg/mod/github.com/gorilla/[email protected]/mux.go:210 +0x1cf
net/http.serverHandler.ServeHTTP({0xc3e5e8}, {0xc3fdf0, 0xc000734b60}, 0xc000733a00)
/usr/local/go/src/net/http/server.go:2879 +0x43b
net/http.(*conn).serve(0xc0001d6640, {0xc43f28, 0xc00025ed80})
/usr/local/go/src/net/http/server.go:1930 +0xb08
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:3034 +0x4e8
goroutine 173980 [runnable]:
net/http.(*connReader).startBackgroundRead·dwrap·75()
/usr/local/go/src/net/http/server.go:668
runtime.goexit()
/usr/local/go/src/runtime/asm_amd64.s:1581 +0x1
created by net/http.(*connReader).startBackgroundRead
/usr/local/go/src/net/http/server.go:668 +0xcf
goroutine 173041 [IO wait, 1 minutes]:
internal/poll.runtime_pollWait(0x7f8a20a5b0f8, 0x72)
/usr/local/go/src/runtime/netpoll.go:303 +0x85
internal/poll.(*pollDesc).wait(0xc0008d5100, 0xc000a40000, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0008d5100, {0xc000a40000, 0x1000, 0x1000})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc0008d5100, {0xc000a40000, 0x496806, 0x47674d})
/usr/local/go/src/net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc00000fdc0, {0xc000a40000, 0x0, 0xc000a27b68})
/usr/local/go/src/net/net.go:183 +0x45
net/http.(*connReader).Read(0xc000a27b60, {0xc000a40000, 0x1000, 0x1000})
/usr/local/go/src/net/http/server.go:780 +0x16d
bufio.(*Reader).fill(0xc00064fb60)
/usr/local/go/src/bufio/bufio.go:101 +0x103
bufio.(*Reader).Peek(0xc00064fb60, 0x4)
/usr/local/go/src/bufio/bufio.go:139 +0x5d
net/http.(*conn).readRequest(0xc0001d68c0, {0xc43e80, 0xc000a0df00})
/usr/local/go/src/net/http/server.go:963 +0x1f8
net/http.(*conn).serve(0xc0001d68c0, {0xc43f28, 0xc00025ed80})
/usr/local/go/src/net/http/server.go:1856 +0x865
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:3034 +0x4e8
goroutine 172974 [IO wait, 1 minutes]:
internal/poll.runtime_pollWait(0x7f8a20a5b5a8, 0x72)
/usr/local/go/src/runtime/netpoll.go:303 +0x85
internal/poll.(*pollDesc).wait(0xc0003b9880, 0xc000991000, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0003b9880, {0xc000991000, 0x1000, 0x1000})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc0003b9880, {0xc000991000, 0x496806, 0x47674d})
/usr/local/go/src/net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc000864bf8, {0xc000991000, 0x0, 0xc00098cc38})
/usr/local/go/src/net/net.go:183 +0x45
net/http.(*connReader).Read(0xc00098cc30, {0xc000991000, 0x1000, 0x1000})
/usr/local/go/src/net/http/server.go:780 +0x16d
bufio.(*Reader).fill(0xc000709f20)
/usr/local/go/src/bufio/bufio.go:101 +0x103
bufio.(*Reader).Peek(0xc000709f20, 0x4)
/usr/local/go/src/bufio/bufio.go:139 +0x5d
net/http.(*conn).readRequest(0xc000268fa0, {0xc43e80, 0xc00098e440})
/usr/local/go/src/net/http/server.go:963 +0x1f8
net/http.(*conn).serve(0xc000268fa0, {0xc43f28, 0xc00025ed80})
/usr/local/go/src/net/http/server.go:1856 +0x865
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:3034 +0x4e8
goroutine 172954 [IO wait]:
internal/poll.runtime_pollWait(0x7f8a20a5bd28, 0x72)
/usr/local/go/src/runtime/netpoll.go:303 +0x85
internal/poll.(*pollDesc).wait(0xc0005aea00, 0xc000690000, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0005aea00, {0xc000690000, 0x1000, 0x1000})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc0005aea00, {0xc000690000, 0x496806, 0x47674d})
/usr/local/go/src/net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc00000fb58, {0xc000690000, 0x0, 0xc000655ec8})
/usr/local/go/src/net/net.go:183 +0x45
net/http.(*connReader).Read(0xc000655ec0, {0xc000690000, 0x1000, 0x1000})
/usr/local/go/src/net/http/server.go:780 +0x16d
bufio.(*Reader).fill(0xc000708480)
/usr/local/go/src/bufio/bufio.go:101 +0x103
bufio.(*Reader).Peek(0xc000708480, 0x4)
/usr/local/go/src/bufio/bufio.go:139 +0x5d
net/http.(*conn).readRequest(0xc0001d66e0, {0xc43e80, 0xc000587800})
/usr/local/go/src/net/http/server.go:963 +0x1f8
net/http.(*conn).serve(0xc0001d66e0, {0xc43f28, 0xc00025ed80})
/usr/local/go/src/net/http/server.go:1856 +0x865
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:3034 +0x4e8
goroutine 172973 [IO wait]:
internal/poll.runtime_pollWait(0x7f8a20c47988, 0x72)
/usr/local/go/src/runtime/netpoll.go:303 +0x85
internal/poll.(*pollDesc).wait(0xc0003b9800, 0xc000981000, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0003b9800, {0xc000981000, 0x1000, 0x1000})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc0003b9800, {0xc000981000, 0x496806, 0x47674d})
/usr/local/go/src/net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc000864bf0, {0xc000981000, 0x0, 0xc00098c938})
/usr/local/go/src/net/net.go:183 +0x45
net/http.(*connReader).Read(0xc00098c930, {0xc000981000, 0x1000, 0x1000})
/usr/local/go/src/net/http/server.go:780 +0x16d
bufio.(*Reader).fill(0xc000709ec0)
/usr/local/go/src/bufio/bufio.go:101 +0x103
bufio.(*Reader).Peek(0xc000709ec0, 0x4)
/usr/local/go/src/bufio/bufio.go:139 +0x5d
net/http.(*conn).readRequest(0xc000268f00, {0xc43e80, 0xc00098e1c0})
/usr/local/go/src/net/http/server.go:963 +0x1f8
net/http.(*conn).serve(0xc000268f00, {0xc43f28, 0xc00025ed80})
/usr/local/go/src/net/http/server.go:1856 +0x865
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:3034 +0x4e8
goroutine 172995 [IO wait]:
internal/poll.runtime_pollWait(0x7f8a20a5b3c8, 0x72)
/usr/local/go/src/runtime/netpoll.go:303 +0x85
internal/poll.(*pollDesc).wait(0xc0003b9b00, 0xc0001eb000, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0003b9b00, {0xc0001eb000, 0x1000, 0x1000})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc0003b9b00, {0xc0001eb000, 0x496806, 0x47674d})
/usr/local/go/src/net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc000864c20, {0xc0001eb000, 0x0, 0xc0007595f8})
/usr/local/go/src/net/net.go:183 +0x45
net/http.(*connReader).Read(0xc0007595f0, {0xc0001eb000, 0x1000, 0x1000})
/usr/local/go/src/net/http/server.go:780 +0x16d
bufio.(*Reader).fill(0xc0000868a0)
/usr/local/go/src/bufio/bufio.go:101 +0x103
bufio.(*Reader).Peek(0xc0000868a0, 0x4)
/usr/local/go/src/bufio/bufio.go:139 +0x5d
net/http.(*conn).readRequest(0xc0002692c0, {0xc43e80, 0xc00070bd40})
/usr/local/go/src/net/http/server.go:963 +0x1f8
net/http.(*conn).serve(0xc0002692c0, {0xc43f28, 0xc00025ed80})
/usr/local/go/src/net/http/server.go:1856 +0x865
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:3034 +0x4e8
goroutine 172972 [IO wait]:
internal/poll.runtime_pollWait(0x7f8a20a5bc38, 0x72)
/usr/local/go/src/runtime/netpoll.go:303 +0x85
internal/poll.(*pollDesc).wait(0xc0003b9780, 0xc0007fb000, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0003b9780, {0xc0007fb000, 0x1000, 0x1000})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc0003b9780, {0xc0007fb000, 0x496806, 0x47674d})
/usr/local/go/src/net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc000864be8, {0xc0007fb000, 0x0, 0xc0007cbb08})
/usr/local/go/src/net/net.go:183 +0x45
net/http.(*connReader).Read(0xc0007cbb00, {0xc0007fb000, 0x1000, 0x1000})
/usr/local/go/src/net/http/server.go:780 +0x16d
bufio.(*Reader).fill(0xc000709c80)
/usr/local/go/src/bufio/bufio.go:101 +0x103
bufio.(*Reader).Peek(0xc000709c80, 0x4)
/usr/local/go/src/bufio/bufio.go:139 +0x5d
net/http.(*conn).readRequest(0xc000268e60, {0xc43e80, 0xc000779b80})
/usr/local/go/src/net/http/server.go:963 +0x1f8
net/http.(*conn).serve(0xc000268e60, {0xc43f28, 0xc00025ed80})
/usr/local/go/src/net/http/server.go:1856 +0x865
created by net/http.(*Server).Serve
/usr/local/go/src/net/http/server.go:3034 +0x4e8
goroutine 173977 [IO wait]:
internal/poll.runtime_pollWait(0x7f8a20a5be18, 0x72)
/usr/local/go/src/runtime/netpoll.go:303 +0x85
internal/poll.(*pollDesc).wait(0xc0001f7180, 0xc0006c9421, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0001f7180, {0xc0006c9421, 0x1, 0x1})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc0001f7180, {0xc0006c9421, 0x40537d, 0xc0004de060})
/usr/local/go/src/net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc00000eac0, {0xc0006c9421, 0xb9b288, 0xc000307fa0})
/usr/local/go/src/net/net.go:183 +0x45
net/http.(*connReader).backgroundRead(0xc0006c9410)
/usr/local/go/src/net/http/server.go:672 +0x3f
created by net/http.(*connReader).startBackgroundRead
/usr/local/go/src/net/http/server.go:668 +0xcf
goroutine 173988 [IO wait]:
internal/poll.runtime_pollWait(0x7f8a20a5b1e8, 0x72)
/usr/local/go/src/runtime/netpoll.go:303 +0x85
internal/poll.(*pollDesc).wait(0xc0008d5080, 0xc000a26d91, 0x0)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:84 +0x32
internal/poll.(*pollDesc).waitRead(...)
/usr/local/go/src/internal/poll/fd_poll_runtime.go:89
internal/poll.(*FD).Read(0xc0008d5080, {0xc000a26d91, 0x1, 0x1})
/usr/local/go/src/internal/poll/fd_unix.go:167 +0x25a
net.(*netFD).Read(0xc0008d5080, {0xc000a26d91, 0x40537d, 0xc0009ec120})
/usr/local/go/src/net/fd_posix.go:56 +0x29
net.(*conn).Read(0xc00000fdb8, {0xc000a26d91, 0xb9b288, 0xc0000147a0})
/usr/local/go/src/net/net.go:183 +0x45
net/http.(*connReader).backgroundRead(0xc000a26d80)
/usr/local/go/src/net/http/server.go:672 +0x3f
created by net/http.(*connReader).startBackgroundRead
/usr/local/go/src/net/http/server.go:668 +0xcf
0.5
Docker
No response
No response
Receive and store data sended by 42 Intranet Webhooks API.
Unknown
All webhooks sended by Intranet is protected by a secret key send on header X-Secret
. Each webhook registry have a separated secret.
Using Redis Pub/Sub seems a reasonable choice.
Maybe add a sub command or hack scripts to simulate data sended by intranet to simplify development and contributions.
Create an application that will listen to the webhooks sent in HTTP POST by the intranet of 42 and that will store them in a pub/sub, in order to be processed later and not to lose this volatile data.
No documentation of the webhooks is public.
To prevent complexity of storages package with naming, we will prefere to split in storage in separated package
Actually the data is sended to rabbitmq queue in text/plain
. When we need to push a json or xml type, it's impossible
add a configuration field to set the contentType of the payload
No response
No response
Add a factory that allows to compare 2 inputs with a generated HMAC.
Useful for Github or Twitch webhooks
Example of config (not final)
security:
- getHeader:
name: X-Hook-Secret
- compareWithGeneratedHMAC:
secret: '{{ .env.HOOK_SECRET }}'
algorithm: sha256
Create the core of the application which will allow to add the different functionalities of the application
Actually we can only receive a webhook in application/json
format.
Allow user to customize the format in configuration and add support of application/x-www-form-urlencoded
As see at https://goreportcard.com/report/atomys.codes/webhooked few minor issues is returned.
Just needs to be fixed.
Describe the bug
When multiple specs is provided, all security pipelines of previous definition is overrided by the last.
To Reproduce
Steps to reproduce the behavior:
apiVersion: v1alpha1
observability:
metricsEnabled: true
specs:
- name: exampleHook
entrypointUrl: /webhooks/example
security:
- header:
inputs:
- name: headerName
value: X-Hook-Secret
- compare:
inputs:
- name: first
value: '{{ .Outputs.header.value }}'
- name: second
valueFrom:
envRef: HOOK_SECRET
storage:
- type: redis
specs:
host: localhost
port: '6379'
database: 0
key: foo
- name: gitlab
entrypointUrl: /webhooks/gitlab
security:
- header:
inputs:
- name: headerName
value: X-Gitlab-Token
- compare:
inputs:
- name: first
value: '{{ .Outputs.header.value }}'
- name: second
valueFrom:
envRef: GITLAB_WEBHOOK_TOKEN
storage:
- type: redis
specs:
host: localhost
port: '6379'
database: 0
key: gitlab
env DEBUG=true GITLAB_WEBHOOK_TOKEN=houk2 curl --request POST \
--url http://localhost:8080/v1alpha1/webhooks/example \
--header 'Content-Type: application/json' \
--header 'X-Gitlab-Token: houk2' \
--data '{
"type": 42,
"payload": {
"nested": "amazing"
}
}'
Expected behavior
The security line need to return 401 due to missing X-Hook-Secret
header in her spec definition.
Backtrace error / Logs
7:12PM DBG running factory header
7:12PM DBG factory header input request = &{Method:POST URL:/v1alpha1/webhooks/example Proto:HTTP/1.1 ProtoMajor:1 ProtoMinor:1 Header:map[Accept:[*/*] Content-Length:[55] Content-Type:[application/json] User-Agent:[insomnia/2022.1.0] X-Gitlab-Token:[houk2]] Body:0xc0001c1ec0 GetBody:<nil> ContentLength:55 TransferEncoding:[] Close:false Host:localhost:8080 Form:map[] PostForm:map[] MultipartForm:<nil> Trailer:map[] RemoteAddr:[::1]:53382 RequestURI:/v1alpha1/webhooks/example TLS:<nil> Cancel:<nil> Response:<nil> ctx:0xc00033c960}
7:12PM DBG factory header input headerName = &{Valuable:{Value:0xc0002509c0 Values:[] ValueFrom:<nil>} Name:headerName}
7:12PM DBG factory header output value = houk2
7:12PM DBG running factory compare
7:12PM DBG factory compare input first = &{Valuable:{Value:0xc000250b50 Values:[] ValueFrom:<nil>} Name:first}
7:12PM DBG factory compare input second = &{Valuable:{Value:<nil> Values:[] ValueFrom:0xc000250c60} Name:second}
7:12PM WRN [houk2] + [] = false
7:12PM DBG factory compare output result = false
7:12PM DBG security factory passed: false
7:12PM DBG Webhook processed apiVersion=v1alpha1 entry=exampleHook
7:12PM INF Webhook is processed duration="361.9µs" secure=true spec=exampleHook statusCode=403 version=v1alpha1
Currently storages are interfaces that are included in the webhooked core. It is not possible to plug a homemade solution or a private storage into webhooked.
Be able to use the go https://pkg.go.dev/plugin plugins to allow developers to create their own storage for private use or make their plugins public while requesting integration with webhooked core
No response
No response
Add a factory that allows to compare an IP via a blocklist or an allowlist
Example of config (not final)
security:
- getClientIP:
- compareWithAllowedIPs:
ips: ['127.0.0.1']
# OR
security:
- getClientIP:
- compareWithBlockedIPs:
ips: ['127.0.0.1']
Describe the bug
When the configuration of a webhook entry is defined to load a value from an environment variable and the env variable is not set, we can pass the security with an empty header or no header.
To Reproduce
Steps to reproduce the behavior:
- name: exampleHook
entrypointUrl: /webhooks/example
security:
- header:
inputs:
- name: headerName
value: X-Hook-Secret
- compare:
inputs:
- name: first
value: '{{ .Outputs.header.value }}'
- name: second
valueFrom:
envRef: HOOK_SECRET
curl --request POST \
--url http://atomys.atomys.lab:8080/v1alpha1/webhooks/example \
--header 'Content-Type: application/json' \
--header 'X-Hook-Secret: ' \
--data '{
"type": 42,
"payload": {
"nested": "amazing"
}
}'
Expected behavior
Check if the environment variable is correctly set before get it. Its usefull to prevent misspell or typo error
Is your feature request related to a problem? Please describe.
Currently all configuration is loaded via the static configuration file. However it contains information like passwords or tokens that must be private and secure at least.
Describe the solution you'd like
Readable passwords and tokens in the config file
Describe alternatives you've considered
Possibility to load some parts of the config via environment variables. Example of configuration file with dynamic values:
apiVersion: v1alpha1
specs:
- name: exampleHook
entrypointUrl: /webhooks/example
security:
- getHeader:
name: X-Hook-Secret
- compareWithStaticValue:
valueFrom:
envRef:
name: 'XHOOKSECRET_TOKEN_VALUE'
storage:
- type: redis
specs:
host: localhost
port: '6379'
username:
valueFrom:
envRef:
name: 'REDIS_USERNAME'
password:
valueFrom:
envRef:
name: 'REDIS_PASSWORD'
database: 0
key: foo
Currently we can format the stored data with the format feature but it is not possible to format the received payload.
Being able to parse the payload json and then use it to extract only what is needed from the payload would be an amazing feature!
Example based on README
formatting:
templateString: |
{
"config": "{{ toJson .Config }}",
"metadata": {
"specName": "{{ .Spec.Name }}",
"deliveryID": "{{ .Request.Header | getHeader "X-Delivery" | default "unknown" }}"
},
"payload": {{ .Payload }}
}
We have a .Payload
and send it on payload key but we can do some powerful things like following to structurate your payload as we want !
formatting:
templateString: |
{
"action": {{ .Spec.Name | default "unknown" }},
"user_id": {{ parseJSON(.Payload).userID }},
"user_name": "{{ parseJSON(.Payload).user.details.name }}"
}
No response
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.