Commit Graph

147 Commits (c8f88f9a61cb237072f9703555f1356b96dd0d42)

Author SHA1 Message Date
Jason Wilder 43f0407178 Ensure a node can join an existing single node raft cluster 2015-07-23 10:21:23 -06:00
Jason Wilder cb718b9832 Only allow adding non-raft nodes for now
Adding raft nodes is more complicated and can break a cluster when
moving from 1 to 2 nodes.  This will be fixed in later PR.
2015-07-23 10:21:23 -06:00
Jason Wilder 9db3a779e9 Assign and store a node ID when joining an existing cluster 2015-07-23 10:21:23 -06:00
Jason Wilder 3f90891b82 Proxy raft and rpc connections to leader transparently
Nodes that are not part of the raft cluster will not reliably know who the
current raft cluster leader is.  To make communication simpler, proxy all
rpc and raft calls to the current raft leader if a non-leader receives one.
2015-07-23 10:21:23 -06:00
Jason Wilder e06f6f421b Add ability to join an existing cluster
This adds some basic ability to join a node to an existing cluster. It
uses a rpc layer to initiate a join request to an existing memeber. The
response indicates whether the joining node should take part in the raft
cluster and who it's peers should be.  If raft should not be started, the
peers are the addresses of the current raft members that it should delegate
consensus operations.

To keep the meta store implementation agnostic of whether it's running
a local raft or not, a consensusStrategy type was also added.
2015-07-23 10:21:22 -06:00
Jason Wilder abfd438a11 Implement remote meta data fetch
This adds some basic plumbing to make remote procedure calls to other cluster
members.  This first implementation allows a node to contact the raft leader
and fetch a copy of the meta data. This will be used by non-raft members to
pull down the latest metadata.
2015-07-23 10:21:22 -06:00
Philip O'Toole 641b38f394 Merge pull request #3256 from cannium/remove-unnecessary-timeout
Remove unnecessary timeout in WaitForLeader()
2015-07-19 12:01:22 -07:00
Philip O'Toole f549910a18 Merge pull request #3279 from LK4D4/fix_style_else
Fix style issues with else
2015-07-17 11:53:42 -07:00
gunnaraasen 9ba37325f6 Fixes authorization.
Adds GRANT and REVOKE statements for admin privilege. Adds authorization to the query endpoint.
2015-07-17 11:33:06 -07:00
Alexander Morozov 675eacbf2c Fix style issues with else
In go it's better to just continue flow without "else", if it is return in
"if" statement.

Signed-off-by: Alexander Morozov <lk4d4@docker.com>
2015-07-17 11:10:23 -07:00
gunnaraasen ee8ba11c4f Add ON token to SHOW RETENTION POLICIES parser with tests 2015-07-16 13:45:50 -07:00
Philip O'Toole 74cb96646c Refactor query engine for distributed query support
With this change, the query engine code gathers information about
shards and tagsets by working with individual shards, collating the
information, and returning that to the client. It does not assume that any
particular shard is local, and accesses all shards through abstracted
Mappers, of which there are two types -- a Mapper type for Raw queries
and a second type for Aggregate queries. There are corresponding
Executors for each type of Mapper, but both types of Executors share the
same interface.
2015-07-15 12:54:55 -07:00
Can ZHANG c41ef86c3c Remove unnecessary timeout in WaitForLeader()
If the timer expires and a leader is still not selected, the local data node will never be created.
2015-07-09 15:00:24 +08:00
Philip O'Toole bc15a6ea27 Set log prefix for Metastore
Log messages from this package do not look the same as all other log
messages.
2015-07-06 12:24:00 -04:00
Jason Wilder 30b15d3c55 Use salted hashes for in memory password cache 2015-06-30 16:55:30 -06:00
Jason Wilder 153d18f38c Add synchronization around authcache accesses 2015-06-30 18:29:36 -04:00
David Norton ba6bddc5f8 fix #3102: fix race in test 2015-06-30 18:29:36 -04:00
David Norton 3463d906e9 fix #3102: add unit test for authentication 2015-06-30 18:29:36 -04:00
David Norton debc3cc11c fix #3102: add authentication cache 2015-06-30 18:29:11 -04:00
Jason Wilder b9b80b3d55 Make show stats return error instead of panic 2015-06-29 22:53:02 -06:00
Philip O'Toole 05d660a24d Merge pull request #3169 from jbcrail/fix-spelling-errors
Fix spelling errors in comments and strings.
2015-06-29 12:47:35 -04:00
Philip O'Toole 88e8babc91 Shard supports returned OwnedBy node ID 2015-06-29 12:33:10 -04:00
Joseph Crail 5fccee3d16 Fix spelling errors in comments and strings. 2015-06-28 02:54:34 -04:00
Philip O'Toole 64ace983e8 Support return of shard groups for timerange 2015-06-26 17:28:52 -04:00
David Norton 4c194f2c8d fix #3014: make code review changes 2015-06-25 22:26:53 -04:00
David Norton e2f0814904 fix #3014: make code review changes 2015-06-25 20:10:17 -04:00
David Norton 3c7a82d91c fix #3014: implement snapshots 2015-06-25 19:54:00 -04:00
David Norton 90520beb70 fix #2944: update unit test 2015-06-22 15:40:31 -04:00
David Norton 0467aa8fec fix #2944: don't require WHERE time on create CQ 2015-06-22 15:39:22 -04:00
Vladimir Lopes 02b8c6fbf1 Don't use deleted shard groups on pre-creation
The way it was, shard groups that were deleted by retention policy
enforcement were being recreated again, just to be deleted in the
next enforcement run. This change will help keep raft log free from
this unnecessary creation and deletion.
2015-06-18 15:20:23 -03:00
Philip O'Toole 01720aa246 Fix excessive shard group creation logging
Fixes issue #3029.
2015-06-17 14:45:47 -07:00
Philip O'Toole 2428edb8a1 Correct skip of test 2015-06-17 11:58:16 -07:00
Philip O'Toole c73ae8b845 Skip test TestStatementExecutor_ExecuteStatement_ShowGrantsFor 2015-06-17 11:56:48 -07:00
Philip O'Toole 4b332b7348 Enforce minimum retention duration of 1 hour
Fixes issue #2991.
2015-06-17 11:02:07 -07:00
Dejan Golja 000d6b8b0b added tests for SHOW GRANTS FOR statements 2015-06-17 01:24:09 +10:00
Dejan Golja f133ceb350 Added support for SHOW GRANTS FOR USER syntax 2015-06-17 01:00:26 +10:00
Ben Johnson a966482a8e Ensure default retention policies are fully replicated
This commit sets the replication factor to the number of nodes
currently in the cluster.
2015-06-11 14:43:44 -06:00
Philip O'Toole eaae2a1afb Don't bother polling if leader already exists 2015-06-11 11:34:52 -07:00
Philip O'Toole 4dff5f48aa Export WaitForLeader on MetaStore
This exported function can then be used by Services and
server-reporting, so those components don't make progress until the
cluster is ready.
2015-06-11 11:10:07 -07:00
Philip O'Toole 431034c8f4 Wait for Raft leader even when cluster exists 2015-06-11 01:23:30 -07:00
Philip O'Toole b15a0df6d4 Wait for leader before reporting 2015-06-11 00:21:15 -07:00
Ben Johnson 405ec78f42 Limit cluster to 3 nodes
This commit restricts the maximum number of nodes in a cluster to 3.

Fixes #2750
2015-06-11 00:11:47 -06:00
Ben Johnson 52696ae3a1 Require replication factor to equal cluster size
This commit adds a requirement that retention policies must
be fully committed. This means that the replication factor
must be set to whatever the node count is in the cluster.

Fixes #2738
2015-06-11 00:11:03 -06:00
Ben Johnson 9f91cd7461 Fix missing protobuf data fields
This commit adds the following missing fields to the internal.Data:

- Term
- Index
- ClusterID
- MaxNodeID
- MaxShardGroupID
- MaxShardID
2015-06-10 22:48:44 -06:00
Ben Johnson 586da7f558 Generate cluster id on first node
This commit sets a cluster ID when the first node is initialized.
The ID is generated on every CreateNodeCommand so that it can be
applied consistently in the state machine of every server.
2015-06-10 22:33:58 -06:00
Ben Johnson bc31783a00 Refactor backup and restore
This commit updates the snapshot code as well as the "backup" and
"restore" command to work with the new architecture.
2015-06-10 22:07:01 -06:00
Philip O'Toole 5798d99692 Move shard precreation logic to meta/store 2015-06-10 15:37:00 -07:00
Philip O'Toole 481e1860a0 Remove obsolete shard precreation source 2015-06-10 15:27:38 -07:00
Philip O'Toole 6ce7c6e4ad Merge pull request #2852 from influxdb/panic_change_rp
Don't panic when altering retention policy
2015-06-09 14:16:11 -07:00
Philip O'Toole c455c374d1 Increase Raft timeouts during test
Previous timeouts may be too short for CI testing resources.
2015-06-09 12:32:16 -07:00
Philip O'Toole 21343e4e0f Don't panic when altering retention policy
Fixes issue #2846
2015-06-09 11:39:09 -07:00
Philip O'Toole 4b94a00644 Set auto-created retetion period to infinity
Fix issue #2817
2015-06-08 19:47:37 -07:00
Philip O'Toole cc03030b5e Add missing call to WaitGroup.Done()
Fix issue #2806
2015-06-08 11:10:02 -07:00
Philip O'Toole 38f38a5bd4 Improve AutoCreate camelcase 2015-06-06 17:03:52 -07:00
Philip O'Toole 5fcae1eb04 Improve Go style of retention auto-create 2015-06-06 17:02:32 -07:00
Philip O'Toole 37c11e4c5d Remove retention auto-create magic values 2015-06-06 17:02:32 -07:00
Philip O'Toole a64f7edc33 Add config support for retention autocreate 2015-06-06 17:02:32 -07:00
Philip O'Toole 8d9a28a583 Store supports auto-creating retention policy 2015-06-06 17:02:32 -07:00
Ben Johnson d3d43246e4 Add raft check to meta store. 2015-06-06 14:24:41 -06:00
Ben Johnson 5ffb032c43 Invalidate cache on shard owner lookup. 2015-06-05 23:23:10 -06:00
Jason Wilder 1024965db7 Create shard received from cluster writer 2015-06-05 22:16:51 -06:00
Ben Johnson 413da5cdc4 add mux.Serve() 2015-06-05 22:13:49 -06:00
Todd Persen 4bf024109f Merge pull request #2779 from influxdb/hook-CQs-back-2733
fix #2733: hook CQs back in
2015-06-05 20:40:31 -07:00
David Norton 5f49934a23 fix #2733: trying to fix CI race 2015-06-05 20:49:12 -04:00
Ben Johnson 6cf78206f0 refactor run.Server to use tcp.Mux 2015-06-05 16:31:58 -06:00
Ben Johnson db2d94a6a5 refactor store to use external listeners 2015-06-05 16:08:07 -06:00
Ben Johnson b925e1c1af Multi-node clustering.
This commit adds the ability to cluster multiple nodes together to share
the same metadata through raft consensus.
2015-06-05 14:41:19 -06:00
Philip O'Toole c59a234e7b Deleted shard groups are not counted as "expired" 2015-06-05 13:08:36 -07:00
Philip O'Toole d1864a4cdc Unit test expired and deleted shard groups 2015-06-05 12:31:10 -07:00
Philip O'Toole 5e5f2cd37d Move expired and deleted shard logic to MetaStore 2015-06-04 22:18:52 -07:00
Philip O'Toole 8600e2e036 Add shard group "DeletedAt" timestamps 2015-06-04 21:46:52 -07:00
Philip O'Toole fab9adb361 Hook in actual retention service 2015-06-04 17:02:22 -07:00
Philip O'Toole 5b77a0f8e4 MetaStore supports returning leader state 2015-06-04 17:02:22 -07:00
Philip O'Toole f449d8f687 Remove obsolete retention policy enforcer 2015-06-04 12:22:41 -07:00
Jason Wilder 4fa9fd5fe9 Merge pull request #2725 from influxdb/jw-client
Update client to use line protocol
2015-06-01 17:35:26 -06:00
Jason Wilder e400e8f2d6 Use default retention policy if not specified during writes 2015-06-01 17:16:44 -06:00
Cory LaNou d962283ae6 adding some integration tests 2015-06-01 16:04:20 -06:00
Cory LaNou d581254719 fix tests 2015-06-01 11:59:58 -06:00
Cory LaNou 3597565955 reading and writing yo! 2015-06-01 11:59:58 -06:00
Ben Johnson bf823d9887 Integrating cmd/influxd/run. 2015-05-30 14:06:36 -06:00
Paul Dix f3245ab9ac Make Authenticate return true if no users and creating a root user. 2015-05-30 14:29:16 -04:00
Ben Johnson 8c8a55a737 Removed 'failed' from test suite. 2015-05-30 08:59:27 -06:00
Ben Johnson 4872e6db7c Move services to subpackage. 2015-05-30 08:20:12 -06:00
Ben Johnson 6677ea074f more services, more test fixes, getting closer... 2015-05-29 14:59:57 -06:00
Ben Johnson 9d4527071e Refactor run command. 2015-05-29 14:59:57 -06:00
Ben Johnson 1f294ce8de Add httpd.Handler.serveQuery() tests. 2015-05-29 14:59:57 -06:00
Paul Dix 072dacc1ab Update tx.go to work with tsdb 2015-05-29 14:59:57 -06:00
Ben Johnson df1aeee70a WIP 2015-05-29 14:56:30 -06:00
Ben Johnson 75ab63b538 Refactor meta statement execution to meta.StatementExecutor. 2015-05-29 14:54:04 -06:00
Ben Johnson 736875b858 Integrate meta package. 2015-05-29 14:54:04 -06:00
Ben Johnson 7258a9be3c Implement meta.Store and meta.Data. 2015-05-25 16:28:58 -06:00
Jason Wilder 01d7bfb398 Move coordinator to data package 2015-05-21 10:16:54 -06:00
Ben Johnson 12e4253e15 Add single-node raft back metastore.
This commit adds the meta.RaftStore which can start a single node
cluster and create nodes on the meta.Data internal structure.

Conflicts:
	meta/meta.go
2015-05-20 16:49:03 -06:00
Jason Wilder 0361d2d61a Move point/shard calculation to ShardGroupInfo 2015-05-20 10:01:29 -06:00
Ben Johnson 19ece442d8 Add meta.Store accessors. 2015-05-08 11:56:08 -06:00
Ben Johnson 85e285623e Refactor meta data to separate package.
This commit moves meta data from the influxdb.Server and extracts it
out to a new "meta" package. This package handles all strongly
consistent data in the database and maintains a small set of metadata
in-memory.

Conflicts:
	meta/store.go
2015-05-08 11:52:05 -06:00
Jason Wilder 229638cfaf Write path interfaces
This adds some placeholder interfaces for the new write path.
2015-05-07 23:12:12 -06:00