mirror of https://github.com/hashicorp/consul
remove various typos
parent
e347f20790
commit
10e028d599
12
CHANGELOG.md
12
CHANGELOG.md
|
@ -67,12 +67,12 @@ IMPROVEMENTS:
|
||||||
* HTTP health checks more reliable, avoid KeepAlives [GH-824]
|
* HTTP health checks more reliable, avoid KeepAlives [GH-824]
|
||||||
* Improved protection against a passive cluster merge
|
* Improved protection against a passive cluster merge
|
||||||
* SIGTERM is properly handled for graceful shutdown [GH-827]
|
* SIGTERM is properly handled for graceful shutdown [GH-827]
|
||||||
* Better staggering of defered updates to checks [GH-884]
|
* Better staggering of deferred updates to checks [GH-884]
|
||||||
* Configurable stats prefix [GH-902]
|
* Configurable stats prefix [GH-902]
|
||||||
* Raft uses BoltDB as the backend store. [GH-857]
|
* Raft uses BoltDB as the backend store. [GH-857]
|
||||||
* API RenewPeriodic more resilient to transient errors [GH-912]
|
* API RenewPeriodic more resilient to transient errors [GH-912]
|
||||||
|
|
||||||
## 0.5.0 (Febuary 19, 2015)
|
## 0.5.0 (February 19, 2015)
|
||||||
|
|
||||||
FEATURES:
|
FEATURES:
|
||||||
|
|
||||||
|
@ -116,7 +116,7 @@ BUG FIXES:
|
||||||
* Fixed issue preventing node reaping [GH-371]
|
* Fixed issue preventing node reaping [GH-371]
|
||||||
* Fixed gossip stability at very large scale
|
* Fixed gossip stability at very large scale
|
||||||
* Fixed string of rpc error: rpc error: ... no known leader. [GH-611]
|
* Fixed string of rpc error: rpc error: ... no known leader. [GH-611]
|
||||||
* Fixed panic in `exec` during cancelation
|
* Fixed panic in `exec` during cancellation
|
||||||
* Fixed health check state reset caused by SIGHUP [GH-693]
|
* Fixed health check state reset caused by SIGHUP [GH-693]
|
||||||
* Fixed bug in UI when multiple datacenters exist.
|
* Fixed bug in UI when multiple datacenters exist.
|
||||||
|
|
||||||
|
@ -126,8 +126,8 @@ IMPROVEMENTS:
|
||||||
* Improved K/V blocking query performance [GH-578]
|
* Improved K/V blocking query performance [GH-578]
|
||||||
* CLI respects CONSUL_RPC_ADDR environment variable to load parameter [GH-542]
|
* CLI respects CONSUL_RPC_ADDR environment variable to load parameter [GH-542]
|
||||||
* Added support for multiple DNS recursors [GH-448]
|
* Added support for multiple DNS recursors [GH-448]
|
||||||
* Added support for definining multiple services per configuration file [GH-433]
|
* Added support for defining multiple services per configuration file [GH-433]
|
||||||
* Added support for definining multiple checks per configuration file [GH-433]
|
* Added support for defining multiple checks per configuration file [GH-433]
|
||||||
* Allow mixing of service and check definitions in a configuration file [GH-433]
|
* Allow mixing of service and check definitions in a configuration file [GH-433]
|
||||||
* Allow notes for checks in service definition file [GH-449]
|
* Allow notes for checks in service definition file [GH-449]
|
||||||
* Random stagger for agent checks to prevent thundering herd [GH-546]
|
* Random stagger for agent checks to prevent thundering herd [GH-546]
|
||||||
|
@ -336,7 +336,7 @@ IMPROVEMENTS:
|
||||||
|
|
||||||
BUG FIXES:
|
BUG FIXES:
|
||||||
|
|
||||||
* Renaming "seperator" to "separator". This is the correct spelling,
|
* Renaming "separator" to "separator". This is the correct spelling,
|
||||||
but both spellings are respected for backwards compatibility. [GH-101]
|
but both spellings are respected for backwards compatibility. [GH-101]
|
||||||
* Private IP is properly found on Windows clients.
|
* Private IP is properly found on Windows clients.
|
||||||
* Windows agents won't show "failed to decode" errors on every RPC
|
* Windows agents won't show "failed to decode" errors on every RPC
|
||||||
|
|
|
@ -104,7 +104,7 @@ func (h *Health) Service(service, tag string, passingOnly bool, q *QueryOptions)
|
||||||
return out, qm, nil
|
return out, qm, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// State is used to retreive all the checks in a given state.
|
// State is used to retrieve all the checks in a given state.
|
||||||
// The wildcard "any" state can also be used for all checks.
|
// The wildcard "any" state can also be used for all checks.
|
||||||
func (h *Health) State(state string, q *QueryOptions) ([]*HealthCheck, *QueryMeta, error) {
|
func (h *Health) State(state string, q *QueryOptions) ([]*HealthCheck, *QueryMeta, error) {
|
||||||
switch state {
|
switch state {
|
||||||
|
|
|
@ -91,7 +91,7 @@ func (s *HTTPServer) KVSGet(resp http.ResponseWriter, req *http.Request, args *s
|
||||||
|
|
||||||
// KVSGetKeys handles a GET request for keys
|
// KVSGetKeys handles a GET request for keys
|
||||||
func (s *HTTPServer) KVSGetKeys(resp http.ResponseWriter, req *http.Request, args *structs.KeyRequest) (interface{}, error) {
|
func (s *HTTPServer) KVSGetKeys(resp http.ResponseWriter, req *http.Request, args *structs.KeyRequest) (interface{}, error) {
|
||||||
// Check for a seperator, due to historic spelling error,
|
// Check for a separator, due to historic spelling error,
|
||||||
// we now are forced to check for both spellings
|
// we now are forced to check for both spellings
|
||||||
var sep string
|
var sep string
|
||||||
params := req.URL.Query()
|
params := req.URL.Query()
|
||||||
|
|
|
@ -217,7 +217,7 @@ RELEASE:
|
||||||
// setupLock is used to setup a new Lock given the API client,
|
// setupLock is used to setup a new Lock given the API client,
|
||||||
// the key prefix to operate on, and an optional session name.
|
// the key prefix to operate on, and an optional session name.
|
||||||
func (c *LockCommand) setupLock(client *api.Client, prefix, name string) (*LockUnlock, error) {
|
func (c *LockCommand) setupLock(client *api.Client, prefix, name string) (*LockUnlock, error) {
|
||||||
// Use the DefaultSemaphoreKey extention, this way if a lock and
|
// Use the DefaultSemaphoreKey extension, this way if a lock and
|
||||||
// semaphore are both used at the same prefix, we will get a conflict
|
// semaphore are both used at the same prefix, we will get a conflict
|
||||||
// which we can report to the user.
|
// which we can report to the user.
|
||||||
key := path.Join(prefix, api.DefaultSemaphoreKey)
|
key := path.Join(prefix, api.DefaultSemaphoreKey)
|
||||||
|
|
|
@ -179,7 +179,7 @@ func (k *KVS) List(args *structs.KeyRequest, reply *structs.IndexedDirEntries) e
|
||||||
return k.srv.blockingRPCOpt(&opts)
|
return k.srv.blockingRPCOpt(&opts)
|
||||||
}
|
}
|
||||||
|
|
||||||
// ListKeys is used to list all keys with a given prefix to a seperator
|
// ListKeys is used to list all keys with a given prefix to a separator
|
||||||
func (k *KVS) ListKeys(args *structs.KeyListRequest, reply *structs.IndexedKeyList) error {
|
func (k *KVS) ListKeys(args *structs.KeyListRequest, reply *structs.IndexedKeyList) error {
|
||||||
if done, err := k.srv.forward("KVS.ListKeys", args, args, reply); done {
|
if done, err := k.srv.forward("KVS.ListKeys", args, args, reply); done {
|
||||||
return err
|
return err
|
||||||
|
|
|
@ -119,7 +119,7 @@ WAIT:
|
||||||
|
|
||||||
// establishLeadership is invoked once we become leader and are able
|
// establishLeadership is invoked once we become leader and are able
|
||||||
// to invoke an initial barrier. The barrier is used to ensure any
|
// to invoke an initial barrier. The barrier is used to ensure any
|
||||||
// previously inflight transactions have been commited and that our
|
// previously inflight transactions have been committed and that our
|
||||||
// state is up-to-date.
|
// state is up-to-date.
|
||||||
func (s *Server) establishLeadership() error {
|
func (s *Server) establishLeadership() error {
|
||||||
// Hint the tombstone expiration timer. When we freshly establish leadership
|
// Hint the tombstone expiration timer. When we freshly establish leadership
|
||||||
|
|
|
@ -310,7 +310,7 @@ func (s *Server) blockingRPC(b *structs.QueryOptions, m *structs.QueryMeta,
|
||||||
}
|
}
|
||||||
|
|
||||||
// blockingRPCOptions is used to parameterize blockingRPCOpt since
|
// blockingRPCOptions is used to parameterize blockingRPCOpt since
|
||||||
// it takes so many options. It should be prefered over blockingRPC.
|
// it takes so many options. It should be preferred over blockingRPC.
|
||||||
type blockingRPCOptions struct {
|
type blockingRPCOptions struct {
|
||||||
queryOpts *structs.QueryOptions
|
queryOpts *structs.QueryOptions
|
||||||
queryMeta *structs.QueryMeta
|
queryMeta *structs.QueryMeta
|
||||||
|
@ -321,7 +321,7 @@ type blockingRPCOptions struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
// blockingRPCOpt is the replacement for blockingRPC as it allows
|
// blockingRPCOpt is the replacement for blockingRPC as it allows
|
||||||
// for more parameterization easily. It should be prefered over blockingRPC.
|
// for more parameterization easily. It should be preferred over blockingRPC.
|
||||||
func (s *Server) blockingRPCOpt(opts *blockingRPCOptions) error {
|
func (s *Server) blockingRPCOpt(opts *blockingRPCOptions) error {
|
||||||
var timeout *time.Timer
|
var timeout *time.Timer
|
||||||
var notifyCh chan struct{}
|
var notifyCh chan struct{}
|
||||||
|
|
|
@ -45,7 +45,7 @@ const (
|
||||||
serverMaxStreams = 64
|
serverMaxStreams = 64
|
||||||
|
|
||||||
// raftLogCacheSize is the maximum number of logs to cache in-memory.
|
// raftLogCacheSize is the maximum number of logs to cache in-memory.
|
||||||
// This is used to reduce disk I/O for the recently commited entries.
|
// This is used to reduce disk I/O for the recently committed entries.
|
||||||
raftLogCacheSize = 512
|
raftLogCacheSize = 512
|
||||||
|
|
||||||
// raftRemoveGracePeriod is how long we wait to allow a RemovePeer
|
// raftRemoveGracePeriod is how long we wait to allow a RemovePeer
|
||||||
|
@ -129,7 +129,7 @@ type Server struct {
|
||||||
|
|
||||||
// sessionTimers track the expiration time of each Session that has
|
// sessionTimers track the expiration time of each Session that has
|
||||||
// a TTL. On expiration, a SessionDestroy event will occur, and
|
// a TTL. On expiration, a SessionDestroy event will occur, and
|
||||||
// destroy the session via standard session destory processing
|
// destroy the session via standard session destroy processing
|
||||||
sessionTimers map[string]*time.Timer
|
sessionTimers map[string]*time.Timer
|
||||||
sessionTimersLock sync.Mutex
|
sessionTimersLock sync.Mutex
|
||||||
|
|
||||||
|
|
|
@ -1221,7 +1221,7 @@ func (s *StateStore) KVSList(prefix string) (uint64, uint64, structs.DirEntries,
|
||||||
ents[idx] = r.(*structs.DirEntry)
|
ents[idx] = r.(*structs.DirEntry)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check for the higest index in the tombstone table
|
// Check for the highest index in the tombstone table
|
||||||
var maxIndex uint64
|
var maxIndex uint64
|
||||||
res, err = s.tombstoneTable.GetTxn(tx, "id_prefix", prefix)
|
res, err = s.tombstoneTable.GetTxn(tx, "id_prefix", prefix)
|
||||||
for _, r := range res {
|
for _, r := range res {
|
||||||
|
@ -1234,7 +1234,7 @@ func (s *StateStore) KVSList(prefix string) (uint64, uint64, structs.DirEntries,
|
||||||
return maxIndex, idx, ents, err
|
return maxIndex, idx, ents, err
|
||||||
}
|
}
|
||||||
|
|
||||||
// KVSListKeys is used to list keys with a prefix, and up to a given seperator
|
// KVSListKeys is used to list keys with a prefix, and up to a given separator
|
||||||
func (s *StateStore) KVSListKeys(prefix, seperator string) (uint64, []string, error) {
|
func (s *StateStore) KVSListKeys(prefix, seperator string) (uint64, []string, error) {
|
||||||
tables := MDBTables{s.kvsTable, s.tombstoneTable}
|
tables := MDBTables{s.kvsTable, s.tombstoneTable}
|
||||||
tx, err := tables.StartTxn(true)
|
tx, err := tables.StartTxn(true)
|
||||||
|
@ -1274,13 +1274,13 @@ func (s *StateStore) KVSListKeys(prefix, seperator string) (uint64, []string, er
|
||||||
maxIndex = ent.ModifyIndex
|
maxIndex = ent.ModifyIndex
|
||||||
}
|
}
|
||||||
|
|
||||||
// If there is no seperator, always accumulate
|
// If there is no separator, always accumulate
|
||||||
if sepLen == 0 {
|
if sepLen == 0 {
|
||||||
keys = append(keys, ent.Key)
|
keys = append(keys, ent.Key)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check for the seperator
|
// Check for the separator
|
||||||
if idx := strings.Index(after, seperator); idx >= 0 {
|
if idx := strings.Index(after, seperator); idx >= 0 {
|
||||||
toSep := ent.Key[:prefixLen+idx+sepLen]
|
toSep := ent.Key[:prefixLen+idx+sepLen]
|
||||||
if last != toSep {
|
if last != toSep {
|
||||||
|
@ -1344,7 +1344,7 @@ func (s *StateStore) KVSDeleteCheckAndSet(index uint64, key string, casIndex uin
|
||||||
}
|
}
|
||||||
|
|
||||||
// Use the casIndex as the constraint. A modify time of 0 means
|
// Use the casIndex as the constraint. A modify time of 0 means
|
||||||
// we are doign a delete-if-not-exists (odd...), while any other
|
// we are doing a delete-if-not-exists (odd...), while any other
|
||||||
// value means we expect that modify time.
|
// value means we expect that modify time.
|
||||||
if casIndex == 0 {
|
if casIndex == 0 {
|
||||||
return exist == nil, nil
|
return exist == nil, nil
|
||||||
|
|
|
@ -98,7 +98,7 @@ func TestTombstoneGC_Expire(t *testing.T) {
|
||||||
|
|
||||||
select {
|
select {
|
||||||
case <-gc.ExpireCh():
|
case <-gc.ExpireCh():
|
||||||
t.Fatalf("shoudl be reset")
|
t.Fatalf("should be reset")
|
||||||
case <-time.After(20 * time.Millisecond):
|
case <-time.After(20 * time.Millisecond):
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -200,7 +200,7 @@ The options below are all specified on the command-line.
|
||||||
|
|
||||||
* <a name="_pid_file"></a><a href="#_pid_file">`-pid-file`</a> - This flag provides the file
|
* <a name="_pid_file"></a><a href="#_pid_file">`-pid-file`</a> - This flag provides the file
|
||||||
path for the agent to store its PID. This is useful for sending signals (for example, `SIGINT`
|
path for the agent to store its PID. This is useful for sending signals (for example, `SIGINT`
|
||||||
to close the agent or `SIGHUP` to update check definit
|
to close the agent or `SIGHUP` to update check definite
|
||||||
|
|
||||||
* <a name="_protocol"></a><a href="#_protocol">`-protocol`</a> - The Consul protocol version to
|
* <a name="_protocol"></a><a href="#_protocol">`-protocol`</a> - The Consul protocol version to
|
||||||
use. This defaults to the latest version. This should be set only when [upgrading](/docs/upgrading.html).
|
use. This defaults to the latest version. This should be set only when [upgrading](/docs/upgrading.html).
|
||||||
|
|
|
@ -24,7 +24,7 @@ section.
|
||||||
|
|
||||||
Usage: `consul configtest [options]`
|
Usage: `consul configtest [options]`
|
||||||
|
|
||||||
At least one `-config-file` or `-config-dir` paramater must be given. Returns 0
|
At least one `-config-file` or `-config-dir` parameter must be given. Returns 0
|
||||||
if the configuration is valid, or 1 if there are problems. The list of
|
if the configuration is valid, or 1 if there are problems. The list of
|
||||||
available flags are:
|
available flags are:
|
||||||
|
|
||||||
|
|
|
@ -117,7 +117,7 @@ This is done by:
|
||||||
curl -X PUT -d <Updated Lock> http://localhost:8500/v1/kv/<lock>?cas=<lock-modify-index>
|
curl -X PUT -d <Updated Lock> http://localhost:8500/v1/kv/<lock>?cas=<lock-modify-index>
|
||||||
```
|
```
|
||||||
|
|
||||||
If this suceeds with `true`, the contender now holds a slot in the semaphore. If this fails
|
If this succeeds with `true`, the contender now holds a slot in the semaphore. If this fails
|
||||||
with `false`, then likely there was a race with another contender to acquire the slot.
|
with `false`, then likely there was a race with another contender to acquire the slot.
|
||||||
Both code paths now go into an idle waiting state. In this state, we watch for changes
|
Both code paths now go into an idle waiting state. In this state, we watch for changes
|
||||||
on `<prefix>`. This is because a slot may be released, a node may fail, etc.
|
on `<prefix>`. This is because a slot may be released, a node may fail, etc.
|
||||||
|
|
|
@ -63,7 +63,7 @@ state of the cluster ordered even through failures of its components.
|
||||||
|
|
||||||
Consul has a clear separation between the global service catalog and the agent
|
Consul has a clear separation between the global service catalog and the agent
|
||||||
local state as discussed above. The anti-entropy mechanism reconciles these two
|
local state as discussed above. The anti-entropy mechanism reconciles these two
|
||||||
views of the world: anti-entropy is a syncronization of the local agent state and
|
views of the world: anti-entropy is a synchronization of the local agent state and
|
||||||
the catalog. For example, when a user registers a new service or check with the
|
the catalog. For example, when a user registers a new service or check with the
|
||||||
agent, the agent in turn notifies the catalog that this new check exists.
|
agent, the agent in turn notifies the catalog that this new check exists.
|
||||||
Similarly, when a check is deleted from the agent, it is consequently removed from
|
Similarly, when a check is deleted from the agent, it is consequently removed from
|
||||||
|
|
|
@ -11,7 +11,7 @@ description: |-
|
||||||
The [upgrading page](/docs/upgrading.html) covers the details of doing
|
The [upgrading page](/docs/upgrading.html) covers the details of doing
|
||||||
a standard upgrade. However, specific versions of Consul may have more
|
a standard upgrade. However, specific versions of Consul may have more
|
||||||
details provided for their upgrades as a result of new features or changed
|
details provided for their upgrades as a result of new features or changed
|
||||||
behavior. This page is used to document those details seperately from the
|
behavior. This page is used to document those details separately from the
|
||||||
standard upgrade flow.
|
standard upgrade flow.
|
||||||
|
|
||||||
## Consul 0.6
|
## Consul 0.6
|
||||||
|
|
Loading…
Reference in New Issue