mirror of https://github.com/status-im/consul.git
This commit is contained in:
parent
5887242db2
commit
3b1068387a
|
@ -204,11 +204,11 @@ FEATURES:
|
||||||
* /v1/health/service/ endpoint can take an optional `?passing` flag
|
* /v1/health/service/ endpoint can take an optional `?passing` flag
|
||||||
to filter to only nodes with passing results. [GH-57]
|
to filter to only nodes with passing results. [GH-57]
|
||||||
* The KV endpoint suports listing keys with the `?keys` query parameter,
|
* The KV endpoint suports listing keys with the `?keys` query parameter,
|
||||||
and limited up to a seperator using `?seperator=`.
|
and limited up to a separator using `?separator=`.
|
||||||
|
|
||||||
IMPROVEMENTS:
|
IMPROVEMENTS:
|
||||||
|
|
||||||
* Health check output goes into seperate `Output` field instead
|
* Health check output goes into separate `Output` field instead
|
||||||
of overriding `Notes`. [GH-59]
|
of overriding `Notes`. [GH-59]
|
||||||
* Adding a minimum check interval to prevent checks with extremely
|
* Adding a minimum check interval to prevent checks with extremely
|
||||||
low intervals fork bombing. [GH-64]
|
low intervals fork bombing. [GH-64]
|
||||||
|
@ -227,7 +227,7 @@ BUG FIXES:
|
||||||
* DNS parser can handler period in a tag name. [GH-39]
|
* DNS parser can handler period in a tag name. [GH-39]
|
||||||
* "application/json" content-type is sent on HTTP requests. [GH-45]
|
* "application/json" content-type is sent on HTTP requests. [GH-45]
|
||||||
* Work around for LMDB delete issue. [GH-85]
|
* Work around for LMDB delete issue. [GH-85]
|
||||||
* Fixed tag gossip propogation for rapid restart. [GH-86]
|
* Fixed tag gossip propagation for rapid restart. [GH-86]
|
||||||
|
|
||||||
MISC:
|
MISC:
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ type Cache struct {
|
||||||
ruleCache *lru.Cache // Cache rules -> policy
|
ruleCache *lru.Cache // Cache rules -> policy
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewCache contructs a new policy and ACL cache of a given size
|
// NewCache constructs a new policy and ACL cache of a given size
|
||||||
func NewCache(size int, faultfn FaultFunc) (*Cache, error) {
|
func NewCache(size int, faultfn FaultFunc) (*Cache, error) {
|
||||||
if size <= 0 {
|
if size <= 0 {
|
||||||
return nil, fmt.Errorf("Must provide positive cache size")
|
return nil, fmt.Errorf("Must provide positive cache size")
|
||||||
|
|
|
@ -363,7 +363,7 @@ func (a *Agent) Leave() error {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Shutdown is used to hard stop the agent. Should be
|
// Shutdown is used to hard stop the agent. Should be
|
||||||
// preceeded by a call to Leave to do it gracefully.
|
// preceded by a call to Leave to do it gracefully.
|
||||||
func (a *Agent) Shutdown() error {
|
func (a *Agent) Shutdown() error {
|
||||||
a.shutdownLock.Lock()
|
a.shutdownLock.Lock()
|
||||||
defer a.shutdownLock.Unlock()
|
defer a.shutdownLock.Unlock()
|
||||||
|
|
|
@ -194,7 +194,7 @@ func (d *DNSServer) handlePtr(resp dns.ResponseWriter, req *dns.Msg) {
|
||||||
var out structs.IndexedNodes
|
var out structs.IndexedNodes
|
||||||
|
|
||||||
// TODO: Replace ListNodes with an internal RPC that can do the filter
|
// TODO: Replace ListNodes with an internal RPC that can do the filter
|
||||||
// server side to avoid transfering the entire node list.
|
// server side to avoid transferring the entire node list.
|
||||||
if err := d.agent.RPC("Catalog.ListNodes", &args, &out); err == nil {
|
if err := d.agent.RPC("Catalog.ListNodes", &args, &out); err == nil {
|
||||||
for _, n := range out.Nodes {
|
for _, n := range out.Nodes {
|
||||||
arpa, _ := dns.ReverseAddr(n.Address)
|
arpa, _ := dns.ReverseAddr(n.Address)
|
||||||
|
|
|
@ -52,7 +52,7 @@ type localState struct {
|
||||||
checks map[string]*structs.HealthCheck
|
checks map[string]*structs.HealthCheck
|
||||||
checkStatus map[string]syncStatus
|
checkStatus map[string]syncStatus
|
||||||
|
|
||||||
// Used to track checks that are being defered
|
// Used to track checks that are being deferred
|
||||||
deferCheck map[string]*time.Timer
|
deferCheck map[string]*time.Timer
|
||||||
|
|
||||||
// consulCh is used to inform of a change to the known
|
// consulCh is used to inform of a change to the known
|
||||||
|
@ -101,13 +101,13 @@ func (l *localState) ConsulServerUp() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pause is used to pause state syncronization, this can be
|
// Pause is used to pause state synchronization, this can be
|
||||||
// used to make batch changes
|
// used to make batch changes
|
||||||
func (l *localState) Pause() {
|
func (l *localState) Pause() {
|
||||||
atomic.StoreInt32(&l.paused, 1)
|
atomic.StoreInt32(&l.paused, 1)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Resume is used to resume state syncronization
|
// Resume is used to resume state synchronization
|
||||||
func (l *localState) Resume() {
|
func (l *localState) Resume() {
|
||||||
atomic.StoreInt32(&l.paused, 0)
|
atomic.StoreInt32(&l.paused, 0)
|
||||||
l.changeMade()
|
l.changeMade()
|
||||||
|
@ -390,7 +390,7 @@ func (l *localState) syncChanges() error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
} else if !status.inSync {
|
} else if !status.inSync {
|
||||||
// Cancel a defered sync
|
// Cancel a deferred sync
|
||||||
if timer := l.deferCheck[id]; timer != nil {
|
if timer := l.deferCheck[id]; timer != nil {
|
||||||
timer.Stop()
|
timer.Stop()
|
||||||
delete(l.deferCheck, id)
|
delete(l.deferCheck, id)
|
||||||
|
|
|
@ -389,7 +389,7 @@ func TestAgentAntiEntropy_Check_DeferSync(t *testing.T) {
|
||||||
t.Fatalf("checks: %v", check)
|
t.Fatalf("checks: %v", check)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update the check output! Should be defered
|
// Update the check output! Should be deferred
|
||||||
agent.state.UpdateCheck("web", structs.HealthPassing, "output")
|
agent.state.UpdateCheck("web", structs.HealthPassing, "output")
|
||||||
|
|
||||||
// Should not update for 100 milliseconds
|
// Should not update for 100 milliseconds
|
||||||
|
@ -408,7 +408,7 @@ func TestAgentAntiEntropy_Check_DeferSync(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Wait for a defered update
|
// Wait for a deferred update
|
||||||
time.Sleep(100 * time.Millisecond)
|
time.Sleep(100 * time.Millisecond)
|
||||||
if err := agent.RPC("Health.NodeChecks", &req, &checks); err != nil {
|
if err := agent.RPC("Health.NodeChecks", &req, &checks); err != nil {
|
||||||
t.Fatalf("err: %v", err)
|
t.Fatalf("err: %v", err)
|
||||||
|
|
|
@ -29,7 +29,7 @@ func NewLogWriter(buf int) *logWriter {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// RegisterHandler adds a log handler to recieve logs, and sends
|
// RegisterHandler adds a log handler to receive logs, and sends
|
||||||
// the last buffered logs to the handler
|
// the last buffered logs to the handler
|
||||||
func (l *logWriter) RegisterHandler(lh LogHandler) {
|
func (l *logWriter) RegisterHandler(lh LogHandler) {
|
||||||
l.Lock()
|
l.Lock()
|
||||||
|
|
|
@ -41,7 +41,7 @@ func TestUiIndex(t *testing.T) {
|
||||||
t.Fatalf("err: %v", err)
|
t.Fatalf("err: %v", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Verify teh response
|
// Verify the response
|
||||||
if resp.StatusCode != 200 {
|
if resp.StatusCode != 200 {
|
||||||
t.Fatalf("bad: %v", resp)
|
t.Fatalf("bad: %v", resp)
|
||||||
}
|
}
|
||||||
|
|
|
@ -114,7 +114,7 @@ func (c *Conn) returnClient(client *StreamClient) {
|
||||||
// Consul servers. This is used to reduce the latency of
|
// Consul servers. This is used to reduce the latency of
|
||||||
// RPC requests between servers. It is only used to pool
|
// RPC requests between servers. It is only used to pool
|
||||||
// connections in the rpcConsul mode. Raft connections
|
// connections in the rpcConsul mode. Raft connections
|
||||||
// are pooled seperately.
|
// are pooled separately.
|
||||||
type ConnPool struct {
|
type ConnPool struct {
|
||||||
sync.Mutex
|
sync.Mutex
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,6 @@ cat >/tmp/consul_flags << EOF
|
||||||
export CONSUL_FLAGS="-server -bootstrap-expect=${SERVER_COUNT} -data-dir=/mnt/consul"
|
export CONSUL_FLAGS="-server -bootstrap-expect=${SERVER_COUNT} -data-dir=/mnt/consul"
|
||||||
EOF
|
EOF
|
||||||
|
|
||||||
# Write it to the full sevice file
|
# Write it to the full service file
|
||||||
sudo mv /tmp/consul_flags /etc/service/consul
|
sudo mv /tmp/consul_flags /etc/service/consul
|
||||||
chmod 0644 /etc/service/consul
|
chmod 0644 /etc/service/consul
|
||||||
|
|
|
@ -460,7 +460,7 @@ App.AclsShowController = Ember.ObjectController.extend({
|
||||||
}).then(function(response) {
|
}).then(function(response) {
|
||||||
controller.transitionToRoute('acls.show', response.ID);
|
controller.transitionToRoute('acls.show', response.ID);
|
||||||
controller.set('isLoading', false);
|
controller.set('isLoading', false);
|
||||||
notify('Succesfully cloned token', 4000);
|
notify('Successfully cloned token', 4000);
|
||||||
}).fail(function(response) {
|
}).fail(function(response) {
|
||||||
// Render the error message on the form if the request failed
|
// Render the error message on the form if the request failed
|
||||||
controller.set('errorMessage', 'Received error while processing: ' + response.statusText);
|
controller.set('errorMessage', 'Received error while processing: ' + response.statusText);
|
||||||
|
|
|
@ -22,7 +22,7 @@ function classReg( className ) {
|
||||||
}
|
}
|
||||||
|
|
||||||
// classList support for class management
|
// classList support for class management
|
||||||
// altho to be fair, the api sucks because it won't accept multiple classes at once
|
// although to be fair, the api sucks because it won't accept multiple classes at once
|
||||||
var hasClass, addClass, removeClass;
|
var hasClass, addClass, removeClass;
|
||||||
|
|
||||||
if ( 'classList' in document.documentElement ) {
|
if ( 'classList' in document.documentElement ) {
|
||||||
|
|
Loading…
Reference in New Issue