Commit Graph

199 Commits (1.0)

Author SHA1 Message Date
Jason Wilder a2d3d44505 Fix creating meta only nodes
This fixes a couple of issues with starting meta-only nodes.

1. We were always calling CreateDataNode regardless of whether the the
node is running data services.  We only call that now when node is
data enabled.
2. The node.json was created along-side creating the data node. Since
we are not creatinga a data node, this didn't happen anymore.  There
wasn't a simple way to do this in one place so it's actually handle
for when creating a meta or a data node now.  Since the ID assigned
to the node is the same regardless of role this works in all combinations
of roles.
3. The JoinMetaServer didn't return the ID of the joining node which
created some races when multiple nodes were joining.  The join call now
returns that information to the caller.

Fixes #5754
2016-02-22 15:06:05 -07:00
oiooj f1c027543c No need check Meta.Dir twice 2016-02-20 23:54:24 +08:00
Jason Wilder dedd6f2e9e Fix hostname/bind addresses
This fixes several issues related to the bind address and hostname:
* Allows bind addresses where a hostname or IP is not specified to
work correct and bind to all interfaces by default.
* Fixes the top-level "hostname" config option to allow overridding
all bind address hostnames.  This allows a node to advertise a different
hostname than what is defined in the bind address setting.
* Adds the -hostname command-line option back to allow specifing
both -join and -hostname as command-line flags.
* Enforces a configuration precedence and overriding ability defined
as config file is overridden by env vars which are overriden by command-line
flags.

Fixes #5670 #5671
2016-02-18 14:45:34 -07:00
Mark Rushakoff 57dd54250f Correctly set X-Influxdb-Version in meta httpd 2016-02-18 12:34:03 -08: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
Jason Wilder 6fb00c1a9b Remove MetaServers from node.json
This removes the MetaServers property from node.json to eliminate one
of the four places those addresses are stored on disk.  We always use
the values that come through the config (via file, env var or -join arg).
2016-02-15 22:42:51 -07:00
Cory LaNou 7ad31fa6ab address pr feedback 2016-02-12 11:35:20 -07:00
Jason Wilder ddcfac7e8e Remove peers.json
No longer needed now that peers are pull from the meta nodes.
2016-02-12 11:35:20 -07:00
Cory LaNou 360f40561e misc fixes and changelog 2016-02-12 11:35:19 -07:00
Jason Wilder e1effa6601 fix build after rebase on master 2016-02-12 11:32:53 -07:00
Ben Johnson 50616f0a47 fix additional influxdata renames 2016-02-10 14:19:42 -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 08f823546d fix rebase issue 2016-02-10 09:40:29 -07:00
Ben Johnson cde973f409 refactor query engine 2016-02-10 09:40:24 -07:00
runner.mei 978305a6dd fix unit test of influxd in the windows
fix unit test of influxd in the windows
2016-02-05 11:44:14 +08:00
Jason Wilder 1c19320e79 Merge pull request #5515 from influxdata/jw-config
Remove top-level dir config option
2016-02-02 13:26:11 -07:00
Jason Wilder 51da6e3d56 Remove top-level dir config option
This breaks backup/restore if it's not "meta" as well as breaks
upgrades from prior releases for some users.
2016-02-02 13:03:44 -07:00
Seif Lotfy c3fb710871 Initialize MetaClient before setting it up as a data and/or meta node
Take out MetaClient initialization from initializeDataNode and invoke it
in (server.)Open after MetaService is opened.
Fixes #5479
2016-02-02 17:39:29 +01:00
Cory LaNou 53323737b2 no longer need nil check 2016-01-28 10:05:54 -06:00
Cory LaNou d70b694d7d fix misc meta statup bugs 2016-01-28 10:05:53 -06:00
Cory LaNou 31c2e7012a allow for node upgrade 2016-01-28 10:05:53 -06:00
Jason Wilder 716714364a Backup node.json with metastore backup 2016-01-27 17:39:54 -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 1696db1c40 Fixup default hostname and config 2016-01-22 17:05:25 -07:00
Jason Wilder bbe13c2818 Ensure HTTP and TCP bind addresses have hostnames
If a bind-address of :8088 is used, cluster nodes cannot
connect to those nodes because there is no hostname portion
of the address.  When we see a bind-address without a hostname,
use the os hostname or localhost if that fails if it is not specified
in the config already.
2016-01-21 15:28:34 -05:00
Paul Dix 7b71b66e31 Update meta service, meta client, and httpd handler
* Improve the ping endpoint so that it can optionally check for leader agreement across all meta servers
* Add Ping method to the meta client
* Fix ClusterID tests
* Remove WaitForLeader from meta client and remove unnecessary references to it
2016-01-21 15:28:33 -05:00
Paul Dix 68f33c93ce Finish wiring up meta service to server 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
Paul Dix c9d82ad0ad Wire up meta service functionality
* Add dir, hostname, and bind address to top level config since it applies to services other than meta
* Add enabled flags to example toml for data and meta services
* Wire up add/remove raft peers and meta servers to meta service
* Update DROP SERVER to be either DROP META SERVER or DROP DATA SERVER
* Bring over statement executor from old meta package
* Start meta service client implementation
* Update meta service test to use the client
* Wire up node ID/meta server storage information
2016-01-21 15:28:32 -05:00
Cory LaNou 9ec7a710c9 some misc refactoring on influxd startup 2016-01-21 15:28:32 -05:00
Cory LaNou 8d878fff91 buildable meta -> services/meta 2016-01-21 15:28:32 -05:00
Tim Raymond 718fb92cf5 Remove registration, add 'usage-client'
Server registration and stats reporting has been removed from what was
once http://enterprise.influxdata.com. The app that lived there, now
runs at http://usage.influxdata.com, so that the subdomain can
eventually be repurposed. Because we also want to repurpose the
`enterprise-client` repo, we have also renamed that to `usage-client`.
InfluxDB no longer needs the `registration` service now, since all of
the endpoints it communicates with simply discard the data provided to
them.
2015-12-10 15:58:34 -05:00
David Norton 76d291e88e beginning of cluster test harness 2015-12-03 08:04:09 -06:00
Mark Bates 98632778dd %s will convert a float to a less than useful string. %v is better. 2015-11-20 15:43:35 -05:00
Mark Bates c71e323d63 ServerID and ClusterID need to be strings when being sent to Enterprise. 2015-11-20 15:22:27 -05:00
Pablo Miranda b908cbb866 fix lint errors for cmd/...
corrects the initialize package comment for lint

brings c.ServerVersion back
2015-11-10 23:13:01 -08:00
Mark Bates 8ac958f8a0 Merge pull request #4683 from influxdb/enterprise-client
Updated to use the new Enterprise Client
2015-11-06 13:13:15 -05:00
Mark Bates d46bf535b2 Report anonymous stats to Enterprise 2015-11-06 10:30:57 -05: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 f703f58d22 Add HH diagnostics 2015-10-26 18:59:58 -07:00
Philip O'Toole 878663e1e3 Periodic upload of stats to Enterprise 2015-10-19 15:25:07 -07:00
Philip O'Toole 667ad3342a Refactor registration as a service
Registration also involves statistics and diagnostics upload, for the
purposes of remote management. This means there will be long-running
goroutines in effect. Therefore move the code to a service model.
2015-10-19 15:01:14 -07:00
Mark Bates 8f16a85cd2 Fixed issue sending JSON numbers to Enterprise when it wants strings 2015-10-15 16:51:48 -04:00
Philip O'Toole 0f001a6d9a Handle registration errors from Enterprise server 2015-10-15 13:48:23 -07:00
Philip O'Toole 07db774423 Register with Enterprise if token available 2015-10-15 13:13:34 -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
Philip O'Toole f298e88b39 Auto-create UDP service database
All other services operate like this, so make UDP service consistent.
2015-10-14 08:30:09 -07:00
Daniel Morsing 48223a90f9 Fix spelling nit.
Make it obvious that INTO is a keyword and not part of the sentence
2015-10-14 15:16:27 +01:00
Daniel Morsing 822af73f88 implement continuous queries as regular execs of into queries.
Now that we have into queries, we can implement them as regular
queries that are just run on a timer.
2015-10-13 15:51:19 +00:00
Daniel Morsing 62dff895e2 wire up INTO queries.
Since INTO queries need to have absolute information about the database
to work, we need to create a loopback interface back to the cluster
in order to perform them.
2015-10-13 15:00:36 +00:00
Philip O'Toole 5b0a8ed306 HH should not process dropped nodes 2015-10-08 18:23:12 -07:00
Philip O'Toole d74e0690c7 Revert "Merge pull request #4233 from influxdb/drop-server"
This reverts commit 0bdb36f6dc, reversing
changes made to 3085fbc138.
2015-10-02 08:39:57 -07:00
Cory LaNou 99da67007d no more shutdown 2015-10-01 15:39:15 -05:00
Cory LaNou 73372ed907 [Ee]xecuteShutdown -> [Mm]onitorShutdown 2015-10-01 15:39:15 -05:00
Cory LaNou 34bfb6b330 be sure to exit the go routine if we terminate normally 2015-10-01 15:39:15 -05:00
Cory LaNou 7a3e1f6b27 removing peer wip 2015-10-01 15:39:15 -05:00
Philip O'Toole 7cb8c2d2ec Add build timestamp to version data 2015-09-24 23:40:53 -07:00
Philip O'Toole f73bc6ff19 Merge pull request #4140 from influxdb/engine_config
Make engine configurable
2015-09-16 21:17:43 -07:00
Philip O'Toole 7b1a4e6700 Control whether each query should be logged
Fixes issue #4138
2015-09-16 19:26:23 -07:00
Philip O'Toole e4fde993f1 Make engine configurable 2015-09-16 19:09:25 -07:00
Philip O'Toole 0ea0a3a71b Add build info to diagnostics 2015-09-09 12:43:51 -07:00
Philip O'Toole 402576bd93 Pass richer build information to Server 2015-09-09 12:36:32 -07:00
Jason Wilder 77d310337c Clarify comment 2015-09-08 11:05:39 -06:00
Jason Wilder dabb01691e Close server is reverse order that it was started
The server was closing by stopping the most depended on services first
which causes various panics while higher level services are still processing
task when the server closes.

Fixes #3881
2015-09-08 11:04:00 -06:00
Jason Wilder b8da247b08 Open monitor server after metastore is ready 2015-09-05 09:06:51 -06:00
Ben Johnson deff06f850 add copier service
This commit adds the copier service which allows one server to
copy shards from another server. This will be used for moving
shards in the cluster.
2015-09-03 13:07:35 -06:00
Philip O'Toole d820fa7649 Add PointsWriter to monitor
This will allow the monitor to persistently store statistics
2015-09-02 15:45:11 -07:00
Philip O'Toole 9165a0cf4c Create statement_executor for monitor 2015-09-02 15:44:56 -07:00
Philip O'Toole 4e2ee1ea70 Rename MonitorService to just Monitor
monitor is not a service, it has more in common with meta, since it
provides functionality to the query layer. This names makes this
clearer.
2015-09-02 15:07:30 -07:00
Philip O'Toole 9df17409d3 Use monitor service with Graphite 2015-09-01 15:21:36 -07:00
Philip O'Toole f05dc20b58 Hook new monitor service to server
u
2015-09-01 15:03:52 -07:00
Paul Dix 9df3b7d828 Add WAL configuration options 2015-08-18 16:59:54 -04:00
Jason Wilder f07b8d4016 Make sure port is optional when passing hostanme flag 2015-08-12 10:41:43 -06:00
Philip O'Toole 8dbcff833b Revert "Revert "Merge pull request #3599 from tpitale/multiple-udp-servers""
This reverts commit 5f83f038e1.
2015-08-10 16:21:27 -07:00
Philip O'Toole 5f83f038e1 Revert "Merge pull request #3599 from tpitale/multiple-udp-servers"
This reverts commit 7f35d65412, reversing
changes made to f828781544.
2015-08-10 14:44:14 -07:00
Philip O'Toole 7f35d65412 Merge pull request #3599 from tpitale/multiple-udp-servers
Change single udp config to support multiple UDP listeners
2015-08-10 14:22:27 -07:00
Tony Pitale e943afacdc Change (previously unused) single udp config to support multiple UDP listeners
do not use NewConfig for UDP

appendUDPService must return a value

udp service does not need to handle error

fix missing case of c.UDP in tests
2015-08-09 11:28:09 -04:00
Jason Wilder 87376a1c35 Allow -hostname to also override remote addr port
When starting a influxd in a docker container, the processess needs to know
the hosts address and port in order to create its NodeInfo correctly.  -hostname
previously only allowed us to change the hostname and the port would always be 8088
which may not be correctly if running multiple containers on the same host.
2015-08-07 14:03:08 -06:00
Jason Wilder 2b76dac479 Don't resolve hostname when creating node
Hostnames were always being resolved to an IP address and the IP
address was used as the host address and raft peer address.  There
was no way to use an actual hostname instead of an IP address.
2015-08-05 14:17:26 -06:00
Jason Wilder b6c95925fb Add retry delay for report service loop when error occurs
There is a race when stopping servers where the meta.Store is closing
but the server has not signaled it is closing so the reporting goroutine
repeeatedly errors out in fast loop during this time.  It creates a lot
of noise in the logs.
2015-07-28 09:40:26 -06:00
Jason Wilder 514f36cf54 Exit report goroutine if server is closing 2015-07-28 09:40:25 -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
Ben Johnson a7f50ae03c refactor storage to engine 2015-07-22 11:08:10 -06:00
Philip O'Toole 10eecb441d Allow remote mapping to be forced
This is useful primarily for testing.
2015-07-20 10:44:45 -07:00
Philip O'Toole 425a65fca1 RemoteShard mapping now performed over TCP
With this change remote mapping no longer uses HTTP, as the HTTP ports
exposed by nodes on the cluster are not known cluster wide. The TCP
ports exposed by the cluster service are, so this change uses that
functionality. Each RemoteMapper has its own dedicated connection pool
for each node, and remote mapping TCP connections are in no way coupled
with query TCP connections.
2015-07-20 10:44:38 -07:00
Philip O'Toole bd2f475b5d Merge pull request #3334 from mcastilho/master
Clean shutdown of influxd server
2015-07-16 13:00:13 -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
Marcio Castilho e560eb19ee Clean shutdown of influxd server 2015-07-15 13:14:11 -04:00
Philip O'Toole a84c48bff6 Allow the PointWriter timeout to be configurable 2015-07-02 12:50:12 -04:00
Philip O'Toole ca86fa2633 Allow WAL inter-flush time to be configurable 2015-07-02 10:40:26 -04: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
Philip O'Toole d5fda01c2a Server now requires build information
Version is worth special-casing here, since the build information is
pretty important, and make components need it.

Fixes issue #2958.
2015-06-12 11:41:25 -07:00
Philip O'Toole 23a7896182 Server does not need Commit info, remove it 2015-06-12 11:28:32 -07:00
David Norton b0b8d25752 fix #2935: remove delay on memprofile 2015-06-12 12:07:01 -04:00
David Norton fd2f1bb223 cr #2935: make code review changes 2015-06-12 11:47:59 -04:00
David Norton f717019d88 fix #2935: hook CPU and memory profiling back up 2015-06-12 11:47:59 -04:00
Paul Dix 5e7ddc6a60 Merge pull request #2928 from neonstalwart/version-header
pass along version to httpd/handler
2015-06-12 09:46:33 -04: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
ben hockey ce84047b44 pass along version to httpd/handler 2015-06-11 11:22:37 -05:00