Commit graph

619 commits

Author SHA1 Message Date
tgruben
148c9105fb Merge pull request #95 from benbjohnson/sync-closing
Check for early close during AAE
2016-06-29 11:25:56 -05:00
Ben Johnson
583aef6bbb
check for early close during AAE
This commit adds a `Closing` channel to the `IndexSyncer` and the
`FragmentSyncer` that is periodically checked during execution.
If the channel is closed then an in-progress sync is immediately
stopped.
2016-06-29 10:18:24 -06:00
Todd Gruben
e738804941 Merge branch 'master' of github.com:umbel/pilosa 2016-06-29 10:28:19 -05:00
tgruben
7ed40b4b4a Merge pull request #94 from benbjohnson/optimize-union-difference
Optimize union() & difference()
2016-06-28 15:34:38 -05:00
Ben Johnson
e4c7c9d1e8
optimize union() & difference()
This commit moves the `Union()` and `Difference()` operations into
the `roaring` package to improve performance.
2016-06-28 14:29:37 -06:00
Todd Gruben
23e9d7e159 Merge branch 'master' of github.com:umbel/pilosa 2016-06-23 09:05:21 -05:00
tgruben
da419863fc Merge pull request #93 from benbjohnson/set-bulk-attrs
Optimize bulk bitmap attribute update
2016-06-22 21:19:23 -05:00
Ben Johnson
b666f19fc7
optimize bulk bitmap attribute update
This commit adds a fast path for optimizing queries that only
have `SetBitmapAttrs()` calls in them. It does this by grouping
the calls into a single Bolt transaction and also by merging
multiple attribute updates per ID into one update.
2016-06-22 20:04:49 -06:00
Todd Gruben
e64ac426e9 Merge branch 'master' of github.com:umbel/pilosa 2016-06-21 08:45:10 -05:00
tgruben
c462b45a3a Merge pull request #91 from benbjohnson/bit-split
roaring: change bit split to 40/24
2016-06-21 08:30:36 -05:00
Ben Johnson
059f34788e
roaring: change bit split to 40/24
This commit changes the `roaring.Bitmap` to use a 40/24 split in
the high and low bits. This change also requires the low bits
to use `uint32` instead of `uint16`.
2016-06-20 20:37:05 -06:00
Todd Gruben
021032dc2d Merge branch 'master' of github.com:umbel/pilosa 2016-06-15 08:56:47 -05:00
tgruben
42400cd92b Merge pull request #90 from benbjohnson/optimize-intersection
Optimize intersect()
2016-06-14 16:57:52 -05:00
Ben Johnson
5a6d81543c
optimize intersect()
This commit moves bitmap intersection into the `roaring` package
in order to reduce allocations.

Benchmarks against real world datasets show a speed improvement of
353%. Previously, intersection operated at approximately 5.6M
bits/sec against two 60K bit bitmaps with 30% overlap. The new
intersection operates at approximately 20M bits/sec.
2016-06-14 15:19:21 -06:00
Todd Gruben
620a109046 Merge branch 'master' of github.com:umbel/pilosa 2016-06-10 10:21:27 -05:00
Todd Gruben
98c7f8d361 tuning slicewidth 2016-06-10 10:21:23 -05:00
Todd Gruben
0010ea14f8 added info to owns fragrment error message 2016-06-10 10:19:54 -05:00
tgruben
aaea7a16f9 Merge pull request #89 from benbjohnson/buffered-import
Add buffered snapshot writer
2016-06-10 10:00:43 -05:00
Ben Johnson
64c29d4b6e
add buffered snapshot writer
This commit wraps the snapshot in a `bufio.Writer`.
2016-06-10 08:58:37 -06:00
tgruben
882d105e99 Merge pull request #88 from benbjohnson/optimize-import
Optimize Import
2016-06-09 16:47:27 -05:00
Ben Johnson
c330c2e4c0
sort bits on import
This commit sorts bits from import files before performing the input.
2016-06-09 14:25:41 -06:00
tgruben
2359f3975e Merge pull request #87 from benbjohnson/fix-client-fragment-nodes
Fix Client.FragmentNodes()
2016-06-08 11:27:31 -05:00
Ben Johnson
2d69f2c989
fix Client.FragmentNodes()
This commit fixes the hardcoded database field in
`Client.FragmentNodes()`.
2016-06-08 10:23:44 -06:00
Todd Gruben
a204ae419a fixed typo 2016-06-07 15:29:28 -05:00
Todd Gruben
2145a568d6 Merge branch 'master' of github.com:umbel/pilosa 2016-06-07 15:25:42 -05:00
Todd Gruben
b140eb1c56 added logging on import;crashing bug on sync on empty fragment 2016-06-07 15:25:37 -05:00
tgruben
bce1e53313 Merge pull request #86 from benbjohnson/fragment-allocation
Use db in fragment allocation
2016-06-07 15:18:48 -05:00
Ben Johnson
2d22ae55ee
use db in fragment allocation
This commit changes the fragment allocation algorithm in the cluster
to make use of the `DB` name. This allows each database to use a
different slice distribution.

Initially, the `frame` was going to be used for allocation, however,
this was problematic since queries can span multiple frames so it's
impossible to choose a single frame to use.
2016-06-07 14:01:13 -06:00
tgruben
810108aa32 Merge pull request #85 from benbjohnson/optimize-intersection-count
Optimize intersection count
2016-06-03 09:39:56 -05:00
Ben Johnson
357ae72f04
optimize intersection count
This commit moves the computation of the intersection count to
the `roaring` package so that no allocations are required. The
implementation operates at the roaring container level and has
specialized functions for array-array, array-bitmap, and
bitmap-bitmap container pairs.
2016-06-02 16:03:21 -06:00
tgruben
14dd6e595d Merge pull request #84 from umbel/slow_import
Slow import optimization
2016-06-01 14:58:35 -05:00
Todd Gruben
13f00b08ae code cleanup 2016-06-01 14:55:48 -05:00
Todd Gruben
a935f601a1 Import optimization 2016-06-01 14:10:34 -05:00
Todd Gruben
89b582f498 patched in assembly routines for reference 2016-05-27 11:15:14 -05:00
Todd Gruben
dea21d674d merge 2016-05-25 09:18:57 -05:00
Todd Gruben
954d8b5346 no alloc on search 2016-05-25 09:12:56 -05:00
tgruben
4103b5e7d2 Merge pull request #82 from benbjohnson/bitmap-refactor
Refactor in-memory bitmap storage
2016-05-24 16:31:55 -05:00
Ben Johnson
1a20e83a5b
refactor in-memory bitmap storage
This commit changes the underlying storage for `Bitmap` from a
red-black tree to a roaring bitmap. It also removes bitmaps from
the cache and only stores the bitmap count.
2016-05-24 15:01:49 -06:00
tgruben
4e99f4dc56 Merge pull request #81 from benbjohnson/pilosa-bench
pilosa-bench skeleton
2016-05-17 17:19:29 -05:00
Ben Johnson
afb3d1f46b
pilosa-bench skeleton 2016-05-17 15:45:24 -06:00
Todd Gruben
91b052f1c4 Merge branch 'master' of github.com:umbel/pilosa 2016-05-13 19:59:24 -05:00
Todd Gruben
d0abcfc910 changed slicewidth 2016-05-13 19:59:14 -05:00
tgruben
223e95b103 Merge pull request #79 from benbjohnson/server
Refactor main into pilosa.Server
2016-05-13 16:56:24 -05:00
Ben Johnson
523cf5bc0e
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
tgruben
d76aa17e9c Merge pull request #78 from benbjohnson/import-cache
Fix import cache updates
2016-05-13 10:17:34 -05:00
Ben Johnson
a206d55834
fix import cache updates
This commit fixes a bug in the import where the cache was not being
updated and the block checksum was not being invalidated.
2016-05-11 17:32:28 -06:00
tgruben
736b4f8b17 Merge pull request #77 from benbjohnson/consensus-block-merge
Consensus block merge
2016-05-09 14:01:29 -05:00
Ben Johnson
ebdd5f8477
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
Todd Gruben
d14c4b971d Merge branch 'master' of github.com:umbel/pilosa 2016-04-26 14:41:48 -05:00
Todd Gruben
2f5771eca1 check for iterator overflow 2016-04-26 14:41:37 -05:00