Commit graph

43 commits

Author SHA1 Message Date
Cody Soyland
3996b56b88 Apply Apache License 2.0 2017-04-28 14:22:03 -05:00
Matt Jaffee
0a324d14a5 add fix all package level docs 2017-04-18 14:11:42 -05:00
Matt Jaffee
961d18a3bf convert all subcommands to nonglobal style 2017-03-17 16:43:04 -05:00
Matt Jaffee
c3b7710d67 WIP on converting commands to be non-global and testable 2017-03-17 16:43:04 -05:00
Matt Jaffee
555a514e37 code review tweaks 2017-03-07 11:30:31 -06:00
Matt Jaffee
02c3c6d3e6 use cobra/viper and move cmd/pilosa to server subcommand 2017-03-03 13:03:57 -06:00
Ben Johnson
246649b0c8 Merge pull request #329 from benbjohnson/schema
Add basic schema support.
2017-02-28 12:27:39 -07:00
Ben Johnson
7de0293034 Add basic schema support.
Databases and frames now require explicit creation and have the
option of setting row & column labels. If no labels are provided
then the default `id` and `profileID` labels are used.
2017-02-20 13:55:03 -07:00
Cody Soyland
2d09731dfd Add Makefile and versioning/build time in pilosa/pilosactl 2017-02-17 16:37:36 -06:00
Travis
71d3074b38 for the default version number, include the v 2017-02-03 09:23:15 -06:00
Travis
d0bdea11c5 use the Build parameter as the Version in handler
Standardize on `Version` for the build version
2017-02-02 12:08:03 -06:00
jaffee
d763b92de3 fix rebase issues 2016-12-19 15:12:56 -06:00
jaffee
bbb88e910f create - start cluster over ssh when given hosts 2016-12-13 10:14:09 -06:00
jaffee
33cbdba642 thread context through Benchmarks
Also fix a few ignored errors, an issue with pilosactl usage string, a broken
test, and a mistaken import.
2016-12-08 11:02:14 -06:00
jaffee
488ed1259c fix broken context stuff after rebase 2016-11-28 15:45:17 -07:00
Cody Soyland
5206461d51 Migrate from Umbel to Pilosa organization on Github 2016-11-28 15:21:11 -06:00
Ben Johnson
6e304e8e7d Add context to pilosactl. 2016-11-16 19:53:40 -07:00
Ben Johnson
c6ca86f2d9 Add ExpvarStatsClient and basic tracking.
A `StatsClient` for `expvar` is added so we can track Stats through
the `/debug/vars` endpoint. Tags are nested inside maps so that we
can see stats for db, frame & slice.

Also added a `MultiStatsClient` for chaining multiple `StatsClient`
implementations together (e.g. `expvar` and DataDog).
2016-10-20 14:35:14 -06:00
Ben Johnson
d5ad5fbb05 Add profile & bitmap attribute anti-entropy.
Adds block-based anti-entropy for the attribute stores and hooks
into the existing `IndexSyncer` to regulate frequency of syncs.
2016-09-30 11:47:43 -06:00
Ben Johnson
4883dea5f8 add CLI profiling
This commit adds the `-cpuprofile` flag to the `pilosa` binary so
that startup can be profiled.
2016-08-12 10:58:45 -06:00
Todd Gruben
cc7d0abe10 Merge branch 'master' of github.com:umbel/pilosa 2016-05-13 19:59:24 -05:00
Todd Gruben
a5b84e092a changed slicewidth 2016-05-13 19:59:14 -05:00
Ben Johnson
a0a519bfdf refactor main into pilosa.Server
This commit refactors most of the code in `cmd/pilosa` to
`pilosa.Server` so that it can be reused in long running cluster
testing.
2016-05-13 14:39:09 -06:00
Ben Johnson
de698aa03e consensus block merge
This commit refactors the anti-entropy system to fetch data from
all replicated blocks and only set/clear bits which deviate from
the consensus between all blocks.

An example of this is if 3 nodes had the following bits set for
a single bitmap:

	Node A: 1 2 3
	Node B:   2   4
	Node C: 1 2   4

Then only bits which are set on a majority will be set. In this
case bits 1, 2, & 4 are set but 3 only exists on a single node.

The node performing the merge would then determine the following
set/clear diffs for each node:

	Node A: clear(3), set(4)
	Node B: set(1)
	Node C: none

Once the merge is performed and all nodes receive their diff
instructions then the nodes will be in sync:

	Node A: 1 2 4
	Node B: 1 2 4
	Node C: 1 2 4

There still exists situations where bits can be reset. If Node A
is up and Node B & C are down then Node A's bits will be reset
once B & C come back online. We should add write consistency
settings for incoming writes so that we can ensure that a quorum
is written to before returning a success. This is outside the
scope of this commit though.
2016-05-06 16:19:10 -06:00
Ben Johnson
f6bb605ee8 add anti-entropy monitor 2016-04-18 16:32:27 -06:00
Ben Johnson
0ab4ee6f07 add frame restore for cluster transfer
This commit adds an endpoint to restore an entire frame from
another cluster. Multiple hosts can use this endpoint to copy
and rebalance a cluster to a new cluster.
2016-03-15 14:42:42 -06:00
Ben Johnson
569bafdc7d add bulk call support to the query endpoint
This commit changes the `pql.Query` so that it can accept one or more
top-level calls instead of only one.

The query request format change because a query with a single call is
still valid. However, the result format now returns a `results` field
that has one result for each top-level call. The `profiles` field is
still the same, however, it combines all profiles from all bitmap
responses into one return so that there's not duplicate attributes.

Fixes #59
2016-03-08 14:34:37 -07:00
Todd Gruben
fb3e563a7c issue 41 2016-02-25 15:43:52 -06:00
Ben Johnson
cca8970019 add Range() support
This commit adds support for setting bits in time-based frames.
2016-02-23 14:53:03 -07:00
Ben Johnson
b28e961f2e add cache persistence
This commit adds the ability of the Fragment to flush the cache
bitmap IDs to disk periodically. They can then be reloaded when
the fragment is reopened.
2016-02-13 10:02:53 -07:00
Ben Johnson
e0937b79c0 add bitmap and profile attribute support
This commit adds the ability to set string, integer, and boolean
values on bitmaps and profiles within Pilosa. Bitmap attributes
are automatically returned when making a `Bitmap()` call. Profile
attributes must be requested by setting `profile=true` in the
URL.

The function names have also been renamed to initial caps so that
the PQL query language can support math operations in the future.
2016-02-01 08:44:33 -07:00
Ben Johnson
c12c186a73 cluster-wide import
This commit fixes the `pilosactl import` command to import data files
across an entire cluster of machines.

A `pilosactl config` command is also added to provide a default config.
2016-01-05 20:09:17 -07:00
Ben Johnson
320e9811d8 bulk importer
This commit adds the pilosactl binary with a single `import` command.
The import allows users to bulk import data from a CSV file.
2016-01-02 15:10:17 -07:00
Ben Johnson
cf6e3cfcc7 integration testing
This commit adds integration testing for the `cmd/pilosa` package.
It uses randomly generated `set()` data and verifies the data using `get()`
both immediately after the insert and after restart.
2015-12-22 16:33:27 -07:00
Todd Gruben
8cbf77a11d added benchmark for assembly vs native popcount 2015-12-22 09:34:26 -06:00
Ben Johnson
1fb85fd0e3 main: merge host and addr 2015-12-04 15:38:13 -07:00
Ben Johnson
a632d08629 refactor
This commit refactors the pilosa codebase. It makes several major
changes:

* Removes bitmap handles
* Removes dispatch/hold/transport
* Removes etcd dependency
* Adds consistent hash ring for slice placement
* Refactors parser/lexer
* Adds strong typing to PQL AST
* Flattens package hierarchy
2015-12-02 15:34:49 -07:00
Ben Johnson
8293416bd8 clean up ids 2015-09-03 15:50:08 -06:00
Ben Johnson
503e5c95be flatten util into pilosa
This commit moves ID-related types and functions to the top
level package and moves remaining statsd wrapper into a `statsd`
package.
2015-09-03 14:43:34 -06:00
Ben Johnson
f822215be9 godep
This commit moves dependency management to use godep and the
new experimental vendoring support in Go 1.5.

NOTE: You must set `GO15VENDOREXPERIMENT` in your bash environment
for vendoring to work properly! See the updated `README` for details.
2015-09-03 13:52:45 -06:00
Ben Johnson
3c832591df move index package to root package
This commit moves the index package to the root. Because pilosa
is an index at its core, it's redundant to have an index
subpackage. It also provides better naming such as `pilosa.Bitmap`
instead of `index.Bitmap`.
2015-08-31 16:54:53 -06:00
Ben Johnson
306249c293 refactor storage
This commit moves individual storage engines to their own packages.
They can be registered and instantiated by a string name.
2015-08-30 16:49:32 -06:00
Ben Johnson
2f1e3b6078 Refactor config & service
This commit refactors the config into a `main.Config` object instead
of a global singleton. The `core.Service` is also refactored into
the `main` package and individual pieces of the service are wired
together by the `pilosa` binary.

These two changes are required to begin to decouple packages from
one another and allow them to be individually unit tested. Previously
most top-level objects in the system could access any other top-level
object through the `core.Service` which effectively made `Service` a
singleton in the system. Each top-level object now has inline interfaces
for their dependencies so that can be set at runtime by the `main`
package or can be mocked by a test package.
2015-08-12 15:34:23 -06:00