In V5 we have an updated node_spec
-type node_spec() :: #{
name := node(),
listen_addrs := [listen_addr()],
channels := #{channel() => channel_opts()}
}.
parallelism is now a per channel property.
We need to review the need for channels in this structure.
All nodes in a partisan cluster should have the same channels configuration, so when using a discovery strategy e.g. DNS we get nodename and list_addrs and we append the local channels config to create the node_spec(). If a node is wrongly configured we will have two different node_spec() objects for the same nodename.
The proposal would be to remove channels from the spec and just get it from the config partisan_config:channels().
-type node_spec() :: #{
name := node(),
listen_addrs := [listen_addr()],
}.
This also makes the membership CRDT and the gossip payload smaller
In V5 we have an updated node_spec
parallelismis now a per channel property.We need to review the need for
channelsin this structure.All nodes in a partisan cluster should have the same channels configuration, so when using a discovery strategy e.g. DNS we get nodename and list_addrs and we append the local
channelsconfig to create the node_spec(). If a node is wrongly configured we will have two different node_spec() objects for the same nodename.The proposal would be to remove
channelsfrom the spec and just get it from the configpartisan_config:channels().This also makes the membership CRDT and the gossip payload smaller