Commit graph

91 commits

Author SHA1 Message Date
Jason Aten
2eb097c14d blue_green migration. holdbkg.go holder goroutine.
- blue_green for doing migration. Called before Holder.Open finishes.
- holdbkg.go added for index lookup. Less wedging between a deadlock and a race.
- fix fault under read-only map under lmdb at
  TestExecutor_Execute_Row_Range/RowIDColumnID by doing cow in roaring.
- roaring -tags gofuzz builds again
- roaringparanoia build tag added to make test targets in Makefile
- add rbf.NewDBWithAllocZero for out-of-bounds memory checks
- .circleci/config.yml test-shardwidth-22 with large run container, kept OOM-ing we suspect.

Fixes #819
2020-09-11 14:24:15 -05:00
Seebs
cecaf99ee4 testhook: leak auditing infrastructure
The testhook/ package provides an easy way to set up multiple
hooks to run before/after tests are run.

The audit hooks track open and closes of storage backends,
files, indexes, and holders, for example. A tempdir wrapper
creates temporary directories which are automatically cleaned up
when the test ends. Any kind of resource creation that
should be closed at test conclusion can be tracked. We
will complain at the end of the TestMain if resources are
leaking.

Leaks under go1.13:

We use a wrapper function which is a no-op for go 1.13, but actually
calls testing.TB.Cleanup in go1.14, so we can still build with 1.13 even though
tests will leak files all over the place there. Because of this,
don't run the testhook tests when using 1.13, as they'll always fail.

- the test/pilosa.go http client now times out after 10 seconds
to help diagnose hung server situations.

- Makefile targets added to get better progress reports.
2020-08-24 11:26:39 -05:00
Kuba Podgórski
ba7f039dd1 Rename etag to createdAt 2020-06-03 13:26:16 +02:00
Kuba Podgórski
3d270f45d2 Add (in memory) ETag to index and fields 2020-06-03 13:26:16 +02:00
Ben Johnson
c7c9c1e1d7
v2.0.0
Co-authored-by: Cody Soyland <codysoyland@gmail.com>
2019-10-08 14:56:17 -06:00
Travis Turner
efb9f97e61
Advertise address and listen on 0.0.0.0
This commit adds support for advertise address by using a new config
option `advertise`, or by defaulting its value to that
specified in `bind`.

Also adds support for listening on 0.0.0.0 by trying to determine
the preferred outbound IP to use for the advertise address.
2019-01-21 22:36:55 -06:00
Matt Jaffee
44270fe9fd
rename memberlist.logger and add explanatory comments 2019-01-21 14:47:02 -06:00
Matt Jaffee
6f4dee5e31
pass loggers around properly in gossip 2019-01-21 14:47:02 -06:00
Matt Jaffee
daa87d8e12
fix staticcheck warnings 2019-01-21 14:24:11 -06:00
Matt Jaffee
2c4401db8c
hopefully fix data race 2018-12-11 09:22:04 -06:00
Seebs
a203313143 move Logger and Stats to their own packages
I'd like to add stat tracking to Roaring, which means it
has to be able to import the stats package, which means
stats has to be a package rather than part of the pilosa
package. If stats stops being in pilosa, it still needs
a way to import logger, so logger also has to leave the
pilosa package. Then everything using them needs to import
them and use package selectors on their names.

This doesn't actually add the stats support to roaring,
it just makes it so there's a way to import the stats
code from something in the roaring package.
2018-11-15 15:10:44 -06:00
Matt Jaffee
90c5f64b19
filter memberlist debug and info logs, use t.Log instead of fmt in cluster tests 2018-11-12 14:01:57 -06:00
Matt Jaffee
ec3982c0ff
pull out advertise URI changes 2018-11-02 16:10:39 -05:00
Matt Jaffee
8db7a78a93
unpushed WIP on cluster-tests 2018-10-23 11:10:24 -05:00
Ben Johnson
f4c9c0fed3
Maintain available shards set.
This commit removes the previous `MaxShard` tracking and replaces
it with an `Available Shards` set tracking. This allows sparse shard
tracking without implicitly tracking all shards in between.
2018-08-22 07:57:58 -06:00
Cody Soyland
de99b5720f Fix linter issues: vet 2018-07-19 11:37:50 -05:00
Cody Soyland
f9625ef4fa Fix linter issues: unparam 2018-07-17 12:05:07 -05:00
Travis Turner
d24fb4e719
fix typo 2018-07-10 13:32:04 -05:00
Travis Turner
4013cccb30
fix comment 2018-07-10 11:48:45 -05:00
Travis Turner
1723616aac
add gossip Closer 2018-07-10 11:41:54 -05:00
Travis Turner
d22507d36d
rename gossip.NewGossipMemberSet to gossip.NewMemberSet 2018-07-09 17:05:58 -05:00
Cody Soyland
d95aeae175 Unexport gossip.Transport.Net 2018-07-05 23:11:56 -05:00
Cody Soyland
d512b187b1 Unexport gossip.GossipMemberSetOption 2018-07-05 23:11:56 -05:00
Cody Soyland
6bc7470b0c Unexport gossip.GossipMemberSet 2018-07-05 23:11:56 -05:00
Matt Jaffee
21bfa5df77
remove Holder from API 2018-07-05 20:58:25 -05:00
Matt Jaffee
21cf6b6e57
remove URI getters since the fields were exported for serialization 2018-07-05 17:59:18 -05:00
Matt Jaffee
59e80f9692
put Serializer on API, add QueryRequest/Response to serializer 2018-07-05 13:35:14 -05:00
Matt Jaffee
6309d3b7f7
get gossip using serializer stuff, remove proto and internal 2018-07-05 12:32:49 -05:00
Matt Jaffee
2cec75e399
add proto encoding subpackage and use for send and receive message 2018-07-05 12:00:42 -05:00
Matt Jaffee
f6aef32093
make gossip's interface to Pilosa the API struct rather than effectively being pilosa.Server 2018-07-03 12:58:18 -05:00
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