emitter-io / emitter Goto Github PK
View Code? Open in Web Editor NEWHigh performance, distributed and low latency publish-subscribe platform.
Home Page: https://emitter.io
License: GNU Affero General Public License v3.0
High performance, distributed and low latency publish-subscribe platform.
Home Page: https://emitter.io
License: GNU Affero General Public License v3.0
We'd need to add a simple leaking bucket rate-limiting on a per-contract level. This would help to control the spiky load and refuse incoming publish requests if the rate is exceeded. We should be also able in the contract provider to adjust the rate, so this could be change don the backend)
Is there any Max threshold that I can hold the messages size while doing Publish through emitter broker? If it is re-sizable, then could you please suggest how to increase the size. Currently I am able to publish only 10kb of data in one publish call.
Hello,
I've been struggling with this, since morning. When I try subscribing to a channel, using a channel key, generated from the keygen, it displaying the following in the logs
2018/03/19 15:27:44 [conn] created (8491AD30)
2018/03/19 15:27:45 [conn] created (8591AD30)
2018/03/19 15:27:45 [conn] error during subscribe received (The security key provided is not authorized to perform this operation.)
Can anyone help me out?
Thanks
I was wondering why when I create a channel key for let say a/b
or /a/b
or a/b/
or /a/b/
.
I was not able to subscribe to the channel <channel key>/a/b/
.
I need to create a key for: a
, and then I can subscribe to <channl key>/a/b/
.
Is this behavior intentional ? or is it a bug ? or incomplete feature ?
I think it would be nice to be able to create a key for a multi level channel such as a/b/c/d/
or a/b/*/
for example.
The code seems to only verify the first part of a channel.
Line 68 in ccdad30
Lines 47 to 50 in ccdad30
I have added emitter to https://github.com/mqtt/mqtt.github.io/wiki/server-support but i cant seem to find any documentation what it supports more than clustering & websockets.
Whats missing is
Im not saying you should implement any thing i just wanna know what is supported so i can add it to the table.
I really don't unerstand channel key.
I only know it is allocated according master key and "permission request" , so , I think it is work of "administor " to allocate "channel key" for different clients . is it right ?
then, server can check permission according channel key ?
my question is why not use user name to represent "permssion" control info ?
thank you.
anyway, emitter-io is stable and serious job.
nohup: ignoring input
2017/10/18 20:46:45 [swarm] error during getting node name (invalid peer name format: "emitter1")
2017/10/18 20:46:45 [service] configured logging provider (stderr)
2017/10/18 20:46:45 [service] configured storage provider (inmemory)
2017/10/18 20:46:45 [service] configured metering provider (noop)
2017/10/18 20:46:45 [service] configured contracts provider (single)
2017/10/18 20:46:45 [service] configured external address (115.236.45.194)
2017/10/18 20:46:45 [service] configured node name (56:1b:6b:07:45:5e)
2017/10/18 20:46:45 [service] subscribe ([0 3939663052])
2017/10/18 20:46:45 [service] starting the listener (:8080)
2017/10/18 20:46:45 [service] error during setup of TLS/SSL listener (No certificate or private key configured)
2017/10/18 20:46:45 [service] service started
2017/10/18 20:46:49 [swarm] peer created (56:1b:6b:07:45:5e)
2017/10/18 20:46:49 [swarm] peer created (00:ff:22:29:e9:bc)
2017/10/18 20:46:49 [service] subscribe ([0 3939663052])
2017/10/18 20:46:49 [service] subscribe ([2469567783 2086528646])
2017/10/18 20:46:49 [service] unsubscribe ([2469567783 2086528646])
2017/10/18 20:46:49 [service] subscribe ([0 3939663052])
2017/10/18 20:46:49 [service] subscribe ([2469567783 2086528646])
2017/10/18 20:46:49 [swarm] peer created (56:00:8b:1e:67:ec)
2017/10/18 20:46:49 [service] subscribe ([0 3939663052])
2017/10/18 20:46:49 [service] unsubscribe ([2469567783 2086528646])
2017/10/18 20:46:49 [service] subscribe ([2469567783 2086528646])
2017/10/18 20:46:49 [service] unsubscribe ([2469567783 2086528646])
2017/10/18 20:46:49 [service] subscribe ([2469567783 2086528646])
2017/10/18 20:46:50 [conn] created (B6FE8A2A)
2017/10/18 20:46:50 [service] subscribe ([2469567783 2086528646])
2017/10/18 20:47:18 [conn] closed (B6FE8A2A)
2017/10/18 20:47:18 [service] unsubscribe ([2469567783 2086528646])
2017/10/18 20:47:18 [conn] created (B7FE8A2A)
2017/10/18 20:47:18 [service] subscribe ([2469567783 2086528646])
2017/10/18 20:47:20 [swarm] peer removed (56:00:8b:1e:67:ec)
2017/10/18 20:47:20 [service] unsubscribe ([0 3939663052])
2017/10/18 20:47:20 [swarm] peer removed (56:1b:6b:07:45:5e)
2017/10/18 20:47:20 [service] unsubscribe ([0 3939663052])
2017/10/18 20:47:20 [service] unsubscribe ([2469567783 2086528646])
2017/10/18 20:47:48 [swarm] peer created (56:1b:6b:07:45:5e)
2017/10/18 20:47:48 [service] subscribe ([2469567783 2086528646])
2017/10/18 20:48:20 [swarm] peer removed (56:1b:6b:07:45:5e)
2017/10/18 20:48:20 [service] unsubscribe ([2469567783 2086528646])
2017/10/18 20:50:45 [swarm] peer removed (00:ff:22:29:e9:bc)
2017/10/18 20:50:45 [service] unsubscribe ([0 3939663052])
2017/10/19 08:31:35 [conn] created (B8FE8A2A)
2017/10/19 08:31:35 [swarm] peer created (00:ff:22:29:e9:bc)
2017/10/19 08:31:35 [service] subscribe ([2469567783 2086528646])
2017/10/19 08:31:35 [swarm] peer created (56:1b:6b:07:45:5e)
2017/10/19 08:31:47 [service] subscribe ([2469567783 2086528646])
2017/10/19 08:32:05 [swarm] peer removed (56:1b:6b:07:45:5e)
2017/10/19 08:32:05 [service] unsubscribe ([2469567783 2086528646])
2017/10/19 08:34:29 [conn] closed (B8FE8A2A)
2017/10/19 08:34:29 [service] unsubscribe ([2469567783 2086528646])
2017/10/19 08:34:47 [swarm] peer created (56:1b:6b:07:45:5e)
2017/10/19 08:35:20 [swarm] peer removed (56:1b:6b:07:45:5e)
2017/10/19 09:03:46 [conn] created (B9FE8A2A)
2017/10/19 09:05:54 [conn] closed (B9FE8A2A)
2017/10/19 09:06:21 [service] subscribe ([2469567783 2086528646])
2017/10/19 09:06:35 [conn] created (BAFE8A2A)
2017/10/19 09:07:09 [conn] closed (BAFE8A2A)
2017/10/19 09:07:09 [service] unsubscribe ([2469567783 2086528646])
2017/10/19 09:09:40 [service] subscribe ([2469567783 2086528646])
2017/10/19 09:09:51 [conn] created (BBFE8A2A)
2017/10/19 09:09:51 [service] subscribe ([2469567783 2086528646])
2017/10/19 09:09:51 [swarm] peer created (56:1b:6b:07:45:5e)
2017/10/19 09:10:17 [service] subscribe ([2469567783 2086528646])
2017/10/19 09:10:20 [conn] closed (BBFE8A2A)
2017/10/19 09:10:20 [service] unsubscribe ([2469567783 2086528646])
2017/10/19 09:10:20 [service] unsubscribe ([2469567783 2086528646])
2017/10/19 09:10:25 [swarm] peer removed (56:1b:6b:07:45:5e)
2017/10/19 09:10:25 [service] unsubscribe ([2469567783 2086528646])
2017/10/19 09:10:31 [service] subscribe ([2469567783 2086528646])
2017/10/19 09:10:38 [conn] created (BCFE8A2A)
2017/10/19 09:10:38 [service] subscribe ([2469567783 2086528646])
2017/10/19 09:10:38 [swarm] peer created (56:1b:6b:07:45:5e)
2017/10/19 09:10:47 [service] subscribe ([2469567783 2086528646])
2017/10/19 09:11:08 [conn] closed (BCFE8A2A)
2017/10/19 09:11:08 [service] unsubscribe ([2469567783 2086528646])
2017/10/19 09:11:10 [swarm] peer removed (56:1b:6b:07:45:5e)
2017/10/19 09:11:10 [service] unsubscribe ([2469567783 2086528646])
2017/10/19 09:11:16 [conn] created (BDFE8A2A)
2017/10/19 09:11:16 [service] subscribe ([2469567783 2086528646])
2017/10/19 09:11:16 [swarm] peer created (56:1b:6b:07:45:5e)
2017/10/19 09:11:17 [service] subscribe ([2469567783 2086528646])
2017/10/19 09:11:50 [swarm] peer removed (56:1b:6b:07:45:5e)
2017/10/19 09:11:50 [service] unsubscribe ([2469567783 2086528646])
2017/10/19 09:23:38 [swarm] peer created (56:00:8b:1e:67:ec)
2017/10/19 09:23:38 [service] subscribe ([0 3939663052])
2017/10/19 09:23:39 [service] subscribe ([2469567783 2086528646])
2017/10/19 09:25:18 [service] unsubscribe ([2469567783 2086528646])
2017/10/19 09:25:56 [conn] closed (B7FE8A2A)
2017/10/19 09:25:56 [service] unsubscribe ([2469567783 2086528646])
2017/10/19 09:26:08 [swarm] peer created (56:1b:6b:07:45:5e)
2017/10/19 09:26:40 [swarm] peer removed (56:1b:6b:07:45:5e)
2017/10/19 09:27:10 [service] subscribe ([2469567783 2086528646 4128252332])
2017/10/19 09:28:41 [conn] closed (BDFE8A2A)
2017/10/19 09:28:41 [service] unsubscribe ([2469567783 2086528646])
2017/10/19 09:28:50 [conn] created (BEFE8A2A)
2017/10/19 09:28:50 [service] subscribe ([2469567783 2086528646])
2017/10/19 09:28:50 [swarm] peer created (56:1b:6b:07:45:5e)
2017/10/19 09:29:08 [service] subscribe ([2469567783 2086528646])
2017/10/19 09:29:11 [service] unsubscribe ([2469567783 2086528646 4128252332])
2017/10/19 09:29:20 [swarm] peer removed (56:1b:6b:07:45:5e)
2017/10/19 09:29:20 [service] unsubscribe ([2469567783 2086528646])
runtime: goroutine stack exceeds 1000000000-byte limit
fatal error: stack overflow
runtime stack:
runtime.throw(0x8bcf44, 0xe)
D:/Program Files (x86)/go/src/runtime/panic.go:605 +0x95
runtime.newstack(0x0)
D:/Program Files (x86)/go/src/runtime/stack.go:1050 +0x6e1
runtime.morestack()
D:/Program Files (x86)/go/src/runtime/asm_amd64.s:415 +0x86
goroutine 45820 [running]:
runtime.heapBitsSetType(0xc43d93fef0, 0x30, 0x30, 0x894ea0)
D:/Program Files (x86)/go/src/runtime/mbitmap.go:855 +0x625 fp=0xc4461e0338 sp=0xc4461e0330 pc=0x413a65
runtime.mallocgc(0x30, 0x894ea0, 0x7f4d28ef9e01, 0xc4461e04a0)
D:/Program Files (x86)/go/src/runtime/malloc.go:741 +0x546 fp=0xc4461e03e0 sp=0xc4461e0338 pc=0x410b86
runtime.newobject(0x894ea0, 0x8)
D:/Program Files (x86)/go/src/runtime/malloc.go:840 +0x38 fp=0xc4461e0410 sp=0xc4461e03e0 pc=0x411078
runtime.makemap(0x8311c0, 0x1, 0x0, 0x0, 0xc4461e04f0)
D:/Program Files (x86)/go/src/runtime/hashmap.go:321 +0x2ee fp=0xc4461e0470 sp=0xc4461e0410 pc=0x4080ce
github.com/emitter-io/emitter/broker/subscription.toCompressed(0xc43d8fb8e0, 0x60000000000)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:470 +0x6d fp=0xc4461e0528 sp=0xc4461e0470 pc=0x6bbd9d
github.com/emitter-io/emitter/broker/subscription.clean(0xc42000ce28)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:400 +0x45 fp=0xc4461e0560 sp=0xc4461e0528 pc=0x6bb8d5
github.com/emitter-io/emitter/broker/subscription.(*Trie).ilookup(0xc42000c618, 0xc4202f2060, 0xc42000ce28, 0xc4201acd88, 0x1, 0x1, 0xc4461e0808, 0x2)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:351 +0x217 fp=0xc4461e05e0 sp=0xc4461e0560 pc=0x6bb677
github.com/emitter-io/emitter/broker/subscription.(*Trie).bLookup(0xc42000c618, 0xc42000ce28, 0xc42000c608, 0xc43d931140, 0xc4201e00a0, 0xc4201acd84, 0x2, 0x2, 0xc4461e0808, 0x1)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:378 +0x17d fp=0xc4461e0650 sp=0xc4461e05e0 pc=0x6bb83d
github.com/emitter-io/emitter/broker/subscription.(*Trie).ilookup(0xc42000c618, 0xc42000ce28, 0xc42000c608, 0xc4201acd84, 0x2, 0x2, 0xc4461e0808, 0x0)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:338 +0x1d8 fp=0xc4461e06d0 sp=0xc4461e0650 pc=0x6bb638
github.com/emitter-io/emitter/broker/subscription.(*Trie).bLookup(0xc42000c618, 0xc42000c608, 0x0, 0xc4201d60a0, 0xc420181840, 0xc4201acd80, 0x3, 0x3, 0xc4461e0808, 0x4433f7)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:378 +0x17d fp=0xc4461e0740 sp=0xc4461e06d0 pc=0x6bb83d
github.com/emitter-io/emitter/broker/subscription.(*Trie).ilookup(0xc42000c618, 0xc42000c608, 0x0, 0xc4201acd80, 0x3, 0x3, 0xc4461e0808, 0x443300)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:338 +0x1d8 fp=0xc4461e07c0 sp=0xc4461e0740 pc=0x6bb638
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e0878)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:318 +0xbd fp=0xc4461e0830 sp=0xc4461e07c0 pc=0x6bb3ad
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e08e8)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e08a0 sp=0xc4461e0830 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e0958)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e0910 sp=0xc4461e08a0 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e09c8)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e0980 sp=0xc4461e0910 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e0a38)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e09f0 sp=0xc4461e0980 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e0aa8)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e0a60 sp=0xc4461e09f0 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e0b18)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e0ad0 sp=0xc4461e0a60 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e0b88)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e0b40 sp=0xc4461e0ad0 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e0bf8)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e0bb0 sp=0xc4461e0b40 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e0c68)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e0c20 sp=0xc4461e0bb0 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e0cd8)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e0c90 sp=0xc4461e0c20 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e0d48)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e0d00 sp=0xc4461e0c90 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e0db8)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e0d70 sp=0xc4461e0d00 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e0e28)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e0de0 sp=0xc4461e0d70 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e0e98)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e0e50 sp=0xc4461e0de0 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e0f08)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e0ec0 sp=0xc4461e0e50 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e0f78)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e0f30 sp=0xc4461e0ec0 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e0fe8)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e0fa0 sp=0xc4461e0f30 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e1058)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e1010 sp=0xc4461e0fa0 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e10c8)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e1080 sp=0xc4461e1010 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e1138)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e10f0 sp=0xc4461e1080 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e11a8)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e1160 sp=0xc4461e10f0 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e1218)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e11d0 sp=0xc4461e1160 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e1288)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e1240 sp=0xc4461e11d0 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e12f8)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e12b0 sp=0xc4461e1240 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e1368)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e1320 sp=0xc4461e12b0 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e13d8)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e1390 sp=0xc4461e1320 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e1448)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e1400 sp=0xc4461e1390 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e14b8)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e1470 sp=0xc4461e1400 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e1528)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e14e0 sp=0xc4461e1470 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e1598)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e1550 sp=0xc4461e14e0 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e1608)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e15c0 sp=0xc4461e1550 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e1678)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e1630 sp=0xc4461e15c0 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e16e8)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e16a0 sp=0xc4461e1630 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e1758)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e1710 sp=0xc4461e16a0 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e17c8)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e1780 sp=0xc4461e1710 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e1838)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e17f0 sp=0xc4461e1780 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e18a8)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e1860 sp=0xc4461e17f0 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e1918)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e18d0 sp=0xc4461e1860 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e1988)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e1940 sp=0xc4461e18d0 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e19f8)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e19b0 sp=0xc4461e1940 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e1a68)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e1a20 sp=0xc4461e19b0 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e1ad8)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e1a90 sp=0xc4461e1a20 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e1b48)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e1b00 sp=0xc4461e1a90 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e1bb8)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e1b70 sp=0xc4461e1b00 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e1c28)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e1be0 sp=0xc4461e1b70 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e1c98)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e1c50 sp=0xc4461e1be0 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e1d08)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e1cc0 sp=0xc4461e1c50 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e1d78)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e1d30 sp=0xc4461e1cc0 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e1de8)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e1da0 sp=0xc4461e1d30 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e1e58)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e1e10 sp=0xc4461e1da0 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e1ec8)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e1e80 sp=0xc4461e1e10 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e1f38)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e1ef0 sp=0xc4461e1e80 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e1fa8)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e1f60 sp=0xc4461e1ef0 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e2018)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e1fd0 sp=0xc4461e1f60 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e2088)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e2040 sp=0xc4461e1fd0 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e20f8)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e20b0 sp=0xc4461e2040 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e2168)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e2120 sp=0xc4461e20b0 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e21d8)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e2190 sp=0xc4461e2120 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e2248)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e2200 sp=0xc4461e2190 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e22b8)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e2270 sp=0xc4461e2200 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e2328)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e22e0 sp=0xc4461e2270 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e2398)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e2350 sp=0xc4461e22e0 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e2408)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e23c0 sp=0xc4461e2350 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e2478)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e2430 sp=0xc4461e23c0 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e24e8)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e24a0 sp=0xc4461e2430 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e2558)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e2510 sp=0xc4461e24a0 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e25c8)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e2580 sp=0xc4461e2510 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e2638)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e25f0 sp=0xc4461e2580 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e26a8)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e2660 sp=0xc4461e25f0 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e2718)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e26d0 sp=0xc4461e2660 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e2788)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e2740 sp=0xc4461e26d0 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e27f8)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e27b0 sp=0xc4461e2740 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e2868)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e2820 sp=0xc4461e27b0 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e28d8)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e2890 sp=0xc4461e2820 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e2948)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e2900 sp=0xc4461e2890 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e29b8)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e2970 sp=0xc4461e2900 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e2a28)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e29e0 sp=0xc4461e2970 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e2a98)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e2a50 sp=0xc4461e29e0 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e2b08)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e2ac0 sp=0xc4461e2a50 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e2b78)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e2b30 sp=0xc4461e2ac0 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e2be8)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e2ba0 sp=0xc4461e2b30 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e2c58)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e2c10 sp=0xc4461e2ba0 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e2cc8)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e2c80 sp=0xc4461e2c10 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e2d38)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e2cf0 sp=0xc4461e2c80 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e2da8)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e2d60 sp=0xc4461e2cf0 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e2e18)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e2dd0 sp=0xc4461e2d60 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e2e88)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e2e40 sp=0xc4461e2dd0 pc=0x6bb419
github.com/emitter-io/emitter/broker/subscription.(*Trie).Lookup(0xc42000c618, 0xc4201acd80, 0x3, 0x3, 0x3, 0x3, 0xc4461e2ef8)
D:/gopath/src/github.com/emitter-io/emitter/broker/subscription/subtrie.go:322 +0x129 fp=0xc4461e2eb0 sp=0xc4461e2e40 pc=0x6bb419
...additional frames elided...
created by github.com/emitter-io/emitter/broker.(*Service).onAcceptConn
D:/gopath/src/github.com/emitter-io/emitter/broker/service.go:260 +0x61
goroutine 1 [select (no cases), 762 minutes]:
github.com/emitter-io/emitter/broker.(*Service).Listen(0xc4200672c0, 0x0, 0x0)
D:/gopath/src/github.com/emitter-io/emitter/broker/service.go:190 +0x4bb
main.main()
D:/gopath/src/github.com/emitter-io/emitter/main.go:54 +0x295
goroutine 27 [chan receive, 762 minutes]:
github.com/emitter-io/emitter/network/listener.muxListener.Accept(...)
D:/gopath/src/github.com/emitter-io/emitter/network/listener/listener.go:242
github.com/emitter-io/emitter/network/listener.(*muxListener).Accept(0xc4200bfc40, 0xaf5f70, 0xc4200bfc40, 0x0, 0x0)
:1 +0x65
github.com/emitter-io/emitter/vendor/github.com/kelindar/tcp.(*Server).Serve(0xc4200bf560, 0xaf5f40, 0xc4200bfc40, 0x0, 0x0)
D:/gopath/src/github.com/emitter-io/emitter/vendor/github.com/kelindar/tcp/server.go:44 +0x7c
github.com/emitter-io/emitter/vendor/github.com/kelindar/tcp.(*Server).Serve-fm(0xaf5f40, 0xc4200bfc40, 0xaf5f40, 0xc4200bfc40)
D:/gopath/src/github.com/emitter-io/emitter/broker/service.go:203 +0x3e
created by github.com/emitter-io/emitter/network/listener.(*Listener).ServeAsync
D:/gopath/src/github.com/emitter-io/emitter/network/listener/listener.go:125 +0x99
goroutine 17 [select]:
github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh.(*localPeer).actorLoop(0xc420135080, 0xc42004ad80)
D:/gopath/src/github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh/local_peer.go:141 +0xf5
created by github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh.newLocalPeer
D:/gopath/src/github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh/local_peer.go:31 +0x125
goroutine 16 [syscall, 762 minutes]:
os/signal.signal_recv(0x0)
D:/Program Files (x86)/go/src/runtime/sigqueue.go:131 +0xa6
os/signal.loop()
D:/Program Files (x86)/go/src/os/signal/signal_unix.go:22 +0x22
created by os/signal.init.0
D:/Program Files (x86)/go/src/os/signal/signal_unix.go:28 +0x41
goroutine 18 [select]:
github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh.(*routes).run(0xc4200d5000, 0xc42004af00, 0xc420054900, 0xc420054960)
D:/gopath/src/github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh/routes.go:177 +0x11f
created by github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh.newRoutes
D:/gopath/src/github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh/routes.go:44 +0x3ff
goroutine 26 [chan receive]:
github.com/emitter-io/emitter/network/listener.muxListener.Accept(...)
D:/gopath/src/github.com/emitter-io/emitter/network/listener/listener.go:242
github.com/emitter-io/emitter/network/listener.(*muxListener).Accept(0xc4200bfc20, 0x8d62f0, 0xc420066aa0, 0xaf6780, 0xc420135e90)
:1 +0x65
net/http.(*Server).Serve(0xc42010b5f0, 0xaf5f40, 0xc4200bfc20, 0x0, 0x0)
D:/Program Files (x86)/go/src/net/http/server.go:2695 +0x1b2
net/http.(*Server).Serve-fm(0xaf5f40, 0xc4200bfc20, 0xaf5f40, 0xc4200bfc20)
D:/gopath/src/github.com/emitter-io/emitter/broker/service.go:202 +0x3e
created by github.com/emitter-io/emitter/network/listener.(*Listener).ServeAsync
D:/gopath/src/github.com/emitter-io/emitter/network/listener/listener.go:125 +0x99
goroutine 19 [select, 5 minutes]:
github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh.(*connectionMaker).queryLoop(0xc4200f8700, 0xc42004af60)
D:/gopath/src/github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh/connection_maker.go:226 +0x122
created by github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh.newConnectionMaker
D:/gopath/src/github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh/connection_maker.go:75 +0x1f9
goroutine 20 [select]:
github.com/emitter-io/emitter/vendor/github.com/karlseguin/ccache.(*Cache).worker(0xc42005cdc0)
D:/gopath/src/github.com/emitter-io/emitter/vendor/github.com/karlseguin/ccache/cache.go:159 +0x149
created by github.com/emitter-io/emitter/vendor/github.com/karlseguin/ccache.(*Cache).restart
D:/gopath/src/github.com/emitter-io/emitter/vendor/github.com/karlseguin/ccache/cache.go:128 +0xec
goroutine 21 [select, 762 minutes, locked to thread]:
runtime.gopark(0x8d6910, 0x0, 0x8b859b, 0x6, 0x18, 0x1)
D:/Program Files (x86)/go/src/runtime/proc.go:277 +0x12c
runtime.selectgo(0xc420045f50, 0xc420054a80)
D:/Program Files (x86)/go/src/runtime/select.go:395 +0x1138
runtime.ensureSigM.func1()
D:/Program Files (x86)/go/src/runtime/signal_unix.go:511 +0x220
runtime.goexit()
D:/Program Files (x86)/go/src/runtime/asm_amd64.s:2337 +0x1
goroutine 22 [chan receive, 762 minutes]:
github.com/emitter-io/emitter/broker.(*Service).hookSignals.func1(0xc42004b080, 0xc4200672c0)
D:/gopath/src/github.com/emitter-io/emitter/broker/service.go:376 +0x81
created by github.com/emitter-io/emitter/broker.(*Service).hookSignals
D:/gopath/src/github.com/emitter-io/emitter/broker/service.go:375 +0xe2
goroutine 23 [select]:
github.com/emitter-io/emitter/broker.(*Service).notifyPresenceChange.func1(0xc4200672c0)
D:/gopath/src/github.com/emitter-io/emitter/broker/service.go:217 +0x14c
created by github.com/emitter-io/emitter/broker.(*Service).notifyPresenceChange
D:/gopath/src/github.com/emitter-io/emitter/broker/service.go:214 +0x3f
goroutine 24 [select]:
github.com/emitter-io/emitter/utils.Repeat.func1(0xc420054840, 0xc42013e300, 0xc4201425d0)
D:/gopath/src/github.com/emitter-io/emitter/utils/timer.go:12 +0xed
created by github.com/emitter-io/emitter/utils.Repeat
D:/gopath/src/github.com/emitter-io/emitter/utils/timer.go:10 +0x66
goroutine 25 [IO wait, 6 minutes]:
internal/poll.runtime_pollWait(0x7f4d2a07df70, 0x72, 0xffffffffffffffff)
D:/Program Files (x86)/go/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc4200d5198, 0x72, 0xc420041d00, 0x0, 0x0)
D:/Program Files (x86)/go/src/internal/poll/fd_poll_runtime.go:85 +0xae
internal/poll.(*pollDesc).waitRead(0xc4200d5198, 0xffffffffffffff00, 0x0, 0x0)
D:/Program Files (x86)/go/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Accept(0xc4200d5180, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
D:/Program Files (x86)/go/src/internal/poll/fd_unix.go:334 +0x1e2
net.(*netFD).accept(0xc4200d5180, 0x75e686, 0x17d78400, 0xed179f590)
D:/Program Files (x86)/go/src/net/fd_unix.go:238 +0x42
net.(*TCPListener).accept(0xc42000c648, 0xed179f590, 0xb32080, 0x11e1a300)
D:/Program Files (x86)/go/src/net/tcpsock_posix.go:136 +0x2e
net.(*TCPListener).AcceptTCP(0xc42000c648, 0xc42000dd98, 0x0, 0x0)
D:/Program Files (x86)/go/src/net/tcpsock.go:234 +0x49
github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh.(*Router).listenTCP.func1(0xc42000c648, 0xc420148000)
D:/gopath/src/github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh/router.go:113 +0x59
created by github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh.(*Router).listenTCP
D:/gopath/src/github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh/router.go:110 +0x15e
goroutine 28 [IO wait]:
internal/poll.runtime_pollWait(0x7f4d2a07deb0, 0x72, 0xffffffffffffffff)
D:/Program Files (x86)/go/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc4200d5218, 0x72, 0xc42015e500, 0x0, 0x0)
D:/Program Files (x86)/go/src/internal/poll/fd_poll_runtime.go:85 +0xae
internal/poll.(*pollDesc).waitRead(0xc4200d5218, 0xffffffffffffff00, 0x0, 0x0)
D:/Program Files (x86)/go/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Accept(0xc4200d5200, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0)
D:/Program Files (x86)/go/src/internal/poll/fd_unix.go:334 +0x1e2
net.(*netFD).accept(0xc4200d5200, 0xc4202f2538, 0x0, 0x0)
D:/Program Files (x86)/go/src/net/fd_unix.go:238 +0x42
net.(*TCPListener).accept(0xc42000c668, 0x7a151a, 0x458f10, 0xc42015e760)
D:/Program Files (x86)/go/src/net/tcpsock_posix.go:136 +0x2e
net.(*TCPListener).Accept(0xc42000c668, 0x8d5d60, 0xc42005ce10, 0xaf9360, 0xc4202f2538)
D:/Program Files (x86)/go/src/net/tcpsock.go:247 +0x49
github.com/emitter-io/emitter/network/listener.(*Listener).Serve(0xc42005ce10, 0x0, 0x0)
D:/gopath/src/github.com/emitter-io/emitter/network/listener/listener.go:162 +0x95
created by github.com/emitter-io/emitter/broker.(*Service).listen
D:/gopath/src/github.com/emitter-io/emitter/broker/service.go:204 +0x20e
goroutine 29 [select]:
github.com/emitter-io/emitter/utils.Repeat.func1(0xc420054840, 0xc42013e380, 0xc420142760)
D:/gopath/src/github.com/emitter-io/emitter/utils/timer.go:12 +0xed
created by github.com/emitter-io/emitter/utils.Repeat
D:/gopath/src/github.com/emitter-io/emitter/utils/timer.go:10 +0x66
goroutine 42339 [select]:
github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh.(*gossipSender).run(0xc420244c80, 0xc4200541e0, 0xc420054540, 0xc4200545a0)
D:/gopath/src/github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh/gossip.go:101 +0x11b
created by github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh.newGossipSender
D:/gopath/src/github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh/gossip.go:94 +0x172
goroutine 42340 [IO wait]:
internal/poll.runtime_pollWait(0x7f4d2a07ddf0, 0x72, 0x0)
D:/Program Files (x86)/go/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc4200d4018, 0x72, 0xffffffffffffff00, 0xaf26c0, 0xaee398)
D:/Program Files (x86)/go/src/internal/poll/fd_poll_runtime.go:85 +0xae
internal/poll.(*pollDesc).waitRead(0xc4200d4018, 0xc420450700, 0x4, 0x4)
D:/Program Files (x86)/go/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc4200d4000, 0xc420450768, 0x4, 0x4, 0x0, 0x0, 0x0)
D:/Program Files (x86)/go/src/internal/poll/fd_unix.go:125 +0x18a
net.(*netFD).Read(0xc4200d4000, 0xc420450768, 0x4, 0x4, 0xc42002c380, 0x456ad0, 0xc42002c380)
D:/Program Files (x86)/go/src/net/fd_unix.go:202 +0x52
net.(*conn).Read(0xc42000d618, 0xc420450768, 0x4, 0x4, 0x0, 0x0, 0x0)
D:/Program Files (x86)/go/src/net/net.go:176 +0x6d
io.ReadAtLeast(0x7f4d2a082698, 0xc42000d618, 0xc420450768, 0x4, 0x4, 0x4, 0x80c4e0, 0xdf8475501, 0xc420450768)
D:/Program Files (x86)/go/src/io/io.go:309 +0x86
io.ReadFull(0x7f4d2a082698, 0xc42000d618, 0xc420450768, 0x4, 0x4, 0x4, 0xbe721dea7a565e6e, 0x29aabc61ea97)
D:/Program Files (x86)/go/src/io/io.go:327 +0x58
github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh.(*lengthPrefixTCPReceiver).Receive(0xc42000ea90, 0xc429f4ff38, 0x3c, 0xc429f4ff70, 0x748c38, 0xc42000d618)
D:/gopath/src/github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh/protocol_crypto.go:168 +0x96
github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh.(*encryptedTCPReceiver).Receive(0xc4201e1a00, 0x0, 0x0, 0x5d3, 0x5d3, 0x0)
D:/gopath/src/github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh/protocol_crypto.go:193 +0x37
github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh.(*LocalConnection).receiveTCP(0xc4203c4210, 0xaf0400, 0xc4201e1a00)
D:/gopath/src/github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh/connection.go:434 +0x56
created by github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh.(*LocalConnection).run
D:/gopath/src/github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh/connection.go:259 +0x6fc
goroutine 42338 [select]:
github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh.(*gossipSender).run(0xc420244c30, 0xc4200541e0, 0xc420054480, 0xc4200544e0)
D:/gopath/src/github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh/gossip.go:101 +0x11b
created by github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh.newGossipSender
D:/gopath/src/github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh/gossip.go:94 +0x172
goroutine 42347 [select]:
github.com/emitter-io/emitter/utils.Repeat.func1(0xc420054c60, 0xc4201d4180, 0xc420143020)
D:/gopath/src/github.com/emitter-io/emitter/utils/timer.go:12 +0xed
created by github.com/emitter-io/emitter/utils.Repeat
D:/gopath/src/github.com/emitter-io/emitter/utils/timer.go:10 +0x66
goroutine 42334 [select]:
github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh.(*LocalConnection).actorLoop(0xc4203c4210, 0xc4203ab0e0, 0xc4203ab140, 0xaf0400, 0xc4201e1a00)
D:/gopath/src/github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh/connection.go:366 +0x35e
github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh.(*LocalConnection).run(0xc4203c4210, 0xc4203ab0e0, 0xc4203ab140, 0xc4200541e0, 0x1)
D:/gopath/src/github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh/connection.go:268 +0x727
created by github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh.startLocalConnection
D:/gopath/src/github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh/connection.go:102 +0x2ff
goroutine 45496 [select]:
github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh.(*LocalConnection).actorLoop(0xc4202c9340, 0xc4202c7f80, 0xc4204d0000, 0xaf0400, 0xc420373400)
D:/gopath/src/github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh/connection.go:366 +0x35e
github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh.(*LocalConnection).run(0xc4202c9340, 0xc4202c7f80, 0xc4204d0000, 0xc420054660, 0x1)
D:/gopath/src/github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh/connection.go:268 +0x727
created by github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh.startLocalConnection
D:/gopath/src/github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh/connection.go:102 +0x2ff
goroutine 45500 [select, 1 minutes]:
github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh.(*gossipSender).run(0xc4201a9590, 0xc420054660, 0xc420054c00, 0xc420054cc0)
D:/gopath/src/github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh/gossip.go:101 +0x11b
created by github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh.newGossipSender
D:/gopath/src/github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh/gossip.go:94 +0x172
goroutine 45501 [select]:
github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh.(*gossipSender).run(0xc4201a95e0, 0xc420054660, 0xc420054d20, 0xc420054d80)
D:/gopath/src/github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh/gossip.go:101 +0x11b
created by github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh.newGossipSender
D:/gopath/src/github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh/gossip.go:94 +0x172
goroutine 45502 [IO wait]:
internal/poll.runtime_pollWait(0x7f4d2a07dbb0, 0x72, 0x0)
D:/Program Files (x86)/go/src/runtime/netpoll.go:173 +0x57
internal/poll.(*pollDesc).wait(0xc4200d4598, 0x72, 0xffffffffffffff00, 0xaf26c0, 0xaee398)
D:/Program Files (x86)/go/src/internal/poll/fd_poll_runtime.go:85 +0xae
internal/poll.(*pollDesc).waitRead(0xc4200d4598, 0xc4201ac500, 0x4, 0x4)
D:/Program Files (x86)/go/src/internal/poll/fd_poll_runtime.go:90 +0x3d
internal/poll.(*FD).Read(0xc4200d4580, 0xc4201ac52c, 0x4, 0x4, 0x0, 0x0, 0x0)
D:/Program Files (x86)/go/src/internal/poll/fd_unix.go:125 +0x18a
net.(*netFD).Read(0xc4200d4580, 0xc4201ac52c, 0x4, 0x4, 0xb, 0x1837cce, 0xc4200d5800)
D:/Program Files (x86)/go/src/net/fd_unix.go:202 +0x52
net.(*conn).Read(0xc42000dd98, 0xc4201ac52c, 0x4, 0x4, 0x0, 0x0, 0x0)
D:/Program Files (x86)/go/src/net/net.go:176 +0x6d
io.ReadAtLeast(0x7f4d2a082698, 0xc42000dd98, 0xc4201ac52c, 0x4, 0x4, 0x4, 0x80c4e0, 0xdf8471d01, 0xc4201ac52c)
D:/Program Files (x86)/go/src/io/io.go:309 +0x86
io.ReadFull(0x7f4d2a082698, 0xc42000dd98, 0xc4201ac52c, 0x4, 0x4, 0x4, 0xbe721de8f16cdc21, 0x29a94dd7ac5a)
D:/Program Files (x86)/go/src/io/io.go:327 +0x58
github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh.(*lengthPrefixTCPReceiver).Receive(0xc420143b80, 0xc4204d9f38, 0x3c, 0xc4204d9f70, 0x748c38, 0xc42000dd98)
D:/gopath/src/github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh/protocol_crypto.go:168 +0x96
github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh.(*encryptedTCPReceiver).Receive(0xc420373400, 0x0, 0x0, 0x53, 0x53, 0x0)
D:/gopath/src/github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh/protocol_crypto.go:193 +0x37
github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh.(*LocalConnection).receiveTCP(0xc4202c9340, 0xaf0400, 0xc420373400)
D:/gopath/src/github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh/connection.go:434 +0x56
created by github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh.(*LocalConnection).run
D:/gopath/src/github.com/emitter-io/emitter/vendor/github.com/weaveworks/mesh/connection.go:259 +0x6fc
goroutine 45503 [runnable]:
github.com/emitter-io/emitter/utils.Repeat.func1(0xc420054300, 0xc42013ec00, 0xc4201d6640)
D:/gopath/src/github.com/emitter-io/emitter/utils/timer.go:12 +0xed
created by github.com/emitter-io/emitter/utils.Repeat
D:/gopath/src/github.com/emitter-io/emitter/utils/timer.go:10 +0x66
Hi,
How should we set up the Services.Storage? seems it's using S3 but missing some guidance. Thanks.
Hi, I'm trying to install emitter-io on: openSUSE Leap 42.2, Docker version 1.12.6
$ docker run -d --name emitter -p 127.0.0.1:8888:8080 emitter/server
But have an error:
Warning: Configuration file 'emitter.conf' does not exist, using default configuration.
Error: No license was found, please provide a valid license key through the configuration file, an EMITTER_LICENSE environment variable or a valid vault key 'secrets/emitter/license'.
Warning: New license: *****
Warning: New secret key: *****
Warning: New license and secret key were generated, please store them in a secure location and restart the server with the license provided.
Unhandled Exception: System.UnauthorizedAccessException: Access to the path '/sys/class/net/lo/operstate' is denied. ---> System.IO.IOException: Permission denied
--- End of inner exception stack trace ---
at System.IO.UnixFileStream.CheckFileCall(Int64 result, Boolean ignoreNotSupported)
at System.IO.UnixFileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent)
at System.IO.UnixFileSystem.Open(String fullPath, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options, FileStream parent)
at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, FileOptions options)
at System.IO.File.InternalReadAllText(String path, Encoding encoding)
at System.IO.File.ReadAllText(String path)
at System.Net.NetworkInformation.LinuxNetworkInterface.GetOperationalStatus(String name)
at System.Net.NetworkInformation.LinuxNetworkInterface..ctor(String name)
at System.Net.NetworkInformation.LinuxNetworkInterface.GetOrCreate(Dictionary`2 interfaces, String name)
at System.Net.NetworkInformation.LinuxNetworkInterface.<>c__DisplayClass5_0.<GetLinuxNetworkInterfaces>b__2(String name, LinkLayerAddressInfo* llAddr)
at Interop.Sys.EnumerateInterfaceAddresses(IPv4AddressDiscoveredCallback ipv4Found, IPv6AddressDiscoveredCallback ipv6Found, LinkLayerAddressDiscoveredCallback linkLayerFound)
at System.Net.NetworkInformation.LinuxNetworkInterface.GetLinuxNetworkInterfaces()
at Emitter.Network.ServiceAddress.FromBinding(IBinding binding)
/deploy.sh: line 2: 7 Aborted (core dumped) dotnet Emitter.Server.dll
```
I saw some code in broker/service.go
280 // Occurs when a new HTTP request is received.
281 func (s *Service) onHTTPKeyGen(w http.ResponseWriter, r *http.Request) {
282 if resp, err := http.Get("http://s3-eu-west-1.amazonaws.com/cdn.emitter.io/web/keygen.html"); err == nil {
283 if content, err := ioutil.ReadAll(resp.Body); err == nil {
284 w.Write(content)
285 return
286 }
287 }
288 }
in china, aws cloud is not stable and often be blocked by China goverment .
so, Where I can find the source code of "keyGen" ?
or, you won't open source the "keyGen" ?
Hi all:
I have two questions about cluster here:
A Cluster has two nodes: AใB
1. If User X connected to A, Y connected to B, how does X and Y communicate?
2.If node C join the cluster, how does you migrate the persistent data for the hash
It would be good to have a section in the documentation that states which QoS levels emitter supports.
Here's what I was thinking, we are going to generate a unique, 64-bit ID for each incoming message on the broker itself. The current proposal is to keep the ID to 64-bit thus allowing many future optimisations.
We would start this number with a timestamp in second, so a partition (location) can be easily inferred from the ID itself without the need to store any additional data. The node ID would ideally be negociated between brokers or can be a generated by using a hash function over an existing node ID, but we will need to check for collisions on this.
Bit Range | Bit Size | Description | Variations |
---|---|---|---|
0-29 | 30 | Unix timestamp in seconds after 2017 | 1,073,741,823 |
30-43 | 14 | Node ID | 16,383 |
44-63 | 20 | Atomic Counter | 1,048,575 |
The format above could allow for:
Hi, I put together this Publisher-Subscriber Matrix to better understand how subscriptions and filtering work in Emitter.
First column is channel to publish to
First row is channel that subscriber is listening to
โ๏ธ Subscriber will receive the message
โ Subscriber won't receive the message
Publish to โฌ๏ธ / Subscriber โก๏ธ | C | C/A | C/+ | C/A/B | C/+/B | C/D |
---|---|---|---|---|---|---|
C | โ๏ธ | โ | โ | โ | โ | โ |
C/A | โ๏ธ | โ๏ธ | โ๏ธ | โ | โ | โ |
C/A/B | โ๏ธ | โ๏ธ | โ | โ๏ธ | โ๏ธ | โ |
C/D | โ๏ธ | โ | โ๏ธ | โ | โ | โ๏ธ |
C/D/B | โ๏ธ | โ | โ | โ | โ๏ธ | โ๏ธ |
Can you please verify if this is correct? It would be very helpful if we can add something like this to the documentation. Thanks!
Hei, is it possible to use emitter with a standard MQTT client ?
Operating System - Windows 10
Commdan - docker run -d --name emitter -p 8080:8080 --privileged --restart=unless-stopped emitter/server
The docker logs for the container -
As you can see the emitter service stops right after starting and the docker restarts it.
emitter.js
125 this._mqtt.on('message', function (topic, msg, packet) {
126 var message = new EmitterMessage(packet);
127 if (_this._startsWith(message.channel, 'emitter/keygen')) {
128 // This is keygen message.
129 _this._tryInvoke('keygen', message.asObject());
130 }
131 else if (_this._startsWith(message.channel, 'emitter/presence')) {
132 // This is presence message.
133 _this._tryInvoke('presence', message.asObject());
134 }
135 else if (_this._startsWith(message.channel, 'emitter/me')) {
136 // This is a message requesting info on the connection.
137 _this._tryInvoke('me', message.asObject());
138 }
139 else {
140 // Do we have a message callback
141 _this._tryInvoke('message', message);
142 }
143 });
in usage of on('message',callback) , callback can not receive "topic" args .
How can I know Where the message from , if there is no "topic" info ?
This is great project โค๏ธ, thanks for open sourcing it. I was trying to build something if this kind for my mobile application project. Is there any platform support for Android OS in the near future. As of now most the android developer have been using firebase for realtime communication, which is paid service. I see a great potential in this project and could be next big thing. Enabling android platform support would let may more developer build great app. Android platform support would be great feature of this project .I am very much interested in this project and want to develop Android Platform support tools for this project. Let me know is this could be great thing?
Current version of emitter/server pulled from Docker Hub (Nov. 15th 2017) looks broken:
$ docker --version
Docker version 17.09.0-ce, build afdb6d4
$ docker run --name emitter -d -p8080:8080 --privileged emitter/server
+ exec emitter
panic: Unable to parse configuration, due to write /go/bin/emitter.conf: bad file descriptor
goroutine 1 [running]:
main.main()
/go/src/github.com/emitter-io/emitter/main.go:36 +0x6bd
Need some documentation on adjusting the message size to larger than 64KB. How can this be done?
I am facing an issue with respect to Presence . Following is the scenario. Kindly help.
We have emitter broker ( c#) running under Mesh. and trying the client to subscribe or unsubscribe on particular topic ( ex: channel/topic/+) . We are observing a behavior where, whenever the client gets subscribed, the presence Json was getting displayed multiple times ( depends on number of servers under Mesh. In my case, 4 times).
We have no clue why on Mesh, the Presence logic is behaving like this. Any inputs on this are welcome.
Hi all:
Why does emitter ignore puback packet?
If puback is not handled, the message will not be deleted. Maybe when a user get online, will he get all the messages which are not expired?
Added following comment to commit 1e8b9e2 while ago, perhaps same ID could be logged ๐?
Hi,
idk if this is worth of creating an issue but i'm just curious - this was changed here from LUID to GUID but line 57, after connection creation,
the LUID is still logged.Line 57 in 54a9ac2
wouldn't it be neat to have same id referenced in log and maybe similar log entries could be matched?
2018/03/11 22:23:55 [conn] created (ACF98330) 2018/03/11 22:23:58 [conn] closed (R4KDCEQDRWNPC5SH7GCQRSSMQA)
Team,
Recently Microsoft announced the latest version of .net core 2.0 on August 14th,2017. Currently my project is built upon .net core 1.1 and .netstandard 1.5. When I looked into emitter.server & emitter.runtime they both are under the v1.1 and standard 1.5 respectively. If I try to change the target framework to .netstandard2.0 & .netcore2.0 , emitter is getting failed with lots of errors related to dll references.
So, can i have a update from your team, Like Is there any plan to migrate your code src to latest .netcore 2.0? and when can we all expect these changes. Any ETA is appreciated.
I think
rootPtr := (*unsafe.Pointer)(unsafe.Pointer(&c.root))
root := (*iNode)(atomic.LoadPointer(rootPtr))
is equal to
root := c.root
But maybe there is something that i missed here,please tell me why :)
Hi, is there an easy way to pre-configure all channels and their keys.
It seems currently you have to go through the key-generator page?, or maybe i missed something?
Any help is awesome...
Hey developers.
I've been looking into the documentation on Emitter and I have been wondering how it could solve my usecase. Since I am not quite certain about how the channel filtering and key works I would like some advice.
I would like to use it as the broadcaster to my users, but also be able to let specific users send message to each other through a channel privately.
How would you then achieve private messaging? Basically the setup would be that a user writes a message that gets passed to NodeJS that will then act as a client, then connect to emitter and broadcast it to another user that's listening on emitter.
But how would it be secure enough so the sender and the reciever won't have other people tapping in on the line? Is there a way to dynamically make a key relationship? Or how would this be achieved if it's even possible to do such specific things?
Kind Regards.
On Mac 10.12.6:
> rm -Rf ~/go
> go version
go version go1.9 darwin/amd64
> go get github.com/emitter-io/emitter && emitter
# github.com/emitter-io/emitter
ld: warning: PIE disabled. Absolute addressing (perhaps -mdynamic-no-pic) not allowed in code signed PIE, but used in type..eqfunc.[106]string from /var/folders/gb/bn5tvy2s2vqcf6hxs9qz17tm0000gn/T/go-link-417292192/go.o. To fix this warning, don't compile with -mdynamic-no-pic or link with -Wl,-no_pie
-bash: emitter: command not found
>
What are the supported platforms for this new pivot of the implementation? What versions of Go?
I am facing issues to configure Emitter.Server over Ubuntu instance ... documentation about emitter.conf is very poor .
I love the project - I considered using it in one of our project, but we ended up going with Kafka instead.
The main obstacle in adopting this in a serious LoB application is understanding for where you are headed, and what are your plans for the project.
That is also quite vital when it comes to contributing to the project - can't work on anything beyond simple bug fixes.
@kelindar mentioned that you guys are planning to rebuild emitter in Golang, it would be good to understand what that might look like, will that replace or be supported side by side with c#, etc..
I don't know the state of the project or if there is any interest for it.
I'm mostly just throwing ideas your way :P
It currently uses the "mqtt style channels", but It would work the same way with the current channel parser.
I made a proof of concept to validate the idea.
The key authorisation is based only on the root of the channel.
For example, we can only limit a key to a/#/
, we cannot limit a key to a specific sub-channel like: a/b/#/
The key has 24 bytes total.
Bytes 12 to 15 are used to store permission flags.
Bytes 16 to 19 are use to store the "target" hash.
Those are the bytes we will use.
I suggest we take 3 bytes that are currently used to store "permissions" and use them for the new authorization proposal.
The permissions have 4 bytes allocated to them. There is currently 5 permissions (read/write/store/load/presence) which means we only need 5 bits to store this information.
To simplify things a little, I will make my examples with only 1 byte.
I would allocate one bit to describe if the key is good for all sub-channels, or not.
And the rest of the bits to describe "exact-match" vs "wildcard" per channel level.
match | ends-with /#/ |
- | - | - | - | - | - | - |
---|---|---|---|---|---|---|---|---|
a/b/c/ |
0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
a/b/c/#/ |
1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 |
a/+/c/ |
0 | 1 | 0 | 1 | 0 | 0 | 0 | 0 |
a/+/c/#/ |
1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 |
With 3 bytes we can have authorization for up to 23 levels channels.
We have a key that has read permission to a/+/c/#/
.
The key contains the hash for a/+/c/
(bytes 16 - 19) and the following authorization byte 11010000
.
A user wants to subscribe to the following channel a/b/c/d/e/
using this key.
The server takes the key.
It finds the maximum depth (last 1
inside the auth byte). It finds 3.
The first bit is 1, we authorize all sub channels. We strip all sub channels greater than 3 (depth).
We now have a/b/c/
We replace sub-channels with +
if the corresponding bit is 0
.
We now have a/+/c/
We now compare what we have with the hash contained by the key.
User is authorized to access this channel.
We have a key that has read permission to a/+/c/
.
The key contains the hash for a/+/c/
(bytes 16 - 19) and the following authorization byte 01010000
.
A user wants to subscribe to the following channel a/b/c/d/e/
using this key.
The server takes the key.
It finds the maximum depth (last 1
inside the auth byte). It finds 3.
The first bit is 0, we do not authorize all sub channels.
The requested channel depth (5) is greater then 3.
The user is denied access.
Right now, publishing of new messages requires the SDK which could be not-very-convenient when integrating with a website. For example, if one wants to track page views or connected users it would be easier to simply support Publish Over HTTP
.
Similarly, we need to investigate getting the Presence over HTTP
(just the status
). Alongside, we should investigate the possibility and performance implications of Subscribe over HTTP
.
In the docs referring to page https://github.com/emitter-io/emitter/wiki/3.-Storing-Messages there is typo in para below first code example, this might mislead.
In the above example the message 'Bitcoin value doubled in two months time' is stored in the Emitter broker for 10080 seconds (one week).
In the above para which is from the wiki
10080 minutes is equals to one week, not 10080 seconds
604800 seconds is equal to one week.
When seeding the cluster using a domain name instead of the IP address, we should join to all of the addresses resolved by the domain. This would simplify the process and resolve some failure conditions when restarting the cluster.
๐ team,
We spot you at FOSDEM 2018 and I couldn't help me providing a nice search experience for you good documentation, see below:
DocSearch Demo
If you set the id
attribute of lvl1, you could also have a precise scroll thank to anchors.
Congratulations, your search is now ready!
I've successfully configured the underlying crawler and it will now run every 24h.
You're now a few steps away from having it working on your website:
<!-- at the end of the HEAD -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.css" />
<!-- at the end of the BODY -->
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js"></script>
<script type="text/javascript"> docsearch({
apiKey: 'b5934425f0b42e9596a041346e549520',
indexName: 'emitter_io',
inputSelector: '### REPLACE ME ####',
debug: false // Set debug to true if you want to inspect the dropdown
});
</script>
Feel free to get back to us if you have any issues or questions regarding the integration.
We'd also be happy to get your feedback and thoughts about DocSearch - so we can continue to improve it.
Have a nice day :)
Is there any way to recover your secret key, after first time it is displayed in your console or do I actually have to rerun emitter and generate new keys and just be fast to grab them?
It is mostly because I am having a problem with the docker container version, where it keeps restarting.
Hello,
I installed emitter via docker and running docker run -d -p 8080:8080 emitter/server
, I noticed the server keeps crashing.
BR
Quaye Samson
Concept borrowed from Kafka
Producer published [1,2,3,4,5,6,7,8,9]
ConsumerGroupMember01 subscribes and get [4,5,6]
ConsumerGroupMember02 subscribes and get [2,3]
ConsumerGroupMember03 subscribes and get [1,7,8,9]
Hi.
As per my Blog entry (ID pauldy1000, 21 November 2017) and response from Roman I am enclosing the situation and some source code. I am using the Go! version of the Broker.
My use case is to have a Subscriber connected to the Broker for the length of time I choose.
For example, I want a Subscriber in the UK to be ready to receive messages from a Publisher in the USA at any time the USA Publisher chooses to publish messages. If the UK Subscriber connection times out after 1 minute of inactivity, how can I detect that the Publisher in the USA has published a message destined for the UK Subscriber if the USA Publisher does not come on-line for 3 hours?
Emitter.Connection emitterMagnetLocal = new Emitter.Connection(magnetLocalIPAddress, magnetLocalPort, "myserverkeygoeshere");
emitterMagnetLocal.On(cChannelKeyCommander, channel, (channel, msg) =>
{
// Message received, go handle it.
HandleInboundMessage(channel.TrimEnd(new char[] { '/' }), msg);
});
// Wire up the Disconnect event.
emitterMagnetLocal.Disconnected += EmitterMagnetLocal_Disconnected;
// Connect to Magnet.Local emitter.
ConnectToMagnetLocal(); // This is a class member method which connects to the Broker.
When the Broker forcibly disconnects the Subscriber (as above) the Disconnected event handles it:
private void EmitterMagnetLocal_Disconnected(object sender, EventArgs e)
{
Logging.LogIt(cCodeName + ": Magnet.Local: Disconnected(): Waiting for five second before trying to reconnect.");
// Wait for five seconds.
Thread.Sleep(5000);
Logging.LogIt(cCodeName + ": Magnet.Local: Disconnected(): Trying to reconnect again now.");
// Try to connect to the magnet local service again.
ConnectToMagnetLocal(); // This is a class member method which connects to the Broker.
}
I have had to architect the "wait 5 seconds then reconnect" due to the forced disconnection by the Broker. I would much prefer to be able to declare how long I would like to keep the Subscriber connected - even if this is "never disconnect".
I hope this is useful.
Regards,
Paul.
If I knew how to fork and submit a PR for the Wiki I would, but it's not immediately apparent to me, so I'll just create an issue instead...
Super minor, but the link to the Presence Wiki page is broken in the Getting Started page.
Here's the steps to fix:
4.-Presence
, thus this markdown: See [presence](4.-Presence) for more details.
https://stackoverflow.com/questions/6474045/linking-to-other-wiki-pages-on-github
As it states
We'd need to add the number of unique devices per contract for the metering. Ideally this should be done without the storing the entire set as only the cardinality is required. This should be possible by using HyperLogLog structure and merging it on the receiver's end.
#74 I would also want to add, that I can't access the keygen using the url http://localhost:8080/keygen
and docker ps
show there is no active emitter-io instance running.
Right now, the contract provider never re-fetches the contracts which might lead to inconsistencies. We need to make sure it refreshes the contracts either periodically or on expiration. This ideally should not slow down the request path.
Let say I subscribe to <channel key>/a/
I receive all messages for <CK>/a/b/
, <CK>/a/b/c/
... as well.
This behavior doesn't seems normal to me.
Here is a script to reproduce it:
package main
import (
"fmt"
"github.com/eclipse/paho.mqtt.golang"
"time"
)
func onMessageReceived(client mqtt.Client, message mqtt.Message) {
// Will never be executed.
}
func publishHandler(client mqtt.Client, message mqtt.Message) {
fmt.Printf("message on topic: %s, Message: %s\n", message.Topic(), message.Payload())
}
func main() {
rwKey := "bsol8lzYVW_Y_-CU4Mp2Be99WeWNpn6g"
opts := mqtt.NewClientOptions()
opts.AddBroker("tcp://127.0.0.1:8080")
opts.SetDefaultPublishHandler(publishHandler)
c := mqtt.NewClient(opts)
token := c.Connect()
token.Wait()
token = c.Subscribe(rwKey+"/a/", 0, onMessageReceived)
token.Wait()
token = c.Publish(rwKey+"/a/b/c/d/e/f/", 2, false, "TEST")
time.Sleep(1 * time.Second)
}
$ go run main.go
message on topic: a/b/c/d/e/f/, Message: TEST
Edit: According to the tests, this behavior seems to be expected:
emitter/broker/message/subtrie_test.go
Lines 30 to 56 in f159aab
But it doesn't seems to follow the MQTT specification:
http://www.steves-internet-guide.com/understanding-mqtt-topics/
Currently, our last-write-wins set CRDT does not have garbage collection integrated. This is required to minimise the size of gossip transfers as without it it will tend to snowball over time.
More information: Async GC with CRDTs, CRDT Notes
hello
can i schedule a message to be developed at specific time in the future ?
regards
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.