Commit graph

61 commits

Author SHA1 Message Date
Matt Jaffee
d2d84d2649
remove commented code 2018-06-29 06:52:29 -05:00
Matt Jaffee
91454a5cd0
collapse *handler interfaces into MemberServer
gossip now takes a single "MemberServer" which is implemented by server. Several
interfaces have been removed.

MemberServer contains ReceiveMessage which is a superset of the functionality of
ReceiveEvent, LocalStatus and HandleRemoteStatus are all that's left of
StatusHandler -  ClusterStatus was not used and is gone. The Node() method is
actually a subset of LocalStatus() functionality. Maybe we should break up
localstatus or remove Node... not sure.

Remove BroadcastReceiver test which was a bit silly.

NodeEvent can now be unexported, and is.
2018-06-28 17:16:08 -05:00
Matt Jaffee
12a49c3e14
remove ClusterStatus method and StatusHandler interface
gossipEventReceiver uses ReceiveMessage instead of ReceiveEvent
2018-06-28 14:45:20 -05:00
Matt Jaffee
75c1440eb5
simplify gossipEventReceiver - no longer needs separate Start method
also remove some dead code
2018-06-28 11:25:07 -05:00
Matt Jaffee
965bd08225
unexport newGossipEventReceiver and remove some dead code 2018-06-28 11:00:45 -05:00
Matt Jaffee
09adc3b461
unexport gossipEventRecevier in gossip.go 2018-06-28 10:34:42 -05:00
Matt Jaffee
c312bc1316
simplify arguments to NewGossipMemberSet 2018-06-27 07:18:16 -05:00
Matt Jaffee
bcb6942c80
continue simplifying memberset and pilosa setup
since the gossip MemberSet has access to Server, it wasn't really necessary to
pass it a Node object when calling Open on it from Cluster. The end goal is to
have it be removed from Cluster entirely, and have it be Opened externally, and
this is a step toward that.

Exposing Node method on Server doesn't really expose any more than was already
there as the same info can be gotten from LocalStatus with a bit of type
casting. I figured adding the method was a little cleaner, and we could collapse
all the functionality when the dust has settled.

The Cluster.open method has been broken into two parts - one of which happens
earlier (at NewServer time), and the other will eventually just be "waiting to
make sure we've joined the cluster". Right now it's calling Memberset.Open, and
then waiting to make sure the cluster has been joined.
2018-06-26 14:36:05 -05:00
Matt Jaffee
ee37152cd5
consolidate gossipEventReceiver into gossip member set
pilosa.Server now implements StatusHandler and EventReceiver and needs only
start a gossip memberset. A gossip member set now takes a server as an argument
explicitly and the maze of handlers and receivers and the starting sequence is
somewhat simplified.

Server now trivially implements EventHandler by passing the call along to its
Cluster object which has the actual implementation. This means that less things
will need to refer to cluster.
2018-06-26 07:50:33 -05:00
Matt Jaffee
56ed9bfbe1
remove broadcaster methods from gossip- don't use sendAsync anywhere 2018-06-18 18:47:29 -05:00
Travis Turner
fe167ea78c
un-export some top-level functions 2018-06-13 16:44:24 -05:00
Alan Bernstein
0ba14600da Wrap a few more errors 2018-05-10 12:08:46 -05:00
Travis Turner
5e043919ae
default GossipMemberSet.Logger to NopLogger 2018-05-09 10:48:49 -05:00
Will Fitzgerald
5a56b33826 fix minor spelling errors 2018-05-01 05:45:19 -04:00
Matthew Jaffee
9f1720f01d
unexport stuff in pilosa.Server
refactor gossip.NewGossipMemberset to not take Server
2018-04-23 15:12:23 -05:00
Matthew Jaffee
876ed56e30
move pilosa.Config to pilosa/server.Config
step 1 of #1203

The Config object is really just a specification of the options to pilosa
server, so it makes sense to have it in that package.
2018-04-19 14:51:42 -05:00
Travis Turner
d113ebe147
Support --verbose logging 2018-03-27 08:40:05 -05:00
Travis Turner
9a2aeac6f8
Clean up logger; make it honor --log-path flag.
Add functional options to NewGossipMemberSet.
2018-03-27 08:40:04 -05:00
Travis Turner
0ca7cfe498
Change Seeds() to GetBindAddr() to clarify GossipMemberSet testing. 2018-03-23 16:34:19 -05:00
Travis Turner
8686a8645c
Default gossip seed should be empty instead of local bind address 2018-03-23 15:11:45 -05:00
Travis Turner
836c8f4c2f
remove the Gossip stutter from memberlist-related config options 2018-03-19 14:29:53 -05:00
Travis Turner
29dcfd06da
Merge pull request #1117 from travisturner/cluster-resize-handle-error
replace swallowed error with log entry
2018-02-23 16:37:42 -06:00
Travis Turner
c3f25e6d2c
Merge pull request #1143 from travisturner/scheme-in-bind-addr
handle the scheme correctly in config.Bind
2018-02-23 14:20:59 -06:00
Travis Turner
3d1538d53c
handle the scheme correctly in config.Bind 2018-02-23 10:48:55 -06:00
Cody Soyland
a23fe86839 Convert gossip seed string to slice 2018-02-22 13:14:45 -06:00
Cody Soyland
fc6b0ea0e8 Add support for comma-separated list of gossip seeds for redundancy. 2018-02-22 11:45:50 -06:00
Travis Turner
666fe22ecb
replace swallowed error with log entry 2018-02-15 12:11:27 -06:00
Travis Turner
346e92a91d
return 0 values for errors. panic on unmarshal node meta data 2018-02-02 15:58:51 -06:00
Travis Turner
216ba7a41e
Use NodeID instead of URI for node identification 2018-02-02 15:58:46 -06:00
Travis Turner
c0fab2bcee
Merge branch 'master' into cluster-resize 2018-01-17 12:55:12 -06:00
Matthew Jaffee
0ac8648ea9
add NewServerCluster(size int) method to pilosa/test 2018-01-12 16:29:32 -06:00
Travis Turner
780078e427
add context to errors in gossip member set 2017-12-28 10:37:58 -06:00
Travis Turner
009a2482b4
change gossip config from memberlist.DefaultLocalConfig to memberlist.DefaultWANConfig 2017-12-22 17:06:24 -06:00
Travis Turner
78cddbd0c7
Add the rest of the available memberlist configuration options
into pilosa.Config.Gossip.
2017-12-15 12:37:51 -06:00
Travis Turner
2afbdba1c5
add lock protection around gossip.memberlist and holder.indexes 2017-12-13 08:54:11 -06:00
Travis Turner
0342da92bb
WIP: add tests for cluster resize
This commit adds support for allocating a gossip transport
and a server listener prior to opening server (and cluster).
Doing that allows tests to use a dynamically allocated port
by supplying bind port: 0.
2017-12-12 16:27:47 -06:00
Travis Turner
9667a04cad
Merge branch 'master' into cluster-resize 2017-12-08 17:56:31 -06:00
Travis Turner
cf1e41faf1
Merge branch 'master' into cluster-resize 2017-12-08 15:22:12 -06:00
Travis Turner
637111a76c
Change Broadcaster.SyndSync to send direct via http
as opposed to using memberlist's gossip broadcast.
Introduce a Gossiper interface for SendAsync gossip messages.
2017-12-08 09:00:47 -06:00
Michael Baird
9cf994bda7
Use the Broadcast Handler's SendSync implementation rather than Gossip 2017-12-08 08:22:59 -06:00
Travis Turner
9b54259cd7
Resume test: TestMain_SendReceiveMessage
Create a custom memberlist NetTransport (which will bind to an available
port when port = 0 in the configuration). This allows us to bind
to dynamic ports in tests while at the same time determining a valid
seed for the cluster.
2017-12-04 14:56:21 -06:00
Travis Turner
ccdd6262c5
add error logging for non-topology nodeJoin 2017-11-28 12:43:49 -06:00
Travis Turner
a98b862fca
add /cluster/resize/remove-node endpoint 2017-11-27 11:06:02 -06:00
Travis Turner
f4b0729458
Rename structs and funcs.
NodeSet -> MemberSet
URISet -> NodeSet
AddNode -> AddNodeBasicSorted
AddHost -> AddNode
2017-10-30 13:03:55 -05:00
Travis Turner
ed1b4fcc2e
Copy fragment data from source nodes in resize instruction. 2017-10-30 13:01:57 -05:00
Travis Turner
2bd0677df9
Remove MaxSlice polling.
Add Schema to proto.
Update MaxSlices in proto to include both standard and inverse.
Update LocalStatus (shared in gossip) to include MaxSlices and Schema.
Encode InputDefinitions with Index.

TODO:
- make sure InputDefinitions are considered in LocalStatus merge.
- decide what to do about `/slices/max` endpoint. client.backup is using
  it.
2017-10-26 23:48:40 -05:00
Travis Turner
a8871ada6a
Convert Host to URI.
Fix all compile errors.
2017-10-25 11:52:55 -05:00
Travis
f1e3ac90d4
Determine cluster membership via gossip.
Handle resize cluster events.
Add Toplogy support.
Refactor FrameOptions.
Add tests.
2017-10-25 00:27:30 -05:00
Yuce Tekol
eec739c331
Adds gossip encryption key; copies Config.Gossip{Port,Seed} to Config.Gossip.{Port,Seed}, deprecates --gossip-port and --gossip-seed. Use --gossip.port and --gossip.seed 2017-10-13 13:30:41 +03:00
Yuce Tekol
3501732b19
https with signed certificates work 2017-10-08 21:11:19 +03:00