Commit Graph

166 Commits (134ab87a49d81db7d2a3aaf509dfc56b6316534b)

Author SHA1 Message Date
Philip O'Toole 134ab87a49 Store a []interface{} in an interface{}
This is really pushing the type system, but needs to be done to cleanly
combine the raw and aggregate output mapper types.
2015-07-17 08:23:36 -07:00
Philip O'Toole 0d6c6bbe6f Correctly check if raw derivative is required
The multiple checks for Mapper and Executor type -- the lack of DRYness
in this code -- meant the same checks would need to be copied. Therefore
this change, as well as fixing the bug, improves the situation a little
bit by *asking* the Mappers what type of Executor is required. This code
is still not ideal.

Fixes #3355.
2015-07-16 23:28:38 -07:00
Philip O'Toole a1ac8e49cc Correct JSON tag name 2015-07-16 21:39:43 -07:00
Philip O'Toole 3ddff9114d Delimit measurement name for Mapper tagsets 2015-07-16 13:28:49 -07:00
Philip O'Toole d8c31f0b3c Merge pull request #3320 from influxdb/streaming_dq
Support Distributed Queries
2015-07-16 12:33:21 -07:00
Philip O'Toole 16250c5976 More replacement of "now" to outside loop 2015-07-16 12:19:46 -07:00
Philip O'Toole 6131983f83 More unit tests of tagset ordering across Mappers 2015-07-16 11:42:08 -07:00
Philip O'Toole c468a65bd2 Actually check tagset when looking for lowest time 2015-07-16 11:33:09 -07:00
Philip O'Toole 76d5b7085e Add engine unit tests 2015-07-15 22:28:41 -07:00
Philip O'Toole 2d162acb53 Rename query_engine.go to engine.go
The functionality in this file is more like the older file, so a rename
makes sense.
2015-07-15 22:06:08 -07:00
Philip O'Toole e254245f2f Implement simple remote node choice policy 2015-07-15 19:53:10 -07:00
Philip O'Toole f41d2bab5d Start move to unified query executor 2015-07-15 19:31:13 -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
Philip O'Toole 09d7dfbaae Form database path correctly on DROP DATABASE
Fixes #3330
2015-07-15 11:14:49 -07:00
Jason Wilder ebd6e55997 Fix regression parsing boolean True/False values 2015-07-13 11:29:02 -06:00
Jason Wilder f4f0373579 Sort points after appending if needed
Writing points that were not sorted by time could cause very high
CPU usages and increased latencies because each point inserted would
cause the in-memory cache to be resorted.  The worst case would be
writing a large batch of N points in reverse time order which would
invoke N sorts of the slice.

This patch keeps track of which slices need to be sorted and sorts
them once at the end.  In the previous example, the N sorts becomes
one.  There is still a pathalogical case that would require N/2 sorts.
For example, 10000 points split across 5000 series.  Each series has two
points that are in reverse time order.  This would incur 5000 sorts still.

Fixes #3159
2015-07-13 10:51:58 -06:00
Jason Wilder 1641c25479 Fix panic parsing floats without decimal
Fixes #3289
2015-07-10 14:18:51 -06:00
Philip O'Toole 7a87fbc58a Flush WAL as fast as possible on start-up
This addresses complaints of long start-up times when there is lots of
data sitting in the WAL.
2015-07-08 17:14:28 -06:00
Jason Wilder 6b8d3268e6 Fix code review comments 2015-07-07 11:41:12 -06:00
Jason Wilder cb75de8b7c Use UTC for test assertion data 2015-07-06 21:11:09 -06:00
Jason Wilder 351bc03655 Don't panic if NaN or -/+Inf is used as a field value
These are not supported types but previously it would cause the
point.Fields() func to panic.  This prevents it from panicing
so the values can be ignored if needed.
2015-07-06 16:14:02 -06:00
Jason Wilder 4d511571c5 Serialized unknown types as strings
When creating a point manually, the field values are interface{}
which allows unsupported types to be passed in.  Previously, the
code would panic.  It will now default to string representation of
the value if it's not a known type.
2015-07-06 16:14:02 -06:00
Jason Wilder 736f1c142e Only start flush timer if duration is set
The default of 0 causes the time timer to flush immediately.  If
only a batch size is set but not a time, the batch size setting does
not work.
2015-07-06 16:14:02 -06:00
Jason Wilder a3ab093996 Parse NaN as float
Fixes #3230
2015-07-06 16:14:01 -06:00
Philip O'Toole dd66491f65 stringSet now returns elements in sorted order 2015-07-06 12:03:58 -04:00
Philip O'Toole ca86fa2633 Allow WAL inter-flush time to be configurable 2015-07-02 10:40:26 -04:00
Philip O'Toole 39af8e49de Remove obsolete retention config from tsdb 2015-07-01 09:39:11 -04:00
Philip O'Toole 071c985b5b Remove obsolete retention auto-create from tsdb 2015-07-01 09:37:29 -04:00
Philip O'Toole babc63d941 Use typed error for "field not found" 2015-06-30 14:17:04 -04:00
Philip O'Toole 7a284885f2 Add helper to decode specific field by name 2015-06-30 14:16:54 -04:00
Philip O'Toole fde3d1f6a2 Remove unused, unexported function 2015-06-30 13:28:56 -04:00
Jason Wilder 41ae8bdae7 Handle escaped commas in measurement name
Fixes #3183
2015-06-29 15:15:50 -06:00
Jason Wilder eb71f78afb Merge pull request #3167 from influxdb/jw-2608
Fix panic when droppping measurement while writing to it concurrently
2015-06-29 14:05:42 -06:00
Jason Wilder 7232e6ea7c Fix panic when droppping measurement while writing to it concurrently
Fixes #2608
2015-06-29 14:01:07 -06:00
Joseph Crail 5fccee3d16 Fix spelling errors in comments and strings. 2015-06-28 02:54:34 -04:00
Jason Wilder 1a5a8d1675 Fix typos in comments 2015-06-26 14:36:19 -06:00
Jason Wilder d33b8bcd6a Return parsing error when tag name is missing
Fixes #2678
2015-06-26 13:47:09 -06:00
Jason Wilder 5081481ca8 Return error when parsing fields with no name
Fixes #3061
2015-06-26 13:39:25 -06:00
Ben Johnson b574e2f755 Add write ahead log
This commit adds a write ahead log to the shard. Entries are cached
in memory and periodically flushed back into the index. The WAL and
the cache are both partitioned into buckets so that flushing doesn't
stop the world as long.
2015-06-25 15:47:13 -06:00
Jason Wilder 17432598b1 Prevent out of range ints and floats from being parsed sucessfully
Field values that were out of range for the type would panic the database
when being inserted because the parser would allow them as valid points.
This change prevents those invalid values from being parsed and instead
returns an error.

An alternative fix considered was to handle the error and clamp the value
to the min/max value for the type.  This would treat numeric range errors
slightly differently than other type erros which might lead to confusion.

The simplest fix with the current parser would be to just convert each field
to the type at parse time.  Unfortunately, this adds extra memory allocations
and lowers throughput significantly.  Since out of range values are less common
than in-range values, some heuristics are used to determine when the more
expensive type parsing and range checking is performed.  Essentially, we only
do the slow path when we cannot determine that the value is in an acceptable
type range.

Fixes #3127
2015-06-25 14:49:42 -06:00
Sean Beckett 01440f90e9 Merge pull request #3095 from influxdb/beckettsean-patch-3
more examples for line protocol
2015-06-23 15:20:26 -07:00
Sean Beckett c2a1511e2e Update README.md 2015-06-23 15:19:53 -07:00
Sean Beckett 92b38583f3 more examples for line protocol
showing escape characters and proper string quoting
2015-06-22 17:10:24 -07:00
Sean Beckett 1d9aa31e7b Merge pull request #3072 from influxdb/beckettsean-patch-3
typos, clarifications in line protocol doc
2015-06-22 17:00:31 -07:00
Philip O'Toole cb7baa6d9e Don't group TagSets when tag values are identical
Fixes issue #3059
2015-06-22 16:04:13 -07:00
Jason Wilder 7873ccbb20 Merge pull request #3039 from neonstalwart/line-comments
allow comments in line protocol
2015-06-22 14:09:56 -06:00
Jason Wilder cc7e59a12a Merge pull request #3088 from influxdb/jw-field-values
Fix string field value escaping
2015-06-22 13:48:47 -06:00
Jason Wilder 2854108941 Fix string field value escaping
Commas and quotes could get escaped and parsed incorrectly if they
were both present in a string value.

Fixes #3013
2015-06-22 13:17:35 -06:00
Philip O'Toole 01700f79b0 On DROP DATABASE remove from TSDB index 2015-06-22 11:44:46 -07:00
Jason Wilder cb9a40df64 Fix invalid field value format not parsed correctly
A field value of just a numeric value would be accepted by the line
protocol parser but the value would be set as the field name and
the value would be nil.  Instead, return an error because all field
values need a field name.
2015-06-22 10:35:08 -06:00