Commit Graph

186 Commits (0.11)

Author SHA1 Message Date
Ben Johnson 41dde61226 SHOW SERIES 2016-03-08 11:47:57 -07:00
Jason Wilder a54befbd96 Fix comment typo 2016-03-02 09:22:20 -07:00
Jason Wilder a1c9ce67d6 Switch remote write logic back to original version
CreateShard is expensive and should not be called for every write
request.
2016-03-01 21:23:28 -07:00
Jason Wilder 43118ce78e Send database and retention policy with remote writes
There was a race where a remote write could arrive before a meta
client cache update arrived.  When this happened, the receiving node
would drop the write because it could not determine what database
and retention policy the shard it was supposed to create belonged
to.

This change sends the db and rp along with the write so that the
receiving node does not need to consult the meta store.  It also
allows us to not send writes for shards that no longer exist instead
of always sending them and having the receiving node logs fill up
with dropped write requests.  This second situation can occur when
shards are deleted and some nodes still have writes queued in hinted
handoff for those shards.

Fixes #5610
2016-03-01 21:23:03 -07:00
Jonathan A. Sternberg aa0b603938 Convert `SHOW FIELD KEYS` to the new query engine
Fixes #5579.
2016-02-25 18:31:02 -05:00
Jonathan A. Sternberg cddc1b2241 Fix remote execution for partially replicated clusters
The RPC handler for remote queries would attempt to reuse a closed
connection for certain commands that didn't use pooling. The RPC
commands that close the connection have been fixed to not try reusing
the connection.

When creating an iterator, if there are no points to return, the points
decoder would hit an EOF that it didn't catch and would return that
error back to the client who made the request. It now properly returns
no points by using a `nilFloatIterator` if there are no points to
return.

This fixes remote execution when a cluster has nothing to return.
2016-02-25 17:46:51 -05:00
Ben Johnson 16eea8eecc add SeriesList marshaling 2016-02-25 15:38:16 -07:00
Ben Johnson 0dda9f6608 add remote execution
This commit adds remote execution to the query engine.
2016-02-25 08:41:20 -07:00
David Norton b30647667b fix MetaExecutor max write connections 2016-02-24 11:24:45 -05:00
David Norton 0022cfe6fd add test for meta.MetaExecutor.ExecuteStatement 2016-02-24 11:24:45 -05:00
David Norton 13b3567449 check number of nodes in meta_executor 2016-02-24 11:24:45 -05:00
Edd Robinson f9c95ad266 More useful error message for node failure 2016-02-24 11:24:45 -05:00
David Norton bb97bb86d4 remove cruft from defer conn close 2016-02-24 11:24:45 -05:00
Edd Robinson 8add49fd96 Ensures meta queries work in clusters.
Fixes #5612, #5573 and #5518.

Using the MetaExecuter, queries that need to run on both data nodes
and optionally the meta store will be executed across all data nodes
in the cluster.
2016-02-24 11:24:45 -05:00
David Norton 4d4e382ddf Add a Meta Executor.
The Meta Executor will make allow data nodes to execute queries
remotely on each other, via RPC calls.
2016-02-24 11:24:22 -05:00
Edd Robinson 99a7341701 Wire up DROP retention policy to TSDB store.
Fixes #5653 and #5394.

Previously dropping retention policies did not propogate to local TSDB
shards. Instead, the retention policiess would just be removed from the
Meta Store.

This PR adds ensures that data associated with retention policies is
removed, when the retention policy is dropped.

Also, it cleans up a couple of other methods in `tsdb`, including the
requirement to provide (redundant) shardIDs when deleting databases.
2016-02-19 11:15:00 +00:00
Mark Rushakoff 691a2a97f0 Track queries active, query duration stats 2016-02-17 16:11:30 -08:00
Ben Johnson eb221a5adb Merge pull request #5663 from benbjohnson/query-executor
Refactor QueryExecutor (WIP)
2016-02-17 16:30:20 -07:00
Ben Johnson e3b4b71c13 refactor query executor
This commit moves the `QueryExecutor` to the `cluster` package
and provides an interface to it inside the `influxql` package.
2016-02-17 15:13:56 -07:00
Ady af17b9d8a7 Zero timeout set to support all platforms 2016-02-16 21:21:39 +05:30
Ady 58cccaa202 Update timeout for Dial, in order to work in Windows 2016-02-15 22:22:44 +05:30
Ady b850c13dc5 Modify Dial timeout in test to 0 nano sec to make it pass in Windows 2016-02-15 21:40:13 +05:30
Ady 80a2874361 Merge branch 'master' of https://github.com/influxdata/influxdb into mvadu-patch-ErrDialTimeout
Accomodate name change from influxdb->influxdata
2016-02-13 23:01:01 +05:30
Ady 0a00a59f28 test with more data points 2016-02-11 07:50:15 +05:30
Ady e68dd9a85a Modify WriteTLV with debug prints. Revert chnages to shard_writer 2016-02-11 07:29:47 +05:30
Ben Johnson d9a6a7340f add canonical paths 2016-02-10 11:30:52 -07:00
Ben Johnson 5a0d1ab7c1 rename influxdb/influxdb to influxdata/influxdb
This commit changes all the import and URL references from:

    github.com/influxdb/influxdb

to:

    github.com/influxdata/influxdb
2016-02-10 10:26:18 -07:00
Ben Johnson 5c33b9d786 remove Mapper test references 2016-02-10 09:40:30 -07:00
Ben Johnson cde973f409 refactor query engine 2016-02-10 09:40:24 -07:00
Adarsha 1c7d29b79b Add 1ns delay
Windows does not timeout when the timeout is set to 1Nano sec. This causes TestShardWriter_Write_ErrDialTimeout to fail in Windows.

```go
=== RUN TestShardWriter_Write_ErrDialTimeout
[cluster] 2016/02/10 09:32:30 Starting cluster service
[cluster] 2016/02/10 09:32:30 accept remote connection from 127.0.0.1:57034
[cluster] 2016/02/10 09:32:30 unable to read type-length-value read message type: WSARecv tcp 127.0.0.1:57033: use of closed network connection
[cluster] 2016/02/10 09:32:30 close remote connection from 127.0.0.1:57034
[cluster] 2016/02/10 09:32:30 cluster service accept error: network connection closed
--- FAIL: TestShardWriter_Write_ErrDialTimeout (0.00s)
	shard_writer_test.go:162: expected error <nil>, to contain i/o timeout
```
2016-02-10 09:34:53 +05:30
Michael Mattioli 28f80a79e7 Removed unused code from balancer.go
Removed a block of code that was commented out
without explanation and provides no benefit
whatsoever
2016-02-03 21:33:28 -05:00
Jason Wilder d54f930c2d Don't parse points twice when receiving remote writes
The monitoring stats were causing points to be parsed twice create
more cpu time just parsing points.
2016-01-27 14:24:56 -07:00
Jason Wilder 47c5ade858 Use faster point parsing for remote writes
Parsing the line protocol again on the receiving side of the remote
write consumes a lot cpu.  This uses a different marshaling format
that is much faster to parse after we already parsed the point on
the write side.
2016-01-27 14:24:09 -07:00
Jason Wilder 5abdb42a7d Use a bounded pool for remote writes
Under highly conncurrent write load, the coordinating node would
create a connection to any other node that is part of the replica
group.  Since each connection can be expensive, OOM sitations could
occur because there was no bounds on the number of new connections
that would be created.  If writes on a remote node were slow, connections
could pile up an exacerbate the problem.

This switches the pool to be bounded and has a checkout that is blocking
with a timeout.  If a connection is available, it's returned immediately.
If the pool still has room for more connections, it will create one if needed.
Otherwise, the call will block until a connection becomes available or
the timeout expires.  In the case of a timeout, it is propogated back up
to the PointsWriter that determine what do return to the client.
2016-01-26 17:08:36 -07:00
Jason Wilder f58f0f5373 Fix cluster tests 2016-01-21 15:28:34 -05:00
Jason Wilder e901b648a6 Use TCPHost for writing and query to other nodes 2016-01-21 15:28:34 -05:00
Paul Dix fb9181d240 Fix meta-service build 2016-01-21 15:28:33 -05:00
Paul Dix f385945058 Update Server to work with new metaservice/client 2016-01-21 15:28:33 -05:00
Cory LaNou 8d878fff91 buildable meta -> services/meta 2016-01-21 15:28:32 -05:00
liang@qiniu.com c13f8e9128 Fix wrong results of distributed aggregative query 2015-12-08 07:08:46 +08:00
liang@qiniu.com 4026236659 fix issue 4801 2015-11-18 00:56:05 +08:00
Nathaniel Cook 1719a6107c PointsWriter will drop writes to subscriber service for any in-flight writes 2015-11-05 16:25:00 -07:00
Philip O'Toole de7919240f Migrate internal stats to consistent names
Go style -- and existing runtime stats -- do not use underscores, but
instead use camel case. This change makes the internal stats adhere to
that convention.
2015-10-28 21:07:45 -07:00
Philip O'Toole 2f80e68b2a Move node balancer into cluster package
Initial work for #3377.
2015-10-28 14:35:03 -07:00
Jason Wilder 0926b19e6b Prevent creating points with NaN float values
Float values are not supported in the existing engine and the tsm1
engines.  This changes NewPoint to return an error if a field value
contains a NaN field.  It also allows us to validate fields to prevent
other unsupported types from sneaking in through other input plugins.
2015-10-27 17:12:52 -06:00
MrLee.Kun 883640a288 change cluster logger tag 2015-10-27 15:32:51 +08:00
Charles Chan 9382d5b534 Fix typos.
* non-existant --> non-existent
* propogate --> propagate
2015-10-17 07:36:56 -07:00
Nathaniel Cook cb1aaa8e42 Merge pull request #4375 from influxdb/subscriptions
Feature add subscriber service for creating/dropping subscriptions
2015-10-15 09:17:26 -06:00
Sean Beckett 82f104a8b1 Merge pull request #4436 from influxdb/tag-names-to-keys
WIP tag name --> tag key, field name --> field key
2015-10-14 16:02:46 -07:00
Nathaniel Cook 8b31007aa7 Adds subscriber service for creating/dropping subscriptions to the
InfluxDB data stream.
2015-10-14 15:23:45 -06:00