Commit graph

77 commits

Author SHA1 Message Date
Michael Baird
7cbe679640 handle input nil bit 2017-06-27 16:30:59 -05:00
Linh Vo
8653154dee merge handleAction 2017-06-27 16:29:10 -05:00
Linh Vo
57d035260d update JSONparser 2017-06-27 16:28:42 -05:00
Linh Vo
f701f9d273 handle actions in JSONparser 2017-06-27 16:28:17 -05:00
Linh Vo
13da696927 JSON parser 2017-06-27 16:20:51 -05:00
Linh Vo
1407a25008 fix reviews, more input definition tests 2017-06-27 12:36:02 -05:00
Travis
904552b289
adjusted some of the InputDefinition comments 2017-06-26 17:39:58 -05:00
Linh Vo
7a3baed3ac resolve proto conflict 2017-06-22 15:20:18 -05:00
Linh Vo
9fd1de8f29 handle nil rowID 2017-06-21 14:38:04 -05:00
Ben Johnson
0107ddffea
BSI range-encoding schema support. 2017-06-21 08:53:30 -06:00
Linh Vo
568320ec6d fix reviews and add more test 2017-06-19 11:37:01 -05:00
Michael Baird
64b51f3bc3 Use the internal.inputdefinition object for broadcasting to other nodes. Create encoding methods to translate the JSON request to create a definition. 2017-06-15 23:45:19 -05:00
Linh Vo
e72e3dc436 more handle tests 2017-06-15 00:39:21 -05:00
Linh Vo
2d3f244a7b couple more tests 2017-06-13 13:56:08 -05:00
Linh Vo
ea53216ff2 expose input definition frames, fields 2017-06-12 23:43:03 -05:00
Linh Vo
1c2adda8e9 create frames with input-definition's creation 2017-06-12 16:23:40 -05:00
Linh Vo
a62ec47eec load input-definition when startup servers 2017-06-12 15:04:27 -05:00
Linh Vo
fdacca3147 save inputdefinition as protobuf to file 2017-06-12 00:11:20 -05:00
Linh Vo
7c28e2c3f3 InputFrame struct 2017-06-09 10:27:11 -05:00
Linh Vo
8ca7c3b229 create input-defintion file 2017-06-08 15:48:00 -05:00
Linh Vo
c80bedb402 create input-definiton 2017-06-08 14:23:46 -05:00
Michael Baird
c41f695e74 more metrics tests 2017-05-18 16:36:22 -05:00
Michael Baird
60cd24b368 set maxSlice StatsD gauge on get max slice 2017-05-16 14:00:54 -05:00
Michael Baird
4a051900c0 Add sampling rate to StatsD functions, and fix data dog logging 2017-05-16 10:35:49 -05:00
Michael Baird
bd44949cb5 Merge remote-tracking branch 'origin/master' into metrics
Conflicts:
	config.go
	executor_test.go
	server/server.go
2017-05-09 11:31:14 -05:00
Ben Johnson
d93ad0530a Merge pull request #503 from benbjohnson/prevent-matching-labels
Prevent row labels that match the column label.
2017-05-03 11:20:37 -06:00
Michael Baird
ee159b455d Merge remote-tracking branch 'origin/master' into metrics
Conflicts:
	.gitignore
	cluster.go
	frame.go
	glide.lock
	index.go
2017-05-01 10:41:04 -05:00
Travis
692d997cab
add labelRegexp to validate row and column labels 2017-04-29 15:01:18 -05:00
Cody Soyland
3996b56b88 Apply Apache License 2.0 2017-04-28 14:22:03 -05:00
Ben Johnson
0276c13cea
Prevent row labels that match the column label. 2017-04-28 12:59:39 -06:00
Travis
7246e1e00d
Broadcast CreateSliceMessage when a new max slice is created 2017-04-27 11:44:13 -05:00
Linh Vo
e67c9c051c move statsd count to handler 2017-04-27 11:29:33 -05:00
Michael Baird
6a8e205769 Use OwnsSlice to determine the slice list per node and index for the Cluster Node Status. 2017-04-26 16:19:59 -05:00
Michael Baird
08590be4c3 Merge pull request #490 from raskle/485-godocs
godoc cleanup
2017-04-26 15:37:12 -05:00
Michael Baird
d2a7869142 comment cleanup 2017-04-25 16:40:39 -05:00
Ben Johnson
a7fdf95d04
Allow explicit time quantum during frame creation.
Changes the `Index.CreateFrame()` function to use the `TimeQuantum`
field in the options. If it is blank then it is defaulted to the
time quantum of the index.
2017-04-25 14:01:33 -06:00
Michael Baird
3512dd4549 missing comments 2017-04-25 14:15:02 -05:00
Linh Vo
beb280624d create/delete index/frame tag 2017-04-25 11:08:28 -05:00
Michael Baird
a543ba21bb fixed DB to index conflicts after merge 2017-04-24 21:59:39 -05:00
Travis
2ad322c2c7
Rename DB to Index
Rename `db.go` to `index.go` and `db_test.go` to `index_test.go`
2017-04-23 21:49:27 -05:00
Travis
2cacff8e09
Rename Index to Holder
Rename `index.go` to `holder.go` and `index_test.go` to `holder_test.go`
2017-04-23 15:59:20 -05:00
Ben Johnson
d34687121f
Rename bitmap/profile to row/column. 2017-04-21 21:23:24 -06:00
Matt Jaffee
32d07fc9e1 rename MessageBroker -> Broadcaster 2017-04-19 10:34:52 -05:00
Matt Jaffee
5079ee7a22 remove messenger "wrapper" around messagebroker
all the functionality aside from the broker has been removed
2017-04-19 10:33:59 -05:00
Travis
b0f1fc7523 Makes Messenger a first-class object under Server (with pointers in Handler and Index).
Primary message interface is the MessageBroker which is an attribute of the Messenger.
MessageBroker implementations:
- Gossip (memberlist)
- Broadcast (uses HTTP, received by existing Handler)
- Static (no-ops)

Changes CacheSize from `int` to `uint32` for consistency with protobuf.
Removes unnecessary dependencies in glide:
- `github.com/aws/aws-sdk-go`
- `golang.org/x/net` (although this gets included by memberlist)

TODO:
- [ ] Add tests around the Messenger and MessageBroker objects.
- [ ] Refactor CreateSliceMessage to work with views.
- [ ] Support propogation of meta data on PATCH calls.

fixing some issues from last rebase
2017-04-19 10:33:26 -05:00
Travis
8fa45649b6 WIP: Added support for NodeState.
Modified the gossip implementation to optionally send messages directly (instead of over gossip).
Added support for local and remote NodeState, as well as function to merge remote into local state.
Refactored Protobuf models to include `DBMeta` and `FrameMeta` as well as support for NodeState.
2017-04-19 10:19:17 -05:00
Travis
2b35df879c WIP: first pass at sending CreateDB() through Messenger 2017-04-19 10:15:57 -05:00
Travis
7c2f6a9bae adds a basic gossip implementation using hashicorp/memberlist
Changes Gossiper to NodeSet.
Adds StaticNodeSet (for testing) and GossipNodeSet (for memberlist) implementations.
Changes NodeSet interface to return a pilosa-specific generic instead of `NodeSet interface`.
Removes NumMembers from interface (which is specific to memberlist).

Implements a Messenger interface with which to send inter-node messages via NodeSet.
The Pilosa implementation occurs in the GossipNodeSet.

Implements the Messenger as an object on Server, Handler, and Index.

Uses HealthStatus constants.
Removes commented-out code.

for gossip, make sure to bind to both host and port, and advertise those as well

adjust messenger to work with the db schema logic

add dependencies: hashicorp/memberlist, golang.org/x/sync
add dependency: golang.org/x/net

Uses `errgroup` to handle errors from broadcast messages.
Marshals message one time instead of once for every node.
Adds error handling for some errors that were being swallowed.
2017-04-19 10:13:38 -05:00
Ben Johnson
912fcb3464 Separate max slices for standard and inverse views.
Previously only the standard max slice was available. This commit
changes it so that the inverse max can be retrieved separately
through the `DB` and `Frame` types as well as through the
`HTTP` API and `Client`.
2017-03-28 13:01:04 -06:00
Ben Johnson
eff08af112 Separate physical data layout with views.
Previously, multiple frames with different prefixes were used to separate
different data layouts. This included separating standard row/column
layouts from inverted column/row layouts as well as storing aggregate
information for timestamp data.

Unfortunately, this caused frame meta data to be copied between multiple
frames and it made it difficult to keep these frames in sync.

This commit separates these different physical layouts into `Views`.
A `Frame` now has one or more views which represent each layout.
Fragments have been moved from under the `Frame` to be contained
within the `View`.

There are two primary views:

- `standard`
- `inverse`

If a frame has a time quantum, then views are generated for these
each of the standard/inverse views. For example a time quantum
of `YMDH` for the date `2000-01-02T00:00:00Z` would create the
following views:

- `standard_2000`
- `inverse_2000`
- `standard_200001`
- `inverse_200001`
- `standard_20000102`
- `inverse_20000102`

From the user's perspective, nothing should change in PQL. Different
PQL statements will handle the appropriate view automatically. For
example, `Bitmap()` and `Profile()` will fetch using the `standard`
view or the `inverse` view, respectively. The `Range()` statement
will lookup the appropriate time-based views automatically.
2017-03-24 13:57:02 -06:00