mirror of https://github.com/status-im/consul.git
commit
0722c1521a
12
CHANGELOG.md
12
CHANGELOG.md
|
@ -67,12 +67,12 @@ IMPROVEMENTS:
|
|||
* HTTP health checks more reliable, avoid KeepAlives [GH-824]
|
||||
* Improved protection against a passive cluster merge
|
||||
* 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]
|
||||
* Raft uses BoltDB as the backend store. [GH-857]
|
||||
* API RenewPeriodic more resilient to transient errors [GH-912]
|
||||
|
||||
## 0.5.0 (Febuary 19, 2015)
|
||||
## 0.5.0 (February 19, 2015)
|
||||
|
||||
FEATURES:
|
||||
|
||||
|
@ -116,7 +116,7 @@ BUG FIXES:
|
|||
* Fixed issue preventing node reaping [GH-371]
|
||||
* Fixed gossip stability at very large scale
|
||||
* 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 bug in UI when multiple datacenters exist.
|
||||
|
||||
|
@ -126,8 +126,8 @@ IMPROVEMENTS:
|
|||
* Improved K/V blocking query performance [GH-578]
|
||||
* CLI respects CONSUL_RPC_ADDR environment variable to load parameter [GH-542]
|
||||
* Added support for multiple DNS recursors [GH-448]
|
||||
* Added support for definining multiple services per configuration file [GH-433]
|
||||
* Added support for definining multiple checks per configuration file [GH-433]
|
||||
* Added support for defining multiple services 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 notes for checks in service definition file [GH-449]
|
||||
* Random stagger for agent checks to prevent thundering herd [GH-546]
|
||||
|
@ -336,7 +336,7 @@ IMPROVEMENTS:
|
|||
|
||||
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]
|
||||
* Private IP is properly found on Windows clients.
|
||||
* 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
|
||||
}
|
||||
|
||||
// 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.
|
||||
func (h *Health) State(state string, q *QueryOptions) ([]*HealthCheck, *QueryMeta, error) {
|
||||
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
|
||||
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
|
||||
var sep string
|
||||
params := req.URL.Query()
|
||||
|
|
|
@ -217,7 +217,7 @@ RELEASE:
|
|||
// setupLock is used to setup a new Lock given the API client,
|
||||
// the key prefix to operate on, and an optional session name.
|
||||
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
|
||||
// which we can report to the user.
|
||||
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)
|
||||
}
|
||||
|
||||
// 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 {
|
||||
if done, err := k.srv.forward("KVS.ListKeys", args, args, reply); done {
|
||||
return err
|
||||
|
|
|
@ -119,7 +119,7 @@ WAIT:
|
|||
|
||||
// establishLeadership is invoked once we become leader and are able
|
||||
// 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.
|
||||
func (s *Server) establishLeadership() error {
|
||||
// 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
|
||||
// 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 {
|
||||
queryOpts *structs.QueryOptions
|
||||
queryMeta *structs.QueryMeta
|
||||
|
@ -321,7 +321,7 @@ type blockingRPCOptions struct {
|
|||
}
|
||||
|
||||
// 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 {
|
||||
var timeout *time.Timer
|
||||
var notifyCh chan struct{}
|
||||
|
|
|
@ -45,7 +45,7 @@ const (
|
|||
serverMaxStreams = 64
|
||||
|
||||
// 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
|
||||
|
||||
// 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
|
||||
// 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
|
||||
sessionTimersLock sync.Mutex
|
||||
|
||||
|
|
|
@ -1221,7 +1221,7 @@ func (s *StateStore) KVSList(prefix string) (uint64, uint64, structs.DirEntries,
|
|||
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
|
||||
res, err = s.tombstoneTable.GetTxn(tx, "id_prefix", prefix)
|
||||
for _, r := range res {
|
||||
|
@ -1234,7 +1234,7 @@ func (s *StateStore) KVSList(prefix string) (uint64, uint64, structs.DirEntries,
|
|||
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) {
|
||||
tables := MDBTables{s.kvsTable, s.tombstoneTable}
|
||||
tx, err := tables.StartTxn(true)
|
||||
|
@ -1274,13 +1274,13 @@ func (s *StateStore) KVSListKeys(prefix, seperator string) (uint64, []string, er
|
|||
maxIndex = ent.ModifyIndex
|
||||
}
|
||||
|
||||
// If there is no seperator, always accumulate
|
||||
// If there is no separator, always accumulate
|
||||
if sepLen == 0 {
|
||||
keys = append(keys, ent.Key)
|
||||
continue
|
||||
}
|
||||
|
||||
// Check for the seperator
|
||||
// Check for the separator
|
||||
if idx := strings.Index(after, seperator); idx >= 0 {
|
||||
toSep := ent.Key[:prefixLen+idx+sepLen]
|
||||
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
|
||||
// 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.
|
||||
if casIndex == 0 {
|
||||
return exist == nil, nil
|
||||
|
|
|
@ -98,7 +98,7 @@ func TestTombstoneGC_Expire(t *testing.T) {
|
|||
|
||||
select {
|
||||
case <-gc.ExpireCh():
|
||||
t.Fatalf("shoudl be reset")
|
||||
t.Fatalf("should be reset")
|
||||
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
|
||||
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
|
||||
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]`
|
||||
|
||||
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
|
||||
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>
|
||||
```
|
||||
|
||||
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.
|
||||
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.
|
||||
|
|
|
@ -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
|
||||
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
|
||||
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
|
||||
|
|
|
@ -11,7 +11,7 @@ description: |-
|
|||
The [upgrading page](/docs/upgrading.html) covers the details of doing
|
||||
a standard upgrade. However, specific versions of Consul may have more
|
||||
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.
|
||||
|
||||
## Consul 0.6
|
||||
|
|
Loading…
Reference in New Issue